برنامه نویسی، فناوری ۲۲۹۱ بازدید

این روزها رمزنگاری به صدر اخبار رفته است؛ اما اکثر این خبرها در مورد سیاست‌های نادرست دولت‌ها در شنود شهروندان و یا نقش ملامت‌بار رمزنگاری در اقدامات تروریستی است. این خبرها در راستای نادیده انگاری نقش حیاتی رمزنگاری هستند. اغلب خدمات اینترنتی از رمزنگاری برای امن نگه‌داشتن اطلاعات استفاده می‌کنند.

با این حال درک رمزنگاری تا حدی پیچیده است. انواع بسیار مختلفی از رمزنگاری وجود دارند که هر یک استفاده‌های متفاوتی دارند. در این صورت چگونه می‌توان از بهترین نوع رمزنگاری صحبت کرد؟ در ادامه برخی از انواع عمده رمزنگاری را بررسی کرده‌ایم و توضیح داده‌ایم که چرا اختراع یک شیوه رمزنگاری از سوی شما کار درستی نیست.

انواع رمزنگاری و استحکام هر کدام

یکی از بزرگ‌ترین سوءتفاهم‌ها در مورد رمزنگاری از تفاوت‌های بین انواع رمزنگاری، الگوریتم‌های رمزنگاری و استحکام هرکدام از آن‌ها ناشی می‌شود. این جنبه‌ها را در ادامه توضیح داده‌ایم:

  • نوع رمزنگاری: نوع رمزنگاری به شیوه انجام رمزنگاری گفته می‌شود. برای نمونه کریپتوگرافی نامتقارن یکی از رایج‌ترین انواع رمزنگاری روی اینترنت است.
  • الگوریتم رمزنگاری: وقتی قدرت یک رمزنگاری را بررسی می‌کنیم، در واقع در مورد یک الگوریتم خاص رمزنگاری صحبت می‌کنیم. این الگوریتم‌ها جایی هستند که نام‌های مانند DES، RSA یا AES می‌آیند. نام‌های الگوریتم‌های رمزنگاری غالباً دارای یک مقدار عددی مانند AES-128 نیز هستند. این عدد اشاره به اندازه کلید رمزنگاری دارد که در مورد قدرت الگوریتم بیشتر توضیح می‌دهد.

5 مورد از برترین الگوریتم‌های رمزنگاری

انواع رمزنگاری مختلف الگوریتم‌های رمزنگاری را تشکیل می‌دهند، در حالی که الگوریتم رمزنگاری مسئول قدرت رمزنگاری است. در مورد قدرت رمزنگاری در بخش قبلی صحبت کردیم.

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

1. استاندارد رمزنگاری داده (DES)

استاندارد رمزنگاری داده یک استاندارد رمزنگاری است که اصالتاً از سوی دولت ایالات‌متحده ارائه شده است. این الگوریتم در ابتدا غیر قابل شکست تلقی می‌شد؛ اما افزایش قدرت‌های رایانه‌ها و کاهش هزینه سخت‌افزارها مشخص ساخت که اندازه کلید 56 بیتی اصولاً منسوخ شده است. این مسئله به طور خاص در مورد داده‌های حساس حائز اهمیت است.

جان گیلمور (John Gilmore) هم-بنیان‌گذار EFF که پروژه Deep Crack را مدیریت می‌کند، گفته است: «زمانی که مشغول طراحی سیستم‌ها و زیرساخت‌های امن برای جامعه هستید، باید به کریپتوگرافر ها گوش دهید و نه سیاستمداران.» او هشدار داده است که زمان ثبت شده برای شکستن DES باید به عنوان هشدار بیدار باشی برای هر کسی تلقی شود که از DES برای خصوصی نگه‌داشتن داده‌هایش استفاده می‌کند.

در هر حال DES همچنان در بسیاری از محصولات مشاهده می‌شود. پیاده‌سازی این رمزنگاری سطح پایین بدون نیاز به توان محاسباتی بالا آسان است. بدین ترتیب یکی از ویژگی‌های کارت‌های هوشمند و کاربردهای با منابع محدود است.

2. TripleDES

