Nonce هو اختصار لعبارة “Number used once” أي "رقم يُستخدم مرة واحدة". في علم التشفير وبروتوكولات الاتصال، يُشير إلى رقم عشوائي أو شبه عشوائي يُولّد لضمان تفرد الاتصالات. السمات الأساسية للـ nonce تشمل:
• التفرد: كما يوضح المصطلح، يُستخدم هذا الرقم مرة واحدة فقط ضمن اتصال مشفر محدد ولا يُعاد استخدامه.
• عدم القابلية للتنبؤ: في سياقات التشفير، يجب أن يكون الـ nonce عشوائيًا لمنع المهاجمين من توقع قيمته.
في آلية إثبات العمل (PoW) الخاصة بـ Bitcoin، يُعد الـ nonce هو المتغير الوحيد الذي يمكن للمنقبين تعديله يدويًا أثناء حساب التجزئة. لا يمكن للمنقبين تعديل بيانات المعاملة؛ بل عليهم تجربة قيم nonce مختلفة باستمرار وإعادة حساب التجزئة في كل مرة. عندما يكتشف المنقب قيمة nonce تنتج تجزئة كتلة تلبي مستوى الصعوبة المطلوب، تُعد تلك القيمة إثبات العمل.
تشبه هذه العملية شراء تذاكر اليانصيب. تمثل بيانات الكتلة اسمك، والـ nonce هو الرقم العشوائي الذي تختاره. تستمر في تغيير الرقم (nonce) حتى تفوز (تُلبي صعوبة التجزئة).
في Ethereum، للـ nonce وظيفتان رئيسيتان، وأكثرها شيوعًا هو الـ nonce الخاص بالحساب:
الهدف الأساسي للـ nonce هو تعزيز أمان النظام وسلامته:
• منع هجمات إعادة الإرسال (Replay Attack): هذه هي الوظيفة الأساسية للـ nonce. قد يعترض المهاجمون اتصالات صحيحة ويحاولون إعادة إرسالها للحصول على وصول غير مصرح به. يضمن الـ nonce أنه حتى إذا تم اعتراض الطلب، سيرفضه الخادم لأن الرقم قد انتهت صلاحيته بالفعل.
يشبه ذلك الرقم التسلسلي على الشيك. إذا صرف شخص شيك برقم #001، فإن البنك يبطل هذا الرقم. حتى لو نسخ أحدهم الشيك، لا يمكن صرفه مرة أخرى.
• ضمان حداثة البيانات: من خلال تضمين nonce، يمكن للمستلم التحقق من أن البيانات تم إنشاؤها في الوقت الفعلي وليست إعادة إرسال لمعلومات قديمة. يمنع ذلك المهاجمين من استخدام سجلات جلسات سابقة لانتحال الهوية.
• تعزيز عدم القابلية للتنبؤ: يُدخل الـ nonce متغيرًا في عملية التشفير، مما يجعل من الصعب جدًا على المهاجمين تحليل الأنماط واختراق النظام.
استنادًا إلى طريقة التوليد واحتياجات التطبيق، يُصنف الـ nonce أساسًا إلى فئتين:
• Nonce عشوائي: يُولّد باستخدام مولّد أرقام عشوائية شبه آمنة تشفيريًا (CSPRNG)، ويوفر درجة عالية من العشوائية وعدم القابلية للتنبؤ. يُستخدم عادة في التوقيعات الرقمية وخطط التشفير المتقدمة.
• Nonce تسلسلي: يُنتج بزيادة عداد. وعلى الرغم من أنه أقل عشوائية، إلا أنه يضمن التفرد المطلق ويُناسب آليات المصادقة.
يمتد استخدام الـ nonce عبر مجموعة واسعة من السيناريوهات، بدءًا من تصفح الإنترنت اليومي إلى معاملات العملات الرقمية، بالإضافة إلى بروتوكولات الأمان المختلفة والتقنيات الناشئة. ويتركز منطقه الأساسي دائمًا حول التفرد وعدم القابلية للتنبؤ.
• إدارة الهوية والمصادقة: في مصادقة HTTP Digest، وتسجيل الدخول الموحد (SSO)، والمصادقة الثنائية (2FA)، تُستخدم الـ nonce للتحقق من هوية المستخدم وضمان صحة الطلب.
• البروتوكولات التشفيرية والتوقيعات الرقمية:
◦ أثناء مصافحة SSL/TLS، يتبادل العملاء والخوادم الـ nonce للتحقق من الهويات.
◦ في خوارزميات مثل AES-GCM، يعمل الـ nonce كـ متجه التهيئة (IV)، لضمان عدم إنتاج نصوص مشفرة متطابقة من نصوص أصلية متطابقة.
• البلوكشين والسجلات الموزعة
يُعد هذا أكثر تطبيقات الـ nonce بروزًا اليوم، حيث يعالج مسألتي "من يسجل المعاملات" و"ترتيب المعاملات".
على سبيل المثال، في تعدين إثبات العمل (PoW): في Bitcoin، يُعد الـ nonce حقلًا بطول 32 بت. يواصل المنقبون تعديل هذا الرقم حتى يصبح تجزئة رأس الكتلة أقل من مستوى الصعوبة المستهدف.
في إدارة حسابات Ethereum: يحتفظ كل حساب في Ethereum بـ nonce متزايد. لا يمنع ذلك هجمات إعادة الإرسال (إرسال نفس المعاملة مرتين) فحسب، بل يمكّن المستخدمين أيضًا من "استبدال" أو "إلغاء" المعاملات العالقة عن طريق إرسال معاملة جديدة بنفس الـ nonce ورسوم أعلى.
على الرغم من ظهور قيم الـ nonce والتجزئة معًا بشكل متكرر في سياقات البلوكشين، إلا أنهما مختلفان جوهريًا:
قيمة التجزئة هي "بصمة رقمية" للبيانات، تُحدد بواسطة المدخلات وتكون ثابتة الحجم. أما الـ nonce فهو متغير مؤقت يُستخدم لتغيير نتائج التجزئة.
من منظور زمني، تعمل قيمة التجزئة كمُعرف ثابت لمجموعة بيانات، في حين يُتخلص عادةً من الـ nonce بعد استخدامه مرة واحدة.
إذا كانت عملية توليد أو إدارة الـ nonce معيبة، تواجه الأنظمة مخاطر كبيرة. تشمل الهجمات الشائعة:
◦ هجوم إعادة استخدام الـ Nonce: يستغل المهاجمون إعادة استخدام الـ nonce لاختراق الحماية التشفيرية. على سبيل المثال، في يوليو 2021، بروتوكول Anyswap Multichain Router V3 عبر السلاسل وقّع على معاملتين بنفس القيمة (مكون التوقيع)، مما مكّن المهاجمين من استنتاج المفتاح الخاص وأدى إلى خسائر تقارب $8 مليون.
◦ هجوم التنبؤ بالـ Nonce: إذا كان نمط توليد الـ nonce قابلاً للتنبؤ، يمكن للمهاجمين التلاعب بعمليات التعدين أو المصادقة.
◦ هجوم القوة الغاشمة: يحاول المهاجمون جميع قيم الـ nonce بشكل منهجي للعثور على تجزئة تلبي المعايير المطلوبة. على سبيل المثال، في عام 2018، تعرضت عملة Bitcoin Gold (BTG) لهجمات 51% متعددة. استأجر المهاجمون قوة حوسبة ضخمة لتجربة جميع قيم الـ nonce، مما أدى في النهاية إلى سرقة 388,200 BTG وخسائر بحوالي $18 مليون.

مصدر الصورة: Bitcoin Gold Explorer
لمنع هذه الهجمات، يجب على المطورين والمشاريع استخدام خوارزميات توليد شديدة العشوائية (مثل CSPRNG)، وتطبيق فحوصات تفرد صارمة، وتحديث مكتبات التشفير بشكل منتظم.
باعتباره عنصرًا أساسيًا في تقنيات التشفير، توفر خاصية "الاستخدام لمرة واحدة" للـ nonce أمانًا قويًا للاتصالات المعقدة عبر الإنترنت والسجلات الموزعة. يُعد فهم وتطبيق آليات الـ nonce بشكل صحيح أمرًا ضروريًا لضمان أمان وشفافية وسلامة العالم الرقمي.
للمزيد من القراءة:





