شرح توقيعات العتبة
الصفحة الرئيسية
المقالات
شرح توقيعات العتبة

شرح توقيعات العتبة

متقدم
تاريخ النشر Jul 21, 2019تاريخ التحديث Apr 29, 2021
12m
الكاتب: Omer Shlomovits, ZenGo.
مخطط توقيع العتبة (TSS) هو مخطط بدائي التشفير لإنشاء المفاتيح الموزعة وتوقيعها. يعد استخدام TSS في حسابات البلوكشين نموذجًا جديدًا يمكن أن يقدم العديد من الفوائد المختلفة خاصة فيما يتعلق بالأمان. بمعنى أنه يمكن لـ TSS التأثير على تصميم أنظمة الإدارة الرئيسية (مثل المحافظ الرقمية) وريادة المجال للحصول على الدعم المحلي في حالات استخدام DeFi. بعد قول هذا لا تزال TSS تقنية جديدة لذلك يجب أيضًا مراعاة المخاطر والقيود عند استخدامها.

في هذه المقالة سنقوم بتغطية ما هو الـ TSS و ما هي المزايا المحتملة التي قد يجلبها الى مجال البلوكشين وكيف يمكن تنفيذه في Client بلوكشين وكيف يقارن بـ Shamir secret sharingو Multisig و ما هي الطرق المختلفة لإستخدام TSS في إدارة المفاتيح الموزعة وأخيراً نناقش المخاطر والقيود المحتملة له.

دور التشفير

لفهم الـ TSS نحتاج أولاً إلى بعض المعرفة الأساسية عن علم التشفير. منذ السبعينات استخدمت أنظمة الإنترنت التشفير غير المتماثل أكثر وأكثر (مثل TLS و PGP) والذي يُعرف أيضًا باسم تشفير المفتاح العام (PKC). يستخدم PKC مفتاحين: واحد عام والآخر خاص. في حين أن المفتاح العام ليس سريًا ويمكن لأي شخص مشاركتة واستخدامه، إلا أن المفتاح الخاص هو جزء من المعلومات السرية التي تمثل أمان النظام ولا يمكن مشاركتة.
التشفير والتوقيعات الرقمية هما أكثر الاستخدامات شيوعًا للـ PKC. تعتمد كل من مخططات التشفير والتوقيع الرقمي على مجموعات من ثلاثة خوارزميات. الأولى هي توليد زوج المفاتيح الخاصة والعامة والثانية هي إنشاء نص مشفر/توقيع والثالثة هي عملية فك التشفير/التحقق. يما يتعلق بالتوقيعات الرقمية: تتطلب خوارزمية التوقيع أن يقوم المفتاح الخاص والذي يكون معروف فقط لمالكه بإنشاء توقيع فريد. يتم إرفاق التوقيع برسالة معينة بطريقة تمكن أي شخص يحمل المفتاح العام من التحقق من مصداقيتها وصحتها.


البلوكشين

ليس هناك شك في أن البلوكشين تعتبر تقنية قوية للغاية. فهي تقوم بتوفير طبقة إجماعية تنظم وتسجل الأحداث. مثل هذه البنية التحتية تعطينا نحن المستخدمين وحتى الحكومات القوة المحتملة لبناء اقتصادات لامركزية. والمثير للدهشة أن التشفير اللازم لتشغيل بلوكشين بسيط يمكن أن يعتمد فقط على التوقيعات الرقمية. في مجال البلوكشين تمثل المفاتيح الخاصة الهويات في حين أن التوقيعات عبارة عن بيان عام أو مطالبة تقدمها هوية ما. تقوم البلوكشين بطلب البيانات والتحقق من صحتها وفقًا لمجموعة من القواعد والتي تضمن من بين أشياء أخرى عديدة أن تكون التوقيعات غير قابلة للتزوير وتكون وصحيحة.
يتضمن صندوق أدوات التشفير الحديث بعض الحيل السحرية الرائعة على عكس التشفير الأكثر كلاسيكية المستخدم في البلوكشين. من بعض الأمثلة على هذه الحيل: براهين المعرفة الصفرية والتشفير المتماثل والحساب متعدد الأطراف. كما رأينا على مدار العقد الماضي دفعت بحوث البلوكشين التشفير المطبق بشكل كبير مع تقدم مفاجئ في المعرفة حديث في كل ما سبق وأكثر من ذلك بكثير. 

في هذه المقالة سوف نركز على أحد الإنفراجات وهو الـ (TSS) توقيعات العتبة الآمنة الفعالة.


MPC and the threshold signature scheme (TSS)

يعتبر الحساب المتعدد الأطراف (MPC) فرعًا للتشفير الذي بدأ بالعمل الأساسي لـ Andrew C. Yao منذ ما يقرب من 40 عامًا. في MPC تحاول مجموعة من الأطراف التي لا تثق ببعضها البعض حساب دالة على مدخلاتها مع الحفاظ على خصوصية تلك المدخلات. 

على سبيل المثال دعنا نقول أن عدد من موظفي شركة يريدون معرفة من يتقاضى راتب أكثر ولكن دون الكشف عن راتبهم الفعلي لبعضهم البعض. هنا المدخلات الخاصة هي الرواتب والمحرجات ستكون اسم الموظف مع أعلى راتب. عند إجراء هذا الحساب باستخدام MPC تكون النتيجه أنه لا يتم حتى تسريب راتب واحد أثناء الحساب. 

السمتان الرئيسيتان لـ MPC هما الصحة والخصوصية:

  • الصحة: المخرجات الناتجة من خوارزمية هي الصحيحة (كما هو متوقع).

  • الخصوصية: بيانات المدخلات السرية التي يحملها طرف لن تتسرب إلى باقي الأطراف الأخرى.

سنقوم بإستخدام MPC لحساب التوقيع الرقمي بطريقة موزعة. لنرى كيف يمكن تطبيق الخصائص المذكورة أعلاه على التوقيعات. بالنسبة للتوقيعات، لدينا ثلاث خطوات: 

  • توليد المفتاح: الخطوة الأولى وهي أيضا الأكثر تعقيدا. نحتاج إلى إنشاء مفتاح سيكون عامًا ويستخدم للتحقق من التوقيعات المستقبلية. لكننا نحتاج أيضًا إلى إنشاء سر فردي لكل طرف مشارك والذي سنطلق عليه إسم مشاركة سرية. في سياق الصحة والخصوصية نقول أن الوظيفة ستقوم بإخراج نفس المفتاح العام لجميع الأطراف ومشاركة سرية مختلفة لكل من التالي: (1) الخصوصية: لا يتم تسرب بيانات عن المشاركة السرية بين الطرفين و (2) الصحة: المفتاح العام هو وظيفة من المشاركات السرية.

  • التوقيع: تتضمن هذه الخطوة وظيفة إنشاء توقيع. تكون مساهمة كل طرف هي حصته السرية والتي تم إنشاؤها كمخرجات من الخطوة السابقة (توليد المفاتيح الموزعة). هناك أيضًا مدخلات عامة معروفة للجميع وهي الرسالة المراد توقيعها. سيكون الإخراج توقيعًا رقميًا وتضمن خاصية الخصوصية عدم حدوث أي تسريب للمشاركات السرية أثناء الحساب.

  • التحقق: تظل خوارزمية التحقق كما هي في الإعدادات الكلاسيكية. لتكون متوافقة مع توقيعات المفاتيح الفردية يجب أن يكون كل شخص لديه معرفة بالمفتاح العام قادرًا على التحقق من التوقيعات والتصديق من صحتها. هذا بالضبط ما تفعله عقد تحقق البلوكشين.

مخطط توقيع العتبة Threshold signature scheme أو (TSS) هو الاسم الذي نطلقه على تركيبة توليد المفاتيح الموزعة distributed key generation أو (DKG) وتوزيع التوقيع على مخطط توقيع العتبة.


الجمع بين TSS والبلوكشين

الطريقة الطبيعية التي يمكن من خلالها استخدام TSS في البلوكشين هي عن طريق تغيير client البلوكشين ليقوم بإنشاء المفاتيح والتوقيعات باستخدام TSS. هنا نستخدم مصطلح Client للإشارة إلى مجموعة من الأوامر التي يتم تنفيذها بواسطة عقدة كاملة. في التطبيق العملي تتيح لنا تقنية TSS استبدال جميع الأوامر المتعلقة بالمفتاح الخاص بحسابات موزعة.

