SLIP-39 معيار لنسخ المحفظة احتياطيًا باستخدام عدة قوائم كلمات، تسمى حصص الاستعادة. تحدد مسبقًا عدد الحصص المختلفة المطلوبة. في ترتيب اثنتين من ثلاث مثلًا، يمكنك فقدان حصة واستعادة المحفظة رغم ذلك، أما حصة واحدة فلا تكفي. وضعته SatoshiLabs ويستخدم Shamir’s Secret Sharing، وهي طريقة رياضية لتقسيم سر. حصصه ليست مجرد إعادة كتابة لكلمات Seed Phrase المعتادة وفق BIP 39.
تختار آنا نسخة من نوع اثنتين من ثلاث. المحفظة تطبيق أو جهاز لاستقبال البيتكوين وإرساله. تنشئ المحفظة ثلاث حصص مختلفة، وتكفي أي حصتين للاستعادة؛ ويسمى هذا الحد الأدنى العتبة. صورتان للحصة نفسها لا تزالان حصة واحدة. الترتيب البسيط يستخدم مجموعة واحدة. ويدعم SLIP-39 قواعد أعقد: مثل الحاجة إلى 2 من 3 مجموعات، وفي كل منها 2 من 3 حصص. تكفي حصتان من المجموعة A وحصتان من B. ولا تكفي ثلاث من A وواحدة من B، لأن المجموعة A وحدها مكتملة. لذلك يهم توزيع الحصص، لا مجرد عدد الأوراق. [1] [6]
تحمل كل قائمة بيانات مختلفة والمعلومات اللازمة لجمعها بصورة صحيحة. يستخدم SLIP-39 قائمة ثابتة من 1024 كلمة إنجليزية؛ لا تترجم كلمات النسخة حتى لو كانت واجهة المحفظة عربية. ينتج السر بطول 128 بت حصصًا من 20 كلمة، والسر بطول 256 بت حصصًا من 33 كلمة. البت وحدة بيانات أساسية، وليس كلمة إضافية ينبغي كتابتها. وتتضمن الحصة تعريف المجموعة الكاملة ومجموعتها وموضعها، والعتبات المطلوبة وإعدادات التشفير. تتحقق الاستعادة من توافق هذه المعلومات ومن اختلاف الحصص. لذلك لا يمكن خلط قوائم عشوائية لمجرد تساوي طولها. [1]
قد تستخدم آنا passphrase، أي كلمة مرور إضافية تختارها بنفسها. جمع حصص كافية لا يعوضها، كما أن التركيبة الصحيحة لا تكشف خطأ كتابتها بذاتها: تنتج passphrase مختلفة سرًا رئيسيًا مختلفًا، ومن ثم محفظة أخرى. لذلك تقارن النتيجة بعناوين معروفة، ولا تكتفي برسالة تفيد بصلاحية النسخة. عند عدم استخدام passphrase يكون الإدخال فارغًا. يسمح SLIP-39 بمحارف ASCII القابلة للطباعة 32–126، أي المحارف اللاتينية الأساسية دون علامات نطق، بما فيها المسافة. هذه قاعدة لهذا المعيار، لا لجميع المحافظ. وpassphrase ليست رمز PIN الذي يفتح الجهاز. [1]
تنشأ Seed Phrase وفق BIP 39 بطريقة أخرى وتستخدم قائمة كلمات مختلفة. توزيع كلماتها على أوراق لا يحولها إلى حصص SLIP-39. للحفاظ على المحفظة نفسها يجب أن يحافظ التحويل على seed، أي البيانات السرية المدخلة إلى شجرة مفاتيح BIP 32، وعلى Derivation Path الصحيح، وهو المسار إلى المفاتيح المستخدمة. لا تكفي إعادة ترميز الإنتروبيا الأصلية، أي البيانات العشوائية السابقة لإنشاء الكلمات. ينتج BIP 39 من الكلمات وpassphrase قيمة seed بطول 512 بت؛ ونسخها مباشرة وفق SLIP-39 ينتج حصصًا من 59 كلمة. كما أن تحويل محفظة واحدة لا ينقل تلقائيًا المحافظ الأخرى المفتوحة بعبارات passphrase مختلفة. يجب التحقق مسبقًا من الإجراء المحدد المدعوم. [1] [3] [2]
تسمح النسخة المتوافقة ذات علامة extendable بتغيير التقسيم مع الاحتفاظ بالمحافظ نفسها. وتصف Trezor بهذه الطريقة الانتقال من نسخة بحصة واحدة إلى عدة حصص. لكن تغيير الأوراق لم يغير سر آنا: التركيبة القديمة الكافية لا تزال تعمل. لا تخلط الحصص القديمة والجديدة. تقنيًا، تستبعد قيمة العلامة 1 معرّف المجموعة الكاملة من مُدخل التشفير المساعد المسمى salt. عندها يمكن إعادة تقسيم encrypted master secret أو EMS، أي السر الرئيسي المشفر نفسه، بمعرّف جديد دون معرفة passphrase. هذا لا يعالج انكشاف نسخة قديمة لا تزال قابلة للاستخدام. [1] [4]
المفتاح الخاص قيمة عددية سرية تستخدمها المحفظة لإنشاء توقيع رقمي يجيز إنفاق الأموال. بعد الاستعادة تستطيع محفظة آنا التوقيع بالطريقة المعتادة. لا يحتاج حاملو الحصص إلى الموافقة على كل دفعة: يعيد SLIP-39 سرًا واحدًا، بينما يتطلب Multisig عدة توقيعات وفق شروط الإنفاق. قد يحرق حريق واحد ثلاث حصص محفوظة في الشقة نفسها. ينبغي أن يصعّب التوزيع فقدانها معًا وكذلك جمع مهاجم للعدد الكافي؛ لكن زيادة التعقيد تزيد عبء الاستعادة أيضًا. يكون اختبار الاستعادة بإجراء مدعوم وعلى جهاز موثوق. مكتبة python-shamir-mnemonic المرجعية مخصصة للمطورين للتحقق من التوافق بأمثلة اختبار عامة، وليست لمعالجة نسختك الحقيقية. وهي تحذر صراحة من أنها لا تحمي الأسرار بما يكفي. [1] [4] [5] [6]
في محفظة BIP 32، السر الرئيسي هو seed المدخل، وليس الجذر الخاص الموسع لشجرة المفاتيح بعد حسابه. يشفر seed أولًا، ثم يقسّم EMS الناتج. يستخدم التشفير أربع جولات من بنية Feistel، تحتوي كل منها على PBKDF2-HMAC-SHA256 مع 2500×2^e تكرار، ويحدد الأس e المخزن كلفة الحساب. هذه معالجة محددة بدقة لكلمة المرور، وليست إضافة كلمات عشوائية. يجري التقسيم بايتًا بايتًا ضمن GF(256)، وهي بنية رياضية تضم 256 قيمة. يخزن كثير الحدود السر في f(255)، وعندما تكون العتبة 2 على الأقل، يحوي f(254) قيمة تحقق تسمى digest. [1] [2]
تشكّل الكلمات الثلاث الأخيرة للحصة المجموع الاختباري RS1024. يضمن كشف خطأ يمس ثلاث كلمات على الأكثر، لكنه ليس توقيع منشئ النسخة أو إثبات ملكية. لا يوصي المعيار بالتصحيح الآلي، لأن البرنامج قد ينتج كلمات صالحة لكنها مختلفة. عند الجمع يساعد digest إضافي بطول 32 بت في كشف مجموعة خاطئة. وله أثر نظري أيضًا: من يملك حصة واحدة أقل من العتبة يمكنه باستقصاء شامل استبعاد بعض الأسرار المحتملة. لذلك يحتاج القول الرياضي إن ما دون العتبة لا يكشف أي معلومة مطلقًا إلى تقييد. هذا لا يعني سهولة كسر الحماية، بل يوضح سبب اشتراط سر أصلي قوي بما يكفي. [1]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. تشير إلى هذا المدخل أيضًا BIP 39, Trezor, Pavol «Stick» Rusnák, Shamir Secret Sharing.