الاسم الكامل لـ PBKDF2 هو Password-Based Key Derivation Function 2. يحول هذا الأسلوب مدخلًا يؤدي دور كلمة المرور ومعاملًا إضافيًا اسمه salt إلى مفتاح مشتق. وتعتمد النتيجة أيضًا على عدد التكرارات ودالة الحساب والطول المطلوب. المدخلات والإعدادات المتطابقة تعطي نتيجة متطابقة. يستخدم BIP39 الصيغة المحددة PBKDF2-HMAC-SHA512؛ وقد تختار التطبيقات الأخرى معاملات مختلفة.
تشكل كلمات الاستعادة المدخل المسمى password. أما salt فهو المدخل الثاني: النص الحرفي "mnemonic" تتبعه مباشرة passphrase، أي كلمة مرور إضافية اختيارية. لا يوضع بينهما فاصل، ولا تُضاف كلمات النسخة الاحتياطية مرة أخرى. وعند غياب passphrase، تظل قيمة salt هي "mnemonic"، وليست نصًا فارغًا. يخضع المدخلان لمعالجة NFKD التي توحد بعض تمثيلات المحارف، ثم لترميز UTF-8. يستخدم BIP39 الدالة HMAC-SHA512 مع 2048 تكرارًا ومخرج بطول 64 بايت، أي 512 بت. هذا المخرج هو seed؛ وليس salt نسخة احتياطية أخرى عليك إنشاؤها. [1]
يستخدم الحساب داخليًا HMAC، وهو أسلوب يجمع بين مفتاح ورسالة. ويظل مدخل كلمة المرور نفسه هو المفتاح في كل جولة. تعتمد النتيجة الوسيطة الأولى على salt ورقم كتلة المخرج، ثم تعالج الجولات التالية النتيجة الوسيطة السابقة. تُجمع النتائج بعملية XOR التي تعمل على البتات المتناظرة. تعيد HMAC-SHA512 مقدار 64 بايت، ولذلك تكفي كتلة واحدة في BIP39. أما تطبيق SHA-512 وحدها على النص 2048 مرة فهو حساب مختلف ينتج قيمة مختلفة. [2] [1]
تخيل أنك تستعيد أموالك في محفظة أخرى. للحصول على seed نفسه، تحتاج المحفظة إلى البيانات نفسها بعد توحيد تمثيلها، وإلى الإعدادات نفسها. زيادة عدد التكرارات المحدد، وهو 2048، لا تحسن الاستعادة؛ بل تخرج عن BIP39 وتعطي نتيجة أخرى. كذلك فإن ترجمة الكلمات إلى قائمة بلغة أخرى ليست تغييرًا محايدًا. الاستعادة تحتاج إلى التطابق، لا إلى تعديل شخصي للخوارزمية. [1]
تكرار الحساب يزيد كلفة كل محاولة، لكنه لا يولد عشوائية مستقلة جديدة. إذا عرف المهاجم كلماتك وكانت لديه معلومات تمكنه من التعرف على المحفظة الصحيحة، أمكنه تجربة عبارات passphrase ضعيفة دون اتصال، على حاسوبه. لذلك لا يعني seed بطول 512 بت وجود 512 بت من عدم قابلية التنبؤ. كما أن العدد 2048 ليس توصية عامة للأنظمة الجديدة؛ فهو هنا جزء من معيار محدد للاستعادة. [2] [1]
يساعد المجموع الاختباري في BIP39 على اكتشاف الكلمات المنسوخة خطأ. أما PBKDF2 فيجيب عن سؤال آخر: كيف نحسب seed من المدخلات المعطاة؟ هذا الحساب وحده لا يؤكد أن passphrase تخص محفظتك الأصلية. ويمكن بعد ذلك أن يعالج BIP32 قيمة seed لاشتقاق عائلة كاملة من المفاتيح. التحقق من التسجيل، وتحويله إلى seed، وإنشاء المفاتيح خطوات مترابطة، لكنها لا تحل إحداها محل الأخرى. [1]
يمكن للمطور مقارنة النتيجة بمتجهات اختبار عامة، أي مدخلات معروفة ومخرجات متوقعة. ينشر BIP39 البيانات العشوائية الأصلية والكلمات وقيمة seed كاملة لعبارة الاختبار TREZOR. يجب أن يعيد التنفيذ الصحيح إنتاج النتيجة مع تطبيق قواعد NFKD. لا حاجة إلى نسختك الاحتياطية الحقيقية لهذا الاختبار. ولا تستخدم الأمثلة العامة لحفظ المال أبدًا، فهي معروفة للجميع. كذلك لا يثبت نجاح اختبار الحساب أمن التطبيق بأكمله. [1]
للحصول على صورة أوضح، اقرأ هذا المدخل مع BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. تشير إلى هذا المدخل أيضًا BIP39 passphrase.