Password-Based Key Derivation Function 2 एक नियतात्मक व्युत्पत्ति फ़ंक्शन है जिसके मापदंड इनपुट, सॉल्ट, पुनरावृत्ति संख्या, छद्मयादृच्छिक फ़ंक्शन और आउटपुट लंबाई हैं। BIP39 एक विशेष PBKDF2-HMAC-SHA512 विन्यास तय करता है, PBKDF2 के सभी संभावित उपयोग नहीं।
password नाम का इनपुट UTF-8 NFKD में शब्द-वाक्यांश है। सॉल्ट mnemonic + passphrase है, वह भी UTF-8 NFKD में; passphrase न हो तो खाली मान जुड़ता है। BIP39 में HMAC-SHA512, 2048 पुनरावृत्तियाँ और 64 बाइट, यानी 512 बिट आउटपुट आवश्यक हैं। [BIP39 — Mnemonic generation and seed conversion]
PBKDF2 पहला मध्यवर्ती परिणाम पासवर्ड इनपुट, सॉल्ट और आउटपुट ब्लॉक के सूचकांक से बनाता है। अगले परिणाम उसी छद्मयादृच्छिक फ़ंक्शन को पिछले परिणाम पर लगाकर निकाले जाते हैं और मान XOR से जोड़े जाते हैं। HMAC-SHA512 में ब्लॉक 64 बाइट का है, इसलिए BIP39 को एक ब्लॉक चाहिए। पाठ पर केवल 2048 बार SHA-512 लगाना पर्याप्त नहीं है। [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
समान सामान्यीकृत इनपुट और मापदंड वही seed देते हैं। पुनर्प्राप्ति में मनमाने ढंग से 2048 पुनरावृत्तियाँ बढ़ाना या फ़ंक्शन बदलना मौजूदा वॉलेट की सुरक्षा सुधारना नहीं है: परिणाम निर्धारित BIP39 व्युत्पत्ति से मेल नहीं खाएगा। शब्दों को दूसरी सूची में अनुवाद करना भी तटस्थ बदलाव नहीं है। [BIP39 — Mnemonic generation and seed conversion]
पुनरावृत्तियाँ हर प्रयास का काम बढ़ाती हैं, लेकिन स्वतंत्र गुप्त यादृच्छिकता नहीं जोड़तीं। शब्द और वॉलेट तुलना डेटा पाने वाला हमलावर कमजोर passphrase ऑफलाइन आजमा सकता है। इसलिए 512-बिट आउटपुट का अर्थ 512 बिट एंट्रॉपी जितनी सुरक्षा नहीं है, और 2048 नई प्रणालियों के लिए सार्वभौमिक सलाह नहीं है। [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
BIP39 checksum इस्तेमाल से पहले शब्दों की त्रुटियाँ पकड़ने में मदद करता है। PBKDF2 परिवर्तन स्वयं वाक्यांश बनाने और जाँचने से अलग है; वह passphrase के इच्छित वॉलेट से जुड़े होने की पुष्टि नहीं करता। इसके बाद BIP32 या अन्य नियतात्मक विधियाँ अगले चरण में seed इस्तेमाल कर सकती हैं। [BIP39 — Mnemonic generation and seed conversion]
सार्वजनिक BIP39 परीक्षण वेक्टर एंट्रॉपी, शब्द और परीक्षण passphrase TREZOR के साथ अपेक्षित seed देते हैं। सही कार्यान्वयन को पूरा आउटपुट दोहराना और NFKD का पालन करना चाहिए। इन ज्ञात इनपुट को धन के लिए अपना बैकअप कभी न बनाएँ; परीक्षण का मिलान अकेले पूरे ऐप की सुरक्षा भी नहीं जाँचता। [BIP39 — Mnemonic generation and seed conversion]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. इस प्रविष्टि का उल्लेख यहाँ भी है BIP39 passphrase.