
بناء أمان بلوكتشين
في هذه المقالة، نقدم بشكل رئيسي عدة جوانب من تدقيق السلسلة العامة تستحق الاهتمام. بالنسبة لمدققي الأمن ومطوري السلسلة العامة، يعد هذا مشروعًا جديرًا بالمرجعية والتفكير.
قبل تقديم بناء نظام السلسلة العامة، دعنا نلقي نظرة على بنية blockchain:
عصر Blockchain 1.0:
البنية: كما هو موضح في الشكل أدناه
المنتجات الممثلة: bitcoin، reborn coin، dogcoin، Leyte coin، MasterCard coin، إلخ

عصر Blockchain 2.0:
البنية: كما هو موضح في الشكل أدناه
المنتجات الممثلة: Ethereum، lisk، hyperledger، إلخ
التغييرات الرئيسية:

عصر Blockchain 2.0
البنية: كما هو موضح في الشكل أدناه
المنتجات الممثلة: EOS، VaR، AE، ash، ELA، dfinity
التغييرات الرئيسية: يمكن لسيناريوهات تطبيق blockchain في جميع مناحي الحياة خارج الصناعة المالية تلبية منطق أعمال أكثر تعقيدًا

بعد ذلك، سنقدم مقدمة موجزة عن المشكلات الجديرة بالاهتمام في البناء الأمني للسلسلة العامة وفقًا لبنية blockchain. حوالي 75% من المشكلات تسببت في مشكلات أمنية للسلسلة العامة، وهي أيضًا بعض النقاط الجديرة بالاهتمام في تدقيق أمن السلسلة العامة. هنا، نقدمها في شكل أسئلة لإثارة تفكيرنا. إذا كنت ترغب في مزيد من النقاش، يمكنك القيام بذلك مباشرة في issue:
طبقة البيانات هي تقنية الطبقة السفلية، وتتمثل وظائفها الرئيسية في تخزين البيانات وتنفيذ الحسابات والمعاملات والأمان. يعتمد تخزين البيانات بشكل أساسي على شجرة Merkle، والتي تتحقق من خلال بنية الكتلة والسلسلة. معظمها يتم تخزينه بشكل دائم عبر قاعدة بيانات kV، مثل bitcoin وleveldb المعتمدين من Ethereum.
تستحق طبقة البيانات التفكير في النقاط التالية:
الغرض الرئيسي من طبقة الشبكة هو تحقيق التفاعل المعلوماتي بين عقد شبكة blockchain. جوهر blockchain هو شبكة نظير إلى نظير (P2P). يمكن لكل عقدة استلام المعلومات وإنتاج المعلومات أيضًا. تحافظ العقد على التواصل من خلال الحفاظ على blockchain مشتركة. في شبكة blockchain، يمكن لكل عقدة إنشاء كتلة جديدة. بعد إنشاء الكتلة الجديدة، سيتم إخطار العقد الأخرى عبر البث. بدورها، ستتحقق العقد الأخرى من العقدة. عندما يجتاز أكثر من 51% من المستخدمين في شبكة blockchain التحقق، ستتم إضافة الكتلة الجديدة إلى السلسلة الرئيسية.
هناك عدة نقاط جديرة بالتفكير في طبقة الشبكة:
هل تصميم خوارزمية اكتشاف العقد في السلسلة العامة معقول؟
هل تصميم عقد السلسلة العامة معقول؟
هل تصميم آلية العقوبة معقول؟
هل تصميم بروتوكول الاتصال معقول؟
هل تصميم معالجة الطلبات لعقد السلسلة العامة معقول؟
هل يوجد حد لحجم حزمة معالجة الطلبات؟
هل تصميم آلية اتصال المعاملات للسلسلة العامة معقول؟
هل آلية مزامنة بيانات الكتلة معقولة؟
هل التصميم المنطقي لمعالجة المعاملات معقول؟
تمكّن طبقة الإجماع العقد شديدة التشتت من التوصل إلى توافق حول فعالية بيانات الكتلة في نظام لامركزي. يحتاج كل blockchain قيد التشغيل إلى خوارزمية إجماع لضمان فعالية وترتيب إخراج الكتل. تشمل خوارزميات الإجماع الشائعة pow وPOS وdpos وPoa وPOC وغيرها.
على مستوى الإجماع، يجب أن نأخذ في الاعتبار النقاط التالية:
هل تصميم خوارزمية إجماع السلسلة العامة آمن؟
هل تصميم التحقق من إجماع السلسلة العامة معقول؟
هل تصميم مصادرة إجماع السلسلة العامة معقول؟
هل تصميم رسوم خدمة السلسلة العامة معقول؟
هل تصميم التعدين للسلسلة العامة معقول؟
هل تصميم الضبط الديناميكي لصعوبة الكتلة معقول؟
هل التصميم المنطقي لفحص صعوبة الكتلة معقول؟
تصميم إعادة تنظيم السلسلة، وإعادة تعيين السلسلة، وتشعب السلسلة، وما إلى ذلك؟
الغرض من طبقة التحفيز في السلسلة العامة هو توفير تدابير تحفيزية معينة لتشجيع العقد على المشاركة في التحقق الأمني لـ blockchain، وضمان التوازن والتطور الصحي لبيئة blockchain. في السلسلة العامة اللامركزية، من الضروري إعداد آلية التحفيز المقابلة لتشجيع عقد المحاسبة المشاركة الملتزمة بالقواعد، وإنشاء آلية العقاب لمعاقبة عقد المحاسبة المشاركة غير الملتزمة بالقواعد. تقدم طبقة تحفيز blockchain عوامل اقتصادية إلى نظام تكنولوجيا blockchain، مما يحسن كفاءة التعاون التنظيمي وتبادل القيمة داخل البيئة. آلية تحفيز السلسلة العامة هي آلية مهمة لضمان التطور الإيجابي لـ blockchain.
هناك عدة نقاط جديرة باهتمامنا حول مستوى التحفيز:
هل تصميم آلية إصدار السلسلة العامة معقول؟
هل تصميم آلية العقاب في السلسلة العامة معقول؟
تغلف طبقة العقود أنواعًا مختلفة من أكواد البرامج النصية والخوارزميات لنظام blockchain، بالإضافة إلى العقود الذكية الأكثر تعقيدًا الناتجة عنها. إذا كانت المستويات الثلاثة للبيانات والشبكة والإجماع، باعتبارها "الآلة الافتراضية" الأساسية لـ blockchain، تتولى على التوالي وظائف تمثيل البيانات ونشر البيانات والتحقق من البيانات، فإن طبقة العقود هي منطق الأعمال والخوارزميات المستندة إلى الآلة الافتراضية لـ blockchain، وهي الأساس لتحقيق البرمجة المرنة وتشغيل البيانات لنظام blockchain. تستخدم معظم العملات الرقمية المشفرة، بما في ذلك bitcoin، أكواد برامج نصية بسيطة غير مكتملة تورينج لبرمجة عملية المعاملات والتحكم فيها، وهو أيضًا الشكل الأولي للعقد الذكي. مع تطور التكنولوجيا، ظهرت لغات برمجة نصية مكتملة تورينج مثل Ethereum يمكنها تحقيق عقود ذكية أكثر تعقيدًا ومرونة، ويمكن لـ blockchain دعم العديد من تطبيقات الأنظمة المالية والاجتماعية الكلية.
يجب أن نأخذ في الاعتبار النقاط التالية حول طبقة العقود:
تصميم أمان الآلة الافتراضية للعقود؟
نشر/تنفيذ/واجهة العقود؟
الأمان المتعلق بالعقد الذكي؟
تغلف طبقة التطبيق سيناريوهات وحالات تطبيق متنوعة لـ blockchain، وهي مشابهة لمختلف البرامج في أجهزة الكمبيوتر. إنها منتج يمكن للمستخدمين العاديين استخدامه مباشرة حقًا، ويمكن أيضًا فهمها كمتصفح لمنتجات بنية B/S.
يجب أن نأخذ في الاعتبار النقاط التالية حول طبقة التطبيق (السلسلة العامة فقط، وليس تطبيق المحفظة/Exchange/DEFI، وما إلى ذلك):
تصميم منطق CRUD لحساب المحفظة؟
التحقق من أذونات استيراد وتصدير المحفظة؟
تصميم تعقيد كلمة مرور المحفظة؟
التحقق من صحة عنوان حساب المحفظة؟
هل تحتاج واجهة RPC العامة إلى شبكة عامة خارجية؟
هل صلاحيات واجهة RPC للسلسلة العامة مقسمة بوضوح؟
هل تحتوي واجهة RPC العامة على عمليات من الفئة الحساسة؟
هل تتعامل واجهة RPC العامة مع الاستثناءات؟
الحد الأقصى لمعالجة البيانات لواجهة RPC للسلسلة العامة؟
ترميز وفك ترميز بيانات طلبات واجهة RPC للسلسلة العامة؟
هل SSL مفعل لمعالجة طلبات RPC للسلسلة العامة؟
تصميم معالجة الطلبات عالية التزامن في السلسلة العامة؟
تعيين الحد الأقصى لعدد الاتصالات؟
هل تسمح واجهة Web UI للسلسلة العامة بالوصول عن بُعد؟
هل توجد ثغرة من فئة الويب في واجهة webui للسلسلة العامة؟
هل تسمح واجهة webui للسلسلة العامة بتخزين معلومات كلمة المرور محليًا؟
صحيح أنه لا توجد "طبقة كود" في السلسلة العامة. هنا، يقترحها المؤلف بشكل أساسي لتصنيف المشكلات التي قد يلزم أخذها في الاعتبار أثناء عملية تطوير السلسلة العامة:
خصائص لغة تطوير السلسلة العامة، مثل readall()، وميزات الإلحاق في قراءة بيانات لغة go
إصدار لغة تطوير السلسلة العامة، على سبيل المثال، بعض إصدارات لغة go بها تنفيذ أوامر عن بُعد
ترميز مواصفات تطوير السلسلة العامة، مثل المؤشر الفارغ، والتقسيم، ومعالجة الاستثناءات وغيرها من العمليات
معالجة التشفير وفك التشفير في السلسلة العامة، مثل الترميز وفك الترميز عالي التعقيد دون فحص الطول
معالجة تحويل أنواع البيانات، مثل hextobyte، وinteger. Parseint()، وما إلى ذلك
تصميم منطق الأعمال الأساسي، على سبيل الم
بالإضافة إلى المشكلات المذكورة أعلاه الجديرة بالاهتمام على مستوى بنية blockchain، نحتاج أيضًا إلى النظر في مشكلات الأمان التالية:
هل تخزين البيانات مشفر؟
هل صلاحيات الملفات معقولة؟
هل بيئة التشغيل آمنة؟
هل العقدة غير مُشغَّلة بصلاحيات root؟
هل توجد خدمة ويب قابلة للاستغلال في جانب العقدة؟
هل يوجد أي تكوين غير آمن على جانب الخادم للعقدة؟
هل توجد ثغرة وصول غير مصرح به على جانب الخادم للعقدة؟
هل تم تسريب كلمة مرور حساب SSH على جانب الخادم للعقدة؟
هجوم 51%
التشعب الصلب للسلسلة العامة
اختطاف الحوسبة (الديدان تصيب أجهزة التعدين)
هل يتم استخدام مكتبات الطرف الثالث التي تحتوي على ثغرات، مثل Jackson databind وfastjson وما إلى ذلك؟
استخدام برمجيات وسيطة قابلة للاستغلال، مثل الإصدارات الأقل من tendermint
هل وضع السلسلة المتقاطعة موثوق ومناسب؟
مخطط تنفيذ السلسلة المتقاطعة المتشابهة & السلسلة المتقاطعة غير المتجانسة؟
تكرار مشكلات الأمان في القسم أعلاه
شارك مباشرة في مناقشة المشكلات ذات الصلة في issue