TripleDES (که برخی اوقات 3DES یا TDES نوشته می‌شود) نسخه جدیدتر و امن‌تر از DES است. زمانی که DES در کمتر از 23 ساعت شکسته شد، دولت ایالات‌متحده دریافت که مخاطره بزرگی در پیش رو دارد. از این رو TripleDES متولد شد. TripleDES رویه‌های رمزنگاری را با اجرای سه‌باره DES پیچیده‌تر می‌کند.

در این روش داده‌ها رمزنگاری، رمزگشایی و سپس دوباره رمزنگاری می‌شوند و طول کلیدی به طول 168 بیت به دست می‌آید. این کلید برای اغلب داده‌های حساس به اندازه کافی طولانی است. با این حال گرچه TripleDES نسبت به DES استاندارد قوی‌تر است؛ اما معایب خاص خود را دارد.

TripleDES سه گزینه تولید کلید دارد:

  • گزینه اول تولید کلید: هر سه کلید مستقل از هم هستند و در این روش قوی‌ترین کلید به طول 168 بیت تولید می‌شود.
  • گزینه دوم تولید کلید: کلید اول و دوم مستقل از هم هستند در حالی که کلید سوم همان کلید 1 است. در این روش قدرت کلید 112 بیت (56×2) است.
  • گزینه سوم تولید کلید: هر سه کلید یکسان هستند. در این روش یک کلید 56 بیتی استفاده می‌شود.

کلیدسازی گزینه اول قوی‌ترین حالت است. گزینه دوم به آن قدرت نیست؛ اما همچنان حفاظتی به اندازه دو برابر DES استاندارد ارائه می‌کند. TripleDES از نوع بلوک cipher است، یعنی داده‌ها در اندازه‌های بلوک ثابت یکی پس از دیگری رمزنگاری می‌شوند. متأسفانه اندازه بلوک TripleDES کوچک و به اندازه 64 است که باعث می‌شود مستعد حملاتی از نوع خاص (مانند تصادم بلوک) شود.

3. RSA

الگوریتم RSA که به نام ابتدای حروف خالقان خود Ron Rivest، Adi Shamir و Leonard Adleman نام‌گذاری شده است یکی از الگوریتم‌های کریپتوگرافی کلید عمومی محسوب می‌شود. این الگوریتم از تابع رمزنگاری متقارن یک‌طرفه استفاده می‌کند.

بسیاری از خدماتی که بر بستر اینترنت عرضه می‌شوند از الگوریتم RSA به طور وسیعی استفاده می‌کنند. این الگوریتم یکی از نخستین ویژگی‌های بسیاری از پروتکل‌ها مانند SSH، OpenPGP، S/MIME و SSL/TLS محسوب می‌شود. به علاوه مرورگرهای وب از RSA برای ایجاد تبادل امن بر روی شبکه‌های ناامن استفاده می‌کنند.

RSA به دلیل طول کلید خود به طور فزاینده‌ای محبوب است. یک کلید RSA به طور معمول 1024 یا 2048 بیت طول دارد. با این حال کارشناسان امنیت پس از شکست RSA 1024 بیتی بر این باورند که طول آن کافی نیست و بنابراین اغلب سازمان‌های دولتی و تجاری اینک سعی می‌کند از نسخه 2048 بیت قوی‌تر استفاده کنند.

4. استاندارد رمزنگاری پیشرفته (AES)

استاندارد رمزنگاری پیشرفته (Advanced Encryption Standard) اینک به استاندارد مورد اعتماد دولت ایالات‌متحده در زمینه رمزنگاری تبدیل شده است.

این الگوریتم مبتنی بر الگوریتم Rijndael است که از سوی دو کریپتوگرافر بلژیکی به نام‌های Joan Daemen و Vincent Rijmen توسعه یافته است. این کریپتوگرافر های بلژیکی الگوریتم خود را در اختیار موسسه ملی استانداردها و فناوری (NIST) قرار دادند تا در مسابقه با 14 رقیب دیگر به جایگزین رسمی DES تبدیل شود. بدین ترتیب Rijndael برنده شد و در اکتبر سال 2000 به عنوان الگوریتم AES پیشنهاد شد.

