آنتروپیک می‌گوید کلود منشأ بذرهای منحنی ECDSA استاندارد NIST را در یک مولد اعداد تصادفی دهه ۱۹۹۰ پیدا کرده است

www.unite.ai

انتشار در منبع: انتشار در سایت ما:

مقاله اصلی · English

شناسایی منشأ بذرهای منحنی‌های ECDSA استاندارد NIST با کمک کلود

تیم قرمز پژوهش‌های پیشرفته آنتروپیک در گزارشی پژوهشی که ۱۶ اکتبر ۲۰۲۶ منتشر شد، اعلام کرد یک مدل پژوهشی داخلی کلود توانسته است منشأ بذرهای منحنی‌های ECDSA استاندارد مؤسسه ملی استانداردها و فناوری آمریکا (NIST) را ردیابی کند. این مدل دریافت که این مقادیر با استفاده از مولد اعداد تصادفی lrand48 در کتابخانه زبان C و با مقداردهی اولیه بر اساس مُهرهای زمانی یونیکس تولید شده‌اند. این کشف به پرسشی درباره منشأ این مقادیر پاسخ می‌دهد که از زمان انتشار آن‌ها به‌دست آژانس امنیت ملی آمریکا (NSA)، بدون هیچ توضیحی درباره نحوه تولیدشان، بی‌پاسخ مانده بود.

بذرهای مرموز آژانس امنیت ملی

ECDSA یکی از پرکاربردترین استانداردهای رمزنگاری مبتنی بر منحنی بیضوی است. NIST در سال ۲۰۰۰ این استاندارد را در قالب نسخه دوم استاندارد امضای دیجیتال، موسوم به FIPS 186-2، پذیرفت. این استاندارد مجموعه‌ای از منحنی‌های بیضوی با اندازه‌ها و سطوح امنیتی متفاوت را معرفی می‌کند. برای منحنی‌هایی که روی میدان‌های اولی و دودویی تعریف می‌شوند، مشخصات استاندارد پارامتری موسوم به بذر را منتشر کرد که مقدار درهم‌سازی آن ضریب b منحنی را تعیین می‌کند. آژانس امنیت ملی این بذرها را بدون ارائه توضیح یا توجیهی منتشر کرد. در گزارش آنتروپیک، بذر منحنی P-256 نیز به‌عنوان نمونه‌ای از این مقادیر آمده است: C49D3608 86E70493 6A6678E1 139D26B7 819F7E90؛ مقداری که منشأ آن هنگام انتشار مشخص نشده بود.

نیل کوبلیتز و آلفرد منزس در مقاله‌ای با عنوان «معمایی پیچیده در پوششی از راز» (A Riddle Wrapped in an Enigma) این مناقشه را بررسی کردند. در ادامه، بررسی مستقلی از سوی یک علاقه‌مند برای کشف منشأ بذرها شکل گرفت و برای یافتن پاسخ نیز جایزه‌ای تعیین شد. نظریه غالب این بود که جری سولیناس، کارمند باسابقه آژانس امنیت ملی، بذرها را با محاسبه مقدار درهم‌سازی یک عبارت طنزآمیز تولید کرده است.

سولیناس در اظهارنظری در سال ۲۰۱۵ که در گزارش بازنشر شده، گفته بود: «پیام چیزی در مایه‌های «به باب و جری افزایش حقوق بدهید» یا «باب و جری حرف اول را می‌زنند» یا عبارتی شبیه این‌ها بود.» او گفت باب رایتر کد برنامه را نوشته بود و هیچ آرشیوی از آن دوره پیدا نشده است. سولیناس در سال ۲۰۲۳ درگذشت و دیگر همکاران نیز به درخواست‌ها برای ارائه اطلاعات پاسخ ندادند؛ در نتیجه، پرسش درباره چگونگی تولید بذرها همچنان بی‌پاسخ ماند.

کلود چگونه منشأ بذرها را پیدا کرد؟

چند نفر از کارکنان آنتروپیک پیش‌تر، با اتکا به سرنخ مربوط به عبارت طنزآمیز، تلاش کرده بودند منشأ بذرها را پیدا کنند، اما موفق نشده بودند. گزارش می‌گوید این سرنخ در نهایت نادرست از آب درآمد. در اکتبر ۲۰۲۶، یکی از کارکنان آنتروپیک از یک مدل پژوهشی داخلی پرسید که آیا می‌تواند بدون اشاره به آن سرنخ مشهور، روش تولید بذرها را کشف کند یا خیر. به گفته آنتروپیک، کلود در کمتر از نیم ساعت منشأ بذرهای پنج منحنی اولی NIST، یعنی P-192، P-224، P-256، P-384 و P-521 را شناسایی کرد. این بذرها خروجی‌های مولد اعداد تصادفی lrand48 در کتابخانه C بودند که با یک مُهر زمانی یونیکس مقداردهی اولیه شده بود؛ در این فرایند هیچ الگوریتم درهم‌سازی به کار نرفته بود. برنامه تولیدکننده در هر دور ۲۰ بایت را به‌عنوان یک بذر احتمالی استخراج می‌کرد و بذر منتشرشده P-256، گزینه شماره ۱۸۴۲ در اجرای آن برنامه بود.

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

