في هذه المقالة سنقوم بتغطية ما هو الـ TSS و ما هي المزايا المحتملة التي قد يجلبها الى مجال البلوكشين وكيف يمكن تنفيذه في Client بلوكشين وكيف يقارن بـ Shamir secret sharingو Multisig و ما هي الطرق المختلفة لإستخدام TSS في إدارة المفاتيح الموزعة وأخيراً نناقش المخاطر والقيود المحتملة له.
دور التشفير
البلوكشين
في هذه المقالة سوف نركز على أحد الإنفراجات وهو الـ (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 سيكون لدينا مجموعة من الأطراف التي تقوم بحساب المفتاح العام بشكل مشترك كل طرف مشارك يحمل حصة سرية من المفتاح الخاص (لا يتم الكشف عن الحصص الفردية للأطراف المشاركة الأخرى). عن طريق المفتاح العام يمكننا اشتقاق العنوان بنفس الطريقة الموجودة في النظام التقليدي مما يجعل البلوكشين محايدا نوعا ما في طريقة إنشاء العناوين. الميزة هنا هي أن المفتاح الخاص لم يعد نقطة فشل واحدة لأن كل طرف يحتفظ بجزء واحد منه.
يمكن القيام بنفس الشيء عند توقيع المعاملات. في هذه الحالة بدلاً من توقيع طرف واحد بمفتاحه الخاص نقوم بتشغيل مُولِّد توقيعات موزع بين أطراف متعددة. حتى يمكن لكل طرف إنتاج توقيع صالح طالما أن ما يكفي من المشاركين يتصرفون بأمانة. انتقلنا مرة أخرى من الحساب المحلي (نقطة فشل واحدة) إلى حساب تفاعلي.
من المهم الإشارة إلى أن إنشاء المفاتيح الموزعة يمكن القيام به بطريقة تتيح أنواعًا مختلفة من طرق الوصول اليهم: سيكون الإعداد “t out of n” العام قادرًا على تحمل ما يصل إلى t من الإخفاقات التعسفية في العمليات المتعلقة بالمفتاح الخاص دون المساس بالأمن.
TSS vs. Multisig
بمعنى اخر، يحاول كل من multisig و TSS بشكل أساسي تحقيق أهداف مماثلة لكن TSS يستخدم تشفيرًا off-chain بينما multisig يستخدم on-chain. مع ذلك فإن البلوكشين يحتاج إلى طريقة لتشفير multisig مما قد يضر بالخصوصية لأن بنية الوصول (عدد الموقعين) يكون مكشوفا على البلوكشين. تكلفة معاملة multisig تكون أعلى لأن المعلومات الموجودة على الموقعين المختلفين تحتاج أيضًا إلى التواصل على البلوكشين.
في TSS يتم طي تفاصيل الموقعين في معاملة عادية مما يقلل التكلفة ويحافظ على الخصوصية. من ناحية أخرى يمكن أن يكون multisig غير تفاعليى مما يوفر مشكلة تشغيل طبقة اتصال معقدة بين مختلف الموقعين.
TSS vs. Shamir secret sharing scheme
يوفر نظام مشاركة Shamir السري Shamir secret sharing scheme أو (SSSS) طريقة موزعة لتخزين المفتاح الخاص. بينما يكون المفتاح الخاص في وضع التخزين يتم تخزينه في مواقع متعددة. هناك اختلافان بين SSSS و TSS:
إنشاء المفاتيح: في SSSS يوجد حزب واحد يسمى “الموزع/the dealer” يكون مسؤول عن إنشاء المشاركات السرية الخاصة بالمفتاح. هذا يعني أنه في وقت إنشاء المفاتيح، يتم إنشاء المفتاح الخاص في مكان واحد ثم يتم توزيعه بواسطة الموزع على المواقع المختلفة. لكن في TSS لا يوجد موزع لأنه يتم توزيع دوره بحيث لا يكون المفتاح الخاص الكامل في مكان واحد أبدًا.
التوقيع: في SSSS يجب على الأطراف إعادة بناء المفتاح الخاص الكامل من أجل التوقيع مما يؤدي مرة أخرى إلى نقطة فشل واحدة في كل مرة يلزم فيها توقيع. من ناحية أخرى في TSS يتم التوقيع بطريقة موزعة دون إعادة إنشاء المشاركات السرية.
كما نرى في TSS لا يكون المفتاح الخاص (الذي يمثل أمان النظام) في مكان واحد مطلقًا طوال فترة عمرة.
محافظ العتبة
في محافظ العتبة تكون الأمور أكثر تعقيدًا. على الرغم من أنه من الممكن إنشاء بنية هرمية حتمية (HD) إلا أنه يجب حساب إنشائها بطريقة موزعة كبروتوكول MPC آخر. حيث يحتاج الأطراف المشاركة إلى اتخاذ قرار مشترك بشأن ما هو المفتاح التالي الذي سيتم استخدامه. بمعنى آخر، سيكون لكل طرف عبارة أولية خاصة به. يتم إنشاء العبارات الأولية بشكل منفصل ولا يتم دمجها حتى لا يستطيع أحد الطرفين بمفرده استنتاج المفاتيح الخاصة من العبارة الأولية.
تتمتع المحافظ القائمة على TSS أيضًا بميزة أمان لطيفة تتيح إمكانية تدوير المفتاح الخاص دون تغيير المفتاح العام المقابل له وعنوان البلوكشين. تدوير المفتاح الخاص والمعروف أيضًا باسم المشاركة السرية الاستباقية هو بروتوكول MPC آخر يأخذ المشاركات السرية كمدخلات ويقوم بإخراج مجموعة جديدة من المشاركات السرية. يمكن حذف المشاركات السرية القديمة ويمكن أيضا استخدام المشاركات الجديدة بنفس الطريقة.
تضيف هذه البنية بُعدًا زمنيًا للأمان مما يعني أن المهاجم يجب أن يكون في مواقع متعددة في نفس الوقت لمحاولتة القيام بإختراق محفظة عتبة. إن الجمع بين المشاركات السرية قبل التدوير وبعد التدوير لن يمنح المهاجم أي قوة إضافية إذا أراد أن يزيف توقيعًا.
الجانب السلبي لهذا النوع من المحافظ هو عدم وجود عبارة أولية مما يجعلها غير متوافقة مع أنظمة المحافظ ذات المفتاح الواحد. لذلك من المهم أن تقرر من الأطراف سيقوم بالإحتفاظ بالمشاركات السرية.
هناك بعض الطرق الممكنة مثل:
الاستعانة بمصادر خارجية لـ TSS: سيسمح المستخدم للخوادم “n” بتشغيل الحساب نيابة عنه. الاستعانة بمصادر خارجية فعالة لإنشاء المفتاح والإدارة والتوقيع على مقدمي الخدمة الذين ليسوا أصحاب الأصول ولكن يوفروا طبقة أمان في مقابل الحصول على بعض الحوافز.
باستخدام أجهزة متعددة: سيقوم المستخدم بتشغيل TSS على الأجهزة التي يمتلكها. على سبيل المثال سيكون أحد الأطراف عبارة عن جهاز إنترنت الأشياء وطرف آخر يكون مستخدم هاتف محمول وطرف آخر ثالث يكون جهاز الكمبيوتر المحمول وهكذا.
الأنظمة الهجينة: سيتم تشغيل TSS بحيث يتم التحكم في بعض الأطراف بواسطة موفري الخدمات الخارجيين بينما تعمل بعض الأطراف على الأجهزة الخاصة بهم.
تقوم الطريقة الأولى بإلغاء تحميل حساب TSS الثقيل من جانب عميل المستخدم. من ناحية أخرى يمكن لمقدمي الخدمات التواطؤ (نفترض أن عددًا كبيرًا منهم لا يتعرض للهجوم في نفس الوقت ولكن في الممارسة العملية يمكنهم أن يتعرضوا للهجوم في نفس الوقت) وسرقة أصول المستخدم.
الطريقة الثانية تمنح المستخدم تحكمًا كاملاً ولكنها تجعل عملية إجراء المعاملات أمرا مرهقًا حيث تحتاج إلى أجهزة متعددة للاتصال بالإنترنت والمشاركة في حساب TSS.
يعتبر الخيار الثالث هو الأفضل بين كلا الخيارين لأنه يتيح للمستخدم طريقة سهلة وسريعة لإجراء المعاملات دون المساومة على إجراء المعاملات دون إذن المستخدم.
TSS والعقود الذكية
المخاطر
على الجانب الإيجابي أصبحت التطبيقات الحالية والجديدة أقوى بسبب زيادة مساهمات الجودة ومراجعات الأقران وفحص الحسابات وتحسينات الأداء الحسابية بإستخدام الخوارزميات.
أفكار ختامية
في هذه المقالة قمنا بتقديم أساسيات نظام توقيع العتبة Threshold signature scheme وإختصارة (TSS) وهو تشفير بدائي رائع لديه القدرة على تغيير طريقة استخدام البلوكشين بشكل كبير.
قراءة متعمقة: