پایان معمای ۲۵ ساله خمهای بیضوی NIST: کشف منشأ سیدهای ECDSA با هوش مصنوعی Claude — Claude reveals ECDSA curve origins
خلاصه
مدل پژوهشی Claude موفق شد راز ۲۵ ساله پارامترهای مرموز استاندارد رمزنگاری ECDSA را حل کند. برخلاف دههها تئوری توطئه درباره درپشتی آژانس امنیت ملی آمریکا (NSA)، مشخص شد این سیدها صرفاً با فراخوانی تابع lrand48 در زبان C و مقداردهی زمان یونیکس تولید شدهاند.
استاندارد رمزنگاری خم بیضوی ECDSA یکی از پرکاربردترین ستونهای امنیت داده در وب امروزی است؛ از امضای دیجیتال و گواهیهای TLS گرفته تا تراکنشهای بلاکچین. با این حال، از زمان تصویب استاندارد FIPS 186-2 توسط NIST در سال ۲۰۰۰، یک علامت سؤال بزرگ روی پارامترهای این استاندارد سنگینی میکرد: پارامتر seed مربوط به خمهایی مانند P-256 و P-384 از کجا آمده بود؟
این مقادیر اولیه توسط NSA پیشنهاد شده بودند اما هیچ سند رسمی درباره نحوه تولید آنها منتشر نشد. از آنجا که سابقه درپشتیهای دولتی (مثل رسوایی Dual_EC_DRBG) جامعه رمزنگاری را به شدت بدبین کرده بود، فرضیات متعددی شکل گرفت؛ از احتمال وجود درپشتی ساختاریافته تا شوخیهای سازمانی کارمندان NSA. جامعه رمزنگاری حتی برای حل این معما جایزهای مالی (بونتی) به ارزش بیش از ۳۶ هزار دلار تعیین کرده بود.
کشف غیرمنتظره به دست هوش مصنوعی
تیمی از مهندسان شرکت Anthropic تصمیم گرفتند این مسئله را به یک مدل پژوهشی داخلی Claude بسپارند، بدون اینکه سرنخها یا شایعات قدیمی (مانند هش شدن یک عبارت طنز توسط کارمندان سابق) را به آن دیکته کنند. در کمتر از ۳۰ دقیقه، Claude روش تولید این سیدها را برای خمهای P-192 ،P-224 ،P-256 ،P-384 و P-521 کشف کرد.
نتیجه برخلاف تصور بسیاری، فوقالعاده ساده و پیشپاافتاده بود: هیچ تابع درهمساز (Hash) یا فرمول ریاضی پیچیدهای در کار نبوده، بلکه این اعداد صرفاً خروجی تابع شبهتصادفی قدیمی lrand48 در کتابخانه استاندارد C یونیکس بودهاند که با زمان سیستم (time()) مقداردهی اولیه (Seed) شده بودند.
جزئیات فنی: چطور Claude این معما را باز کرد؟
مدل هوش مصنوعی حدس زد نرمافزاری که در دهه ۱۹۹۰ در NSA برای ساخت این خمها استفاده شده، احتمالاً متکی به PRNGهای متداول همان دوران بوده است:
- شناسایی ردپای بیتها: در پیادهسازی مولد همنهشتی خطی (LCG) در
lrand48، تنها ۳۱ بیت باارزش از وضعیت داخلی ۴۸ بیتی برگردانده میشود. مدل متوجه شد در برخی از سیدها، بیتهای بالایی تمام کلمات صفر هستند؛ رخدادی که احتمال تصادفی بودنش عملاً نزدیک به صفر است. - حل مسأله مشبکه با الگوریتم LLL: بازیابی وضعیت داخلی یک LCG ناقص، یک مسئله کلاسیک مشبکه (Lattice) در رمزنگاری است که با الگوریتم معروف Lenstra–Lenstra–Lovász (یا LLL) حل میشود. مدل با این روش توانست وضعیت داخلی ۴۸ بیتی را معکوس کند.
- ردگیری معکوس زمان: از آنجا که توابع LCG معکوسپذیر هستند، مدل خروجیها را گامبهگام به عقب بازگرداند تا به حالت اولیه
srand48برسد. نتیجه شگفتانگیز بود: تمام مقادیر ورودی معادل تاریخ و زمان دقیق (Unix timestamp) سیستم در بازه مه ۱۹۹۷ تا آوریل ۱۹۹۸ بودند.
علاوه بر سیدها، منشأ نقاط پایه (Base points) در چند خم اولیه مانند P-192 نیز شناسایی شد که مشخص شد با کتابخانه محاسبات ریاضی قدیمی FreeLIP و سیدهای عددی کوچک مثل 20000 تولید شده بودند.
چرا این کشف برای مهندسان اهمیت دارد؟
این کشف یک آسیبپذیری یا شکسته شدن رمزنگاری نیست، بلکه برعکس، خبری آرامشبخش برای مهندسان نرمافزار و زیرساخت است. روشن شدن روش تولید تصادفی نشان میدهد احتمال اینکه پارامترهای خم با مهندسی معکوس برای ضعیفسازی یا قرار دادن درپشتی محاسباتی انتخاب شده باشند، بسیار نامحتمل است.
همانطور که در بحثهای Hacker News نیز مطرح شد، طنز ماجرا اینجاست که یک ربع قرن بدبینی و نظریههای توطئه فنی در جامعه مهندسی، پیرامون کدی شکل گرفته بود که در واقع چیزی جز srand48(time(NULL)) در یک اسکریپت قدیمی دهه ۹۰ میلادی نبوده است. جایزه نقدی این کشف نیز از سوی Anthropic به بنیاد ISRG (سازمان پشتیبان Let's Encrypt) اهدا خواهد شد.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل