المواضيع الرائجة
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
هل تعتقد أن تنفيذ nonces بسيط؟ فكر مرة اخرى.
سواء كنت تقوم ببناء بروتوكولات onchain أو بنية تحتية خارج السلسلة ، فإن تنفيذ nonce الصحيح هو أحد أصعب أجزاء أمان التشفير.
دعنا نتعمق في سبب صعوبة حماية إعادة التشغيل مما تبدو 👇 عليه
2 / أولا ، دعنا نفهم التوقيعات الرقمية. في تشفير المفتاح العام (مثل BLS) ، لديك مفتاح خاص يوقع الرسائل ومفتاح عام يتحقق منها.
في Ethereum:
العنوان = تجزئة المفتاح العام
الرسالة = تجزئة المعاملة
التوقيع = 64 بايت من إثبات التشفير
3 / ها هي المشكلة: الرياضيات في معظم بروتوكولات تشفير المفتاح العام لا تحد من عدد المرات التي يمكن فيها التحقق من التوقيع مقابل نفس الرسالة. بمجرد حصولك على توقيع صالح ، يمكنك إعادة تشغيله بلا حدود. هذا يفتح الباب لإعادة الهجمات.
4 / أدخل nonce: "رقم مستخدم مرة واحدة" يمنع هجمات الإعادة. عندما يتلقى المستهلك رسالة تحتوي على nonce ، فإنه يتحقق مما إذا كان هذا nonce قد تم استخدامه من قبل. إذا كانت الإجابة بنعم → الرفض. تستخدم معاملات Ethereum هذا النمط.
5 / لكن التنفيذ غير المتكرر معقد بشكل مخادع. المتطلبات الرئيسية:
- يجب ألا تكون Nonces قابلة لإعادة الاستخدام (على هذه السلسلة أو غيرها)
- يجب منع هجمات إعادة التشغيل بشكل دائم
- تحتاج إلى آليات للتعامل مع نمو التخزين
- يجب أن تكون مقاومة للهجمات الأمامية
6 / الحل الساذج: قم بتخزين جميع الأشياء غير المشروعة في قاعدة بيانات إلى الأبد. هذا له مشكلتان رئيسيتان:
أ) نمو التخزين غير المحدود (خاصة مع هجمات البريد العشوائي)
ب) التعرض للهجمات الأمامية
المشكلة (أ) أسهل في الحل من (ب). دعنا نتعامل مع التخزين أولا ...
7 / nonces المستندة إلى الطابع الزمني تحل نمو التخزين! استخدم الطابع الزمني + فترة انتهاء الصلاحية. يتم حذف nonces التي يزيد عمرها عن 5 دقائق من قاعدة البيانات. ولكن ماذا عن الرسائل المتزامنة من نفس الحساب؟ يتشاركون طابعا زمنيا. الحل: الطابع الزمني + random_bytes للتفرد الحبيبي.
8/ الجري الأمامي هو الجزء الصعب. يمكن للجهات الفاعلة الخبيثة اعتراض التوقيعات الصالحة ، وتشغيلها أمامي لتمييز nonces على أنها مستخدمة ، ثم يتم رفض مكالمة المستخدم الشرعي. هذه مشكلة في السلسلة مع العمليات المجمعة إذا رفض توقيع واحد غير صحيح دفعة كاملة. بالنسبة إلى وضع عدم الاتصال: استخدم تشفير TLS! لا تدع أي ممثل ضار يرى التوقيع أو التوقيع.
9 / لا تنس المثابرة! إذا كانت ذاكرة التخزين المؤقت nonce في الذاكرة فقط ، فيمكن للمهاجمين إعادة تشغيل nonces القديمة بعد إعادة تشغيل النظام. استمر دائما في حالة nonce للتخزين الدائم وإعادة التحميل عند بدء التشغيل. ذاكرة التخزين المؤقت للذاكرة فقط = نافذة إعادة التشغيل.
10 / nonces فريدة من نوعها لكل مستهلك! عند البث إلى عدة مستخدمين، يجب أن يحصل كل منهم على رسالة/توقيع مختلف. خلاف ذلك ، فأنت عرضة لهجمات Man-in-the-Middle حيث يقوم أحد المستلمين بإعادة توجيه الرسالة ، وانتحال شخصية المرسل الأصلي.
11 / nonces المتزايدة (مثل Ethereum ، nonce = prev nonce + 1) لها مكانها ، لكن احذر! إنها تخلق تحديات هائلة للبنية التحتية خارج السلسلة: الرسائل غير المنتظمة ومشكلات المزامنة وسيناريوهات الاسترداد المعقدة. لا تستخدم إلا إذا كنت واثقا من وصول الرسائل (أو يجب) بالتسلسل.
ملخص - قائمة مراجعة تنفيذ Nonce:
✅ استخدم nonces لمنع هجمات إعادة التشغيل
✅ استمر في حالة nonce عبر عمليات إعادة التشغيل
✅ تنفيذ آليات انتهاء الصلاحية (الطابع الزمني + التنظيف)
✅ اجعل nonces فريدا لكل جهاز استقبال
✅ الحماية من التشغيل الأمامي باستخدام القنوات المشفرة
✅ تجنب الأخطاء المتزايدة ما لم يكن الطلب مضمونا
الأمن يكمن في التفاصيل! 🛡️
1.36K
الأفضل
المُتصدِّرة
التطبيقات المفضلة