عند قراءة آخر الأخبار حول الاستبدال الناجح لرمز مشروع كبير من قبل المجرمين الإلكترونيين ، يطرح السؤال بشكل طبيعي: كيف يمكن ذلك حتى إذا تم التوقيع على الرمز!؟ إن تجاهل قواعد الأمان في التشفير هو تناقض ، وفي الوقت نفسه ، حقيقة ، بحيث لا تتحول هذه المقالة إلى حامل لرجل كاذب ، لقد اخترت للتحليل ليس مبتدئين ، ولكن العملات المشفرة من أعلى تصنيف CoinMarketCap. وأنت خمنت ذلك ، وليس عبثا.
دعونا نرى كيف تسير الأمور باستخدام التوقيعات الرقمية في معقل ثورة التكنولوجيا المالية.
الدافع
كما تعلم على الأرجح ، تحدث عمليات اختراق للمواقع الرسمية وملفات تعريف github لمشاريع التشفير في كثير من الأحيان يتم من خلالها نشر الرموز الضارة. في بعض الأحيان يتم استبدال عناوين المحفظة ، وفي حالات أخرى يتم استبدال البرامج الموزعة. تختلف طرق القرصنة: هناك هجوم على إحدى عقد الشبكة المسؤولة عن تسليم البيانات ويتم إجراء استبدال مخفي لجزء من البيانات. إن اكتشاف محاكاة ساخرة أمر صعب للغاية ، وهو ما يستخدمه مجرمو الإنترنت. هناك عدة طرق للدفاع ضد مثل هذا الهجوم. يعتبر توقيع PGP معيارًا: نشر مبالغ التحقق الموقعة. للقيام بذلك ، يجب توزيع مفتاح PGP بشكل صحيح. على سبيل المثال ، تم نشره على موارد مختلفة (يفضل أكثر من اثنين).
التحليل
للتحليل ، استخدمت الموارد الرسمية والروابط التي تلقيتها من مصادر مختلفة. ثم بدأ في جمع المعلومات التي تتحرك من اتجاهات مختلفة. أخذ التحليل في الاعتبار نشر كل من برمجيات المستخدم و SDK. للتحليل ، لم تؤخذ الرموز أو المشاريع القائمة على العقود الذكية ، فقط العملات المشفرة.
النتائج
المشروع | النتيجة |
---|
بيتكوين كور | نشر المفتاح والرمز في مصدر واحد |
Ethereum geth | نشر المفتاح والرمز في مصدر واحد |
Ethereum SDK | لا يوجد توقيع |
التكافؤ | لا يوجد توقيع |
Xrp | - |
لايتكوين | نشر المفتاح والرمز في مصدر واحد |
كاردانو دايدالوس | لا يوجد توقيع |
كاردانو | لا يوجد توقيع |
ممتاز | مفاتيح غير منشورة |
Stellar sdk | إصدارات غير موقعة وتوقيع بمفاتيح غير منشورة |
IOTA IRI | لا يوجد توقيع |
محفظة IOTA | لا يوجد توقيع |
ترون الأساسية | لا يوجد توقيع |
محفظة ترون | لا يوجد توقيع |
نيو جوي | لا يوجد توقيع |
نيو كلي | لا يوجد توقيع |
مونيرو | نشر المفتاح والرمز في مصدر واحد |
داش كور | نشر المفتاح والرمز في مصدر واحد |
داش إلكتروم | لا يوجد توقيع |
محفظة NEM Nano | لا يوجد توقيع |
نيم نيس | مفاتيح غير منشورة |
إيثريوم كلاسيك | * |
Qtum الأساسية | لا يوجد توقيع |
زكاش | الإصدارات غير الموقعة |
(*) تستخدم Ethereum Classic برنامج جهة خارجية ولا تنشر معلومات لتأكيد الإصدار.
الأخطاء الشائعة
- عدم التوقيع على هذا النحو ( 10/15 ):
قد يتبين أنه غير موقّع كرمز قابل للتنفيذ ، ولكن المكتبات غير الموقعة وبرامج التطبيقات مثل المحافظ أكثر شيوعًا. - التوقيع بواسطة مفاتيح غير منشورة ( 2/15 ):
تم التوقيع على الرمز من قبل العديد من المطورين الذين لم يتم نشر مفاتيحهم في أي مكان ، وبالتالي فإن هذه التوقيعات لا فائدة منها. - نشر المفاتيح والرموز في مصدر واحد ( 5/15 ).
من الأخطاء الشائعة جدًا نشر المفاتيح عبر رابط على مورد تابع لجهة خارجية ، أو إنشاء مصدر موثوق واحد في شكل موقع. وبالتالي ، لاستبدال البيانات ، يكفي اختراق الموقع فقط.
أخطاء شاذة
يعرض Monero إلقاء نظرة على المفاتيح الموجودة في المجلد بالبيانات الموقعة. في الجوهر ، يعد هذا خطأ توزيع رئيسيًا ، مما يؤدي إلى فقدان كامل للاعتمادية.
ملاحظة!
- تنشر Litecoin المفاتيح ، بما في ذلك كرابط إلى المورد الموثوق به pgp.mit.edu.
- تنشر Ethereum و Zcash قوائم المفاتيح التفصيلية:
- تنشر Ethereum مفاتيح خدمة CI.
الأسباب
- عدم وجود استراتيجية موحدة . اليوم لا توجد تعليمات تناسب معظم المطورين لحل مشاكل ضمان تسليم كود مضمون على منصات مختلفة. نسبة كبيرة من عروض الهواة.
- التقادم . إذا نظرت إلى المواقع الرئيسية لتقنية PGP ، فإنك تحصل على الانطباع بأن التكنولوجيا في حالة نسيان:
- عدم وجود أدوات شاملة لنشر التوقيعات والتحقق منها . حتى إذا كانت هناك رغبة ، سيواجه المستخدم عقبات خطيرة في الطريق - العديد من المستخدمين لا يعرفون كيف وهم غير مستعدين لاستخدام وحدة التحكم الإلزامية للتحقق من التوقيع. حتى بالنسبة للمطورين ، فإن استخدام التوقيع ليس مهمة تافهة.
- بروتوكول تبادل مفتاح موقوف . في القرن الحادي والعشرين ، عندما لا يجتمع المطورون أبدًا تقريبًا أبدًا ، يصبح ترتيب تبادل المفاتيح على أساس p2p غير ملائم للغاية وهناك حاجة إلى أدوات لتسريع توزيع وإلغاء التوقيعات.
نصائح
أفضل النصائح في هذه الحالة:
- فصل المفاتيح حسب المهمة (سيساعد هذا على تجنب تسرب المفتاح الرئيسي أو استخدام مفتاح المطور لتوقيع إصدار).
- معلومات مكررة في عدة مصادر ، على سبيل المثال ، على الموقع الرسمي وعلى Github (اختراق اثنين من الموارد في نفس الوقت أكثر صعوبة من واحد).
- إنشاء عنوان url يمكن للمستخدم قراءته (يسهل تذكره والتحقق منه).
دليل التعليمات
إذا كنت لا تستخدم مفاتيح PGP حتى الآن ، فإنني أوصيك بشدة بتضمين التحقق من التوقيع في سير العمل ، حتى إذا كنت لا تطور مشاريع مالية ، فمن الأفضل إحضار هذه المهارة إلى الأتمتة قبل أن تحتاج إليها. يكفي من ساعة من الوقت ما يكفي لبدء ، ولكن لا يمكن قياس المتعة المتلقاة.
باستخدام GPG مع Git- تنزيل برنامج إدارة المفاتيح:
- Linux (لا يلزم التثبيت ، استخدم
gpg2
). - أدوات MacOS GPG .
- Windows GPG4Win .
- توليد مفتاح:
> gpg2 --gen-key
- نحصل على بصمة المفتاح:
> 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]
- أضف المفتاح إلى git (انظر stackoverflow ):
> git config user.signingkey E5F12C73
- وقعنا على الالتزامات بإضافة مفتاح التبديل -S:
> git commit -S -m 'Signed commit'
تصدير المفتاح:
> 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-----
- نقوم بنسخ النتيجة وإضافتها إلى المفاتيح الموثوقة في واجهة Github أو Gitlab أو Bitbucket.
الخلاصة
اليوم ، تعاني البنية الأساسية لتوصيل الشفرة من أمراض الطفولة: التفتت ، والافتقار إلى الممارسات الراسخة ، والبرمجيات التي لا تلبي الواقع ، ومطوري المشاريع الكبيرة حتى تحت رقابة الآلاف من العيون تمكنوا من ارتكاب أخطاء بسيطة حتى عندما يتعلق الأمر بالأمن. لذا ثق ، ولكن تحقق من٪ username٪!