الگوریتم کلید متقارن

(تغییرمسیر از رمزنگاری متقارن)

الگوریتم کلید متقارن(انگلیسی: Symmetric-key algorithm)[الف]، یک کلاس از الگوریتم‌ها، برای رمزنگاری است که با استفاده از کلیدهای رمزنگاری مشابه برای هر دو رمزگذاری متنی و رمزگشایی متن رمز استفاده می‌شود. کلیدها ممکن است مشابه باشند یا ممکن است رابطه‌ای ساده بین دو کلید وجود داشته باشد. کلید، در عمل، نشان دهنده یک راز مشترک بین دو یا چند طرف است که می‌تواند برای حفظ اطلاعات خصوصی مورد استفاده قرار گیرد. این نیاز که هر دو طرف، دسترسی به کلیدهای مخفی داشته باشند یکی از اشکالات اصلی رمزنگاری کلید متقارن، در مقایسه با رمزنگاری کلید عمومی است.

انواع الگوریتم کلید متقارن

ویرایش

در رمزنگاری کلید متقارن می‌توانید از رمز دنباله ای یا رمز قالبی استفاده کنید. در رمزگذاری رمزهای دنباله ای، رقمی (معمولاً بیت) از یک پیام را در یک زمان رمز می‌کنند. . به عنوان مثال رمزگذاری Vigenère. در رمزگذاری رمزهای قالبی (بلوکی)، تعدادی بیت را در قالب یک واحد رمزگذاری می‌کنند. متن اصلی را بهم می‌زنند تا این تعداد از اندازه بلوک باشد. از بلوک‌های ۶۴ بیتی معمولاً استفاده می‌شد. الگوریتم تأیید شده توسط NIST در دسامبر سال ۲۰۰۱ به وسیله استاندارد رمزگذاری پیشرفته (AES) با استفاده از بلوک‌های ۱۲۸ بیتی، تأیید شد. همچنین الگوریتم‌های رمز دنباله ای سرعت بهتری نسبت به الگوریتم‌های رمز قالبی دارند. چون رمزهای دنباله ای دارای پیچیدگی در الگوریتم نیستند.

پیاده‌سازی

ویرایش

نمونه‌هایی از الگوریتم‌های متقارن محبوب و شناخته شده عبارتند از Threefish , Twofish, Serpent, AES (Rijndael), Camellia, Salsa20, ChaCha20, Blowfish, CAST5, Kuznyechik, RC4, DES, 3DES, Skipjack, Safer و IDEA.

شکلهای هندسی اولیه رمزنگاری بر اساس رمزهای متقارن اغلب برای رسیدن به شکلهای هندسی اولیه رمزنگاری و نه فقط رمزگذاری استفاده می‌شوند. رمزگذاری یک پیام تضمین نمی‌کند که این پیام رمزگذاری شده در طول مسیر انتقال، تغییر نیافته‌است. ازاین رو اغلب یک کد تأیید هویت پیام به متن رمزنگاری اضافه می‌شود تا اطمینان حاصل شود که متن اصلی، کاملاً توسط گیرنده ذکر شده‌است. کد تأیید هویت پیام را می‌توان با کمک رمزهای متقارن ساخت. با این حال، رمزهای متقارن نیز می‌تواند برای مقاصد غیرانکار نیز استفاده شود. استاندارد ISO 13،۸۸۸–۲ را ببینید. برای ساخت توابع هش نیز از رمزهای بلوک استفاده می‌شود. تابع one-way compression را برای توصیف چندین روش از این نوع ببینید.

ساختار بسیاری از رمزنگاری‌های بلوک مدرن توسط Horst Feistel ارائه شده‌است. ساختار هورست امکان ساخت توابع معکوس از روی دیگر توابع که خودشان معکوس نیستند را می‌دهد.

امنیت رمزنگاری متقارن

ویرایش

رمزنگاری متقارن در طول تاریخ در معرض ابتلا به حملات known-plaintext، chosen-plaintext، رمزنگاری دیفرانسیل و رمزنگاری خطی هستند. ساختار دقیق توابع برای هر مرحله تا حد زیادی می‌تواند احتمال یک حمله موفق را کاهش دهد.

استقرار کلید

ویرایش

الگوریتم‌های کلید متقارن هم به فرستنده و هم به گیرنده پیام نیاز دارند که یک کلید مخفی یکسان داشته باشند. همه سیستمهای رمزنگاری اولیه یکی از این افراد را ملزم به دریافت یک نسخه از آن کلید مخفی از طریق کانال ایمنی فیزیکی می‌کردند.

تقریباً همه سیستمهای رمزنگاری مدرن هنوز از الگوریتم‌های کلید متقارن در داخل استفاده می‌کنند تا بخش عمده ای از پیام‌ها را رمزگذاری کنند، اما آنها با استفاده از تبادل کلید Diffie-Hellman یا برخی پروتکل‌های کلید عمومی دیگر، نیاز به یک کانال امن فیزیکی را از بین می‌برند تا با اطمینان از کلید جدید تازه مخفی برای هر پیام (ارسال محرمانه) توافق کنند.

نسل‌های کلید

ویرایش

هنگامی که از رمزنگاری نامتقارن برای انتقال کلید استفاده می‌شود، مولدهای شبه تصادفی کلید تقریباً همیشه برای تولید کلید رمزنگاری متقارن استفاده می‌شود. با این حال، عدم تصادفی بودن مولدها یا بردار دهی اولیه خود، فاجعه‌آمیز است و در گذشته به شکست در رمزنگاری انجامید؛ بنابراین، یک پیاده‌سازی با استفاده از یک منبع انحطاط تدریجی و محتوم بالا، برای مقدار دهی اولیه آن ضروری است

رمزنگاری دوجانبه

ویرایش

رمزنگاری دوجانبه رمزنگاری است که همان‌طور که یک نفر متن اصلی را برای گرفتن متن رمز شده به سیستم وارد می‌کند، یک نفر می‌تواند متن رمز شده را برای به دست آوردن متن اصلی در همان محل در سیستم وارد کند. رمزنگاری دوجانبه هم چنین گاهی به self-reciprocal برمی گردد. عملاً همه دستگاه‌های رمزگذاری مکانیکی یک رمزنگاری متقابل را اجرا می‌کنند، یک پیش‌بینی ریاضی بر روی هر حرف تایپ شده‌است. به جای طراحی دو نوع ماشین، یکی برای رمزگذاری و دیگری برای رمزگشایی، همه دستگاه‌ها می‌توانند یکسان باشند و به همان روش قابل تنظیم (کلیددار) باشند.

نمونه‌هایی از رمزهای دوجانبه عبارتند از:

· Atbash

· Beaufort cipher

· Enigma machine

· Marie Antoinette and Axel von Fersen communicated with a self-reciprocal cipher.

· the Porta polyalphabetic cipher is self-reciprocal.

· Purple cipher

· RC4

· ROT13

· XOR cipher

· Vatsyayana cipher

تقریباً همه رمزنگاری‌های مدرن را می‌توان به عنوان رمزنگاری جریان طبقه‌بندی کرد که بیشتر آنها از یک ترکیب کننده رمزگذاری XOR دوجانبه یا رمزگذاری بلوک استفاده می‌کنند که بیشتر آنها از رمزگذاری Feistel یا طرح Lai–Massey استفاده می‌کنند با تغییر دوجانبه ای که در هر دور دارند.

منابع

ویرایش


خطای یادکرد: خطای یادکرد: برچسب <ref> برای گروهی به نام «persian-alpha» وجود دارد، اما برچسب <references group="persian-alpha"/> متناظر پیدا نشد. ().