در میان بذرها، یک الگو بیش از بقیه جلب توجه کرد: اگر هر بذر را به‌صورت پنج واژه ۳۲ بیتی بنویسیم، در چهار مورد از ده بذر، بیت بالایی هر ۲۰ واژه صفر است؛ رخدادی که احتمال وقوع تصادفی آن یک در ۵۸۱۰ برآورد می‌شود. این الگو کلود را به سمت lrand48 هدایت کرد؛ مولدی هم‌نهشتی خطی که تنها ۳۱ بیت بالایی از حالت ۴۸ بیتی خود را برمی‌گرداند. کلود برای چهار بذر یادشده، حالت داخلی مولد را با آزمایش تمام ۲ به توان ۱۷ حالت ممکن برای ۱۷ بیت پنهان نخستین واژه بازیابی کرد و سپس بررسی کرد که آیا چهار واژه بعدی نیز با آن سازگارند یا نه. این روش برای هر چهار بذر موفقیت‌آمیز بود.

بذرهای منحنی‌های اولی نیز با همین مولد lrand48 تولید شده بودند، اما در هر خروجی تعداد کمتری از بیت‌ها حفظ شده بود. بازسازی حالت داخلی یک مولد هم‌نهشتی خطی با خروجی کوتاه‌شده، مسئله‌ای کلاسیک در روش‌های شبکه‌ای است. کلود این مسئله را با کاهش پایه به روش لنسترا–لنسترا–لوواس (LLL) حل کرد و حل‌گر را روی تمام پنجره‌های ممکن به کار گرفت. هر پنج بذر منحنی‌های اولی NIST و پنج بذر دیگر از استاندارد ANSI X9.62 با الگوی یکسانی مطابقت داشتند: lrand48() >> 23. حالت ۴۸ بیتی بازیابی‌شده برای هر بذر نیز قادر بود تمام ۱۶۰ بیت آن را دوباره تولید کند.

گزارش همچنین بخشی از استدلال داخلی ثبت‌شده کلود در جریان این بررسی را بازنشر می‌کند. مدل ابتدا بررسی کرد که آیا ممکن است در یک محیط آزمایشی شبیه‌سازی‌شده فعالیت کند یا خیر و سپس به این نتیجه رسید: «این موضوع را با محاسبه مستقیم از سمت خودم تأیید کرده‌ام: تطبیق ۱۶۰ بیتی با یک بذر ۳۲ بیتی و یک اندیس کوچک، آن هم بدون احتمال معقول برای تصادف، در ۱۰ مورد با ۱۶۰ بیت. این واقعی است.»

مُهرهای زمانی و نقاط پایه

از آنجا که اجرای مولد در جهت معکوس نیز به همان اندازه امکان‌پذیر است، کلود حالت مولد مربوط به هر بذر را به عقب برد تا به وضعیت مقداردهی اولیه srand48 برسد. این وضعیت را می‌توان از روی ۱۶ بیت کم‌ارزش آن که برابر با 0x330E است تشخیص داد؛ حالتی که به‌طور متوسط هر ۶۵٬۵۳۶ گام یک بار رخ می‌دهد. برای هر ده بذر منحنی‌های اولی، زمان‌های مقداردهی اولیه به مُهرهای زمانی یونیکس مربوط به فاصله مه ۱۹۹۷ تا آوریل ۱۹۹۸ رسیدند. در مقابل، زمان‌های مقداردهی اولیه چهار منحنی دودویی به فوریه ۱۹۸۴ اشاره داشتند. با دو برابر کردن این مُهرهای زمانی، تاریخ ۱۷ آوریل ۱۹۹۸ به دست می‌آمد؛ یعنی دو هفته پس از اجرای مربوط به P-224. همین موضوع باعث شد تیم احتمال دهد برنامه ساعت را بر دو تقسیم کرده بوده است.

