پرش به محتوای اصلی
پرش به محتوای مقاله

درون سازوکار منحنی P-256؛ ردپای ساعت یونیکس در رمزنگاری

·۲۵ مهر ۱۴۰۵۷ دقیقه مطالعه
کلود ریشه‌های منحنی NIST را به ساعت ۱۹۹۷ و lrand48 ردیابی کرد. چرخشی در P-256 وجود ندارد.
کلود ریشه‌های منحنی NIST را به ساعت ۱۹۹۷ و lrand48 ردیابی کرد. چرخشی در P-256 وجود ندارد.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

استفاده از یک مدل زبانی برای حل یک معمای رمزنگاری ۲۵ ساله از طریق سنتز الگوهای نرم‌افزاری قدیمی (PRNGهای دهه ۹۰) به جای حملات ریاضی سنتی.

تصور کنید یک معمای ریاضی که ۲۵ سال است برترین رمزنگاران جهان را به شک و تردید انداخته، در کمتر از ۳۰ دقیقه توسط یک مدل هوش مصنوعی حل شود. این اتفاق دقیقاً همان چیزی است که اخیراً در آزمایشگاه‌های آنتروپیک رخ داده است. در حالی که مدت‌ها مشکوک بودیم که NSA دره‌های مخفی (Backdoors) را در پرکاربردترین استاندارد رمزنگاری برای امضاهای JWT جاسازی کرده است، یک مدل تحقیقاتی داخلی از شرکت آنتروپیک عملاً این بحث را به سرانجام رساند. این مدل با ردیابی بذرهای منحنی بیضوی NIST P-256 تا یک برچسب زمانی یونیکس (Unix timestamp) در سال ۱۹۹۷، یک معمای رمزنگاری ۲۵ ساله را حل کرد.

به نقل از گزارش داخلی آنتروپیک (Anthropic)، این مدل توانست بذر (Seed) منحنی‌های بیضوی NIST P-256 را که زیربنای امضاهای JWT و بسیاری از پروتکل‌های امنیتی وب است، ردیابی کند. این مدل دریافت که این مقادیر تصادفی، حاصل یک ساعت یونیکس در سال ۱۹۹۷ بوده‌اند، نه عبارات رمز پیچیده و محرمانه. همان‌طور که در تحلیل‌های پیشین ما درباره‌ی رویکردهای مدل‌های زبانی به مسائل ریاضی اشاره کردیم، این کشف بحث را از فضای گمانه‌زنی به فضای تایید منتقل می‌کند. برای دهه‌ها، منشأ بذرهای مورد استفاده در استاندارد FIPS 186-2 نامشخص بود و همین موضوع باعث شد بسیاری گمان کنند NSA (آژانس امنیت ملی آمریکا) عمداً مقادیری را انتخاب کرده تا یک «درِ پشتی» (Trapdoor) برای رمزگشایی مخفیانه ایجاد کند. در دنیای رمزنگاری منحنی بیضوی، اگر یک بذر آزادانه انتخاب شود، سازنده تئوریکاً می‌تواند به دنبال منحنی‌ای بگردد که دارای یک نقطه ضعف خاص و محرمانه باشد.

بذرهای منحنی NIST به ساعت ۱۹۹۷ و lrand48 ردیابی شد. چرخشی در P-256 نیست.

معمای دهه ۹۰

طبق مستندات، وقتی NIST در سال ۲۰۰۰ استاندارد ECDSA را در FIPS 186-2 معرفی کرد، منحنی‌های P-192 تا P-521 هر کدام از یک بذر مشتق شده بودند. آنتروپیک در یادداشت خود اشاره می‌کند که این بذرها «توسط NSA ارائه شده بودند، بدون اینکه هیچ توضیح یا توجیهی برای آن‌ها داده شود».

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

در حالی که وب‌سایت BleepingComputer در سال ۲۰۲۳ اشاره کرد که هیچ مدرکی برای وجود چنین درِ پشتی یافت نشده است، اما هیچ‌کس هم نمی‌توانست احتمال آن را کاملاً رد کند. این عدم قطعیت باعث شد فیلیپ والسوردا (Filippo Valsorda) و گروهی از رمزنگاران، جایزه‌ای ۱۲,۲۸۸ دلاری برای هر کسی که بتواند جملات اصلی بذرها را پیدا کند، تعیین کنند. این جایزه در صورتی که برنده آن را به خیریه اهدا می‌کرد، سه برابر شده و به ۳۶,۸۶۴ دلار می‌رسید.

نحوه رمزگشایی توسط کلود

بر اساس یادداشتی که آنتروپیک در ۱۶ اکتبر منتشر کرد، این مدل هوش مصنوعی به دنبال یک جمله یا عبارت نبود. در عوض، مدل این فرضیه را مطرح کرد که نرم‌افزار مورد استفاده، از یک مولد اعداد شبه‌تصادفی (PRNG) استفاده کرده که همراه با کتابخانه‌های C دهه ۹۰ عرضه می‌شده است. برای درک دقیق‌تر این فرآیند، می‌توانیم به بررسی این موضوع بپردازیم که چطور Claude توانست منشأ بذرهای رمزنگاری NIST را شناسایی کند و الگوهای قدیمی نرم‌افزاری را بازسازی نماید.

  • مدل شناسایی کرد که این مولد lrand48 (یا هم‌خانواده‌اش drand48) است که به خانواده POSIX تعلق دارد. این مولدها اعداد را با استفاده از یک الگوریتم هم‌نهادی خطی (Linear Congruential Algorithm) و محاسبات صحیح ۴۸ بیتی تولید می‌کنند.
  • کلود وضعیت داخلی مولد را از روی بذرهای منتشر شده بازیابی کرد و با این مسئله به عنوان یک «مسئله شبکه» (Textbook Lattice Problem) برخورد کرد.
  • نتایج نشان داد که بذرهای P-192، P-224، P-256، P-384 و P-521 همگی خروجی‌های lrand48 هستند که هر کدام با یک برچسب زمانی یونیکس مقداردهی (Seed) شده‌اند.
  • به طور مشخص، اجرای مربوط به P-256 به اوت ۱۹۹۷ رمزگشایی می‌شود.
  • چهار بذر منحنی باینری (B-233, B-283, B-409, B-571) نیز با همین طرح مطابقت داشتند، هرچند به نظر می‌رسد آن‌ها از ساعتی استفاده کرده‌اند که مقدارش نصف شده بود.
  • برای P-256، بذر منتشر شده کاندیدای ۱۸۴۲ است، در حالی که کاندیدای ۸۷۶ از همان اجرا نیز یک منحنی با مرتبه اول (Prime-order curve) می‌داد. اینکه چرا کاندیدای ۸۷۶ نادیده گرفته شده، هنوز نامعلوم است.
  • نقاط پایه (Base point) برای P-192 و پنج منحنی نمونه ANSI X9.62 از یک مولد متفاوت به نام FreeLIP و با استفاده از بذرهای صحیح کوچک تولید شده‌اند.

بذرهای منحنی NIST به ساعت ۱۹۹۷ و lrand48 ردیابی شد. چرخشی در P-256 نیست.

تایید ادعا و تحلیل ریاضی

والسوردا با پیاده‌سازی مجدد الگوریتم در زبان Go، نتایج را تایید کرد. او خاطرنشان کرد که این یافته‌ها تئوری وجود درِ پشتی عمدی را به شدت تضعیف می‌کند.

استدلال والسوردا بر اساس اعداد است. یک ایده از سال ۲۰۱۷ توسط برنستین و لانگه پیشنهاد شده بود که طبق آن، برای هدف‌گذاری روی کلاسی از منحنی‌های ضعیف، به حدود ۷۰ بیت آزادی در انتخاب بذر نیاز است. اما با استفاده از برچسب‌های زمانی سال‌های ۱۹۹۷-۹۸ و یک مولد ۴۸ بیتی، والسوردا می‌نویسد که حتی اگر NSA می‌توانست هر برچسب زمانی در آن بازه و هر یک از ۱۶ کاندیدای اول را انتخاب کند، «به سختی ۳۰ بیت آزادی داشت».

او نتیجه می‌گیرد که این یافته‌ها «تکنیک توصیف شده توسط برنستین و لانگه را کاملاً رد می‌کند». آنتروپیک با لحنی کمی محتاطانه‌تر بیان می‌کند که این یافته‌ها وجود درِ پشتی را «بسیار کمتر محتمل» می‌کند. نکته حیاتی این است که در پست آنتروپیک صراحتاً ذکر شده: «این یک شکست رمزنگاری، حمله جدید یا نقطه ضعف در منحنی‌های ECDSA نیست».

رازهای باقی‌مانده

با وجود این پیشرفت، هنوز برخی شکاف‌ها وجود دارد. آنتروپیک اشاره کرد که بذر پنجم باینری (B-163) با هیچ‌کدام از روش‌هایی که مدل امتحان کرده مطابقت ندارد و همچنان توجیه نشده باقی مانده است. علاوه بر این، تیم تحقیق نمی‌داند نقاط پایه برای P-224، P-256، P-384 و P-521 چگونه تولید شده‌اند.

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

هشدار برای توسعه‌دهندگان

قبل از اینکه به دنبال وصله (Patch) بگردید: پست خود آنتروپیک می‌گوید «هیچ اقدامی لازم نیست و نیازی نیست کاری را متفاوت انجام دهید» در رابطه با P-256. شما نیازی به چرخش کلیدها (Rotate keys) یا تعویض منحنی‌ها ندارید.

با این حال، این حادثه یک هشدار حیاتی درباره PRNGهای غیررمزنگاری است. این واقعیت که خروجی یک برنامه سال ۱۹۹۷ را می‌توان تا ثانیه دقیق اجرا ردیابی کرد، خطر استفاده از Math.random() یا ماژول‌های random برای توکن‌های حساس امنیتی را برجسته می‌کند. مستندات POSIX صراحتاً بیان می‌کند که خانواده drand48 «باید در هر زمانی که الزامات غیربدیهی (از جمله ایمنی) باید برآورده شوند، avoided (اجتناب) شود».

توسعه‌دهندگان شدیداً ترغیب می‌شوند که کدهای خود را برای موارد زیر بازرسی کنند:

  • srand48() یا lrand48 در زبان C
  • Math.random() در JavaScript (همان‌طور که در MDN هشدار داده شده)
  • math/rand در زبان Go
  • import random یا from random import در پایتون

قطعی جزئی API دیپ‌سیک به مدت ۴ ساعت و ۵۲ دقیقه؛ هزینه یک هفته به صورت اعتبار بازگردانده می‌شود

برای یافتن این موارد در مخزن کد خود، از دستور git grep استفاده کنید:
git grep -nE \ -e 'srand(48)?\(' -e '[dlm]rand48' \ -e 'Math\.random' \ -e '"math/rand' \ -e '^[[:space:]]*(import random|from random import)'

یافتن این توابع همیشه به معنای وجود باگ نیست؛ مثلاً بر هم زدن (Shuffle) یک مجموعه داده برای تست مشکلی ندارد. اما اگر خروجی این توابع در یک توکن، رمز عبور یا URL قرار بگیرد، یک آسیب‌پذیری است. یک PRNG که با زمان مقداردهی شده، فقط به اندازه زمانی که اجرا شده است، محرمانه است.

برای شناسه‌های نشست (Session ID)، کلیدهای API یا توکن‌های بازیابی رمز عبور، از مولد رمزنگاری سیستم‌عامل استفاده کنید:

  • پایتون: از ماژول secrets استفاده کنید (secrets.token_urlsafe(32)).
  • نود جی‌اس: از crypto.randomBytes استفاده کنید (randomBytes(32).toString("base64url")).
  • گو: از crypto/rand استفاده کنید، نه math/rand.
  • مرورگر: از crypto.getRandomValues() استفاده کنید.

تحلیل: تغییر رویکرد در رمزگشایی توسط AI

این اتفاق نشان‌دهنده تغییری در نحوه نگاه ما به نقش هوش مصنوعی در تحقیقات امنیتی است. مدل به دنبال یک «باگ» به معنای سنتی نبود؛ بلکه یک سنتز سطح بالا از الگوهای نرم‌افزاری تاریخی (کتابخانه‌های C دهه ۹۰) و تکنیک‌های ریاضی (مسائل شبکه) را برای حل یک معمای منشأ انجام داد. این نشان می‌دهد که LLMها می‌توانند به عنوان جهش‌های شهودی برای متخصصان انسانی عمل کنند و فضای جستجو را از «جملات بی‌شمار ممکن» به «مجموعه خاصی از برچسب‌های زمانی ۱۹۹۷» محدود کنند.

برای حوزه رمزنگاری، این اتفاق «قوس بازپروری» رمزنگاری منحنی بیضوی NIST را کامل می‌کند. با اثبات اینکه بذرها نتیجه یک مقداردهی تنبلانه با ساعت (Clock-seed) بوده‌اند و نه یک محاسبه بدخواهانه، منحنی‌های NIST اکنون قابل اعتمادتر دیده می‌شوند. والسوردا حتی بیان می‌کند که با توجه به امضاهای قطعی (Deterministic signing) مدرن، او اکنون شخصاً منحنی‌های NIST را به Curve25519/Ed25519/X25519 ترجیح می‌دهد.

در مورد جایزه، تیم آنتروپیک جایزه را دریافت و آن را به گروه تحقیقات امنیتی اینترنت (ISRG) - سازمان غیرانتفاعی پشت Let's Encrypt - اهدا کرد که در نهایت مبلغ نهایی را به ۳۶,۸۶۴ دلار رساند.

اگر اسکریپت‌های بازتولید را اجرا کرده‌اید یا توکن‌های Math.random() را در مخزن خود پیدا کرده‌اید، در کامنت‌ها به من اطلاع دهید.


اگر این مطلب مفید بود، من Hermes IDE را ساخته‌ام؛ یک IDE رایگان و با سورس باز (BSL 1.1) برای macOS، ویندوز و لینوکس. این ابزار به شما اجازه می‌دهد Claude Code، Codex و سایر ایجنت‌های کدنویسی را در کنار هم اجرا کنید، به طوری که هر تسک روی برنچ و ورک‌تری (Worktree) خودش باشد. اگر می‌خواهید یک ایجنت لیست git grep شما را بدون دست زدن به کد اصلی بررسی کند، آن را دانلود کنید یا سورس را در گیت‌هاب بخوانید. این پروژه هیچ وابستگی به آنتروپیک یا فروشندگان ایجنت ندارد.

مصاحبه‌های طراحی سیستم همیشه به همان تصمیمات کوچک بازمی‌گردند: چگونه لینک‌های کوتاه، IDها و توکن‌های نشست را تولید کنید و اگر کسی بتواند آن‌ها را پیش‌بینی کند، چه اتفاقی می‌افتد. کتاب System Design Pocket Guide: Interviews ۱۵ طراحی واقعی را گام به گام و با بررسی Trade-offها بررسی می‌کند. این یکی از ۸ کتاب کوتاه در سری Pocket Guides for Developers است که موضوعاتی چون ایجنت‌ها، RAG، پرامپت‌ها، Observability، رویدادها، دیتابیس‌ها و طراحی سیستم را پوشش می‌دهد.

چرا این موضوع مهم است؟

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

تأثیر برای ایران

این خبر بیشتر برای پژوهشگران امنیت و توسعه‌دهندگانی که با سیستم‌های Legacy سر و کار دارند اهمیت دارد؛ یادآور این است که توابع تصادفی ساده در کدهای قدیمی می‌توانند نقطه ضعف امنیتی باشند.

·نگاه ما
تحریریه دات‌هوش

این اتفاق نشان می‌دهد که مدل‌های زبانی بزرگ از مرحله «تولید متن» به مرحله «سنتز الگوهای تاریخی» رسیده‌اند. مدل آنتروپیک با ترکیب دانش از کتابخانه‌های C دهه ۹۰ و ریاضیات شبکه‌ها، فضای جست‌وجو را از بی‌نهایت جملات احتمالی به یک بازه زمانی مشخص محدود کرد. این یک تغییر پارادایم در تحلیل رمزنگاری است؛ جایی که شهود مدل در شناسایی «تنبلی برنامه‌نویس» (استفاده از ساعت سیستم) جایگزین محاسبات خام شد.

منابع

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

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.