لشرح ذلك بمزيد من التفصيل سوف نبدأ بوصف سريع عن كيفية إنشاء عناوين جديدة على هيكل بلوكشين كلاسيكي.  ببساطة، يمكننا إنشاء عنوان جديد عن طريق إنشاء مفتاح خاص ثم حساب المفتاح العام من المفتاح الخاص. وأخيرًا، يتم اشتقاق عنوان البلوكشين من المفتاح العام.

الآن باستخدام TSS سيكون لدينا مجموعة من الأطراف التي تقوم بحساب المفتاح العام بشكل مشترك كل طرف مشارك يحمل حصة سرية من المفتاح الخاص (لا يتم الكشف عن الحصص الفردية للأطراف المشاركة الأخرى). عن طريق المفتاح العام يمكننا اشتقاق العنوان بنفس الطريقة الموجودة في النظام التقليدي مما يجعل البلوكشين محايدا نوعا ما في طريقة إنشاء العناوين. الميزة هنا هي أن المفتاح الخاص لم يعد نقطة فشل واحدة لأن كل طرف يحتفظ بجزء واحد منه. 

يمكن القيام بنفس الشيء عند توقيع المعاملات. في هذه الحالة بدلاً من توقيع طرف واحد بمفتاحه الخاص نقوم بتشغيل مُولِّد توقيعات موزع بين أطراف متعددة. حتى يمكن لكل طرف إنتاج توقيع صالح طالما أن ما يكفي من المشاركين يتصرفون بأمانة. انتقلنا مرة أخرى من الحساب المحلي (نقطة فشل واحدة) إلى حساب تفاعلي.

من المهم الإشارة إلى أن إنشاء المفاتيح الموزعة يمكن القيام به بطريقة تتيح أنواعًا مختلفة من طرق الوصول اليهم: سيكون الإعداد “t out of n” العام قادرًا على تحمل ما يصل إلى t من الإخفاقات التعسفية في العمليات المتعلقة بالمفتاح الخاص دون المساس بالأمن.


TSS vs. Multisig

تقدم بعض شبكات البلوكشين وظيفة TSS كجزء مضمن أو قابل للبرمجة من البرنامج. نسمي هذه الوظيفة multisig أو التوقيع المتعدد (multi-signature). لفهم الاختلافات بشكل أفضل يمكننا أن ننظر إلى الـ multisig باعتباره TSS في مرحلة التطبيق في البلوكشين.

بمعنى اخر، يحاول كل من multisig و TSS بشكل أساسي تحقيق أهداف مماثلة لكن TSS يستخدم تشفيرًا off-chain بينما multisig يستخدم on-chain. مع ذلك فإن البلوكشين يحتاج إلى طريقة لتشفير multisig مما قد يضر بالخصوصية لأن بنية الوصول (عدد الموقعين) يكون مكشوفا على البلوكشين. تكلفة معاملة multisig تكون أعلى لأن المعلومات الموجودة على الموقعين المختلفين تحتاج أيضًا إلى التواصل على البلوكشين.

في TSS يتم طي تفاصيل الموقعين في معاملة عادية مما يقلل التكلفة ويحافظ على الخصوصية. من ناحية أخرى يمكن أن يكون multisig غير تفاعليى مما يوفر مشكلة تشغيل طبقة اتصال معقدة بين مختلف الموقعين.

تتمثل نقطة الاختلاف الرئيسية في أن الـ multisig الخاص بالبلوكشين يحتاج إلى إعادة تطبيقة على كل بلوكشين وفي بعض الحالات لا يتم دعمه على الإطلاق. على العكس يعتمد TSS على تشفير خالص لذلك يكون من الممكن دعمة دائمًا. يمكن العثور على مقالة رائعة توضع الإختلافات هنا.


TSS vs. Shamir secret sharing scheme

يوفر نظام مشاركة Shamir السري Shamir secret sharing scheme أو (SSSS) طريقة موزعة لتخزين المفتاح الخاص. بينما يكون المفتاح الخاص في وضع التخزين يتم تخزينه في مواقع متعددة. هناك اختلافان بين SSSS و TSS:

  • إنشاء المفاتيح: في SSSS يوجد حزب واحد يسمى “الموزع/the dealer” يكون مسؤول عن إنشاء المشاركات السرية الخاصة بالمفتاح. هذا يعني أنه في وقت إنشاء المفاتيح، يتم إنشاء المفتاح الخاص في مكان واحد ثم يتم توزيعه بواسطة الموزع على المواقع المختلفة. لكن في TSS لا يوجد موزع لأنه يتم توزيع دوره بحيث لا يكون المفتاح الخاص الكامل في مكان واحد أبدًا.

  • التوقيع: في SSSS يجب على الأطراف إعادة بناء المفتاح الخاص الكامل من أجل التوقيع مما يؤدي مرة أخرى إلى نقطة فشل واحدة في كل مرة يلزم فيها توقيع. من ناحية أخرى في TSS يتم التوقيع بطريقة موزعة دون إعادة إنشاء المشاركات السرية.

كما نرى في TSS لا يكون المفتاح الخاص (الذي يمثل أمان النظام) في مكان واحد مطلقًا طوال فترة عمرة.


محافظ العتبة

تختلف المحفظة المبنية على تقنية TSS قليلاً عن محافظ العملات الرقمية التقليدية. عادةً ما تقوم المحفظة التقليدية بإنشاء عبارة أولية واستخدامها لاشتقاق العناوين بشكل حتمي. يمكن للمستخدم في وقت لاحق استخدام البنية الهرمية الحتمية (HD) لـ 1) الوصول إلى المفاتيح الخاصة التي تتوافق مع عناوين المحفظة وتوقيع المعاملات معهم. 2) لاستعادة جميع مفاتيح المحفظة باستخدام العبارة الأولية.

في محافظ العتبة تكون الأمور أكثر تعقيدًا. على الرغم من أنه من الممكن إنشاء بنية هرمية حتمية (HD) إلا أنه يجب حساب إنشائها بطريقة موزعة كبروتوكول MPC آخر. حيث يحتاج الأطراف المشاركة إلى اتخاذ قرار مشترك بشأن ما هو المفتاح التالي الذي سيتم استخدامه. بمعنى آخر، سيكون لكل طرف عبارة أولية خاصة به. يتم إنشاء العبارات الأولية بشكل منفصل ولا يتم دمجها حتى لا يستطيع أحد الطرفين بمفرده استنتاج المفاتيح الخاصة من العبارة الأولية.

تتمتع المحافظ القائمة على TSS أيضًا بميزة أمان لطيفة تتيح إمكانية تدوير المفتاح الخاص دون تغيير المفتاح العام المقابل له وعنوان البلوكشين. تدوير المفتاح الخاص والمعروف أيضًا باسم المشاركة السرية الاستباقية هو بروتوكول MPC آخر يأخذ المشاركات السرية كمدخلات ويقوم بإخراج مجموعة جديدة من المشاركات السرية. يمكن حذف المشاركات السرية القديمة ويمكن أيضا استخدام المشاركات الجديدة بنفس الطريقة.

تضيف هذه البنية بُعدًا زمنيًا للأمان مما يعني أن المهاجم يجب أن يكون في مواقع متعددة في نفس الوقت لمحاولتة القيام بإختراق محفظة عتبة. إن الجمع بين المشاركات السرية قبل التدوير وبعد التدوير لن يمنح المهاجم أي قوة إضافية إذا أراد أن يزيف توقيعًا. 

الجانب السلبي لهذا النوع من المحافظ هو عدم وجود عبارة أولية مما يجعلها غير متوافقة مع أنظمة المحافظ ذات المفتاح الواحد. لذلك من المهم أن تقرر من الأطراف سيقوم بالإحتفاظ بالمشاركات السرية.

هناك بعض الطرق الممكنة مثل:

  • الاستعانة بمصادر خارجية لـ TSS: سيسمح المستخدم للخوادم “n” بتشغيل الحساب نيابة عنه. الاستعانة بمصادر خارجية فعالة لإنشاء المفتاح والإدارة والتوقيع على مقدمي الخدمة الذين ليسوا أصحاب الأصول ولكن يوفروا طبقة أمان في مقابل الحصول على بعض الحوافز.

  • باستخدام أجهزة متعددة: سيقوم المستخدم بتشغيل TSS على الأجهزة التي يمتلكها. على سبيل المثال سيكون أحد الأطراف عبارة عن جهاز إنترنت الأشياء وطرف آخر يكون مستخدم هاتف محمول وطرف آخر ثالث يكون جهاز الكمبيوتر المحمول وهكذا.

  • الأنظمة الهجينة: سيتم تشغيل TSS بحيث يتم التحكم في بعض الأطراف بواسطة موفري الخدمات الخارجيين بينما تعمل بعض الأطراف على الأجهزة الخاصة بهم.

تقوم الطريقة الأولى بإلغاء تحميل حساب TSS الثقيل من جانب عميل المستخدم. من ناحية أخرى يمكن لمقدمي الخدمات التواطؤ (نفترض أن عددًا كبيرًا منهم لا يتعرض للهجوم في نفس الوقت ولكن في الممارسة العملية يمكنهم أن يتعرضوا للهجوم في نفس الوقت) وسرقة أصول المستخدم.

الطريقة الثانية تمنح المستخدم تحكمًا كاملاً ولكنها تجعل عملية إجراء المعاملات أمرا مرهقًا حيث تحتاج إلى أجهزة متعددة للاتصال بالإنترنت والمشاركة في حساب TSS.

يعتبر الخيار الثالث هو الأفضل بين كلا الخيارين لأنه يتيح للمستخدم طريقة سهلة وسريعة لإجراء المعاملات دون المساومة على إجراء المعاملات دون إذن المستخدم.


TSS والعقود الذكية 

وجد الباحثون على مدار السنين العديد من الاستخدامات للتوقيعات الرقمية ولكن بعضها غير مدهش. كما ذكرنا سابقا، TSS هو تشفير بدائي يمكنه زيادة الأمان بطريقة كبيرة. في سياق البلوكشين قد نقول أنه يمكن استبدال العديد من الوظائف بالتشفير المبني على TSS. يمكن بناء التطبيقات اللامركزية وحلول Layer 2 للتوسع والمقايضات الذرية والخلط والإرث وغير ذلك الكثير على إطار عمل TSS. سيتيح هذا في النهاية اللى استبدال عمليات العقود الذكية الباهظة التكلفة والمحفوفة بالمخاطر ببدائل أرخص وأكثر موثوقية.
لإعطاء بعض الأمثلة الملموسة: تستخدم Multi-Hop Locks التوقيعات التي تتطلب طرفين بطريقة ذكية ويمكن استخدامها لتبديل شبكة البرق الخاصة بالبيتكوين بشبكة قنوات دفع أكثر أمانًا وخصوصية. ربما يكون ShareLock أرخص حل خلط لسلسلة الإيثيريوم مبني على التحقق بإستخدام توقيع عتبة فردي.


المخاطر

على مدار العامين الماضيين كانت هناك زيادة ملحوظة في تطبيقات TSS. لكن مثل أي تقنية جديدة نسبيًا لا يزال لديها بعض القيود والمخاوف. مقارنةً بتشفير المفتاح العام التقليدي، يمكن أن تكون بروتوكولات TSS معقدة للغاية ولم يتم “اختبارها عَمَلِيًّا” بعد. عادةً ما يتطلب TSS افتراضات تشفيرية إضافية أضعف مقارنة بالتوقيعات الرقمية البسيطة. نتيجة لذلك يتم الآن اكتشاف متجهات الهجوم المشفرة التي لم تكن موجودة في الإعدادات التقليدية من قبل (راجع هذا العرض التقديمي من Breaking Bitcoin Conference 2019). يمكن لمهندسي الأمان وخبراء التشفير التطبيقيين المساعدة في تطبيق TSS بأمان في نظامك.

على الجانب الإيجابي أصبحت التطبيقات الحالية والجديدة أقوى بسبب زيادة مساهمات الجودة ومراجعات الأقران وفحص الحسابات وتحسينات الأداء الحسابية بإستخدام الخوارزميات.


أفكار ختامية

في هذه المقالة قمنا بتقديم أساسيات نظام توقيع العتبة Threshold signature scheme وإختصارة (TSS) وهو تشفير بدائي رائع لديه القدرة على تغيير طريقة استخدام البلوكشين بشكل كبير.

نظرًا لأن هذه المقالة لم تناقش Threshold ECDSA التي يمكن استخدامها في سلسلة بينانس والبيتكوين، فيمكن للأشخاص المهتمين قراءة المقالات في القائمة التالية. أيضًا إذا كنت ترغب في تجربة بعض تطبيقات TSS يمكنك العثور على كود لمحفظة Binance Chain ذات طرفين هنا أو تجربة ZenGo wallet التي تستخدم الطريقة الهجينة لتوفير محفظة Binance Chain ثنائية الأطراف.


قراءة متعمقة: