يتيح لك التوقيع الحلقي (ring signature) التوقيع نيابةً عن مجموعة، بحيث يستطيع أي شخص التحقق من أن التوقيع جاء من أحد مفاتيح المجموعة، بينما لا يستطيع أحد معرفة أيها. تشرح هذه المقالة كيف تعمل التوقيعات الحلقية، من الورقة التي قدّمتها في 2001 إلى صور المفاتيح وCLSAG، وتوضح كيف تستخدم Blocknet حلقة من 16 للحفاظ على خصوصية مرسِل كل دفعة.
ما هو التوقيع الحلقي؟
التوقيع الحلقي توقيع رقمي يُصنع بمفتاح خاص واحد ومجموعة من المفاتيح العامة لأشخاص آخرين. يستطيع المتحقق التأكد من أن صاحب أحد هذه المفاتيح هو من وقّع، لكنه لا يستطيع معرفة أيهم. ويختار الموقِّع المجموعة في الحال، دون إعداد مسبق ودون أي تعاون من الأعضاء الآخرين.
يربط التوقيع الرقمي العادي رسالة بمفتاح عام واحد. أما التوقيع الحلقي فيربطها بمجموعة من المفاتيح العامة تُسمى الحلقة. لا يحتاج الموقِّع إلا إلى مفتاحه الخاص؛ ولا يساهم الأعضاء الآخرون بشيء سوى مفاتيح عامة سبق أن نشروها. وبالنسبة لأي مراقب خارجي، كل عضو في الحلقة موقِّع محتمل بالقدر نفسه.
من أين جاءت التوقيعات الحلقية؟
قدّم Ron Rivest وAdi Shamir وYael Tauman التوقيعات الحلقية في مؤتمر ASIACRYPT 2001 في ورقة بعنوان “How to Leak a Secret” (كيف تسرّب سرًا). ومثالهم عضو في مجلس الوزراء يريد تسريب قصة إلى صحفي بطريقة تُثبت أنها جاءت من المجلس دون أن تكشف أي عضو. فيوقّع بمفتاحه الخاص مع المفاتيح العامة لأعضاء المجلس الآخرين، ويستطيع الصحفي التحقق من التوقيع دون أن يعرف من كتبه.
خاصيتان جعلتا الفكرة لافتة. لا يوجد مدير للمجموعة يستطيع كشف الموقِّع، وهذا ما يميز التوقيعات الحلقية عن التوقيعات الجماعية الأقدم. والحلقة عفوية: يستطيع الموقِّع تجميعها من أي مفاتيح منشورة لحظة التوقيع. واختار المؤلفون الاسم لأن “الحلقات مناطق هندسية ذات محيط متجانس ولا مركز لها”: كل عضو يقع على الحافة، ولا أحد يتولى القيادة. ولخوارزمية التوقيع الشكل نفسه، سلسلة من الحسابات تلتف عائدة إلى نفسها.
كيف يعمل التوقيع الحلقي؟
تبني المخططات الحديثة المستخدمة في العملات المشفرة هذه الحلقة من التجزئات ومفاتيح المنحنيات الإهليلجية. وهذه هي الفكرة بخطوات بسيطة لحلقة من 16 مفتاحًا عامًا:
- ابدأ من موضعك. يختار الموقِّع رقمًا سريًا عشوائيًا ويحسب تجزئته مع الرسالة. تصبح هذه التجزئة التحدي للموضع التالي في الحلقة.
- زيّف استجابة لكل موضع آخر. لكل واحد من الأعضاء الـ 15 الآخرين، يختار الموقِّع استجابة عشوائية ويدمجها مع المفتاح العام لذلك العضو والتحدي الحالي ليحسب التحدي للموضع الذي يليه.
- أغلق الحلقة. بعد الدوران الكامل، تعود السلسلة إلى موضع الموقِّع نفسه. ولا يستطيع حساب الاستجابة الوحيدة التي تجعل السلسلة تنتهي تمامًا حيث بدأت إلا من يملك المفتاح الخاص لذلك الموضع.
التوقيع هو التحدي الابتدائي إضافة إلى الاستجابات الـ 16. يبدأ المتحقق من أي مكان، ويدور حول الحلقة معيدًا حساب كل تحدٍّ من المفاتيح العامة والاستجابات، ويتأكد من أن الحلقة تُغلق. كل المواضع تبدو متشابهة: مفتاح عام واستجابة تبدو عشوائية. لا شيء يحدد أين بدأ الموقِّع، لذا يعرف المتحقق أن مفتاحًا خاصًا واحدًا أغلق الحلقة، ولا يعرف شيئًا عن أيها.
كيف تمنع صور المفاتيح الإنفاق المزدوج؟
للتوقيع الحلقي البسيط ثغرة واحدة عندما يتعلق الأمر بالمال: إذا اختبأ كل إنفاق بين مُخرَجات أخرى، فلن ترى الشبكة أن العملات نفسها أُنفقت مرتين. وتعالج التوقيعات الحلقية القابلة للربط ذلك. وصف Joseph Liu وVictor Wei وDuncan Wong أول مخطط من هذا النوع، LSAG، في مؤتمر ACISP 2004 (ePrint 2004/027). يمكن ربط توقيعين صُنعا بالمفتاح الخاص نفسه أحدهما بالآخر، بينما يبقى الموقِّع مختبئًا في الحلقة.
حوّل تصميم CryptoNote في 2013 ذلك إلى صورة المفتاح (key image). لمُخرَج مفتاحه الخاص x ومفتاحه العام P، تحسب المحفظة I = x · Hp(P)، حيث تحوّل Hp المفتاح العام بالتجزئة إلى نقطة على المنحنى. يُثبت التوقيع أن I تخص أيًا كان عضو الحلقة الذي وقّع، دون أن يقول أيهم. ولأن صورة المفتاح تعتمد فقط على المُخرَج الذي يُنفَق، فإن إنفاق ذلك المُخرَج مجددًا يُنتج دائمًا I نفسها. تحتفظ كل عقدة بقائمة بصور المفاتيح التي رأتها سابقًا، وترفض أي معاملة تكرر إحداها.
من MLSAG إلى CLSAG
تحتاج العملات المشفرة التي تُخفي المبالغ أيضًا إلى أن يُثبت التوقيع الحلقي حقيقة ثانية: أن مبلغ المُدخل المخفي يطابق ما تنفقه المعاملة. وقد حققت ورقة Shen Noether في 2015 “Ring Signature Confidential Transactions for Monero” (RingCT) ذلك باستخدام MLSAG، وهو توقيع حلقي على مجموعتين من المفاتيح، واحدة للملكية وأخرى لالتزامات المبالغ.
أما CLSAG، من Brandon Goodell وSarang Noether وArthur Blue (ePrint 2019/654)، فيُثبت الحقيقتين نفسيهما بحجم أصغر. انتقلت Monero من MLSAG إلى CLSAG في ترقيتها في أكتوبر 2020. وتذكر وثائق Monero تحققًا أسرع بنحو 20%، وتقلص حجم المعاملة النموذجية ذات المُدخلين والمُخرَجين من نحو 2.5 kB إلى 1.9 kB.
ماذا يعني حجم الحلقة للخصوصية؟
حجم الحلقة هو عدد المُخرَجات في كل حلقة: المُخرَج الحقيقي إضافة إلى المُدخلات التمويهية. حلقة من 16 تعني أن المراقب يرى 16 مرشحًا صالحًا بالقدر نفسه لكل مُدخل. وثبات الحجم مهم بقدر كِبَره، لأنه عندما تستخدم كل المُدخلات الحجم نفسه، لا يكشف الحجم نفسه شيئًا عمن أنشأ المعاملة.
المُدخلات التمويهية مُخرَجات حقيقية من السلسلة، لذا يمكن لكل منها فعلًا أن يكون العملة التي تُنفَق. ولو كان حجم الحلقات متغيرًا، لميّزت المحفظة التي تختار حجمًا غير معتاد معاملاتها بنفسها. رفعت Monero حجم الحلقة من 11 إلى 16 في ترقيتها في أغسطس 2022، وتستخدم Blocknet الحجم 16 بموجب الإجماع لكل مُدخل.
كيف تستخدم Blocknet التوقيعات الحلقية
يُوقَّع كل مُدخل في Blocknet باستخدام CLSAG وRingCT على حلقة من 16 مُخرَجًا بالضبط. ويفرض الإجماع هذه القواعد، فلا تستطيع أي محفظة الخروج عنها:
- حلقة ثابتة من 16. يرفض برنامج العقدة أي مُدخل لا تضم حلقته 16 عضوًا بالضبط. وتثبّت شيفرته الحجم “لمنع تسرب المعلومات من أحجام الحلقات المتغيرة”.
- مُخرَجات حقيقية فقط. يجب أن يكون كل عضو في الحلقة مُخرَجًا حقيقيًا موجودًا على السلسلة، لذا كل مُدخل تمويهي عملة يمكن فعلًا أن تُنفَق.
- مُدخلات تمويهية عشوائية وموضع عشوائي. تخلط المحفظة مُخرَجات السلسلة بمولّد أرقام عشوائية آمن تشفيريًا لاختيار 15 مُدخلًا تمويهيًا، ثم تضع مُخرَجك الحقيقي في موضع عشوائي داخل الحلقة.
- الملكية والمبلغ في إثبات واحد. يُثبت كل توقيع أنك تملك عضوًا واحدًا في الحلقة وأن المبلغ المخفي لمُدخلك يطابق التزام ذلك العضو، فتتوازن المبالغ دون إظهارها.
- مطابقة صور المفاتيح مع السلسلة. صورة المفتاح جزء من البيانات الموقَّعة، وترفض الشبكة المعاملة إذا كانت صورة المفتاح قد أُنفقت سابقًا أو ظهرت مرتين في المعاملة نفسها.
لا يتضمن تنسيق المعاملات وضعًا شفافًا، لذا تحمل كل دفعة على السلسلة حلقات كهذه. تُخفي التوقيعات الحلقية المرسِل؛ وتُخفي العناوين الخفية لمرة واحدة المستلم، وتُخفي التزامات Pedersen مع Bulletproofs المبلغ. ويشرح كيف تحافظ Blocknet على خصوصية المدفوعات كل طبقة من هذه الطبقات وما تعنيه عندما تدفع لشخص ما.
ما الذي يأتي لاحقًا مع ترقية Faraday
تخطط Blocknet لترقية للشبكة باسم Faraday، مع تفعيل مقرر في حدود 2027-02-16 وفقًا لـ blocknetcrypto.com. وبكلمات الموقع: “اليوم يختبئ الإنفاق بين 16 مُخرَجًا. بعد Faraday، سيختبئ بين كل مُخرَج على السلسلة.” وستأتي Faraday أيضًا بإثباتات إنفاق جديدة يصفها الموقع بأنها “مبنية بحيث لا يستطيع حاسوب كمومي تزوير إنفاق”. التصميم والاختبار والمراجعة العدائية جارية، والتواريخ مقررة وليست نهائية.
احصل على بعض BNT لترسلها بخصوصية
من الطرق البسيطة للحصول على عملات تستخدم هذه الحلقات أن تعدّنها. برنامج التعدين seine مجاني ومفتوح المصدر ويضبط نفسه حسب حاسوبك، وbntpool.com هو مجمعه الافتراضي، لذا يمكنك أن تبدأ التعدين خلال دقائق. ويغطي دليل التعدين الإعداد، ويمكنك التعدين مباشرة إلى عنوانك أو إلى اسم Blocknet ID.
الأسئلة الشائعة
ما الفرق بين التوقيع الحلقي والتوقيع الجماعي؟
يحتاج التوقيع الجماعي إلى مدير يُنشئ المجموعة مسبقًا ويستطيع كشف من وقّع. أما التوقيع الحلقي فلا مدير له ولا إعداد مسبق: يختار الموقِّع أي مجموعة من المفاتيح العامة في الحال، ولا يستطيع أحد لاحقًا، ولا حتى أصحاب المفاتيح المستخدمة، إثبات أي عضو أنتج التوقيع.
ما صورة المفتاح (key image) في التوقيع الحلقي؟
صورة المفتاح قيمة تُحسب من المفتاح الخاص للمُخرَج الذي يُنفَق. المُخرَج نفسه يُنتج دائمًا صورة المفتاح نفسها، لذا ترفض الشبكة إنفاقه مرة ثانية، ومع ذلك لا تكشف صورة المفتاح أي عضو في الحلقة هو الحقيقي. وهي تحوّل التوقيع الحلقي إلى توقيع حلقي قابل للربط يمنع الإنفاق المزدوج.
ما هو CLSAG؟
CLSAG مخطط توقيع حلقي قابل للربط وصفه Brandon Goodell وSarang Noether وArthur Blue في 2019. يُثبت أن الموقِّع يملك مُخرَجًا واحدًا في الحلقة وأن المبالغ متوازنة، مع صورة مفتاح لمنع الإنفاق المزدوج. اعتمدته Monero في أكتوبر 2020، وتوقّع Blocknet كل مُدخل باستخدام CLSAG وRingCT.
ما حجم الحلقة الذي تستخدمه Blocknet؟
تستخدم Blocknet حلقة من 16 بالضبط لكل مُدخل: المُخرَج الحقيقي إضافة إلى 15 مُدخلًا تمويهيًا، كل منها مُخرَج حقيقي موجود على السلسلة. ويرفض الإجماع أي حجم آخر. ولأن كل المُدخلات تستخدم الحجم نفسه، لا يمكن لحجم الحلقة أن يميّز أي معاملة، ويقع المُخرَج الحقيقي في موضع عشوائي داخل الحلقة.
هل تُخفي التوقيعات الحلقية مبلغ الدفعة؟
لا. يُخفي التوقيع الحلقي أي مُخرَج هو الذي دفع. أما المبالغ فتُخفيها طبقة منفصلة: التزامات Pedersen التي تثبّت رقمًا دون إظهاره، إضافة إلى إثباتات النطاق Bulletproofs التي تُثبت أن كل مبلغ صالح. تستخدم Blocknet كل ذلك معًا في كل معاملة، إلى جانب العناوين الخفية لمرة واحدة التي تُخفي المستلم.