آزمایشگاه تخصصی آپا دانشگاه فردوسی مشهد::FUM CERT Lab. (Computer Emergency Response Team)

چرا رمزنگاری از آنچه مهندسین نرم‌افزار فکر می‌کنند سخت‌تر است؟

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

آسیب‌پذیری اخیر ROCA (CVE-2017-15361)، معضلات مهمی در رابطه با طراحی نرم‌افزارهای رمزنگاری امن به‌وجود می‌آورد. در این مورد، آسیب‌پذیری یک خطای کد ساده مانند سرریز بافر یا استفاده از مولد اعداد تصادفی بی کیفیت نیست.

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

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

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

مظنونین اصلی

این کلیدهای ضعیف چگونه تولید می‌شوند؟ این معضل مربوط به الگوریتم RSA است که در قلب رمزنگاری کلید عمومی قرار دارد. به یاد داشته باشید که کلیدهای عمومی و خصوصی از اعداد اول بسیار بزرگ تولید می‌شوند. 5 یک عدد اول است (تنها بر 1 و 5 بخش‌پذیر است)، اما 6 یک عدد اول نیست (بر 1، 2، 3 و 6 بخش‌پذیر است).

پیاده‌سازی بهتر الگوریتم RSA نیازمند این است که این اعداد اول (که ممکن است شامل هزاران رقم باشند)، ویژگی‌های خاص اضافه‌ای داشته باشند، یعنی هر عدد اول بزرگی نمی‌تواند چنین باشد.

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

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

کلید اصلی

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

بسیار بعید است که Infineon در بهره‌برداری از این تکنیک برای کارایی، تنها باشد. محققان تعداد دیگری پایگاه داده عموماً در دسترس را برای کلیدهای عمومی مورد بررسی قرار دادند. این چیزی است که محققان در رابطه با تولید کلید توسط Trusted Platform Modules (TPMs) می‌گویند. TPM یک دستگاه سخت‌افزاری است که برای تولید و مدیریت امن کلیدها استفاده می‌شود.

ما نمونه ای از 41 مدل مختلف لپ‌تاپ که به چیپ‌های TPM مجهز بودند را مورد تحلیل قرار دادیم. تمام چیپ‌های سال 2013 یا پس از آن آسیب‌پذیر بودند، از جمله TPM 1.2 و TPM 2.0.

دستگاه‌های TPM منابع محاسباتی بسیار محدودی دارند. در نتیجه، کدی که برای تولید و آزمون اعداد اول استفاده می‌کنند باید بسیار بهینه باشد. این مسأله مهم است چرا که کلیدهای تولید شده توسط TPMها اغلب برای پشتیبانی سیستم‌های رمزنگاری کامل دیسک، مانند Microsoft’s BitLocker استفاده می‌شوند. اگر کلیدها ضعیف باشند، مهاجمین به‌طور بالقوه می‌توانند داده‌های رمزنگاری شده را بازیابی کنند.

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

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

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

چالش پیاده‌سازی

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

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

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

آدرس اینترنتی خبرhttps://www.helpnetsecurity.com/2017/12/19/cryptography-hard
تاریخ درج خبر1396-10-07
صفحه اصلی | تماس با ما | معرفی آزمایشگاه | ورود
©2018 Ferdowsi University Of Mashhad
مرکز آپا | آپا | آپا چیست