AES یک الگوریتم کلید متقارن است که از بلوک متقارن cipher استفاده می‌کند. این الگوریتم از سه اندازه کلید 128، 192 یا 256 بیتی تشکیل یافته است و به علاوه برای هر اندازه کلید، گردش‌های مختلفی از رمزنگاری وجود دارد.

گردش به معنی فرایندی است که متن معمولی را به متن رمز شده تبدیل می‌کند. در رمزنگاری 128 بیتی 10 گردش وجود دارد، کلید 192 بیتی، 12 گردش دارد و کلید 256 بیتی از 14 گردش برای رمزنگاری استفاده می‌کند.

از لحاظ تئوریک روش‌هایی برای حمله علیه الگوریتم AES وجود دارند؛ اما همه این روش‌ها نیازمند سطحی از توان محاسباتی و ذخیره‌سازی داده هستند که در عصر کنونی ممکن نیست. برای نمونه یک حمله نیازمند 38 تریلیون ترابایت داده است که بیش از همه داده‌های ذخیره شده در همه رایانه‌های دنیا در سال 2016 بوده است. تخمین‌های دیگر مقدار کلی زمان مورد نیاز برای حمله brute-force به یک کلید AES-128 را میلیاردها سال برآورد کرده‌اند.

متخصص رمزنگاری بروس اشنییر (Bruce Schneier) در این خصوص بیان می‌کند:

«باور نکنید که روزی خواهد رسید که فردی بتواند ترافیک Rijndael را شنود کند»

این کار خارج از حمله‌های رمزنگاری نظری آکادمیک ممکن نیست. الگوریتم رمزنگاری Twofish خود اشنییر که در بخش بعدی بررسی کرده‌ایم یکی از رقبای اصلی Rijndael در طی رقابت برای انتخاب الگوریتم امنیتی جدید بوده است.

5. Twofish

الگوریتم توفیش یکی از دو الگوریتمی بود که در کنار AES به فینال مسابقه رمزنگاری موسسه ملی استانداردها و فناوری رسید، اما برنده اصلی Rijndael یا همان AES بود. الگوریتم توفیش با اندازه‌های کلید 128، 192 و 25 بیتی کار می‌کند و ساختار کلید پیچیده‌ای دارد که شکستن آن را دشوار می‌سازد.

کارشناسان امنیتی بیان می‌کنند که توفیش یکی از سریع‌ترین الگوریتم‌های رمزنگاری و گزینه‌ای عالی برای سخت‌افزار و همچنین نرم‌افزار است. به علاوه cipher توفیش برای استفاده عمومی رایگان است.

این الگوریتم رمزنگاری در برخی از بهترین نرم‌افزارهای رمزنگاری رایگان مانند VeraCrypt (برای رمزنگاری درایو)، PeaZip (برای فشرده‌سازی فایل) و KeePass (نرم‌افزار متن- باز برای مدیریت رمز عبور) و همچنین استاندارد OpenPGP استفاده می‌شود.

چرا نباید خودمان الگوریتم رمزنگاری بسازیم؟

احتمالاً با برخی الگوریتم‌های رمزنگاری مواجه شده‌اید که زمانی بسیار مشهور بوده‌اند و اینک ناکارآمد هستند. این الگوریتم‌ها از این جهت بهترین بوده‌اند که زمانی تصور می‌شده غیر قابل شکستن هستند.

اما چرا نمی‌توانیم خودمان یک الگوریتم رمزنگاری بسازیم؟ آیا ایجاد یک سیستم خصوصی برای نگهداری داده‌ها امن است؟ پاسخ کوتاه این است که نه چنین نیست.

بهترین الگوریتم‌های رمزنگاری از نظر رمزنگاری امن هستند، با ترکیبی از قوی‌ترین رایانه‌ها که از سوی قوی‌ترین ذهن‌های بشری هدایت می‌شوند تست شده‌اند. الگوریتم‌های جدید رمزنگاری مورد شدیدترین انواع تست‌ها برای شکستن الگوریتم قرار می‌گیرند و حمله‌های خاصی بر روی آن‌ها آزموده می‌شود.

