در حوزه دانش رمزنگاری (Cryptography)، رمزگذاری (Encryption) عملیاتی است که طی آن پیام ها یا اطلاعات اولیه (Plaintext) با استفاده از یک الگوریتم مشخص و یک کمیت محرمانه (Encryption Key) به متنی غیر قابل فهم (Ciphertext) تبدیل میشود به نحوی که بدون دسترسی به کلید رمز، دستیابی به اطلاعات اولیه از روی متن رمز شده غیرممکن باشد.
رمزنگاری متقارن (Symmetric) به هر نوع رمزنگاری گفته میشود که در آن یک کلید برای رمزنگاری و رمزگشایی پیغام استفاده میشود. در این نوع رمزنگاری، کلید باید فقط بین فرستنده و گیرنده به اشتراک گذاشته شود. رمزنگاری متقارن به دو روش جریانی (Stream Cipher) و بلوکی (Block Cipher) پیادهسازی میشود. در روش بلوکی اطلاعات به قسمتهای کوچک تر تقسیم میشود و هر قسمت رمزنگاری میشود در حالی که در روش جریانی هر کاراکتر به تنهایی رمزنگاری میشود.
یک Block Cipher، یک الگوریتم رمزنگاری قطعی (Deterministic Algorithm) قابل اجرا روی دستهای از دادهها با طول ثابت با نام Block است رمزنگاری قطعهای (Block Cipher) به خودی خود تنها جهت رمزگذاری قطعه ای با طول ثابت از دادهها (Fixed-Length Group Of Bits) به نام Block مناسب است.
توجه داشته باشید که طول رشته ورودی (Plaintext) برابر با رشته خروجی (Ciphertext) رمز شده است، و هرگز نمیتواند از آن کوچکتر باشد.
مُدهای کاری (Mode Of Operation)، الگوریتمهایی با پیچیدگی و موارد کاربرد متفاوت هستند که با استفاده از روش رمزنگاری Block Cipher امکان استفاده مکرر و امن از رمزگذاری قطعهای تحت یک تک کلید را فراهم میسازند.
وقتی که یک پیغام با طول متغیر را به سمت هدف ارسال میکنیم، داده ابتدا باید به قطعههای مجزای رمزگذاری تقسیم (شکسته - Split) شود. معمولا، آخرین قطعه باید با استفاده از طرح افزونگیگذاری بسط داده شود تا به اندازه طول قطعه رمزگذاری برسد.
بیشترین شکل استفاده از رمزنگاری متقارن که در کارت های هوشمند و البته در بیشتر سیستم های امنیت اطلاعات وجود دارد DES است. الگوریتم DES، یک محصول دولت ایالات متحده است که امروزه به عنوان یک استاندارد بینالمللی شناخته شده و بطور وسیعی مورد استفاده قرار می گیرد. بلوک های ۶۴ بیتی داده توسط یک کلید تنها که معمولا ۵۶ بیت طول دارد، رمزگذاری و رمزگشایی میشوند. الگوریتم DES از نظر محاسباتی ساده است و به راحتی میتواند توسط پردازندههای کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.
الگوریتم رمزنگاری AES - استاندارد رمزنگاری پیشرفته (Advanced Encryption Standard)- که در ابتدا ریندال (Rijndael) نامیده میشد، مشخصهای برای رمزنگاری دادههای الکترونیکی است که در سال ۲۰۰۱ توسط مؤسسه ملی فناوری و استانداردهای ایالات متحده ایجاد گردید. اکنون این الگوریتم رمزنگاری در سراسر جهان به عنوان جایگزین DES، پذیرفته شده و استفاده میگردد. الگوریتم AES، یک الگوریتم کلید متقارن (Symmetric Cipher Algorithm) است، بدین معنی که از کلیدی یکسان برای رمزگذاری و رمزگشایی استفاده میشود. اندازه بلاک (Block Size) ثابت، ۱۲۸ بیت و اندازه کلید ۱۲۸، ۱۹۲ و ۲۵۶ بیتی میباشد.
شرکت ST با ارائه کتابخانهای از توابع (API) رمزنگاری (STM32-CRYP-LIB)، امکان پیادهسازی و اجرای (Run) برخی از الگوریتم های رمزنگاری را روی تراشههای خانواده STM32F1، STM32 L1، STM32F2، STM32F4، STM32F0 و STM32F3 فراهم آورده است. الگوریتم های پشتبانی شده توسط این API به شرح ذیل میباشد.
• AES-128, AES-192, AES-256 bits:
– ECB (Electronic Codebook Mode)
– CBC (Cipher-Block Chaining) with support for ciphertext stealing
– CTR (CounTer Mode)
– CCM (Counter with CBC-MAC)
– GCM (Galois Counter Mode)
– CMAC
– KEY WRAP
• ARC4
• DES, TripleDES:
– ECB (Electronic Codebook Mode)
– CBC (Cipher-Block Chaining)
• HASH functions with HMAC support:
– MD5
– SHA-1
– SHA-224
– SHA-256
• Random engine based on DRBG-AES-128
• RSA signature functions with PKCS#1v1.5
• ECC (Elliptic Curve Cryptography):
– Key generation
– Scalar multiplication (the base for ECDH)
– ECDSA
حائز اهمیت است که به یاد داشته باشیم که تنها تراشههای خانواده STM32F41x/43x مجهز به پردازندهایی رمزنگاری (Cryptographic Processor) جهت تسریع عملیات رمزنگاری به صورت سختافزاری با استفاده از الگوریتمهای DES، TDES، AES و HASH می باشد.
به همراه مستندات و فایلهای *.lib ارائه شده (STM32 Cryptographic library package V2.0.6)، مثال های سادهای نیز موجود است که انتخاب روش مطلوب جهت استفاده در طرح MP بر عهده طراح می باشد.
ایکاش فایل لایبرری رمز رو هم قرار میدادید