توقيعات BLS موجودة في كل مكان ، من إجماع Ethereum إلى EigenLayer. لكن من السهل استخدامها بشكل خاطئ. ما هي توقيعات BLS؟ دعنا نتحدث عن الطريقة الصحيحة والطريقة الخاطئة لاستخدامها:
لكن أولا ، ما هي توقيعات BLS؟ توقيعات BLS هي تشفير أولي يستخدم لتوقيع الرسائل ، مثل ECDSA. إليك كيفية عمل الرياضيات. إنه مبني على أزواج المنحنى الإهليلجي. ولكن ما الذي يجعلها مميزة جدا؟ لماذا تستخدم هذه الأزواج الفاخرة؟
الميزة القاتلة ل BLS: تجميع التوقيع. يمكنك دمج العديد من توقيعات BLS في توقيع واحد. يتيح لك ذلك نقل توقيعات N والتحقق منها دفعة واحدة ، والمزيد من الكفاءة في المساحة والوقت! وعلى السلسلة ، تعتبر التحسينات مهمة للغاية لتوفير الغاز.
لإلقاء نظرة متعمقة على كيفية عمل توقيعات BLS ، جنبا إلى جنب مع عملية تجميع المباني والتوقيعات المتعددة ، تحقق من منشور المدونة الكامل المرتبط في نهاية هذا الموضوع! الآن ، دعنا نرى كيف يمكن أن تسوء توقيعات BLS ، وكيف تستخدمها EigenLayer (بشكل صحيح ، وتجنب هذه المزالق)!
EigenLayer هي طبقة إعادة تخزين ل Ethereum. في EigenLayer AVSes، يوقع المدققون نتائج حسابات التحقق من الصحة الخاصة بهم. يجمع المجمع كل هذه التوقيعات ويدفعها في سلسلة. يتم التحقق من التوقيعات المجمعة على السلسلة.
تحتوي المهمة على رقم الكتلة عند إنشاء المهمة وعتبة تشير إلى النسبة المئوية للتحقق من صحة المشغل، وهو أمر ضروري للتحقق من صحة المهمة. يمكن للمشغلين الذين اشتركوا في AVS الحصول على هذه المهام لحساب إجابة المهمة ومن ثم يمكن للمشغل إرسال الإجابة مع توقيع BLS الخاص بهم للمهمة إلى المجمع. بمجرد الوصول إلى عتبة الإجابات المتطابقة، يقوم المجمع بدمج جميع توقيعات BLS في توقيع مجمع فريد وإرسالها مرة أخرى إلى عقد AVS. يتحقق العقد من صحة التوقيع ويفتح فترة صعبة عندما يمكن للمنافس تقديم دليل على أن التحقق كان غير صحيح ، وإذا كان الأمر كذلك ، خفض المشغلين الذين يسيئون التصرف.
في العقد، يحدث التحقق في وظيفة "trySignatureAndApkVerification":
ومع ذلك ، فإن التوقيعات المتعددة ، إذا تم استخدامها بشكل غير صحيح ، تأتي مع مشكلة خطيرة تسمى هجمات المفتاح المارقة. لنفترض أن المستخدم الصادق لديه مفتاح عام ، "pk_0". يمكن للمهاجم الذي شاهد "pk_0" سابقا اختيار مفتاحه العام على أنه pk_1 = sk_1⋅G_1—pk_0. لن يعرف المهاجم المفتاح الخاص المرتبط بالمفتاح العام. ومع ذلك، فإن التحقق من تعدد التوقيعات سيعطي ما يلي:
يلزم فقط "sk_1" لتوقيع رسالة تؤدي إلى توقيع متعدد صالح ، على الرغم من أن المستخدم الأول ربما لم يوقعها. يمكن تعميم هذا بسهولة على أي رقم "r" من المستخدمين الصادقين عن طريق اختيار المفتاح المخادع ، كونه:
يعد هذا تهديدا خطيرا لأنه في مثال AVS السابق الخاص بنا ، يمكن للمجمع الضار الذي كان سيسجل مسبقا مفتاحا مخادعا أن يرسل توقيعات مجمعة لم يتم توقيعها من قبل المدققين ولكن لا يزال مقبولا بموجب العقد. سيؤدي ذلك إلى خفض المدققين حتى لو لم يسيئوا التصرف.
لذلك ، لمنع هجوم المفتاح المخادع ، تتمثل الطريقة الشائعة في مطالبة المستخدمين بإثبات أنهم يعرفون أن المفتاح الخاص يتطابق مع مفتاحهم العام ، والمعروف باسم إثبات الحيازة. وهكذا، في خطوة التسجيل الأولى، يطلب من المستخدم تسجيل مفتاحه العمومي مع إثبات حيازته π على النحو التالي:
في الأساس ، يطلب من المستخدم التوقيع على مفتاحه العام أو أي رسالة تعريف أخرى. في AVS ، تكون الرسالة هي عنوان المشغل. في عقد EigenLayer ، يتم التحقق من إثبات الحيازة بواسطة وظيفة "registerBLSPublicKey":
تستخدم الدالة "pubkeyRegistrationMessageHash" لتجزئة فاصل المجال المخصص "PUBKEY_REGISTRATION_TYPEHASH" وعنوان المشغل.
بعد التسجيل ، تتم إضافة المفتاح العام إلى العقد. يمكننا التحقق من قيمتها عن طريق استدعاء الدالة "getRegisteredPubkey". فيما يلي مثال على مفتاح عام BLS مسجل ل EigenDA AVS:
إثبات الحيازة هو في الأساس توقيع BLS. ومع ذلك، لا ينصح أيضا باستخدام التوقيعات المتعددة أثناء خطوة إثبات الحيازة، على سبيل المثال، لتسجيل مفاتيح عمومية متعددة لمشارك واحد. إذا كان الأمر كذلك ، فسيحقق المشارك هجوم تقسيم صفر. في هذه الحالة ، يمكن للمشارك تسجيل المفاتيح التي قد تلغي عند جمعها معا ويمكنه تجاوز إثبات الحيازة.
لقد رأينا أن توقيعات BLS المتعددة توفر فرصة تحسين كبيرة. يوضح تنفيذ EigenLayer قوة توقيعات BLS ويسلط الضوء أيضا على التعقيدات التي ينطوي عليها نشرها العملي. ومع ذلك ، فإن التوقيعات المتعددة تقدم مخاطر أمنية مثل هجمات المفاتيح المارقة ، والتي تتطلب ضمانات مثل إثبات الحيازة. ولكن مع ترقية Pectra التي تدعم BLS12-381 ، قد نرى المزيد من التنفيذ والتحسينات في Solidity ، وبالتالي نأمل أن يساعد هذا المنشور في تجنب أخطاء التنفيذ ونقاط الضعف المعروفة.
للتعمق في توقيعات BLS ، وتجميع المباني ، والتوقيعات المتعددة ، تحقق من منشور المدونة المنشور مؤخرا أدناه:
‏‎64.21‏K