ضعف البيتكوين الزائف رقم عشوائي

مفاتيح البيتكوين الخاصة هي قيمة صحيحة من 1 إلى 115792089237316195423570985008687907852837564279074904382605163141518161494337 أو في HEX 1 إلى 0xfffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd6414. في شبكة Bitcoin الرئيسية ، هناك عناوين تبدأ بـ 1: مضغوطة ، غير مضغوطة ؛ 3 عناوين: SigScript ومتوافقة مع الإصدارات السابقة مع SegWit ، بالإضافة إلى عناوين SegWit الأصلية التي تبدأ بـ bc1. بالإضافة إلى ذلك ، هناك بالفعل حوالي سبعون شوكًا مع بادئات مختلفة ، ولكن نفس الجذور مثل البيتكوين الرئيسي.

يتم حساب عناوين Bitcoin بواسطة وظيفة توقيع التشفير ECDSA () بناءً على منحنى بيضاوي.

لذا ، ضع في اعتبارك إنشاء عنوان Bitcoin من مفتاح خاص.

مفتاح خاص د - رقم
المفتاح العام Q هو نقطة منحنى بيضاوي يساوي dG ،
حيث G هي النقطة الأساسية للمنحنى.

  • للتوقيع ، يتم تحديد رقم عشوائي k في النطاق [1، n-1].
  • يتم حساب نقطة المنحنى (x1، y1) = k * G
  • يحسب r = x1 mod N ، حيث N هو ترتيب المنحنى.
  • يحسب s = k-1 (H (m) + rd) mod N ، حيث k-1 هو عدد معكوس من N إلى k modulo N.
  • H (m) هو تجزئة الرسالة الموقعة.

الصورة

التوقيع هو زوج (ص ، ق).

المتغير "k" عشوائي ويتم الحصول عليه في خوارزمية ECDSA من المكتبات القياسية لنظام التشغيل.

وبالتالي ، في الدالة بأكملها يمكنك التأثير فقط على هذا المتغير. الذي يعطي نواقل هجومية:

  1. ضعف الرقم العشوائي الزائف
  2. والحظ العالمي الذي ينخفض ​​فيه عدد عشوائي مرتين


هجوم مولد رقم عشوائي زائف


كان نيلز شنايدر أول من حقق في هذه المشكلة ونشرها في 28 يناير 2013 على صفحته الشخصية. لكن المشكلة استمرت ، واكتسبت ، علاوة على ذلك ، مقياسًا جديدًا.

ينقسم هجوم البرمجيات على PRNG إلى ثلاثة أنواع:
هجوم تشفير مباشر يعتمد على تحليل ناتج الخوارزمية.

يمكن تقسيم الهجمات التي تستند إلى بيانات الإدخال إلى هجمات ببيانات إدخال معروفة ، وهجمات ببيانات إدخال قابلة للتكرار ، وهجمات على بيانات إدخال مختارة.

هجمات تستند إلى الكشف عن الحالة الداخلية التي يعرف فيها المهاجم الحالة الأولية أو الأولية للمولد.

يوجد أيضًا هنا إشارات مرجعية في البرنامج ، حيث يعرف منشئ الخوارزمية أيًا من الأرقام العشوائية شبه المجزأة والأرقام اللاحقة في السلسلة. يصعب تحديد مثل هذه الخوارزمية من الخارج ، حيث تبدو الأرقام موزعة بالتساوي على النطاق بأكمله.

تتضمن ثغرات البرامج أيضًا ضعفًا في إنشاء أرقام عشوائية زائفة في المكتبات الفردية. مثل SSL و OpenSSL وبعض مكتبات Java و JavaScript وما إلى ذلك. تم وصف المواد التفصيلية بشكل متكرر في دوريات القرصنة وأصبحت بمرور الوقت أمثلة في كتب التشفير.

ما هو حجم التهديد لبيتكوين؟


بوجود عقدة بيتكوين كاملة ، يمكنك مقارنة وتجميع جميع معاملات الشبكة. يكفي مقارنة المتغير "k" في جميع المعاملات في كل عنوان والعثور على التكرارات.

في المرة الأولى التي أجرينا فيها تسوية في نهاية عام 2016 ، بلغت قاعدة البيانات أكثر من 210 مليون عنوان ، ومعاملات بإجمالي أكثر من 170 مليون عنوان ، وتوقيعات 447 مليون. استغرق الأمر أسبوعًا لمسح العناوين الضعيفة إلى عشرة خيوط.

ونتيجة لذلك ، تم العثور على 1327 عنوانًا ضعيفًا بنفس التوقيعات! يمكن العثور على قائمة بالعناوين في نهاية المقالة.

هذا يعني أنه يمكنك حساب المفتاح الخاص لهذه العناوين ، مما يعني السيطرة على الأموال.

حدث أكبر تسرب في صيف عام 2015. أنتجت محفظة JavaScript Blockchain.info لعدة ساعات نفس قيمة المتغير "k". مما أدى إلى سرقة حوالي 200 بيتكوين!

إذا أزلنا العامل البشري لنقاط الضعف في البرنامج ، فإن احتمال الصدفة يكون تقريبًا 0.000296868٪. ليس كثيرًا على الإطلاق ، لكنني لا أريد حقًا أن أصبح "محظوظًا" وأن أفقد أموالي.

كيف تتعامل معها؟


كما وصفنا أعلاه ، تعمل هذه الثغرة الأمنية فقط عند إرسال المدفوعات وتوليد نفس المتغير "K" في معاملتين على الأقل. لذلك ، إذا لم تقم بإنشاء معاملات صادرة أو قللت من عددها ، فلا يوجد أي تهديد على الإطلاق. تم تنفيذ مثل هذه الفكرة منذ فترة طويلة في بروتوكول Bitcoin BIP 32 (محافظ حتمية هرمية ، محفظة HD) محفظة حتمية هرمية.

فكرته هي استخدام مفتاح خاص يمكنك من خلاله الحصول على سلسلة لا نهاية لها من عناوين Bitcoin. يمكنك استخدام عنوان لمرة واحدة لتلقي كل معاملة فردية. في الوقت نفسه ، فإن مقدار رصيد المحفظة عالية الدقة هو مجموع جميع أرصدة سلسلة العناوين. ومع المعاملة الصادرة ، يتم جمع العملات المعدنية من هذه العناوين ، مما يشكل معاملة صادرة واحدة لكل عنوان بيتكوين. سيتم توجيه التغيير إلى عنوان Bitcoin الجديد من سلسلة العناوين.

يزيد مخطط العمل هذا بشكل كبير من أمان المحفظة وإخفائها.

المراجع:

[1] ECDSA - فشل التطبيق والتنفيذ ، ماركوس شميد ، UC SANTA BARBARA ، CS 290G ، FALL 2015.

[2] نيلز شنايدر: استعادة مفاتيح Bitcoin الخاصة باستخدام تواقيع ضعيفة من blockchain ، إدخال مدونة ، 28 يناير 2013.

[3] الهجمات الخاصة باستعادة المفاتيح

[4] قائمة العناوين الضعيفة والتوازن العام

Source: https://habr.com/ru/post/ar430240/


All Articles