بروتوكولات Sigma وتحديد هوية Schnorr
نفّذ بروتوكول Sigma وتتبّع كيفية عمل برهان Schnorr
بروتوكولات Sigma وتحديد هوية Schnorr درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
بنية بروتوكول سيغما
يتكون بروتوكول سيغما من 3 رسائل: (1) الالتزام: يرسل المُثبِت التزامًا بقيمة عشوائية. (2) التحدي: يرسل المدقق تحديًا عشوائيًا. (3) الاستجابة: يرسل المُثبِت استجابة محسوبة من التحدي والسر. يقبل المدقق البرهان أو يرفضه.
تحديد الهوية باستخدام Schnorr
يعرف المُثبِت السر x (المفتاح الخاص)؛ والمفتاح العام = g^x mod p (أو النقطة X = x*G على منحنى إهليلجي). الهدف هو إثبات معرفة x دون كشفه. وهذا برهان على معرفة اللوغاريتم المتقطع.
خطوات بروتوكول Schnorr
(1) يختار المُثبِت قيمة r عشوائية، ويرسل الالتزام R = r*G. (2) يرسل المدقق التحدي c (عددًا صحيحًا عشوائيًا). (3) يرسل المُثبِت الاستجابة s = r + c*x. (4) يتحقق المدقق من أن s*G == R + c*X. وإذا كان ذلك صحيحًا، يقبل. يعرف المُثبِت x؛ ولا يمكن حساب الاستجابة s إلا باستخدام x.
تحليل الأمان
الاكتمال: يحقق المُثبِت الصادق دائمًا العلاقة s*G = r*G + c*x*G = R + c*X. المتانة: ينتج عن سجلَّي حوار لهما R نفسه، لكن بتحديين مختلفين c وc'، استجابتان s وs' يمكن من خلالهما استرجاع x = (s-s')/(c-c') — ولذلك لا يستطيع المحتال إنشاء استجابتين صحيحتين لـ R نفسه.
المعرفة الصفرية في Schnorr
المُحاكي (من دون معرفة x): يختار s وc عشوائيًا، ويعيّن R = s*G - c*X. ويشكّل الثلاثي (R, c, s) توزيعًا صالحًا لسجل الحوار. لا يستطيع المدقق التمييز بين سجلات الحوار الحقيقية والمحاكاة — ولذلك يحقق Schnorr المعرفة الصفرية أمام مدقق صادق.
تحويل Fiat-Shamir
اجعل بروتوكول Schnorr غير تفاعلي: استبدل تحدي المدقق بـ c = Hash(R || message). يحسب المُثبِت c بنفسه ثم يرسل الاستجابة. والنتيجة برهان مكوّن من عنصرين (R, s) يمكن لأي شخص التحقق منه. وهذا هو نظام توقيعات Schnorr.
توقيعات Schnorr
Sign(x, m): r ← random؛ R = r*G؛ c = Hash(R||m)؛ s = r + c*x. التوقيع = (R, s). Verify: s*G == R + Hash(R||m)*X. توقيع صغير الحجم (64 بايتًا لـ P-256)، ويمكن التحقق منه على دفعات، وآمن برهانيًا في ROM. اعتُمد في Taproot الخاص بـ Bitcoin (BIP-340).
التزامات Pedersen
C = r*G + v*H حيث إن H مولّد مستقل ثانٍ. يلتزم بالقيمة v باستخدام العشوائية r. خاصية الإلزام: لا يمكن فتحه على قيمة v مختلفة (بسبب اللوغاريتم المتقطع). خاصية الإخفاء: C موزع توزيعًا منتظمًا. تُستخدم هذه الالتزامات في براهين النطاق المعتمدة على Schnorr وفي Bulletproofs.
التركيب: براهين AND
إثبات معرفة x1 وx2 معًا: شغّل بروتوكولي Schnorr باستخدام التحدي نفسه (تشارك التحدي عبر Fiat-Shamir). لا يقبل المدقق إلا إذا كان كلا البرهانين الفرعيين صحيحًا. وهذا يتيح إثبات عبارات متعددة في تفاعل واحد.
التركيب: براهين OR
إثبات معرفة x1 أو x2 دون كشف أيهما: استخدم المُحاكي لأحد الفرعين لحساب سجل حوار زائف، ثم قسّم التحدي بين الفرعين. يرى المدقق سجلَّي حوار يبدوان صحيحين ومجموع تحدييهما يساوي التحدي الحقيقي. وتُسمّى هذه «توقيعات حلقية».
التطبيقات
هويات Schnorr: جوازات السفر الإلكترونية (بروتوكول PACE). توقيعات Schnorr: Bitcoin Taproot وMonero (يستخدم RingCT براهين OR من Schnorr) وSignal Protocol (اتفاق مفاتيح X3DH). التزامات Pedersen: المعاملات السرية، وBulletproofs، وتشفير ملاحظات Zcash Sapling.
تحقق سريع
في بروتوكول تحديد الهوية باستخدام Schnorr، ما الذي يتحقق منه المدقق في الخطوة الأخيرة؟
مراجعة
بروتوكولات سيغما: التزام ثم تحدٍّ ثم استجابة. يثبت Schnorr معرفة لوغاريتم متقطع. يجعل Fiat-Shamir البروتوكول غير تفاعلي (توقيع Schnorr). التالي: zk-SNARKs لبراهين موجزة غير تفاعلية.
تعلم Cryptology Academy مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 67
- الدروس
- 261
الأسئلة الشائعة
هل درس «بروتوكولات Sigma وتحديد هوية Schnorr» مجاني؟
نعم — نص درس «بروتوكولات Sigma وتحديد هوية Schnorr» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «بروتوكولات Sigma وتحديد هوية Schnorr»؟
نفّذ بروتوكول Sigma وتتبّع كيفية عمل برهان Schnorr تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «بروتوكولات Sigma وتحديد هوية Schnorr»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حدس ZKP: كهف علي بابا
- بروتوكولات Sigma وتحديد هوية Schnorr
- zk-SNARKs: براهين موجزة غير تفاعلية
- تطبيقات ZKP: تجميعات ZK وعملات الخصوصية