این کار، فرایندی پیچیده و زمان‌بر است

برای نمونه الگوریتم AES را در نظر بگیرید:

  • NIST در سپتامبر سال 1997 فراخوان الگوریتم‌های جدید را مطرح کرد.
  • NIST تا آگوست سال 1998 15 الگوریتم رمزنگاری را دریافت کرد.
  • این سازمان در همایشی در آوریل سال 1999 پنج الگوریتم فینالیست را انتخاب کرد: MARS، RC6، Rijndael، Serpent و Twofish.
  • این موسسه به تست و دریافت توضیحات و دستورالعمل‌ها از سوی جامعه کریپتوگرافی تا ماه مه 2000 ادامه داد.
  • در اکتبر سال 2000، NIST پس از مشاوره مجدد Rijndael را که پس از آن AES نامیده می‌شود انتخاب کرد.
  • Rijndael یا همان AES به عنوان استاندارد پردازش اطلاعات فدرال در نوامبر سال 2001 منتشر شد. این تأیید از سوی تست اعتبارسنجی تحت برنامه اعتبارسنجی الگوریتم‌های کریپتوگرافی اعطا شد.
  • AES در ماه مه 2002 به استاندارد رمزنگاری دولت فدرال رسمی تبدیل شد.

شما منابع کافی برای ایجاد الگوریتم رمزنگاری ندارید

همان طور که مشاهده کردید تولید یک الگوریتم رمزنگاری واقعاً امن، بلندمدت و قدرتمند به زمان و تجزیه و تحلیل‌های عمیقی نیاز دارد که برخی از آن‌ها از سوی قوی‌ترین سازمان‌های امنیتی دنیا انجام می‌یابند. همان طور که بوریس اشنییر اشاره می‌کند:

هر کس می‌تواند یک الگوریتم رمزنگاری ایجاد کند که خود نتواند آن را بشکند؛ اما خلق یک رمزنگاری که هیچ کس نتواند آن را بشکند کار به مرتب دشوارتری است.

این همان نکته مهم قضیه است. البته شما می‌توانید برنامه‌ای بنویسید که متنی را بگیرد، آن را در مقدار عددی ارزش هر حرف الفبا به علاوه 13 بکند، 64 را به آن بیفزاید و سپس آن را به گیرنده ارسال کند.

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

رمزنگاری را با آغوش باز بپذیرید و چرخ را از نو اختراع نکنید!

رمزنگاری مهم است. درک چگونگی عملکرد آن نیز مفید است؛ اما فایده‌ای هنگام استفاده از آن نخواهد داشت. آنچه که فایده عملی دارد این است که بدانیم جامعه جهانی غرق در ارتباط ما برای امن ماندن به رمزنگاری نیاز دارد. متأسفانه تعداد زیادی از سازمان‌های مختلف ذی‌نفع وجود دارند که به استانداردهای رمزنگاری ضعیف‌تر علاقه‌مند هستند. این مسئله‌ای است که در حد امکان باید از آن اجتناب کنید.

اگر به این نوشته علاقه‌مند بودید، موارد زیر نیز احتمالاً مورد توجه شما قرار خواهند گرفت:

==

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

«میثم لطفی» در رشته‌های ریاضیات کاربردی و مهندسی کامپیوتر به تحصیل پرداخته و شیفته فناوری است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار با مجله فرادرس همکاری دارد.

یک نظر ثبت شده در “معرفی رمزنگاری‌های رایج؛ چرا نباید شیوه‌های جدید رمز‌نگاری ابداع کرد؟

  • مثل اینه که بگیم یه نفر سایتی برای فروش کتاب نوشته شما دیگه سایت برای فروش متاب ننویسید! مگه میشه؟ ایده های جدید به وجود میان و پروتوکل ها هم عوض میشن. غیر از این می بود الگوریتمهای بالایی هم حتی ایجاد نمیشدن! هر چند سخته ولی غیر ممکن هم نیست.من خودم یه الگوریتم رمزبندی نوشتم.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.

مشاهده بیشتر