این مقاله در ابتدا فقط برای اعضای ستون "مرجع رمزنگاری" در Zhihu در دسترس بود، اما اکنون آن را به طور دائمی عمومی میکنم.
چون این موضوع زمانبر است ------ آدرسهای تحت تأثیر به طور انبوه در حال پاکسازی هستند و هر شب که دیرتر بدانید، یک روز بیشتر در معرض خطر قرار دارید. قرار دادن آن پشت دیوار پرداخت، به هیچ کس سودی نمیرساند.
لطفاً آن را بخوانید، با بخش ۶ چک کنید که آیا در لیست هستید یا نه و به هر کسی که ممکن است تحت تأثیر قرار گیرد، ارسال کنید.
------------متن اصلی------------
۴۱ دقیقه، ۱۱۹۶ آدرس خالی شدند. ویژگی مشترک قربانیان این است: از سال ۲۰۲۱ دیگر هیچ حرکتی در ارزهای خود نداشتهاند. هر چیزی که برای خود نگهداری انجام دادهاید ------ آفلاین، پشتیبانگیری تقسیمشده، Passphrase، چند امضایی ------ تماماً از این کلید در طول عمرش محافظت میکند؛ اما هیچکس به عقب برنگشته تا تولد آن را بررسی کند. و محل تولد کلید، هیچ نشانهای به جا نمیگذارد: انفجار آنتروپی در زنجیره به طور کامل غیرقابل مشاهده است، ممکن است پنج سال پیش واقعی بوده باشد و شما امروز نمیتوانید آن را پیدا کنید.
در تاریخ ۳۰ ژوئیه ۲۰۲۶، یک سری معاملات عجیب در زنجیره بیتکوین ظاهر شد.
عجیب بودن نه در مبلغ، بلکه در ریتم و هدف است. در ۴۱ دقیقه، ۱۱۹۶ آدرس خالی شدند. این آدرسها هیچ ارتباطی با یکدیگر ندارند و در سالهای مختلف، کشورهای مختلف و عادات استفاده مختلف پراکندهاند. تنها ویژگی مشترک این است: بیشتر صاحبان آنها از سال ۲۰۲۱ دیگر هیچ حرکتی در این ارزها نداشتهاند. ذخیره سرد، نگهداری طولانیمدت، انضباط کتاب درسی.
تا ۲ آگوست، عددی که Galaxy Research ردیابی کرده بود: حدود ۱۳۶۷ بیتکوین، حدود ۸۸۶۰۰۰۰۰ دلار، بیش از ۴۵۰۰ آدرس. و سایتهای عمومی شواهدی که بعداً تأسیس شدند، coldcardentropy.org، در مجموع ۶۶۵۷ آدرس منبع منحصر به فرد را در شش سطح شواهد ثبت کردهاند ------ که در آن اولین موج پاکسازی هماهنگ شامل ۵۰۰ معامله و ۵۹۴.۴۷۷۲۲۴۸۴ BTC بود، دقیق تا هشت رقم اعشار.
در روز ۳۰ ژوئیه، Coinkite دلیل را تأیید کرد: کیف پول سختافزاری Coldcard آنها، از مارس ۲۰۲۱، به طور نادرستی کلیدهای خصوصی را تولید میکرد.
این جمله نیاز به توقف دارد تا وزن آن را درک کنید. نه کیف پول هک شده، نه عبارت یادآوری لو رفته، نه کسی به دستگاه دسترسی پیدا کرده است. بلکه هر روزی که این کیف پولها از زمان تولید به طور عادی کار کردهاند، هر کلیدی که تولید کردهاند، به اندازهای ضعیفتر از آنچه که باید باشد، بوده است. و این موضوع از مارس ۲۰۲۱ واقعی بوده است، از آن روز تا ۳۰ ژوئیه ۲۰۲۶، هیچکس، هیچ داده زنجیرهای، هیچ دستگاهی نمیتواند به شما بگوید که این واقعیت دارد.
بیشتر مردم ------ از جمله بسیاری از بازیکنان قدیمی که خود نگهداری را به عنوان یک ایمان میدانند ------ خطرات خود نگهداری را به این شکل درک میکنند: کلید خصوصی در دستان شماست، بنابراین خطر نیز در دستان شماست؛ تا زمانی که عبارت یادآوری را لو ندهید، فیشینگ نشوید، دستگاه را عوض نکنید و تحت تهدید چکش قرار نگیرید، ارز ایمن است. تمام دژهای دفاعی بر اساس این مرحله "نگهداری" ساخته شدهاند.
من فکر میکنم دقیقتر این است: آسیبپذیرترین نقطه خود نگهداری در نگهداری نیست، بلکه در تولید است ------ در آن لحظهای که کلید متولد میشود. و برخلاف خطرات نگهداری، خطرات تولید یک "فرضیه اعتماد با بعد زمانی" است: ممکن است در یک زمان گذشته قبلاً نادرست بوده باشد و در هر زمان بعدی، شما نمیتوانید از طریق مشاهده آن را کشف کنید. هرچه کیف پول سرد شما سردتر باشد، دوره قرارگیری در معرض آن طولانیتر است.
اول تمام اصطلاحات فنی را دور بیندازید.
عبارت یادآوری شما در واقع یک رشته عدد تصادفی است. "تصادفی" این دو کلمه تمام امنیت را به دوش میکشد ------ زیرا فضای کلید خصوصی بیتکوین به اندازهای بزرگ است که هیچ مرزی ندارد، امنیت از هیچ قفل یا رمز عبوری نمیآید، بلکه از یک چیز میآید: هیچکس نمیتواند آن رشته شما را حدس بزند.
پس این رشته عدد تصادفی از کجا میآید؟ در کیف پول سختافزاری یک تراشه مخصوص وجود دارد که با استفاده از نویز فیزیکی عدد تصادفی واقعی تولید میکند ------ نویز حرارتی، لرزش مدار و عدم قطعیتهای دنیای فیزیکی. این ۱۲۸ بیت تصادفی تولید میکند، به این معنی که احتمالها ۲ به توان ۱۲۸ است، بیشتر از اتمهای موجود در جهان. به همین دلیل است که میتوانید با اطمینان ارزهای خود را روی یک تکه کاغذ که ۲۴ کلمه روی آن نوشته شده است، قرار دهید.
و مشکل این بار این است: به دلیل یک سوئیچ کامپایل نادرست، آن تراشه نویز فیزیکی اصلاً فراخوانی نشده است. دستگاه به یک تولیدکننده عدد تصادفی شبه در نرمافزار بازگشت ------ چیزی که با فرمول محاسبه میشود، به نظر تصادفی میرسد اما در واقع کاملاً قابل محاسبه است. نتیجه این است که مدلهای Mk2/Mk3 تنها حدود ۴۰ بیت از تصادفی بودن مؤثر تولید کردهاند.
۴۰ بیت چقدر است؟ حدود یک تریلیون احتمال. به نظر میرسد زیاد باشد، اما برای یک کامپیوتر معمولی که مایل است چند روز کار کند، یک تریلیون یک بعد از ظهر است.
شما یک گاوصندوق پیشرفته خریداری کردهاید، تولیدکننده وعده داده است که قفل آن ۱۲۸ بیت ترکیب دارد. شما آن را در زیرزمین قرار میدهید، به دیوار جوش میدهید و کلید را به سه قسمت تقسیم کرده و در سه شهر دفن میکنید. پنج سال گذشته، گاوصندوق هرگز شکسته نشده است، جوشها سالم هستند و سه قسمت کلید در دسترس است. سپس یک روز به زیرزمین میروید و گاوصندوق خالی است.
دلیل این است: در خط تولید تولیدکننده، یک سوئیچ به اشتباه تنظیم شده است، قفل آن دسته از گاوصندوقها در واقع تنها ۴۰ بیت ترکیب دارد. گاوصندوق شکسته نشده است ------ بلکه با کلیدهای کپی باز شده است. و از روز اول تولید، این واقعیت وجود داشته است. تمام محافظتهایی که شما در این پنج سال انجام دادهاید ------ جوشکاری، تقسیم، مکانهای مختلف ------ احتمال شکستن گاوصندوق را محافظت کرده است، در حالی که این گاوصندوق هرگز نیازی به شکستن نداشته است.
یک نکته دیگر این است: این موضوع هیچ نشانهای ندارد. گاوصندوق صدا نمیزند، قفل شل نمیشود، و شما هر سال که برای بررسی میروید، هیچ نشانه غیرعادی نمیبینید. تنها زمانی که میتوانید بدانید، لحظهای است که آن باز میشود.
این هسته این شماره است: ما عادت کردهایم که یک کلید را در تمام عمرش بررسی کنیم، اما هرگز به عقب برنگشتهایم تا تولد آن را بررسی کنیم. و محل تولد هیچ نشانهای به جا نمیگذارد.
در مارس ۲۰۲۱، Coldcard یک مهاجرت زیرساختی انجام داد ------ محاسبات رمزنگاری را به libsecp256k1 که در اکوسیستم اصلی بیتکوین امتحان شده است، منتقل کرد و کتابخانه libNgU خود را معرفی کرد. این یک ارتقاء کیفیت بود و انگیزه کاملاً مشروع بود.
مشکل در کدی است که در این مهاجرت به همراه آورده شده است. در random.c (libngu، خطوط ۲۲ تا ۳۱)، توسعهدهنده یک حفاظ نوشته است: اگر در زمان کامپایل، تولیدکننده عدد تصادفی سختافزاری فعال نشده باشد، مستقیماً خطا گزارش کرده و کامپایل را متوقف کند. این حفاظ با استفاده از دستور پیشپردازش C نوشته شده است:
#ifndef MICROPY_HW_ENABLE_RNG
#error "نیاز به تولیدکننده عدد تصادفی سختافزاری"
#endif
معنای #ifndef این است که "اگر این ماکرو تعریف نشده باشد". فکر نویسنده این حفاظ این بود: تا زمانی که کسی فراموش کند که تولیدکننده عدد تصادفی سختافزاری را روشن کند، کامپایل شکست خواهد خورد و حادثهای نمیتواند رخ دهد.
اما در پیکربندی واقعی فریمور، این ماکرو تعریف شده است و مقدار آن ۰ است.
C زبان #ifndef فقط میپرسد "آیا تعریف شده است یا نه"، نه "مقدار آن چقدر است". تعریف آن به عنوان ۰ نیز به معنای تعریف شده است. بنابراین این حفاظ تشخیص میدهد که "تعریف شده است، همه چیز عادی است"، #error هرگز فعال نمیشود و کامپایل به راحتی انجام میشود ------ در حالی که مقدار ۰ به معنای "تولیدکننده عدد تصادفی سختافزاری فعال نشده است" است.
فیوز معکوس نصب شده است. آنچه بررسی میکند "آیا این قطعه در دسترس است" است، نه "آیا سوئیچ به ON تنظیم شده است".
بنابراین کامپایلر نرمافزار PRNG داخلی MicroPython را وارد کرده است. آن کد بالادستی خود میتواند به مهندسی معکوس برگردد و از مهندسی معکوس در می ۲۰۱۸ نشأت گرفته است، در زمینه MicroPython، این یک پشتیبان منطقی است؛ اما هرگز برای استفاده در کلید خصوصی بیتکوین طراحی نشده است.
از این لحظه به بعد، هر دستگاهی که فریمور تحت تأثیر را اجرا میکند، زمانی که کاربر بر روی "تولید بذر جدید" کلیک میکند، از این فرمول نرمافزاری استفاده میکند، نه از آن تراشه نویز فیزیکی.
عددهایی که بازنگری فنی Coinkite ارائه میدهد:
نسخههای فریمور تحت تأثیر Mk2/Mk3 از ۴.۰.۱ تا ۴.۱.۹ (نسخه اصلاح شده ۴.۲.۰)، Mk4/Mk5 کمتر از ۵.۶.۰ (خط Edge کمتر از ۶.۶.۰X)، Q کمتر از ۱.۵.۰Q (خط Edge کمتر از ۶.۶.۰QX) هستند.
اینجا یک اختلاف دادهای وجود دارد که باید روشن شود
بیانیه رسمی Coinkite میگوید Mk4/Mk5/Q ۷۲ بیت است، در حالی که گزارش Blockhead در ۳ آگوست به تحلیل اشاره میکند که واقعاً تنها حدود ۳۲ بیت به بذر نهایی وارد شده است.
این دو عدد اختلافی نیست که کوچک باشد، بلکه اختلافی به اندازه چهل مرتبه است. ۷۲ بیت در حال حاضر ایمن است ------ قدرت محاسبات جهانی در کوتاهمدت نمیتواند آن را تمام کند؛ ۳۲ بیت حتی از ۴۰ بیت Mk3 نیز ضعیفتر است و تنها چند دقیقه زمان میبرد. یک عدد تعیین میکند که "کاربران Mk4 میتوانند به آرامی منتقل شوند" یا "کاربران Mk4 در حال حاضر در حال پاکسازی هستند".
تا کنون، پاکسازیهای واقعی مشاهده شده بیشتر بر روی آدرسهای تک امضایی از دوران Mk3 متمرکز شده است، که به طور کلی از نظر جهتگیری از ۷۲ بیت Coinkite حمایت میکند. اما باید به یاد داشته باشید: این اثباتی نیست. مهاجمین قطعاً ابتدا به پاکسازی دستهای با هزینه کمتر میپردازند. این موضوع خود یک یادداشت در مورد موضوع این شماره است ------ زمانی که یک فرضیه غیرقابل مشاهده است، "هنوز مشکلی پیش نیامده" هرگز مدرکی برای "مشکلی پیش نخواهد آمد" نیست.
این نقطهای است که خوانندگان پرداختی باید در آن توقف کنند.
Coldcard فریمور متن باز است. این کد منبع عمومی دارد، بازبینی جامعه دارد، و ساختهای قابل تکرار (reproducible build) دارد ------ به طور منطقی، این بالاترین پیکربندی است که یک ممیزی امنیتی میتواند ارائه دهد. این در تمام مراحل حاضر است، اما هیچکدام را متوقف نکرده است.
دلایل سه لایه دارد که هر لایه از لایه قبلی غیرمستقیمتر است.
لایه اول: آن خط کد در سورس به نظر درست میرسد
بازبینها وقتی به #ifndef MICROPY_HW_ENABLE_RNG + #error میرسند، تصور میکنند "اینجا حفاظتی وجود دارد". نقص در منطق این خط نیست، بلکه در رابطه آن با پیکربندی ساخت در فایل دیگری است. بازبینی کد به صورت فایل به فایل و تابع به تابع انجام میشود؛ این باگ در شکافهای بین فایلها زندگی میکند.
لایه دوم: ساخت قابل بازتولید "یکسانی" را اثبات میکند، نه "درستی"
تعهد ساخت قابل بازتولید این است: هر کسی از همان سورس میتواند باینری دقیقا یکسانی تولید کند، بنابراین تولیدکنندهها نمیتوانند به طور مخفیانه چیزی اضافه کنند. این تعهد در این حادثه به طور کامل تحقق یافت------هر کسی توانست همان باینری را بازتولید کند، و آن باینری شامل نرمافزار تولید عدد تصادفی شبه است. ساخت قابل بازتولید تضمین میکند "شما همان چیزی را دریافت میکنید که از سورس تولید شده است"، اما هرگز تضمین نمیکند "چیزی که از سورس تولید شده، همان چیزی است که شما فکر میکنید".
لایه سوم------این لایه خطرناکترین است: امضای تابع دو پیادهسازی عدد تصادفی یکسان است
Coinkite در بررسی خود به وضوح این نکته را ذکر کرده است: RNG سختافزاری و PRNG نرمافزاری به طور کامل مشابه به نظر میرسند. این بدان معناست که حتی اگر کسی واقعا به معکوسسازی باینری بپردازد و مسیرهای فراخوانی را بررسی کند، آنچه میبیند همان نام تابع و همان مجموعه پارامترها خواهد بود. برای کشف مشکل، شما باید دنبال کنید که نماد در نهایت به کدام فایل هدف تجزیه شده است------این یک اقدام است که تقریبا هیچکس در بازبینیهای معمول انجام نمیدهد.
روش اصلاح Coinkite دقیقا این نکته را تأیید میکند: نسخه جدید به وضوح شیء PRNG نرمافزاری MicroPython را حذف کرده و بررسی نماد RNG در زمان ساخت را اضافه کرده است------اگر فایل هدف برداری تخته نماد rng_get() را ارائه ندهد، یا پیادهسازی بازگشتی به طور کامل حذف نشده باشد، کامپایل به طور مستقیم شکست میخورد. به عبارت دیگر، آن خط کد اصلاح نشده است، بلکه "غیرقابل مشاهده" به "قابل مشاهده در زمان کامپایل" تبدیل شده است.
یک جزئیات جالب دیگر: Coinkite حدس میزند که این نقص پنهان پنج ساله ممکن است توسط یک مدل AI در حین بازبینی فریمورهای منبع باز کشف شده باشد. گفته NVK، بنیانگذار Coinkite این است: "بازبینی کد با کمک AI اکنون میتواند با سرعتی بیشتر از باتجربهترین کارشناسان صنعت، باگهای پنهان را شناسایی کند."
این جمله دو جنبه دارد. جنبه خوب این است: این نوع نقصهای فرضی که سالها خوابیده بودند، اکنون برای اولین بار قابل کشف به صورت انبوه شدهاند. جنبه بد این است: مهاجمان نیز به همان ابزار دسترسی دارند و نیازی به افشای مسئولانه ندارند. تمام کدهای منبع باز، که برای مدت طولانی تغییر نکرده و شامل اصول رمزنگاری هستند، به تازگی وارد یک عصر جدید از خطرات شدهاند.
وزن عضویت در این بخش. فروپاشی انتروپی اختراع جدیدی در صنعت رمزنگاری نیست، بلکه نوعی حادثه کلاسیک است که در مهندسی رمزنگاری به طور مکرر رخ میدهد و هر بار شکل آن به طرز شگفتانگیزی مشابه است.
در سپتامبر 2006، یک نگهدارنده Debian هنگام بستهبندی OpenSSL، دو خط MD_Update(&m,buf,j); را از md_rand.c حذف کرد. انگیزه حذف کاملا نیکخواهانه بود: این دو خط حافظه غیرمقداردهی شده را میخواند و باعث میشد ابزارهای اشکالزدایی مانند Valgrind و Purify به طور مداوم هشدار دهند. حتی در کنار یکی از خطوط، یادداشتی نوشته شده بود که "/* purify complains */".
مشکل این است که این دو خط در زمینههای مختلف کارهای متفاوتی انجام میدهند. نویسنده اصلی تنها با #ifndef PURIFY یکی از خطوطی که واقعا مشکلدار بود را محافظت کرده بود؛ نگهدارنده هر دو خط را حذف کرد.
نتیجه: کل استخر بذر عدد تصادفی غیرقابل استفاده شد و تنها منبع "تصادفی" باقیمانده شناسه فرآیند بود. و حداکثر شناسه فرآیند در لینوکس 32,768 است. به عبارت دیگر، تمام کلیدهای SSH، گواهیهای SSL و کلیدهای رمزنگاری تولید شده در سراسر جهان با Debian و نسخههای مشتق شده آن، تنها حدود سی هزار نوع ممکن دارند.
این نقص در 13 مه 2008 توسط Luciano Bello کشف شد و به مدت حدود 20 ماه بیصدا باقی ماند. در آن 20 ماه، هیچ سروری هیچ خطایی گزارش نکرد، هیچ دست دادن ناموفقی وجود نداشت و هیچ نشانهای وجود نداشت. تمام کلیدهای تولید شده از نظر ریاضی، از نظر فرمت و از نظر استفاده، دقیقا مشابه کلیدهای ایمن واقعی بودند.
این بار مستقیما در بیتکوین اتفاق افتاد و نزدیکترین شکل به این حادثه بود.
نسخههای 3.0.0 تا 3.6.0 Libbitcoin Explorer (ابزار خط فرمان bx) از الگوریتم چرخش Mersenne برای تولید بذر استفاده میکنند------و این PRNG تنها از ساعت سیستم 32 بیتی برای بذر استفاده میکند. یک درخواست بذر 256 بیتی، در واقع تنها 32 بیت انتروپی دریافت میکند، حدود 4.3 میلیارد نوع ممکن، که سختافزار مصرفی میتواند در چند روز تمام آنها را بررسی کند.
خط زمانی: در اکتبر 2016 از PR#559 معرفی شد، در مارس 2017 با 3.0.0 منتشر شد، و در مه 2023 شروع به بهرهبرداری شد، در 12 ژوئیه یک سرقت بزرگ همزمان (حدود 29.65 BTC) رخ داد، در 21 ژوئیه در پاسخ به وضعیت اضطراری کشف شد، در 8 اوت به طور عمومی افشا شد، شماره CVE-2023-39910.
در نهایت در شبکه اصلی بیتکوین بیش از 2600 کیف پول تحت تأثیر شناسایی شد و بیش از 900000 دلار در زنجیرههای BTC، ETH، XRP، DOGE، SOL، LTC، BCH و ZEC دزدیده شد.
لطفا به دو عدد توجه کنید: بیش از شش سال پنهان؛ هیچ قابل مشاهدهای در زنجیره------قبل از دزدی، این کیف پولها به نظر هیچ تفاوتی با هر کیف پول عادی نداشتند.
مکانیسم سه حادثه تقریباً مشابه است: یک تغییر مهندسی نیکخواهانه → منبع انتروپی به طور بیصدا جایگزین میشود → مدت طولانی پنهان میماند → روزی به طور انبوه برداشت میشود. اما این بار سه تفاوت اساسی وجود دارد و هر یک به سمت بدتر پیش میرود.
اول، مکان تغییر کرده است
آن حادثه در لایه بستهبندی سیستمعامل Debian خراب شد، آن حادثه Milk Sad در یک ابزار خط فرمان خراب شد------هر دو هنوز "بالا/پایین" دارند و کاربران حداقل به طور نظری گزینههای دیگری دارند. اما Coldcard به طور خاص برای از بین بردن اعتماد طراحی شده است. کل ارزش پیشنهادی کیف پول سختافزاری این است که "به هیچ محیط نرمافزاری اعتماد نکنید، به این سختافزار اختصاصی اعتماد کنید". وقتی انتهای زنجیره اعتماد خود مشکل دارد، هیچ حلقه بعدی در زنجیره وجود ندارد که به آن بازگردید.
دوم، دوره نمایان شدن با رفتار کاربر مرتبط است و به صورت معکوس است
تصویر قربانیان این بار "افرادی که از سال 2021 هیچ حرکتی در ارز نداشتهاند" است------یعنی همان گروهی که بهترین انضباط و بهترین شیوهها را دارند. هرچه بیشتر ارز را قفل کنید و حرکتی نکنید، دوره نمایان شدن شما طولانیتر میشود و احتمال بیشتری دارید که در لیست باشید. کلیدهای Debian میتوانند چرخش کنند، گواهیهای SSL به طور طبیعی تاریخ انقضا دارند؛ بذر بیتکوین چرخش نمیکند، یک بار تولید میشود و برای تمام عمر استفاده میشود.
سوم، روش کشف تغییر کرده است
آن حادثه Debian به کشف تصادفی یک محقق وابسته بود، آن حادثه Milk Sad به واکنش اضطراری پس از دزدی وابسته بود. این بار ممکن است AI به طور فعال آن را شناسایی کرده باشد. این بدان معناست که نرخ کشف این نوع نقصها به طور ساختاری در حال افزایش است------خبر خوب این است که مینهای موجود به تدریج از بین میروند، خبر بد این است که کسانی که مینها را از بین میبرند و کسانی که روی مینها قدم میزنند، از یک نقشه یکسان استفاده میکنند.
به چهار سطح تقسیم میشود، بیانیه شرکت و تأیید شخص ثالث جداگانه.
Debian به مدت 20 ماه سکوت کرد، Milk Sad به مدت 6 سال سکوت کرد، Coldcard به مدت 5 سال سکوت کرد. سه حادثه، هیچکدام از آنها توسط "نظارت بر کشف ناهنجاری" شناسایی نشدهاند ------ دو بار به طور تصادفی توسط افراد کد را بررسی کردند، یک بار به دلیل دزدی و بازگشت، و این بار ممکن است به دلیل اسکن AI باشد. در طول کل دوره سکوت، تمام داشبوردها سبز بودند. این یک مسئله شانس نیست، بلکه این نوع فرضیات به طور ذاتی غیرقابل مشاهده هستند: یک بذر با انتروپی ناکافی، در زنجیره، در دستگاه و در هر نظارتی، دقیقاً شبیه یک بذر ایدهآل به نظر میرسد.
باید به خوانندگان یادآوری کرد که خطرات ثانویه حوادث را جدی بگیرند: هر کسی که به شما تماس بگیرد و ادعا کند میتواند به شما در شناسایی یا بازیابی داراییها کمک کند و از شما بخواهد که عبارت بازیابی یا فایلهای کیف پول را ارائه دهید، یک کلاهبردار است. بزرگترین فرصتی که این حادثه ایجاد کرده، در زنجیره نیست، بلکه در مهندسی اجتماعی است.
این چیزی است که در این شماره واقعاً باید ارائه شود. موضوع را به پنج سوال فشرده کنید و به هر سیستمی که میخواهید داراییهای خود را به آن بسپارید - کیف پول، پل، پیشگو، متولی، استیبلکوین، L2، طرحهای چند امضایی - ببرید.
نپرسید "آیا از اعداد تصادفی سختافزاری استفاده میشود؟"، بپرسید "اگر اعداد تصادفی سختافزاری فراخوانی نشوند، سیستم چه خواهد کرد؟". پاسخ صحیح فقط یک مورد است: شکست در کامپایل یا شکست در راهاندازی. هر طراحی که "به طور خاموش به پیادهسازی نرمافزاری برمیگردد"، در انتظار یک صبح پنج سال بعد است. معیار: آیا در زمان ساخت یا زمان اجرا، ادعایی وجود دارد یا فقط نظرات و تعهدات مستند وجود دارد؟
ساخت قابل بازتولید نشاندهنده این است که "همه چیزهایی که همه تولید کردهاند یکسان است"، اما نشان نمیدهد که "چیزهای تولید شده صحیح هستند". نقص این بار دقیقاً در این شکاف وجود دارد. معیار: علاوه بر ساخت قابل بازتولید، آیا تأیید در سطح نماد وجود دارد - یعنی آیا تابعهای کلیدی در نهایت به کدام پیادهسازی تجزیه و تحلیل شدهاند؟ به ویژه باید مراقب دو پیادهسازی باشید که از یک امضای تابع مشترک استفاده میکنند: این یک نقطه کور طبیعی در حسابرسی است.
منابع تصادفی یک نوع هستند و نوع دیگر ثابتهای سختافزاری هستند. در شماره قبلی، ما در حادثه استیبلکوین "پیشگو قیمت را به $1.00 سختافزاری کرده است" و در این بار "به فرمول ثابت تصادفی برمیگردد" را دیدهایم، این دو نوع بیماری یکسان هستند: مقداری که باید وضعیت واقعی خارجی را منعکس کند، با مقداری که همیشه ثابت است جایگزین شده است و سیستم به همین دلیل خطا نمیدهد. معیار: تمام مقادیری که "باید تغییر کنند، اما هرگز ندیدهاید که تغییر کنند" را فهرست کنید و بهطور جداگانه بپرسید چرا.
مجموعه امضاکنندگان، مجوزهای مدیر، کلیدهای بهروزرسانی - این تغییرات معمولاً هیچ رویداد قابل مشاهدهای برای کاربران ایجاد نمیکنند. در حوادث ماه ژوئیه، AFX Trade، Ostium و WEMIX همه در این لایه سقوط کردند. معیار: آیا تغییرات رویداد زنجیرهای دارند، آیا قفل زمانی وجود دارد، آیا شخص ثالثی میتواند مجموعه فعلی را بهطور مستقل بررسی کند؟
هر یک از پاسخهای چهار سوال قبلی را دوباره از این صافی عبور دهید. خطرات قابل مشاهده یک مشکل مهندسی هستند، خطرات غیرقابل مشاهده یک مشکل وجودی هستند. مورد اول میتواند با نظارت و مدیریت پاسخ حل شود، مورد دوم فقط میتواند در مرحله طراحی به یک حالت قابل مشاهده تبدیل شود - هیچ راهحلی پس از وقوع وجود ندارد.
هسته این چارچوب یک تغییر دیدگاه است: سوالات حسابرسی امنیتی را از "آیا در کد نقصی وجود دارد" به "کدام فرضیات دروغ باشد، سیستم هشدار نمیدهد" تغییر دهید. سوال اول بینهایت پاسخ دارد و هرگز تمام نمیشود؛ پاسخ سوال دوم معمولاً بیش از ده مورد نیست و پس از نوشتن، هر یک از آنها میتواند به یک ادعا تبدیل شود.
"اعداد تصادفی ضعیف باعث شکستن کلید میشوند" موضوعی کلاسیک در کتابهای درسی مهندسی رمزنگاری است و در مورد آن در مواردی مانند Debian و Milk Sad نوشته شده است. اگر این شماره فقط به این مرحله اشاره کند، باید با تست "من قبلاً میدانستم" بهطور مستقیم حذف شود. افزایش در سه نقطه است، خوانندگان میتوانند بر اساس آن قضاوت کنند که آیا کافی است: اول، غیرقابل مشاهده بودن به عنوان یک بعد مستقل - نه "آیا ممکن است خطا کند"، بلکه "اگر خطا کند، آیا سیگنالی وجود خواهد داشت؟"، این بعد در بحثهای امنیتی اصلی بهطور کلی غایب است؛ دوم، مرزهای ساخت قابل بازتولید - این فقط سازگاری را اثبات میکند و نه درستی، و بهعلاوه، وجود توابع با نام مشابه باعث ایجاد نقطه کور نمادین میشود، این نکته حتی بسیاری از فعالان امنیتی را نیز بهطور طبیعی به اشتباه میاندازد؛ سوم، این استدلال غیرمستقیم که مدت زمان نگهداری و مدت زمان نگهداری با هم مرتبط است، بهطور مستقیم شهود "هرچه ذخیرهسازی سرد بیشتر باشد، ایمنتر است" را نقض میکند. اگر این سه مورد را قبلاً بهخوبی درک کردهاید، این شماره برای شما واقعاً بیفایده است.
شاید من علت و معلول را معکوس کردهام: درس واقعی این نیست که "فرضیات غیرقابل مشاهده قابل اعتماد نیستند"، بلکه "نباید امنیت 128 بیتی را بر روی یک پیادهسازی واحد شرط بندی کنید". از این دیدگاه، پاسخ غیرقابل مشاهده بودن نیست، بلکه افزونگی است - با استفاده از دو منبع مستقل از تصادفی، با استفاده از دستگاههای مختلف برای امضای چندگانه، با استفاده از تصادفی که خود دارای تاس است. اگر راهحلهای صنعتی آینده عمدتاً در راستای افزونگی و نه غیرقابل مشاهده بودن **تکامل یابند، آنگاه مرکز ثقل این چارچوب من به اشتباه قرار گرفته است. این مسیری است که من فکر میکنم احتمالاً میتواند این فرضیه را نقض کند.
حسابرسی با کمک AI در دو سال آینده بهطور عمده این نوع نقصها را حذف خواهد کرد، و فروپاشی تصادفی به یک اصطلاح تاریخی تبدیل میشود، در حالی که "فرضیات قابل اعتماد غیرقابل مشاهده" به یک مشکل خودانحلالی تبدیل میشود - پیشرفت ابزار بهطور مستقیم آن را به حالت قابل مشاهده تبدیل میکند. احتمال این امر کم نیست. دفاع من این است: سرعت شناسایی خطرات در حال افزایش است و در عین حال، سرعت اسکن مهاجمان نیز در حال افزایش است و آنها هیچ تعهدی برای افشا ندارند. اثر خالص خوب است یا بد، در حال حاضر قضاوت کردن خیلی زود است.
دو مورد. اول "شواهد مشاهده شده متمرکز بر Mk3 امضای واحد" - این احتمالاً فقط هزینههای مهاجمان را نشان میدهد و نه حاشیه امنیت واقعی Mk4/Mk5/Q، در نظر گرفتن آن بهعنوان شواهدی از "مدل جدید مشکلی ندارد" خطرناک است. دوم، عدد 8,860,000 دلار خود - این فقط شامل آنچه که قبلاً جابجا شده است میشود و نه آنچه که قبلاً در معرض خطر قرار گرفته است؛ تفاوت بین 6,657 آدرس منبع منحصر به فرد ثبت شده در coldcardentropy.org و خسارت نهایی، نمایانگر موجودی است که هنوز برداشت نشده است، نه موجودی ایمن.
به دفتر پیشبینی سقوط کنید. قیمتها را پیشبینی نکنید، فقط رفتار ساختاری را پیشبینی کنید.
در 12 ماه آینده، صنعت در نحوه برخورد با "تصادفی و تولید کلید" تغییرات ساختاری قابل مشاهدهای خواهد داشت - حداقل یک تولیدکننده کیف پول سختافزاری اصلی بهطور علنی ادعای منابع تصادفی در زمان ساخت یا اجرا را معرفی میکند (و نه فقط تعهد به استفاده از RNG سختافزاری) و حداقل یک نقص سطح رمزنگاری که بیش از سه سال پنهان بوده است (چه خسارتی ایجاد کند و چه نکند) توسط حسابرسی با کمک AI کشف خواهد شد. در عین حال، حوادث عمده در سال 2026 همچنان بر اساس کلید / مجوز / لایه تولید خواهد بود و نه بر اساس لایه منطق قرارداد.
این مقاله هیچ پیشبینی در مورد قیمت داراییها ندارد و هیچگونه مشاورهای برای سرمایهگذاری یا خرید و فروش ارائه نمیدهد. شرکتها و محصولات خاصی که در متن ذکر شدهاند فقط برای توضیح مکانیزمهای فنی و ساختارهای ریسک استفاده شدهاند و نمایانگر ارزیابی یا توصیه تجاری نیستند و همچنین نشان نمیدهند که این مقاله معتقد است محصولات دیگر ایمنتر هستند. مراحل انتقال در متن بهعنوان اطلاعات عمومی جمعآوری شدهاند و مشاوره امنیتی شخصی نیستند؛ هرگونه عملیاتی که شامل کلیدهای خصوصی و عبارات بازیابی باشد، ممکن است منجر به از دست دادن غیرقابل برگشت داراییها شود، لطفاً به راهنمای رسمی تولیدکنندگان مراجعه کنید و مسئولیت تصمیمگیری را به عهده بگیرید. هر کسی که از شما بخواهد عبارات بازیابی، کلیدهای خصوصی، Passphrase یا فایلهای خروجی کیف پول را بگیرد، یک کلاهبردار است.
تمام دادهها مربوط به بررسیهای انجام شده در آگوست 2026 است و توضیحات تولیدکنندگان و گزارشهای شخص ثالث بهطور جداگانه علامتگذاری شدهاند.
این محتوا صرفاً برای اطلاعرسانی عمومی ارائه شده است و بهمنزله مشاوره مالی، سرمایهگذاری، حقوقی یا مالیاتی تلقی نمیشود. هرگونه رویداد، جایزه، کمپین آنلاین یا اطلاعات مرتبط که در اینجا ذکر شده است، نباید بهعنوان توصیه، ترغیب یا دعوت به خرید، فروش، معامله یا هرگونه دادوستد دیگر داراییهای رمزارزی تلقی شود. داراییهای رمزارزی از نوسان بالایی برخوردار هستند و ممکن است منجر به زیان شوند. دسترسی به خدمات، محصولات و رویدادهای مرتبط با WEEX ممکن است بسته به منطقه جغرافیایی متفاوت باشد. اطمینان از اینکه استفاده شما از این خدمات با قوانین و مقررات محلی مطابقت دارد، بر عهده خود شماست.





























