تحليل استخدام التوقيعات الرقمية: 10 من أصل 15 عملات رقمية مشفرة لا توقع برمجيات

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


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


الدافع


كما تعلم على الأرجح ، تحدث عمليات اختراق للمواقع الرسمية وملفات تعريف github لمشاريع التشفير في كثير من الأحيان يتم من خلالها نشر الرموز الضارة. في بعض الأحيان يتم استبدال عناوين المحفظة ، وفي حالات أخرى يتم استبدال البرامج الموزعة. تختلف طرق القرصنة: هناك هجوم على إحدى عقد الشبكة المسؤولة عن تسليم البيانات ويتم إجراء استبدال مخفي لجزء من البيانات. إن اكتشاف محاكاة ساخرة أمر صعب للغاية ، وهو ما يستخدمه مجرمو الإنترنت. هناك عدة طرق للدفاع ضد مثل هذا الهجوم. يعتبر توقيع PGP معيارًا: نشر مبالغ التحقق الموقعة. للقيام بذلك ، يجب توزيع مفتاح PGP بشكل صحيح. على سبيل المثال ، تم نشره على موارد مختلفة (يفضل أكثر من اثنين).


التحليل


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


النتائج


المشروعالنتيجة
بيتكوين كورنشر المفتاح والرمز في مصدر واحد
Ethereum gethنشر المفتاح والرمز في مصدر واحد
Ethereum SDKلا يوجد توقيع
التكافؤلا يوجد توقيع
Xrp-
لايتكويننشر المفتاح والرمز في مصدر واحد
كاردانو دايدالوسلا يوجد توقيع
كاردانولا يوجد توقيع
ممتازمفاتيح غير منشورة
Stellar sdkإصدارات غير موقعة وتوقيع بمفاتيح غير منشورة
IOTA IRIلا يوجد توقيع
محفظة IOTAلا يوجد توقيع
ترون الأساسيةلا يوجد توقيع
محفظة ترونلا يوجد توقيع
نيو جويلا يوجد توقيع
نيو كليلا يوجد توقيع
مونيرونشر المفتاح والرمز في مصدر واحد
داش كورنشر المفتاح والرمز في مصدر واحد
داش إلكتروملا يوجد توقيع
محفظة NEM Nanoلا يوجد توقيع
نيم نيسمفاتيح غير منشورة
إيثريوم كلاسيك*
Qtum الأساسيةلا يوجد توقيع
زكاشالإصدارات غير الموقعة

(*) تستخدم Ethereum Classic برنامج جهة خارجية ولا تنشر معلومات لتأكيد الإصدار.


الأخطاء الشائعة


  1. عدم التوقيع على هذا النحو ( 10/15 ):
    قد يتبين أنه غير موقّع كرمز قابل للتنفيذ ، ولكن المكتبات غير الموقعة وبرامج التطبيقات مثل المحافظ أكثر شيوعًا.
  2. التوقيع بواسطة مفاتيح غير منشورة ( 2/15 ):
    تم التوقيع على الرمز من قبل العديد من المطورين الذين لم يتم نشر مفاتيحهم في أي مكان ، وبالتالي فإن هذه التوقيعات لا فائدة منها.
  3. نشر المفاتيح والرموز في مصدر واحد ( 5/15 ).
    من الأخطاء الشائعة جدًا نشر المفاتيح عبر رابط على مورد تابع لجهة خارجية ، أو إنشاء مصدر موثوق واحد في شكل موقع. وبالتالي ، لاستبدال البيانات ، يكفي اختراق الموقع فقط.

أخطاء شاذة


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


ملاحظة!



الأسباب


  1. عدم وجود استراتيجية موحدة . اليوم لا توجد تعليمات تناسب معظم المطورين لحل مشاكل ضمان تسليم كود مضمون على منصات مختلفة. نسبة كبيرة من عروض الهواة.
  2. التقادم . إذا نظرت إلى المواقع الرئيسية لتقنية PGP ، فإنك تحصل على الانطباع بأن التكنولوجيا في حالة نسيان:
  3. عدم وجود أدوات شاملة لنشر التوقيعات والتحقق منها . حتى إذا كانت هناك رغبة ، سيواجه المستخدم عقبات خطيرة في الطريق - العديد من المستخدمين لا يعرفون كيف وهم غير مستعدين لاستخدام وحدة التحكم الإلزامية للتحقق من التوقيع. حتى بالنسبة للمطورين ، فإن استخدام التوقيع ليس مهمة تافهة.
  4. بروتوكول تبادل مفتاح موقوف . في القرن الحادي والعشرين ، عندما لا يجتمع المطورون أبدًا تقريبًا أبدًا ، يصبح ترتيب تبادل المفاتيح على أساس p2p غير ملائم للغاية وهناك حاجة إلى أدوات لتسريع توزيع وإلغاء التوقيعات.

نصائح


أفضل النصائح في هذه الحالة:


  1. فصل المفاتيح حسب المهمة (سيساعد هذا على تجنب تسرب المفتاح الرئيسي أو استخدام مفتاح المطور لتوقيع إصدار).
  2. معلومات مكررة في عدة مصادر ، على سبيل المثال ، على الموقع الرسمي وعلى Github (اختراق اثنين من الموارد في نفس الوقت أكثر صعوبة من واحد).
  3. إنشاء عنوان url يمكن للمستخدم قراءته (يسهل تذكره والتحقق منه).

دليل التعليمات


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


باستخدام GPG مع Git
  1. تنزيل برنامج إدارة المفاتيح:
    1. Linux (لا يلزم التثبيت ، استخدم gpg2 ).
    2. أدوات MacOS GPG .
    3. Windows GPG4Win .
  2. توليد مفتاح:
     > gpg2 --gen-key 
  3. نحصل على بصمة المفتاح:
     > gpg2 --fingerprint user@localhost gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: next trustdb check due at 2020-07-01 pub rsa2048 2018-07-02 [SC] [expires: 2020-07-01] E5F1 2C73 045F 1E85 302D A9D5 269E 7C5E B852 68BB uid [ultimate] User <user@localhost> sub rsa2048 2018-07-02 [E] [expires: 2020-07-01] 
  4. أضف المفتاح إلى git (انظر stackoverflow ):
     > git config user.signingkey E5F12C73 
  5. وقعنا على الالتزامات بإضافة مفتاح التبديل -S:
     > git commit -S -m 'Signed commit' 
  6. تصدير المفتاح:


     > gpg2 --armor --export user@localhost -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFs6VDsBCADzd5F4jaJr7Dzp11+h5CmnRNHGSTWOMQe+TSXljR351BCF9hS6 VrIizaPCVkLW/ATsqdf6vZEApvbQplwHecFPwMpFhusTOILk7lsuXm8w5CscqgBo KiZdSBa9bpWmFrSsPgD8/2VMlQdh+3uChOKapsLo7cHKXNuWX8b1L30twNwgavMc Sel/3clO7Bwp9cFftyktsM/HtSUu1oaE//dibS60HzwmscPHsIIoYsfUSCEOj08f DwK2vLbPilYKyE7fONJpXCSPk5pfDnNxzdFWylNBTQL8benhCtSyfabbtHmeywe+ VWfRAGf/BRjjb7meAMX5vO6qh1l4FfHVo7irABEBAAG0FVJ1bWtpbiA8c3BhbUBy dW1rLmluPokBVAQTAQgAPhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsD BQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJECaefF64Umi7e4kIALs2 0wbQ0g5557cIbN/eXeK+DsyZFyp3D95RoOnLgWiDknVBluRyPY1QFkjKgNNepMNr 7TM1eNev1CcSDLkuUxlLMrDH9AsAIVWFl7v1+/npJuHkazylU2DgssWICF0yKgWZ tzOQUEDwX7xwIJ3g5v44Lymq0hPi56FVv+rq15hkNsqIOyjDQNVGROUURyO/+vUP khOa2ryjWCpdBzoRNxSyVMlyoABLHwTfXDkCFHV9T7bOa/o0GqILOZ7wCBN9tT5C 38ellwu/HTCtmzZsWvl3a6g8JcunB9yV3RZFQgUDvLEjiVoY2qqn/SWgcl6QR2Ro aEwTKk/p3PU1Foz7mEC5AQ0EWzpUOwEIAPbKGT/xzJ9JvXhMyoOGQZNWkqyXKtV4 zVdfdjxkWMrsMD/C2K1CQ5HPafTM9G/kATGCAmoFPCdLwrc9QqOw3H8PNxnph3Ca irvp0ICj6KDiuCCuptJYICzllKriyLhUDyFkb7GPpRgHpKJZMVCkRbDEau3jcJEx jsdUnjf3gDpEnkuV1pwSxGFxTV3vHNQBqGbFG8mjVkfZSnB++e+tyKPhC5X0QFue K2AlHbnj0/uXZ9wYfRTOJsbW6myR0k1edo7Y5P93fhpW49wwaMTe2Q9p+m6zRguf 8vC9sGUB/eGD9+6OwtIZJ6ZlUa8/MYUBr9er/z+hl7ApdpibChCb8lUAEQEAAYkB PAQYAQgAJhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsMBQkDwmcAAAoJ ECaefF64Umi7e3UIAO9ixyXaKmsfWVB11tYPHP+9Xo2s0RRanNMyqAcp1se3jQBZ Z7gfr7DBFBFPU0KeOibWXysMz54hXImxDgYQPKFznzKB5463DiZt8pYjxdphX4/j m6ccw1GnpImRJHpu3mMPSItd/QDqEl87KqSw+IojaLDid3QeL0uRzi2k5/Jwz6ru QMCwdKIMBDPw936YOsfHjQx1RTY9NC59cW1i0lU813By1J80hd24aIJH5vVyYI/I suz153mZUZ+dmN0F6wfnuqNzeCfJRoHKh45ABDD3cRQ2kE76UQ4Kr0xb0G512yUO WJFT8ff3EWn1FulR7bmprA4HHACyx/otL7P777E= =zi5u -----END PGP PUBLIC KEY BLOCK----- 

  7. نقوم بنسخ النتيجة وإضافتها إلى المفاتيح الموثوقة في واجهة Github أو Gitlab أو Bitbucket.

الخلاصة


اليوم ، تعاني البنية الأساسية لتوصيل الشفرة من أمراض الطفولة: التفتت ، والافتقار إلى الممارسات الراسخة ، والبرمجيات التي لا تلبي الواقع ، ومطوري المشاريع الكبيرة حتى تحت رقابة الآلاف من العيون تمكنوا من ارتكاب أخطاء بسيطة حتى عندما يتعلق الأمر بالأمن. لذا ثق ، ولكن تحقق من٪ username٪!

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


All Articles