اصل ماجرا
تحقیقی نشان داد که برخی کلیدهای RSA بهدلیل پر شدن بیتهایشان با صفرهای مکرر، ساختاری کوتاه‑آستین پیدا میکنند. این ساختار باعث میشود که با تبدیل عدد به چندجملهای و فاکتورگیری از آن، کلیدها بهسرعت شکسته شوند. باگ مربوطه در نسخههای قدیمی CompleteFTP رخ داده و صدها کلید RSA و DSA را در اینترنت در معرض خطر قرار داده بود.
متن کامل ترجمهشده
چه اتفاقی می افتد هنگامی که بیتی های کلید خصوصی RSA به طور سنگین به سمت 0 به جای به طور تصادفی تولید می شوند؟ بیتی های کلید عمومی ممکن است به اندازه کافی برای ما برای تشخیص این کلید های ناخودآگاه تولید شده در وحشی باشد. همراه با هان بوک از پروژه کلید های ناخودآگاه، ما صدها کلید منحصر به فردی را پیدا کردیم که نه تنها این ویژگی را دارند، بلکه می توانند به سرعت فاکتور شوند. ما همچنین بیتی را پیدا کردیم که به بسیاری از این کلید ها منجر شد و داده های تاریخی را برای پیگیری مشکل در طول زمان تجزیه کرد. شگفت انگیز است که نماد 0 بیتی اغلب بسیار ساختار است، که به ما اجازه می دهد یک تکنیک cryptanalytic قدرتمند مبتنی بر کلید های ناخودآگاه ایجاد کنیم که از نماد استفاده می کند. ایناگر شما از CompleteFTP برای ایجاد کلیدهای میزبان بین دسامبر 2016 و دسامبر 2023 استفاده کردید، CompleteFTP یک ابزار را برای بررسی اینکه کلیدهای شما نیاز به بازسازی دارند منتشر کرده است. چگونه کلیدهای ضعیف را پیدا کردیم پروژه Badkeys یک سرویس منبع باز است که کلیدهای عمومی را برای آسیب پذیری های شناخته شده بررسی می کند. در حالی که شما از این ابزار استفاده می کنید، Hanno تعداد زیادی کلیدهای دنیای واقعی را از منابع عمومی جمع آوری کرده است، از جمله تاریخچه گواهینامه شفافیت، TLS و SSH در سراسر اینترنت، کلید های PGP و بسیاری دیگر. با جستجو برای این مجموعه از داده ها برای ماژول های RSA ناخوشایند و ناخوشایند، ما تعداد زیادی از کلید های وحشی با مدل های در شکل 1 را کشف کردیم.نمونه 1 در اسناد CT برای گواهینامه هایی که به چند سازمان بزرگ، از جمله Yahoo و Verizon، و در برخی دستگاه هایی که نرم افزار NetApp را اجرا می کنند، ظاهر می شود. خوشبختانه، این گواهینامه ها به زودی به پایان رسیده اند، اما ما هنوز با این شرکت ها نتایج ما را به اشتراک گذاشتیم. ما می خواستیم بیشتر در مورد کدام محصول مسئول تولید این کلید ها باشد، اما ما خبر نداشتیم. نمونه 2 در سرورهای SSH که نرم افزار CompleteFTP از EnterpriseDT را اجرا می کنند ظاهر می شود. آسیب پذیری زیرزمینی بر کلیدهای RSA که با استفاده از نسخه های 10.0.0–12.0.0 (دسمبر 2016–مار 2019) و کلیدهای DSA که با v10.0.0–23.0.4 (دسمبر 2016–دسمبر 2023) تولید شده اند، تاثیر می گذارد. این آسیب پذیری هااگر ما الگوریتم 1 را به عنوان یک سلسله از قاعده های 128 بیتی، یا قاعده های 32 بیتی در مدل 2 تفسیر کنیم، بلوک های تکراری از صفر به یک بلوک واحد از صفر در هر قاعده مطابقت می کنند، و آنها این “قاعده های بزرگ” را با استفاده از مجموعه ای از قاعده های کوچک تر، به نام قاعده ها، نشان می دهند. اگر ما الگوریتم 1 را به عنوان یک سلسله از قاعده های 128 بیتی، یا قاعده های 32 بیتی در مدل 2 تفسیر کنیم، بلوک های تکراری از صفر به یک بلوک واحد از قاعده ها در هر قاعده مطابقت می کنند. تنها یک زیر مجموعه کوچک متصل از قاعده ها با قاعده های تصادفی پر می شود، و بقیه قاعده ها کشف میتکنیک تبدیل بین کلها و polynomials به طور معمول است، از جمله انجام تعدادی سریع polynomial، اما متاسفانه، چند منابع توضیح می دهد که چگونه برای استفاده از آن برای factorization کلها سریع استفاده می شود. به خصوص، ما از اعداد در اساس $B$ نمایندگی کل را برای تعیین معیار های polynomial استفاده می کنیم. در نمایندگی معمول base-10، این شامل جایگزین قدرتهای 10 با قدرتهای $x$، و سپس تبدیل یک polynomial به یک کل شامل جایگزین قدرتهای $x$ با قدرتهای 10 است. ریاضی، پایه $B$ نمایندگی از یک کل $a = \sum_i_i a B^i$ مطابق با قدرت های polynomial $f_a(sum) _i_a_i xi^$، و ارزیابی اضافی polynomial $a = fاین روش نشان دادن کلها با پولنومی ها مفید است زیرا محصول ارزیابی ها $f_a(B) * f_c(B)$ برابر ارزیابی محصول $(f_a*f_c)(B)$ است. همه ارزیابی ها $x$ را با $B$ جایگزین می کند، بنابراین مهم نیست که این اتفاق پیش از یا پس از تعدادی اتفاق می افتد. همان طور که در مورد اضافه می شود.1 برای یک ماژول RSA $n$ با $w$-bit limbs، ما می توانیم نمایندگی base-$2^w$ را برای پیدا کردن یک پولنومی $f_n(x)$ با عوامل بسیار کوچک است. اگر $f_p(x)$ و $f_q(x)$ نیز معیار های بسیار کوچک دارند، پس $f_n(x) = f_p(x) * f_q(xاین نسخه بنیادی حمله است، اما من به طوری که به طوری که به طوری که به طوری که به طوری که به این ماژول های دنیای واقعی نیاز است، یک درک کلیدی را از دست می دهم. توضیح کامل در پایان این وبلاگ است. هماهنگی بین کلها و polynomials آن را آسان می سازد تا این ماژول های فرم ویژه، اما جالب است، آن را نیز کمک می کند عوامل کلی RSA ماژول ها. آلزایمر General Number Field Sieve (GNFS) دارای بهترین عملکرد غیرتطبیعی شناخته شده است، و اولین مرحله است که یک زمینه شماره را با انتخاب یک کلنومی $f_n(x)$ و نقطه ارزیابی $m$ مانند $f_n(m) = n$.2 بازگردانی مهندسی آسیب پذیری CompleteTPF. بعد از استفاده از این تکنیک به کلید هایی که Hanno یافتکلیدهای RSA تولید شده به صورت دموکراتیک مدل کوتاه را نداشتند، بنابراین ما از ابزار ILSpy استفاده کردیم تا کد .NET را در دوچرخه دموکراتیک حذف کنیم. پس از برخی مهندسی های برعکس، ما اشتباه را پیدا کردیم که کلید های کوتاه را تولید کرد. عملکرد زیر تعداد کل بزرگ را که توسط bignumLimbs نشان داده می شود با یک ارزش به صورت تصادفی تولید شده از طول بیتی مورد نیاز پر می کند. ببینید اگر شما می توانید مشکل را تشخیص دهید. بین اندازه پای و اندازه خروجی RNG وجود دارد! هر پای نیاز به 32 بیتی مواد تصادفی دارد، اما Array.Copy به طور غیرمستقیم هر عنصر 8 بیتی از خروجی RNG را به عنصر اصلی خروجی بزرگ خود هدایت می کند. ساختار تکراری در کلید های کوتاه را به این دلیل است که این مشکل هرما همچنین متوجه شدیم که چرا تست های داینامیک ما کلیدهای شکست ناپذیر ایجاد نکردند: عملکرد genRandomBits در نسخه های اخیر به کار گرفته شده است اما قابل دسترس است. نسخه های قدیمی تر از کد نوشتن کلیدهای خودکار استفاده کردند که این ویژگی آسیب پذیر را نامیدند، که بعداً برای استفاده از API های رمزنگاری استاندارد .NET اصلاح شد. ما یک نسخه قدیمی از نرم افزار CompleteFTP را به دنبال تماس های دیگر به genRandomBits ساختیم و متوجه شدیم که تولید کلیدهای DSA نیز تحت تاثیر قرار گرفت. کلید خصوصی DSA 160 بیتی $x$ قبل از آن توسط این عملکرد تولید شد و کلید های عمومی و پارامترهای آن شامل یک ژنراتور $g$ و targety $g^x$. کلید خصوصی به راحتی بازگردانده می شود، و هنگامی که ماچگونه آسیب پذیری گسترش یافت، و چگونه آن را شامل شده است تصمیم به استفاده از کد تولید کلید refactor برای استفاده از کتابخانه های استاندارد به طور قابل توجهی گسترش تاثیر را کاهش داد. این در واقع در داده ها نشان داده شده است. پروفسور نادیا هینینگر دارای مجموعه ای بزرگ از اسکن های SSH تاریخی و معاصر است که ما از آن برای پیدا کردن امضای SSH RSA شکسته استفاده می کردیم، بنابراین من بررسی کردم تا ببینم آیا این شامل میزبان CompleteFTP است. معمولاً صدها میزبان CompleteFTP در هر اسکن در سراسر IPv4 وجود داشت، و پس از هماهنگی اسکن های تاریخی با تاریخ انتشار، روند روشن است. شروع با معرفی آسیب پذیری RSA در دسامبر 2016، افزایش ثابت در تعداد میزبان با کلید های آسیب پذیر بود، و هنگامی که کد RSA دوباره نوشته شده در مارسبا این حال، اگرچه تعداد میزبانانی که نسخه ای تحت تاثیر قرار می گیرند از آن زمان به طور مداوم کاهش یافته است، درصد کلیدهای تحت تاثیر کاهش یافته است، با توجه به مشتریان که به طور منظم نرم افزار خود را به روزرسانی می کنند اما کلیدهای خود را تنها یک بار تولید می کنند. تیم EnterpriseDT در طول انتشار بسیار پاسخگوی بود. برای کمک به این کاربران، EnterpriseDT در 8 مه 2026 v26.1.0 از CompleteFTP را منتشر کرد؛ این روز رسانی به طور خودکار بررسی می کند که آیا سیستم از کلیدهای RSA یا DSA آسیب پذیر استفاده می کند و کاربران را هشدار می دهد که کلیدهای RSA نیاز به بازسازی دارند. آنها همچنین یک ابزار مستقل را منتشر کرده اند که این کار را انجام می دهد. علاوه بر این، سایت badkeys و ابزار مستقل در حال حاضر پشتیبانی از شناسایی کلیدهای RSA آسیب پذیرمنابع داده های ما به شدت نسبت به کلیدهای RSA SSH منحصر به فرد هستند، بنابراین این اعداد اغلب prevalence واقعی را نشان نمی دهند. جستجو برای کلیدهای کوتاه کوتاه، متاسفانه، ما اطلاعات بیشتری در مورد نمونه ی کوتاه کوتاه 1 نداریم، و همچنین ما نمی دانیم که آیا این آسیب پذیری به انواع کلیدی دیگر گسترش می یابد. به طور معمول الگوریتم های cryptanalytic به استفاده از دانش از بلوک های غیرقانونی از بیت های شناخته شده (از جمله ECDSA5 و RSA6) استفاده می کنند، اما فاصله منظم از فرآیند فرآیند کوتاه اضافه می کند ساختار جدید، و ممکن است تغییرات قدرتمند از این الگوریتم ها وجود داشته باشد که می توانند از این ویژگی استفاده کنند. اگر این نوع فرآیند فرآیند در دو اجرای مستقل از RSA ظاهر شود، احتمالا نمونه هایاین فرآیند استفاده از آسیب پذیری های شناخته شده برای الهام بخشیدن به الگوریتم های توانمندتر و استفاده از این الگوریتم ها برای کشف آسیب پذیری های جدید باعث ایجاد یک چرخ بازخورد قدرتمند در تجزیه و تحلیل رمزنگاری می شود. این به ما کمک می کند درک کنیم که چگونه سیستم های رمزنگاری واقعی در عمل ناکام می شوند، و تنها با مشاهده چگونگی شکستن سیستم ها، ما یاد می گیریم که چگونه آنها را امن تر کنیم. تشکر از ندیا هننگر برای معرفی من به هانانو و برای اجازه دادن من برای استفاده از اسکن SSH برای این پروژه. این اسکن ها شامل داده های تاریخی از Censys و دانشگاه میشیگان است که توسط زاکیر Durumeric و داده های معاصر و اسکرپت های تجزیه و تجزیه از کیین ه و جورجاگر شما $f_{n_2}(x)$ را با استفاده از $B=2^2^i}p(x)$ محاسبه کنید، برخی از معادل ها بزرگ هستند. چرا؟ آیا این درست است که تمام معادل های $f_p(x)$ و $f_q(x)$ با معادل های کوچک کار می کنند؟ - آیا تغییرات کمی در $f_{n_2}(x)$ وجود دارد که $f_{2^i}p(x)$ دارای معادل های کوچک است؟ آیا این معادل های کلیدی لازم برای تبدیل ارزش های کوتاه سلیقه به پولینومی ها با معادل های کوچک است؟ - اگر $f_{2^i}p(x)$ و $f_{2^j}q(x)$ هر اثر مهم برای $SA$($$)$ می تواند معادل های کوچک باشد،- خصوصیات کوتاه قفل اجازه می دهد تا ما به ساخت محصول $f_{2^i p}(x)*f_{2^j q}(x)$، اما مگر اینکه $f_{2^i p}(x)$ و $f_{2^j q}(x)$ غیر قابل کاهش هستند، factorization می تواند این را به بیش از دو حالت تقسیم کند. اثبات کنید که همیشه راهی موثر برای بازگرداندن $f$ و $q$ از factorization چندینومیک وجود دارد. - در اصطلاحات ریاضی، نقشه ارزیابی یک homomorphism حلقه است. ↩︎ - دقیق تر، اجرای عوامل مدرن استفاده از یک تجزیه سازی از این تکنیک است. آنها به دنبال یک جفت پولینومی $f_0, f_1$ که در آن $f_1$ عمومی است و $Resultant(f_0,بر اساس داده های مجوز از EnterpriseDT، آنها معتقدند که هیچ کاربر تولیدی از این مشکل تحت تاثیر قرار نمی گیرد. اسکن های ما این ادعا را تأیید می کنند، زیرا ما هیچ کلید در وحشی با این خصوصیت پیدا نکردیم. ↩︎ - Diffie-Hellman key exchange همچنین از عملکرد آسیب پذیر استفاده می کند، اما با 2048-bit exponent. این آسیب پذیر نیست، و ما معتقدیم که DH key exchanges که از این فعالیت استفاده می کنند هنوز رمزگشایی امن هستند. ↩︎ - Extended Hidden Number Problem and Its Cryptanalytic Applications توسط Hlaváč و Rosa به مشکل (EC)DSA nonces با چندین بلوک از بیت های ناشناخته در مکان های عمدی فکر می کند. ↩︎ - Solving Linear Equations Modulo Divisors: On Fac
چرا مهمه؟
کلیدهای آسیبپذیر بهدلیل الگوی صفرهای منظم در هر لیمب، بهسرعت فاکتور میشوند؛ سرورهایی که از CompleteFTP نسخههای 10.0.0 تا 12.0.0 استفاده میکردند تحت تأثیر قرار گرفتند؛ کاربران باید کلیدهای خود را بررسی و در صورت لزوم بازسازی کنند تا از نفوذ جلوگیری شود.
به درد کی میخوره؟
مدیران سامانههای SSH توسعهدهندگان نرمافزارهای انتقال فایل متخصصان امنیت اطلاعات کاربران کلیدهای RSA/DSA در محیطهای سازمانی
تو عمل چی کار کنیم؟
با استفاده از ابزارهای منتشر شده توسط پروژه badkeys میتوانید کلیدهای خود را اسکن کنید؛ اگر کلید کوتاه‑آستین شناسایی شد، باید آن را با ابزار EnterpriseDT یا روشهای استاندارد بازسازی کنید. همچنین از بهروزرسانی CompleteFTP به آخرین نسخه اطمینان حاصل کنید.
نظر Blue IT News
بهروزرسانی منظم نرمافزارهای تولید کلید و اجتناب از کدهای سفارشیسازیشده، سادهترین راه پیشگیری از چنین ضعفهای ساختاری است.
<div class=“disclosure”> این صفحه ترجمه و تفسیر کاملی از گزارش اصلی Blog است که توسط تیم تحریریه بلو آی تی نیوز به فارسی ترجمه و تحلیل شده. برای مشاهده نسخه اصلی، به منبع مراجعه کنید. </div>