29 / 736BIP39

BIP 39

كيف تتكوّن كلمات النسخة الاحتياطية للمحفظة

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

BIP39 معيار يحوّل البيانات العشوائية إلى كلمات استعادة تُعرف باسم Seed Phrase. تحسب المحفظة من هذه الكلمات ومن passphrase اختيارية، وهي معلومة سرية إضافية، البذرة: البيانات التي يبدأ منها إنشاء المفاتيح. بذلك يمكن نسخ وسائل الوصول إلى البيتكوين احتياطيًا؛ أما العملات نفسها وسجل المدفوعات فلا يُخزّنان داخل الكلمات.

تنشئ أليس محفظة تستخدم BIP39 وتدوّن كلمات الاستعادة بأمان وفق إرشاداتها. بعد مدة، يتعطل هاتفها. لم تختفِ عملات البيتكوين من الشبكة؛ ما فقدته هو الجهاز الذي كان يحفظ مفاتيح توقيع مدفوعاتها. يمكنها استخدام خيار الاستعادة في محفظة متوافقة على جهاز بديل موثوق. الكلمات نفسها بالترتيب نفسه، ومعها passphrase نفسها إن كانت تستخدمها، تعطي البذرة نفسها. تعيد الإجراءات اللاحقة إنشاء المفاتيح الخاصة اللازمة، ثم تبحث المحفظة عن المدفوعات في شبكة Bitcoin. ليس هذا تسجيل دخول إلى حساب يستطيع فريق الدعم إعادة تعيين كلمة مروره. إذا استخدمت أليس passphrase فهي تحتاج إليها أيضًا؛ ولا يحل رمز PIN لهاتفها القديم محلها. ظهور رصيد صفري بعد الاستعادة لا يعني بالضرورة ضياع العملات: إلى جانب الكلمات وpassphrase، ينبغي التحقق من اختيار الحساب الصحيح وإعدادات الاستعادة المناسبة. لهذا يجدر التحقق من العملية كاملة قبل حفظ مبلغ كبير. [1] [5] [13] [14]

نسخ الكلمات ومراجعتها أسهل على الإنسان من التعامل مع تمثيل طويل لبيانات الحاسوب. اقترح Marek Palatinus وPavol Rusnak وAaron Voisine وSean Bowe طريقة لتحويل العشوائية التي يولّدها الحاسوب إلى صيغة يسهل نسخها باليد. يحمل المقترح تاريخ 10 سبتمبر 2013، وحالته في المواصفة Deployed. يجب أن تنشأ الكلمات من مدخل عشوائي جيد؛ لا تخترعها اعتمادًا على جملة تحبها. فهذا سيؤدي إلى Brainwallet يعتمد على سر بشري يمكن توقّعه. عقد Bitcoin لا تتحقق من BIP39: إنها تتحقق من المعاملات والكتل، لا من الطريقة التي أنشأت بها المحفظة مفاتيحها. [1]

لن يفيدك تدوين جيد إلا إذا استطعت استعادة المحفظة منه. قبل إيداع مبالغ مهمة، تحقق على جهاز موثوق من إجراء الاستعادة الذي توصي به الجهة المصنّعة. إلى جانب الترتيب الدقيق للكلمات، احتفظ بـpassphrase المطلوبة ومعلومات المحفظة وأي إعدادات لازمة للاشتقاق أو التوقيع. في المحفظة المعتادة ذات التوقيع الواحد، يستطيع من يملك النسخة الاحتياطية الكاملة وpassphrase المطلوبة اشتقاق المفاتيح دون الجهاز الأصلي؛ أما في Multisig فيجب أيضًا توفير المفاتيح الإضافية المطلوبة والالتزام بالقواعد المحددة. قد تكشف الصور أو النسخ السحابية أو الطابعة أو سجل الحافظة السر لأشخاص وخدمات أخرى. للورق والمعدن حدود مادية مختلفة؛ ولا تمنع أي مادة وحدها السرقة. [9] [13] [14]

يوصي BIP39 بشدة باستخدام قائمة الكلمات الإنجليزية لضمان التوافق، لأن محافظ كثيرة لا تدعم القوائم الأخرى. ترجمة النسخة الاحتياطية لا تحافظ على المحفظة الأصلية، فالعبارة نفسها تدخل في الاشتقاق. وانتبه أيضًا إلى الأنظمة الأخرى. يستخدم Electrum آلية خاصة لتحديد الإصدار في نسخه الاحتياطية الأصلية؛ وتشابه الكلمات لا يجعلها BIP39 تلقائيًا. أما SLIP39 فهو تنسيق مختلف، له قائمة خاصة من 1 024 كلمة وقواعد تحدد عدد الأجزاء اللازمة للاستعادة. وليس مجرد تقطيع لنسخة BIP39 احتياطية. تقسيم 24 كلمة بين عدة مظاريف لا ينشئ Shamir Secret Sharing، وقد يضعف الحماية وإمكانية الاستعادة بدلًا من تحسينهما. يجب دائمًا معرفة التنسيق الفعلي للنسخة الاحتياطية. [1] [11] [12]

البداية هي الإنتروبيا، أي بيانات عشوائية بطول ENT = 128 أو 160 أو 192 أو 224 أو 256 بت. يُضاف إليها مجموع اختباري هو أول CS = ENT/32 بت من ناتج SHA-256 للبيانات الأصلية. ثم يُقسم الناتج كله إلى مجموعات، كل منها 11 بت، وتحدد كل مجموعة كلمة واحدة. لذلك تعطي العلاقة MS = (ENT+CS)/11 عددًا محددًا من الكلمات: 12 أو 15 أو 18 أو 21 أو 24. تمثل الكلمات الاثنتا عشرة 128 بت من العشوائية و4 بتات للتحقق؛ أي إن البتات الـ132 ليست كلها سرًا مستقلًا. أما 24 كلمة فتمثل 256+8 بت. الثقة في النسخة الاحتياطية تبدأ من مولّد العشوائية، لا من مدى غرابة الكلمات في نظرك. [1]

تختار كل مجموعة من 11 بت عنصرًا واحدًا من قائمة مرتبة تضم 2 048 كلمة. لذلك لا تعني الكلمة الأولى المفتاح الخاص الأول: الكلمات كلها معًا تسجل البيانات الأصلية ومجموعها الاختباري. في القائمة الإنجليزية، تكفي الحروف الأربعة الأولى لتمييز الكلمات. لكن هذه ليست قاعدة عامة لكل اللغات، ولا تعليمات باختصار النسخة الاحتياطية كما تشاء عند الاستعادة. تغيير الترتيب أو استخدام مرادف أو ترجمة الكلمات يغيّر بيانات الإدخال. أحيانًا ينتج مجموع اختباري غير صالح، وأحيانًا نسخة احتياطية أخرى صالحة؛ لذا يجب حفظ الكلمات وترتيبها كما هما تمامًا. [1] [2]

يجب أن يعرف الحاسوب المحارف التي تلقاها بالفعل. يفرض BIP39 تطبيق تطبيع Unicode NFKD ثم ترميز UTF-8 على عبارة النسخ الاحتياطي وعلى passphrase. يوحّد NFKD بعض الأشكال المختلفة لكتابة المحارف؛ فهو مثلًا يفكك بعض الحروف التي تحمل علامات تشكيل أو نطق. ولذلك قد تعطي كتابتان مختلفتان النتيجة نفسها بعد التطبيع، لكن التشابه البصري وحده لا يضمن ذلك. يظل ترتيب الكلمات والمسافات ومحارف passphrase مهمًا. وقد يؤدي استخدام طريقة تطبيع أخرى إلى اشتقاق بذرة مختلفة عند الاستعادة. يساعد التنفيذ المرجعي ومتجهات الاختبار العامة في التحقق من التزام البرنامج بالطريقة المحددة. [1] [3] [4]

تتلقى دالة PBKDF2 مدخلين منفصلين. يتكوّن مدخل password من كلمات النسخة الاحتياطية الفعلية. أما المدخل الثاني فيسمى salt، أي مُدخل إضافي للحساب التشفيري: وهو النص الحرفي «mnemonic» تُلحق به passphrase مباشرة من دون فاصل. لا تُدرج كلمات النسخة الاحتياطية نفسها هنا مرة أخرى. يُطبَّق NFKD على كلا المدخلين ثم يُرمّزان بترميز UTF-8. يحدد BIP39 استخدام HMAC-SHA512 و2 048 تكرارًا، ونتيجة بطول 512 بت، أي 64 بايت. عند عدم استخدام passphrase، يظل salt هو «mnemonic»؛ الفارغ هو passphrase وحدها. الحساب ليس فك تشفير للكلمات، ولا يولّد عشوائية جديدة مستقلة. لذلك، إذا تسربت الكلمات، فلن تحمي التكرارات وحدها passphrase يسهل تخمينها. [1] [10]

ينتهي دور BIP39 عند بذرة بطول 64 بايت. وعادةً يشتق المعيار التالي، BIP32، منها المفتاح الخاص الرئيسي وchain code بطول 32 بايت، باستخدام HMAC-SHA512 مع المفتاح الثابت «Bitcoin seed». وchain code هو بيانات إضافية تُستخدم مع المفتاح لاشتقاق مفاتيح أخرى. ويشكّل هذان الناتجان نقطة البداية لشجرة المفاتيح. تحدد قواعد مثل BIP44 وBIP49 وBIP84 وBIP86 مسارات اشتقاق وأنواع سكربتات مختلفة. لذلك قد تدخل الكلمات الصحيحة وpassphrase الصحيحة عند الاستعادة، ومع ذلك ترى رصيدًا صفريًا إذا كان البرنامج يبحث عن حساب آخر أو فرع آخر أو نوع عناوين آخر. ومن المهم أيضًا gap limit، أي عدد العناوين المتتالية غير المستخدمة الذي يسمح به البرنامج أثناء البحث. يمكن أن يكمل اسم المحفظة الأصلية ومعلومات الحسابات ومسارات الاشتقاق أو Output Descriptor معلومات لا تتضمنها الكلمات وحدها. [5] [6] [7] [8] [9] [14]

Passphrase مدخل سري إضافي لاشتقاق البذرة. ليست رمز PIN للجهاز، ولا يستطيع BIP39 أن يخبرك بأنك أدخلت passphrase خاطئة: فهو يحسب نتيجة لقيمة أخرى أيضًا. غالبًا ما يؤدي خطأ الكتابة الذي يغيّر المدخل بعد التطبيع إلى محفظة أخرى لن ترى فيها أموالك. وعلى العكس، تشتق الكتابات المختلفة التي تعطي النتيجة نفسها بعد NFKD البذرة نفسها. من يحصل على كلمات النسخة الاحتياطية وعلى معلومات تتيح له التعرف على المحفظة المقصودة يستطيع تجربة قيم محتملة لـpassphrase دون اتصال بالإنترنت. إذا كنت تستخدم passphrase، فيجب أن تكون قوية بما يكفي، وأن تُدخل بطريقة موثوقة، وأن تكون لها نسخة احتياطية مستقلة يمكن الاعتماد عليها. الغرض من الحفظ المنفصل هو تقليل خطر سرقتهما معًا، لا تحويلها إلى سر يختفي معك إلى الأبد. [1] [13]

يساعد المجموع الاختباري في كشف أخطاء الكتابة، لكنه لا يثبت صاحب النسخة الاحتياطية ولا أنها أُنشئت بأمان. طوله 4 بتات عند استخدام 12 كلمة، و8 بتات عند استخدام 24 كلمة. ولذلك يمر تسلسل كلمات مختار عشوائيًا باحتمالات متساوية من القائمة المعنية بالتحقق باحتمال 1/16 أو 1/256 على الترتيب. تُكتشف أخطاء كثيرة، لا كلها، كما أن المجموع لا يصححها بنفسه. يستطيع المهاجم إنشاء نسخة احتياطية أخرى ذات مجموع اختباري صالح. تطلب المواصفة عرض تحذير عند عدم التطابق، وتفصل بين التحقق من الكلمات وعملية اشتقاق البذرة نفسها. لذا عالج المجموع غير الصالح وفق المحفظة الأصلية وتنسيقها، لا بإدخال نسختك الاحتياطية الحقيقية في أداة تحقق على الإنترنت. [1]

مثال · BIP39

الكلمات والمجموع الاختباري والبذرة

يجمع BIP39 بين 128 بت من الإنتروبيا و4 بتات من المجموع الاختباري. يقسم الناتج، وهو 132 بت، إلى 12 مجموعة من 11 بت، تختار كلمات من القائمة. ثم تصبح كلمات النسخة الاحتياطية مدخل password في PBKDF2-HMAC-SHA512؛ ويتكوّن salt من البادئة الحرفية «mnemonic» وpassphrase إن استُخدمت. بعد تطبيع NFKD وترميز UTF-8، تُشتق بذرة من 512 بت باستخدام 2 048 تكرارًا. لا يضيف المجموع الاختباري عشوائية.

للحصول على صورة أوضح، اقرأ هذا المدخل مع Seed Phrase, HD Wallet, BIP39 passphrase, Trezor, Bitcoin, BIP39 checksum. تشير إلى هذا المدخل أيضًا Seed Phrase, HD Wallet, Cold Storage, BIP (Bitcoin Improvement Proposal).

01هل BIP 39 جزء من إجماع Bitcoin؟

لا. إنه اصطلاح تتبعه المحافظ لكتابة العشوائية واشتقاق البذرة. تتحقق عقد Bitcoin من المعاملات والكتل دون معرفة ما إذا كانت المفاتيح قد أُنشئت باستخدام BIP 39.

02هل كل عبارة من 12 أو 24 كلمة متوافقة مع BIP 39؟

لا. عدد الكلمات وحده لا يكفي؛ يجب أن تتطابق قائمة الكلمات وترتيبها والمجموع الاختباري وتطبيع NFKD وطريقة اشتقاق البذرة. ولاستعادة المحفظة الأصلية، تحتاج أيضًا إلى passphrase الصحيحة إذا استُخدمت، وإلى مسارات الاشتقاق وأنواع السكربتات المناسبة.

DOC · 001BIP 39 — Mnemonic code for generating deterministic keysمواصفة DOC · 002BIP 39 official wordlistsمواصفة DOC · 003Trezor python-mnemonic reference implementationمصدر أولي DOC · 004BIP 39 official test vectorsمصدر أولي DOC · 005BIP 32 — Hierarchical deterministic walletsمواصفة DOC · 006BIP 44 — Multi-account hierarchyمواصفة DOC · 007BIP 84 — Native SegWit derivationمواصفة DOC · 008BIP 86 — Single-key Taproot derivationمواصفة DOC · 009BIP 380 — Output script descriptorsمواصفة DOC · 010RFC 8018 — PBKDF2مواصفة DOC · 011Electrum documentation — seed version systemتوثيق DOC · 012SLIP 39 — Shamir's Secret-Sharing for Mnemonic Codesمواصفة DOC · 013Trezor — passphrases and hidden walletsتوثيق DOC · 014Bitcoin Core — Output descriptorsتوثيق
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية