147 / 736SSS

Shamir Secret Sharing

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

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

Shamir Secret Sharing طريقة رياضية تحوّل سرًا واحدًا إلى عدة حصص مختلفة. يكفي عدد يُختار مسبقًا لإعادة تركيب السر؛ وفي المخطط المثالي لا يكشف العدد الأقل حتى جزءًا منه. نشر أدي شامير الطريقة عام 1979. وفي Bitcoin قد يكون السر بيانات سرية تُستخدم لاستعادة المحفظة. ليست العملية تقطيع Seed Phrase إلى أجزاء: الحصص ناتجة عن حساب، ولا يكون لكل منها معنى إلا ضمن المخطط المناسب.

المحفظة تطبيق أو جهاز لاستقبال البيتكوين وإرساله. تريد آنا نسخة احتياطية تتحمل فقد بعض السجلات. تختار ثلاثًا من خمس: تُنشأ خمس حصص مختلفة، وتعيد أي ثلاث حصص صالحة من المجموعة نفسها بناء السر. يمكنها فقد حصتين، لكن ليس ثلاثًا. العدد المطلوب يُسمّى العتبة؛ وبصورة عامة تعني k من n الحاجة إلى k حصص من أصل n أُنشئت، مع تحمل فقد n−k. لكن العتبة لا تتعرف إلى موافقة آنا. إذا حصل شخص آخر على ثلاث حصص أو تعاون حاملوها، استعادوا السر نفسه. خفض العتبة يسهّل الاستعادة، لكنه يقلل أيضًا عدد من يستطيعون تنفيذها من دون آنا. [1] [6]

لن تستفيد آنا كثيرًا من حفظ الملفات الخمسة في حساب سحابي واحد. فقد الحساب أو اختراقه يؤثر فيها جميعًا دفعة واحدة. تحتاج النسخة إلى توزيع مدروس، وتوثيق الطريقة ومعلماتها، واختبار الاستعادة على جهاز موثوق. وإذا كان الورثة سيستخدمون الخطة، فعليهم فهم ما يبحثون عنه وكيف يتعاملون معه بأمان. ينتج عن تقسيم السر S نفسه عشوائيًا من جديد مجموعة جديدة؛ ولا تُخلط الحصص القديمة والجديدة. ومع ذلك، تظل المجموعة القديمة الكافية قادرة على استعادة S. إذن إعادة التقسيم لا تُبطل نسخة صالحة سبق تسريبها، ولا تغيّر السر نفسه. [1] [4]

عند الاستعادة المعتادة يظهر السر الكامل مجددًا في جهاز واحد. إذا كان الجهاز مخترقًا، فقد يحصل المهاجم عليه في تلك اللحظة. وإذا كان السر Private Key، أي قيمة عددية سرية تُستخدم لإنشاء توقيع رقمي يجيز إنفاق الأموال، يستطيع حامله لاحقًا التوقيع من دون جمع حصص أخرى. أما Multisig فتتطلب عدة تواقيع وفق شروط عملية الإنفاق المعنية. ويوجد أيضًا توقيع عتبي: عبر بروتوكول MPC إضافي، وهو حساب مشترك آمن بين عدة مشاركين، يمكن للحصص المساهمة في توقيع من دون تركيب المفتاح كاملًا. يميز NIST هذه الحالات. حصة شامير وحدها لا توفر بروتوكول التوقيع هذا. [3] [5] [6]

قد يعجز برنامجان يحمل اسماهما كلمة Shamir عن قراءة حصص بعضهما. يجب أن تتوافق العمليات الرياضية وترميز القيم ومعرّفات الحصص وانتماؤها إلى المجموعة. SLIP-39 معيار محدد يقوم على هذه الطريقة: يضيف قائمة كلمات لكتابة الحصص، وبيانات وصفية أي معلومات مساعدة، ومجموعات، وتشفيرًا، وفحوص أخطاء. لذلك ليس المبدأ العام تعليمات لتقسيم Seed Phrase موجودة يدويًا. قبل الاعتماد على النسخة لحماية محفظة، ينبغي معرفة الصيغة المدعومة والتأكد من أن الإجراء المزمع يستعيدها فعلًا. [2]

في ثلاث من خمس، أثر فقد حصتين واضح. لكن حصة تالفة أو مزورة قد تجعل الحساب الأساسي يعيد سرًا آخر بدل الإبلاغ عن نقص الحصص. الطريقة وحدها لا تثبت أصل الحصص ولا أمانة منشئها. كشف الأخطاء وتصحيحها وverifiable secret sharing، أي أساليب التحقق من صحة التقاسم، طبقات إضافية لها افتراضاتها. يضيف SLIP-39 مثلًا مجموع تحقق وبصمة تحقق تسمّى digest. هذا لا يعني أن كل تطبيق يستخدم Shamir Secret Sharing يجري الفحوص نفسها، ولا أن صحة مجموع التحقق تثبت مصدرًا موثوقًا للنسخة. [2] [5]

في المخطط المثالي، لا تمنح أقل من k حصص كاملة المهاجم أي معلومة جديدة عن S، حتى مع قدرة حسابية غير محدودة. فالحصة ليست ثلثًا ظاهرًا من الكلمات الأصلية. لكن هذه الخاصية تفترض عشوائية سليمة: تُختار أعداد التقسيم باستقلال واحتمالات متساوية. الأعداد القابلة للتوقع، وإعادة استخدامها، أو التسرب من ذاكرة الجهاز تغيّر الوضع. ويجب أيضًا تقييم بيانات التحقق الإضافية، مثل digest في SLIP-39، على حدة. وكلمة المرور الأصلية الضعيفة لا تصبح عصية على التخمين بطرق أخرى لمجرد تقسيم نسختها الاحتياطية. [1] [2]

لنأخذ السر الصغير S=5 والقاعدة f(x)=5+3*x mod 17. تعني mod 17 أخذ باقي القسمة على 17. الحصص الثلاث هي الأزواج (1,8)، (2,11)، (3,14): العدد الأول يحدد الموضع، والثاني القيمة المحسوبة. من النقطتين الأوليين نجد الزيادة 3 والسر الأصلي 8−3=5. أي زوج من أزواج النقاط الثلاثة الممكنة يستعيد الخمسة نفسها. أما النقطة (1,8) وحدها فتتوافق مع أي S من 0 إلى 16 إذا اخترنا الزيادة a=8−S mod 17. هذه الأعداد الصغيرة للتوضيح فقط، وليست تصميم نسخة احتياطية لمحفظة حقيقية. [1]

القاعدة العامة هي f(x)=S+a1*x+…+a(k−1)*x^(k−1). يُسمّى هذا التعبير كثيرة حدود؛ S هو السر، وبقية المعاملات عناصر مستقلة تُختار عشوائيًا وباحتمال متساوٍ من حقل منتهٍ، وهو بيئة ذات قواعد دقيقة للجمع والضرب. الحصة هي (x,f(x))، ويجب أن تكون كل x مختلفة وغير صفرية: إذ تكشف x=0 السر S مباشرة. من k نقاط يحسب استيفاء لاغرانج f(0)، أي السر. نسختان من النقطة نفسها لا تضيفان معلومات. في الحقل الأولي GF(p) تُستبدل القسمة العادية بالضرب في معكوس ضربي معياري، يكون حاصل ضربه في المقسوم عليه 1. كذلك يختلف حساب GF(256) عن مجرد أخذ البواقي بترديد 256؛ والخلط بينهما خطأ. [1]

للحصول على صورة أوضح، اقرأ هذا المدخل مع SLIP-39, Multisig, Seed Phrase, Private Key, Bitcoin Inheritance Plan. تشير إلى هذا المدخل أيضًا SLIP-39, FROST.

DOC · 001Adi Shamir — How to Share a Secret (1979)مصدر أولي DOC · 002SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codesمواصفة DOC · 003NIST — Multi-Party Threshold Cryptographyمصدر أولي DOC · 004Trezor — Multi-share Backupتوثيق DOC · 005NISTIR 8214 — Threshold Schemes for Cryptographic Primitivesمصدر أولي DOC · 006Bitcoin Developer Guide — Walletsتوثيق
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية