تحدد مواصفات BIP-39 بشكل أساسي الخوارزمية والعملية لإنشاء محافظ معرفية (deterministic wallets) تعتمد على كلمات سهلة التذكر (mnemonic).
تتكون المواصفات من جزأين رئيسيين:
كيفية إنشاء الكلمات التذكيرية.
كيفية تحويل الكلمات التذكيرية التي تم إنشاؤها إلى بذرة ثنائية (binary seed).
فيما يلي نظرة على كيفية إنشاء المحافظ المعرفية من خلال وصف كل من هذين الجزأين أولاً.
إنشاء الكلمات التذكيرية
العملية الخوارزمية لإنشاء الكلمات التذكيرية هي كما يلي:
العملية هي كما يلي:
قم بإنشاء تسلسل عشوائي (entropy) يتكون من 128 إلى 256 بت (بزيادات قدرها 32 بت).
قم بتطبيق SHA256 على التسلسل العشوائي الذي تم إنشاؤه في الخطوة السابقة لإنشاء قيمة تجزئة (Hash)، وخذ أول N بت من قيمة التجزئة (طول الـ entropy / 32، على سبيل المثال، 128 بت، ثم N = 4) كـ Checksum للتسلسل العشوائي.
أضف الـ Checksum إلى نهاية التسلسل العشوائي الذي تم إنشاؤه في الخطوة الأولى، بحيث يكون للتسلسل العشوائي مع الـ Checksum في مثال الشكل 128 + 4 = 132 بت.
قم بتقسيم التسلسل العشوائي من الخطوة السابقة إلى مقاطع مكونة من 11 بت (split)، بحيث يتم إنشاء 12 مقطعًا لتسلسل بطول 128 بت من الـ entropy (132 / 11 = 12).
في هذه المرحلة، قم بتعيين كل قيمة تحتوي على مقطع 11 بت إلى قاموس محدد مسبقًا من 2048 كلمة.
المجموعة النهائية من الكلمات التي تم إنشاؤها بترتيب القطع هي الكلمات التذكيرية.
إنشاء البذرة من الكلمات التذكيرية
بعد إنشاء الكلمات التذكيرية، يمكننا إنشاء البذرة باستخدام خوارزمية توليد المفاتيح PBKDF2.
تتطلب PBKDF2 معلمين: الكلمات التذكيرية و salt. الغرض من salt هو جعل عملية الكسر أكثر صعوبة، وفي BIP-39 يمكننا إدخال عبارة مرور (passphrase) كعامل أمان إضافي لحماية البذور.
"PBKDF2 جزء من سلسلة معايير تشفير المفتاح العام (PKCS) الخاصة بمختبرات RSA،
تحديدًا PKCS #5 v2.0، المنشورة أيضًا كـ RFC 2898 لمهمة هندسة الإنترنت."
بعد إنشاء الكلمات التذكيرية المذكورة أعلاه، يوضح الرسم البياني التالي خوارزمية إنشاء البذرة.
المعلم الأول لـ PBKDF2 هو الكلمات التذكيرية التي تم إنشاؤها أعلاه.
المعلم الثاني لـ PBKDF2 هو الـ salt، والذي يتكون عمومًا من سلسلة نصية ودمج اختياري لسلاسل التشفير التي يوفرها المستخدم.
تستخدم PBKDF2 خوارزمية HMAC-SHA512، والتي تستخدم 2048 عملية تجزئة لإنتاج قيمة 512 بت كبذرة.
إنشاء محفظة HD (Hierarchical Deterministic) من البذرة
سيتم استخدام البذرة التي تم إنشاؤها أعلاه كبذرة جذر (Root Seed) للمحفظة المعرفية الهرمية (HD wallet)، ويمكن للبذرة الجذر لأي محفظة HD إعادة إنشاء المحفظة HD بأكملها.
يتيح إدخال البذرة الجذر في خوارزمية HMAC-SHA512 الحصول على تجزئة 512 بت، حيث تُستخدم الـ 256 بت اليسرى كمفتاح رئيسي خاص (Master Private Key) والـ 256 بت اليمنى كرمز سلسلة رئيسي (Master Chain Code). بعد ذلك، يمكن إنشاء مفتاح عام رئيسي (Master Public Key) (264 بت) من المفتاح الرئيسي الخاص m.
كما ترى من الرسم البياني أعلاه، يتم إنشاء مفتاح HD باستخدام المعلمات التالية.
المفتاح الأب الخاص أو المفتاح الأب العام؛ (كلاهما مفاتيح ECDSA غير مضغوطة بـ 256 بت).
رمز سلسلة الأب (Parent Chain Code) بـ 256 بت.
رقم فهرس (index number) صحيح بـ 32 بت.
بالإضافة إلى ذلك، فإن العملية المذكورة أعلاه تكرارية ويمكن استخدام مفتاح الابن الخاص (Child Private Key) في الرسم البياني كـ مفتاح الأب الخاص في المستوى التالي.
من خلال إدخال (مفتاح الأب العام، رمز سلسلة الأب، رقم الفهرس) في خوارزمية HMAC-SHA512، يمكننا إنشاء مفاتيح فرعية لها، ويمكننا تعديل رقم الفهرس لإنشاء مفاتيح فرعية متعددة على نفس المستوى.
حول المفتاح الموسع (Extended Key)
نظرًا لأن وظيفة اشتقاق المفتاح هذه أحادية الاتجاه، لا يمكن استخدام أي مفاتيح فرعية لاشتقاق مفاتيحها الأصلية أو مفاتيحها الشقيقة على نفس المستوى. فقط المفتاح الأصل ورمز سلسلة الأصل (التي يتم إنشاؤها من مفتاح ورمز سلسلة الأصل الأصل) يمكن استخدامها لاشتقاق جميع المفاتيح الفرعية ورموز السلسلة الفرعية، وبالتالي إنشاء المفاتيح العامة الفرعية والعناوين المقابلة لتوقيع المعاملات.
يُطلق على مجموعة المفتاح ورمز السلسلة اسم المفتاح الموسع، ويمكن استخدام المفتاح الموسع لإنشاء جميع الفروع من هناك فصاعدًا.
يمكن أن يكون المفتاح المقدم في المفتاح الموسع مفتاحًا خاصًا أو مفتاحًا عامًا، عند دمجه مع رمز السلسلة يُطلق عليه المفتاح الخاص الموسع (Extended Private Key) و المفتاح العام الموسع (Extended Public Key) على التوالي، ويُشار إليهما بـ (k, c) و (K, c) على التوالي، حيث المفتاح العام K = point(k).
يمكننا اشتقاق المفتاح العام الموسع من المفتاح الخاص الموسع وليس العكس. لذلك، لبعض سيناريوهات المعاملات (مثل التجارة الإلكترونية)، يمكن إنشاء مفتاح عام وعنوان جديد لكل معاملة لاستقبال الدفع، بينما يمكن تخزين المفتاح الخاص الموسع في محفظة ورقية أو محفظة أجهزة للتوقيع الآمن للمعاملات دون اتصال بالإنترنت. كما نرى، فإن أمان المفتاح العام الموسع مرتفع نسبيًا، ويُظهر الرسم البياني التالي آلية نقل المفتاح العام الأب الموسع لاشتقاق مفتاح الابن الخاص وإنشاء مفتاح الابن العام:



