تصف مواصفات BIP-39 بشكل أساسي الخوارزمية وعملية إنشاء محافظ حتمية تعتمد على ذاكري (مجموعة من الكلمات سهلة التذكر).
تتكون المواصفات من جزأين رئيسيين:
كيفية توليد ذاكري.
كيفية تحويل ذاكري المتولدة إلى بذرة ثنائية.
فيما يلي نظرة على كيفية إنشاء محافظ حتمية من خلال وصف كل من هذين الجزأين أولاً.
** توليد تذكير **
العملية الخوارزمية لإنشاء تذكير هي كما يلي:
العملية هي كما يلي:
إنشاء تسلسل عشوائي (إنتروبيا) من 128 إلى 256 بت (حجم الخطوة 32 بت)
قم بتنفيذ SHA256 على التسلسل العشوائي الذي تم إنشاؤه في الخطوة السابقة لإنشاء قيمة التجزئة، وأخذ أول N بت من قيمة التجزئة (طول الإنتروبيا / 32، على سبيل المثال، 128 بت، ثم N = 4) كمجموع اختباري للتسلسل العشوائي.
أضف المجموع الاختباري إلى نهاية التسلسل العشوائي الذي تم إنشاؤه في الخطوة الأولى، بحيث يكون التسلسل العشوائي مع المجموع الاختباري على سبيل المثال في الشكل 128 + 4 = 132 بت.
افصل التسلسل العشوائي عن الخطوة السابقة بأجزاء 11 بت (تقسيم)، بحيث يتم إنشاء 12 مقطعًا لتسلسل بطول إنتروبيا 128 بت (132 / 11 = 12).
عند هذه النقطة، يتم تعيين كل قيمة تحتوي على مقطع 11 بت إلى قاموس محدد مسبقًا يتكون من 2048 كلمة.
المجموعة الأخيرة من الكلمات التي تم إنشاؤها بترتيب القطع هي ذاكري.
** توليد البذور من فن الإستذكار **
بعد إنشاء ذاكري، يمكننا إنشاء البذور باستخدام خوارزمية وظيفة إنشاء المفاتيح PBKDF2.
PBKDF2 يتطلب معلمتين: ذاكري وملح. الغرض من الملح هو جعل عملية التشقق أكثر صعوبة، وفي BIP-39 يمكننا تقديم عبارة المرور كعامل أمان إضافي لحماية البذور.
"PBKDF2 هو جزء من سلسلة معايير تشفير المفتاح العام (PKCS) الخاصة بمختبرات RSA، على وجه التحديد PKCS #5 v2.0، والذي تم نشره أيضًا باسم RFC 2898 الخاص بفريق عمل هندسة الإنترنت.
بعد عملية توليد التذكر المذكورة أعلاه، يوضح الرسم البياني التالي خوارزمية توليد البذور.
المعلمة الأولى لـ PBKDF2 هي المعلمة التذكيرية التي تم إنشاؤها أعلاه.
المعلمة الثانية لـ PBKDF2 هي الملح، والذي يتكون عمومًا من سلسلة وسلسلة اختيارية من سلاسل التشفير التي يوفرها المستخدم.
يستخدم PBKDF2 خوارزمية HMAC-SHA512، التي تستخدم 2048 تجزئة لإنتاج قيمة 512 بت كبذرة.
** إنشاء محفظة HD من البذور **
سيتم استخدام البذرة التي تم إنشاؤها أعلاه باعتبارها البذرة الجذرية لمحفظة HD، ويمكن للبذرة الجذرية لأي محفظة عالية الدقة إعادة إنشاء محفظة HD بأكملها.
يؤدي إدخال البذور الجذرية في خوارزمية HMAC-SHA512 إلى الحصول على تجزئة 512 بت، حيث يتم استخدام 256 بت اليسرى منها كمفتاح خاص رئيسي والـ 256 بت اليمنى كرمز السلسلة الرئيسية. بعد ذلك، يمكن إنشاء المفتاح العام الرئيسي (264 بت) بواسطة المفتاح الرئيسي الخاص m.
كما ترون من الشكل أعلاه، يتم إنشاء مفتاح HD باستخدام المعلمات التالية.
المفتاح الخاص للوالدين أو المفتاح العام للوالدين؛ (كلاهما عبارة عن مفاتيح ECDSA بحجم 256 بت غير مضغوطة).
رمز السلسلة الأصلية 256 بت.
رقم فهرس عدد صحيح 32 بت.
بالإضافة إلى ذلك، فإن العملية المذكورة أعلاه متكررة ويمكن استخدام المفتاح الخاص الفرعي في الرسم التخطيطي باعتباره المفتاح الخاص للوالدين في المستوى التالي.
من خلال إدخال (مفتاح Publick الرئيسي، رمز السلسلة الأصلية، رقم الفهرس) في خوارزمية HMAC-SHA512، يمكننا إنشاء مفاتيحها الفرعية، ويمكننا ضبط رقم الفهرس لإنشاء مفاتيح فرعية متعددة على نفس المستوى.
حول المفتاح الممتد
نظرًا لأن وظيفة اشتقاق المفتاح هذه أحادية الاتجاه، لا يمكن استخدام جميع المفاتيح الفرعية لاشتقاق مفاتيحها الأصلية أو المفاتيح الشقيقة على نفس المستوى، فقط المفتاح الأصلي ورمز السلسلة الأصلية (التي يتم إنشاؤها من مفتاح مستوى الوالدين ورمز السلسلة) يمكن استخدامها لاشتقاق جميع المفاتيح الفرعية وأكواد السلسلة الفرعية، ثم إنشاء المفاتيح الفرعية والعناوين المقابلة لتوقيع المعاملات.
يُطلق على الجمع بين رمز المفتاح والسلسلة اسم المفتاح الممتد، ويمكن استخدام المفتاح الممتد لإنشاء جميع الفروع من هناك إلى الأسفل.
يمكن أن يكون المفتاح المقدم في المفتاح الموسع إما مفتاحًا خاصًا أو مفتاحًا عامًا، مقترنًا برمز السلسلة المسمى المفتاح الخاص الممتد و المفتاح العام الممتد، على التوالي، ويشار إليه بـ (k, c) و (K, c)، على التوالي، حيث يكون المفتاح العام K = نقطة(k).
يمكننا استخلاص المفتاح العام الموسع من المفتاح الخاص الموسع وليس العكس، لذلك بالنسبة لبعض سيناريوهات المعاملات (مثل التجارة الإلكترونية)، يمكن إنشاء مفتاح عام جديد وعنوان جديد لكل معاملة لتلقي الدفع، في حين يمكن تخزين المفتاح الخاص الموسع في محفظة ورقية أو محفظة أجهزة لتوقيع المعاملات بشكل آمن دون اتصال بالإنترنت. كما نرى، فإن أمان المفتاح العام الممتد مرتفع نسبيًا، ويوضح الرسم البياني التالي آلية نقل المفتاح العام الأصلي الممتد لاشتقاق المفتاح الخاص الفرعي وإنشاء المفتاح العام الفرعي:




