الگوریتمستان - توصیه‌های امنیتی را جدی بگیریم

Don't Roll Your Own Crypto

✤    ۶ آبان ۱۳۹۴

حدود بیست سال قبل NIST مسابقه‌ای ترتیب داد و از همه‌ی اهل فن سراسر جهان دعوت کرد تا روش جدید رمزنگاری بلوکی متقارن ارائه دهند. هدف از این فراخوان جایگزین کردن روش رمزنگاری DES با روش امن‌تر بود. بعد از سه سال روش Rijndael از بین روش‌های پیشنهادی انتخاب و چند ماه بعد با عنوان استاندارد رمزنگاری پیشرفته، Advanced Encryption Standard - AES، معرفی شد. این الگوریتم پایه‌ی ریاضی محکمی دارد و از بین روش‌های پیشنهادی ریاضیدان‌های متخصص حوزه‌ی رمزنگاری و رمزشکنی انتخاب شده است. پس می‌توان گفت هم پشتوانه‌ی علمی خوبی دارد و هم مورد تایید سازمان‌های امنیتی بزرگ است. با این وجود، همچنان حمله‌های مختلفی به آن صورت می‌گیرد که اگرچه به طور کامل موفق نبوده‌اند، اما امید شکسته شدن AES را زنده نگه داشته‌اند.

نرم‌افزار Telegram از روش رمزنگاری AES به همراه چند الگوریتم امتحان پس داده‌ی دیگر مانند الگوریتم دیفی-هلمن (Diffie-Hellman) در ساختار امنیتی خود استفاده می‌کند و در مقایسه با نرم‌افزارهایی مثل Viber و Skype امن‌تر است. پروتکل‌های امنیتی استفاده شده در این نرم‌افزار هم از تحقیقات چند ریاضیدان خبره به دست آمده است. توسعه‌دهنده‌گان تلگرام برای ثابت کردن امنیت بالای آن، در سال ۲۰۱۴ مسابقه‌ای را اعلام عمومی کردند که در آخر برنده‌ای نداشت! با این وجود هنوز هم ابهاماتی در مورد امنیت این نرم‌افزار وجود دارد.

در مورد اینکه چرا با وجود استفاده از الگوریتم‌های امنی مانند AES و برگزاری مسابقه، همچنان امنیت تلگرام زیر سوال است و چه امیدی وجود دارد که شاید روزی خود AES هم شکسته شود، باید به چند نکته توجه داشت:

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

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

در عالم رمزنگاری یک اصل اساسی هست که می‌گوید: «Don't Roll Your Own Crypto»؛ یعنی نباید از روش‌های رمزنگاری «من‌درآوردی» استفاده کرد. زمانی که فایلی را با ایده‌ی خودمان رمز می‌کنیم، این احساس را داریم که چون روش رمزنگاری مخفی است، پس نمی‌توان آن را شکست. اما در واقع اینطور نیست و حتی ممکن است در کسری از ثانیه بشکند! روش‌های تحلیل رمز پیشرفت چشم‌گیری داشته‌اند و روز به روز در حال پیشروی هستند. حتی ممکن است روزی AES هم بشکند! پروتکل‌های استفاده شده در تلگرام هم اگرچه از تحقیقات ریاضیدان‌های نخبه با استفاده از الگوریتم‌های شناخته شده به دست آمده، اما همچنان مانند یک الگوریتم «من‌درآوردی» مورد نقد و بررسی قرار می‌گیرد.


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

تا کنون ۲ امتیاز ثبت شده
نوشته لایک نداشت؟
 
به اشتراک گذاری نوشته

amasoudfam.ir/l/1klz6

اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram

نام: *  
پست الکترونیک (محرمانه):
پیام: *  
• r
۴ آذر ۱۳۹۴، ساعت ۱۳:۱۸

12