کلود همچنین منشأ نقاط پایه برخی منحنی‌ها را شناسایی کرد. هر منحنی یک نقطه پایه به نام G دارد که کلید عمومی هر کاربر در ECDSA مضربی از آن است. بذر بازیابی‌شده به‌تنهایی منشأ این نقطه را مشخص نمی‌کند.

در شش منحنی تولیدشده در مه ۱۹۹۷، یعنی P-192 و منحنی‌های نمونه ANSI X9.62 با نام‌های prime192v2، prime192v3 و prime239v1 تا prime239v3، نقاط پایه به مولد اعداد تصادفی موجود در FreeLIP بازمی‌گردند؛ بسته نرم‌افزاری حساب‌های اعداد صحیح بزرگ که آرجن لنسترا توسعه داده بود. کد این مولد در نسخه‌های اولیه کتابخانه NTL ویکتور شوپ نیز منتشر شده بود.

در این روش، مولد با یک عدد صحیح کوچک مقداردهی اولیه می‌شود و سپس هفت خروجی آن کنار گذاشته می‌شود. مختصات x نامزد از خروجی‌های ۲۶ بیتی به دست می‌آیند و با پیمانه p کاهش داده می‌شوند. این فرایند تکرار می‌شود تا مقدار x روی منحنی قرار بگیرد. مقادیر اولیه مولد که کلود شناسایی کرد عبارت‌اند از ۲۰۰۰۰ برای P-192؛ مقادیر ۲۰۴۲۰، ۲۰۵۰۷ و ۲۰۵۰۹ به‌ترتیب برای prime239v1، prime239v2 و prime239v3؛ و مقادیر ۲۰۵۱۲ و ۲۰۵۱۷ به‌ترتیب برای prime192v2 و prime192v3.

آنتروپیک می‌گوید تا جایی که این شرکت اطلاع دارد، پیش از این منشأ هیچ‌یک از نقاط پایه NIST توضیح داده نشده بود. با این حال، نقاط پایه منحنی‌های P-224، P-256، P-384 و P-521 با این روش مطابقت ندارند.

ارزیابی امنیتی و پرسش‌های بی‌پاسخ

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

با این حال، برخی پرسش‌ها همچنان بی‌پاسخ مانده‌اند. همه بذرهای نامزد ۲۰ بایتی الزاماً منحنی معتبری تولید نمی‌کردند و تیم متوجه شد که بعضی نامزدهای بالقوه معتبر کنار گذاشته شده‌اند. بذر منتشرشده P-256 گزینه شماره ۱۸۴۲ در اجرای برنامه بود، اما گزینه شماره ۸۷۶ از همان اجرا نیز منحنی‌ای با مرتبه اولی و اندازه مناسب تولید می‌کند که پارامترهای آن با همان روشی انتخاب شده‌اند که برای منحنی منتشرشده به کار رفته است. در اجرای مربوط به P-224، سه نامزد از این نوع کنار گذاشته شدند و در دو اجرای پشت منحنی‌های نمونه ANSI X9.62 نیز هفت نامزد دیگر نادیده گرفته شدند.

تیم می‌گوید شمار اندک نامزدهای کنار گذاشته‌شده باعث می‌شود انتخاب عمدی منحنی‌های تضعیف‌شده را محتمل نداند؛ هرچند از نظر نظری نمی‌توان احتمال انتخاب منحنی‌هایی با ویژگی مشخص را از طریق جست‌وجو میان مُهرهای زمانی کاملاً منتفی دانست. یکی از بذرها به‌طور کامل در برابر تلاش برای بازیابی مقاومت کرد: پنجمین بذر منحنی دودویی، B-163، با هیچ‌یک از روش‌هایی که کلود آزمایش کرد مطابقت نداشت. منشأ نقاط پایه P-224، P-256، P-384 و P-521 و همچنین نقاط پایه منحنی‌های دودویی NIST نیز همچنان نامشخص است.

جایزه ۳۶٬۸۶۴ دلاری تعیین‌شده برای کشف منشأ بذرها به گروه پژوهشی امنیت اینترنت (Internet Security Research Group) اهدا خواهد شد. گزارش از فیلیپو والسوردا به‌دلیل سازمان‌دهی این جایزه تشکر می‌کند و یاد جری سولیناس را نیز گرامی می‌دارد. انجام این پژوهش به جان وود، هنری دو والانس، آوا هاول، زک وُیس، لوسی سوئیت، امیر امیدی، پل کراولی، آین مک‌گینیس، نیکلاس کارلینی و استیو وایس نسبت داده شده است. کد بازتولید نتایج منتشرشده در گزارش نیز با مجوز CC0 1.0 Universal به مالکیت عمومی واگذار شده است.