मुख्य सामग्री पर जाएं

BIP-39 मानक समझाया गया: Mnemonic Seed Phrases कैसे काम करते हैं

BIP-39 (Bitcoin Improvement Proposal 39) mnemonic sentences - परिचित 12 या 24 शब्दों के अनुक्रम - उत्पन्न करने के लिए मानक को परिभाषित करता है जो cryptocurrency wallet keys प्राप्त करने के लिए उपयोग किए जाने वाले entropy को एनकोड करते हैं। 2013 में Marek Palatinus, Pavol Rusnak, Aaron Voisine, और Sean Bowe द्वारा प्रकाशित, BIP-39 लगभग सभी प्रमुख cryptocurrencies में wallet backup के लिए प्रमुख मानक बन गया है।

BIP-39 को तकनीकी स्तर पर समझने से आप आत्मविश्वास प्राप्त करते हैं कि आपका seed phrase backup विश्वसनीय है और आप विभिन्न wallet implementations की सुरक्षा गुणों का मूल्यांकन करने में मदद पाते हैं।

BIP-39 का अवलोकन

BIP-39 दो प्रक्रियाओं को निर्दिष्ट करता है:

  1. Mnemonic generation — यादृच्छिक entropy को मानव-पठनीय शब्दों के अनुक्रम में परिवर्तित करना।
  2. Seed derivation — Mnemonic शब्दों (साथ ही एक वैकल्पिक passphrase) को 512-bit बाइनरी seed में परिवर्तित करना जिसका उपयोग hierarchical deterministic key generation के लिए BIP-32 के साथ किया जा सकता है।

ये दोनों प्रक्रियाएं जानबूझकर अलग हैं। Mnemonic मानव-अनुकूल प्रतिनिधित्व है; seed, key derivation के लिए cryptographic input है।

चरण 1: Entropy Generation

प्रक्रिया cryptographically secure random data (entropy) के एक ब्लॉक से शुरू होती है। BIP-39 पाँच entropy आकारों का समर्थन करता है:

Entropy (bits)Checksum (bits)कुल (bits)शब्द
128413212
160516515
192619818
224723121
256826424

व्यावहारिक रूप से, लगभग सभी wallets 128 bits (12 शब्द) या 256 bits (24 शब्द) का उपयोग करते हैं। अन्य आकार specification के अनुसार मान्य हैं लेकिन शायद ही कभी लागू किए जाते हैं।

Entropy source की गुणवत्ता सर्वोपरि है। यदि random number generator पक्षपाती है, अनुमानित है, या पर्याप्त entropy नहीं है, तो परिणामी seed phrase को एक attacker द्वारा अनुमान लगाया जा सकता है। इस विषय के विस्तृत उपचार के लिए हमारी Entropy और Randomness guide देखें।

Entropy Sources

  • Hardware random number generators (HRNG) — Hardware wallets जैसे Ledger और Trezor द्वारा उपयोग किया जाता है। ये physical phenomena (thermal noise, shot noise) को sample करते हुए true randomness उत्पन्न करते हैं।
  • Operating system CSPRNG — Linux/macOS पर /dev/urandom, Windows पर CryptGenRandom, या browsers में crypto.getRandomValues()। ये cryptographically secure pseudo-random number generators (CSPRNGs) हैं जिन्हें hardware entropy sources से seeded किया जाता है।
  • Dice rolls — कुछ users casino-grade dice का उपयोग करके entropy को manually generate करते हैं, rolls को binary या word indices में mapping करते हैं। यह किसी भी software या hardware RNG में विश्वास को समाप्त करता है।

चरण 2: Checksum Computation

एक बार entropy generate हो जाने के बाद, एक checksum append किया जाता है:

  1. Entropy bytes के SHA-256 hash की compute करें।
  2. Hash के पहले ENT / 32 bits लें (जहाँ ENT bits में entropy length है)।
  3. इन checksum bits को entropy में append करें।

256-bit entropy के लिए, यह 8 checksum bits बनाता है, जिससे कुल 264 bits होते हैं।

Checksum एक error-detection mechanism के रूप में कार्य करता है: जब आप अपने seed phrase को recovery के लिए wallet में दर्ज करते हैं, तो wallet checksum को recompute करता है। यदि कोई शब्द गलत है या शब्द गलत क्रम में हैं, तो checksum विफल हो जाएगा और wallet mnemonic को reject करेगा। यह transcription errors से बचाव करता है लेकिन उन्हें correct नहीं करता — यह केवल यह पता लगाता है कि कुछ गलत है।

Checksum निहितार्थ

क्योंकि mnemonic का अंतिम शब्द checksum bits को encode करता है, हर entropy sequence के लिए सभी शब्द अंतिम शब्द के रूप में मान्य नहीं हैं। 24-word mnemonic के लिए, अंतिम शब्द 3 bits entropy और 8 bits checksum को encode करता है, इसलिए किसी भी पहले 23 शब्दों के लिए केवल 8 2,048 संभावित शब्दों में से मान्य हैं। यही कारण है कि आप अंतिम शब्द को freely नहीं चुन सकते।

चरण 3: Words में Mapping

Combined entropy + checksum bits को 11 bits के समूहों में विभाजित किया जाता है। प्रत्येक 11-bit समूह 0 से 2,047 तक एक index का प्रतिनिधित्व करता है, जो BIP-39 word list में एक शब्द से मेल खाता है।

264 bits / 11 bits per word = 24 words
132 bits / 11 bits per word = 12 words

English Word List

BIP-39 English word list में बिल्कुल 2,048 शब्द हैं। सूची को सावधानीपूर्वक curate किया गया था इन गुणों के साथ:

  • Unique four-letter prefixes — कोई भी दो शब्द समान पहले चार characters को share नहीं करते। इसका अर्थ है abandon को unambiguously aban के रूप में पहचाना जा सकता है, जो compact metal backups के लिए उपयोगी है।
  • Common vocabulary — शब्द सरल, व्यापक रूप से ज्ञात English शब्द हैं। कोई jargon, proper nouns, या obscure terms नहीं।
  • Similar words से बचना — शब्द जो आसानी से confused हो सकते हैं (उदा., "woman" और "women") को जहाँ संभव हो exclude किया जाता है।
  • Character length — सभी शब्द 3 से 8 characters के बीच हैं।

अन्य Language Word Lists

BIP-39 नौ languages में word lists को परिभाषित करता है:

LanguageStatusNotes
EnglishReference standardसबसे व्यापक रूप से समर्थित
JapaneseStandardizedKatakana का उपयोग करता है; spaces ideographic (U+3000) हैं
KoreanStandardized
SpanishStandardized
Chinese (Simplified)Standardized
Chinese (Traditional)Standardized
FrenchStandardized
ItalianStandardized
CzechStandardized
PortugueseStandardized

महत्वपूर्ण compatibility note: एक word list के साथ generated mnemonic को different language word list का उपयोग करके restore नहीं किया जा सकता। Word indices languages के बीच अलग हैं। हमेशा नोट करें कि आपके backup को create करते समय कौन सी language का उपयोग किया गया था।

चरण 4: Seed Derivation (PBKDF2)

Mnemonic sentence को directly cryptographic key के रूप में उपयोग नहीं किया जाता है। इसके बजाय, यह PBKDF2-HMAC-SHA512 का उपयोग करके key stretching से गुजरता है:

PBKDF2(
password = mnemonic sentence (शब्दों को spaces से जोड़ा जाता है, UTF-8 NFKD में normalized),
salt = "mnemonic" + optional_passphrase,
iterations = 2048,
key_length = 512 bits
)

यह एक 512-bit seed बनाता है जो BIP-32 hierarchical deterministic key derivation के लिए input के रूप में कार्य करता है।

BIP-39 में PBKDF2 के मुख्य गुण

Key stretching — PBKDF2 के 2,048 iterations brute-force attacks में computational cost जोड़ते हैं। जबकि 2,048 iterations आधुनिक password-hashing standards की तुलना में modest है, प्राथमिक सुरक्षा mnemonic की entropy (128 या 256 bits) से आती है, key-stretching factor से नहीं।

Passphrase support — Salt में एक वैकल्पिक passphrase शामिल है (the "25th word")। यदि कोई passphrase प्रदान नहीं किया जाता है, तो salt केवल string "mnemonic" है। यदि passphrase प्रदान किया जाता है, तो salt "mnemonic" + passphrase बन जाता है। इसका अर्थ है कि हर different passphrase same mnemonic से completely different seed बनाता है — और इसलिए completely different set of keys और addresses।

Passphrase की कोई validation नहीं — Mnemonic checksum के विपरीत, passphrase पर कोई checksum नहीं है। कोई भी passphrase valid है। गलत passphrase को enter करने से error produce नहीं होता; यह silently एक different (empty) wallet generate करता है। यह plausible deniability के लिए एक feature है लेकिन उन users के लिए खतरा है जो अपना passphrase भूल जाते हैं।

Unicode normalization — Mnemonic और passphrase को PBKDF2 में pass करने से पहले UTF-8 NFKD (Normalization Form Compatibility Decomposition) का उपयोग करके normalize किया जाता है। यह सुनिश्चित करता है कि implementations के बीच consistent seed derivation हो, चाहे operating system internally characters को कैसे भी represent करे।

चरण 5: Seed से Keys तक (BIP-32)

PBKDF2 से 512-bit seed को BIP-32 (Hierarchical Deterministic Wallets) में input के रूप में उपयोग किया जाता है:

  1. Seed को key "Bitcoin seed" के साथ HMAC-SHA512 के through pass किया जाता है।
  2. बाएं 256 bits master private key बन जाते हैं।
  3. दाएं 256 bits master chain code बन जाते हैं।
  4. साथ में, वे master extended private key (xprv) बनाते हैं।

यहाँ से, BIP-44 derivation paths coin-specific keys और addresses प्राप्त करने के लिए standardized tree structure को define करते हैं।

कार्य किया गया उदाहरण

आइये 128 bits of entropy (12-word mnemonic) के साथ एक simplified example के माध्यम से BIP-39 को trace करें:

1. 128 bits of entropy generate करें

00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000

(यह all-zeros entropy है — केवल illustration के लिए। व्यावहार में कभी भी उपयोग न करें।)

2. SHA-256 hash की compute करें

SHA256(0x00000000000000000000000000000000) = 374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb

3. Checksum के रूप में hash के पहले 4 bits लें

पहला byte: 0x37 = 00110111। पहले 4 bits: 0011

4. Entropy में checksum append करें

128 bits of zeros + 0011 = कुल 132 bits।

5. 11-bit समूहों में विभाजित करें

00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000000 → 0 → "abandon"
00000000011 → 3 → "about"

परिणाम: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

यह all-zeros entropy के लिए well-known test vector है। अंतिम शब्द "about" है (न कि "abandon") checksum bits के कारण।

6. PBKDF2 के साथ seed प्राप्त करें

PBKDF2("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about", "mnemonic", 2048, 64)

यह एक 512-bit seed बनाता है जिसका उपयोग BIP-32 derivation के लिए किया जाता है।

SafeSeed Tool

SafeSeed Seed Phrase Generator का उपयोग करें BIP-39 को action में देखने के लिए। एक seed phrase generate करें और entropy, checksum, और word mapping को real time में देखें। अधिकतम सुरक्षा के लिए tool को offline चलाएं।

BIP-39 की सुरक्षा विश्लेषण

Entropy सुरक्षा

24-word mnemonic (256 bits of entropy) के लिए:

  • Search space 2^256 है, लगभग 1.16 x 10^77 possibilities।
  • एक trillion (10^12) attempts per second की दर पर भी, exhaustive search लगभग 3.67 x 10^57 वर्षों में लगेगा — universe की age (1.38 x 10^10 वर्ष) से कहीं अधिक।

12-word mnemonic (128 bits of entropy) के लिए:

  • Search space 2^128 है, लगभग 3.4 x 10^38 possibilities।
  • एक trillion attempts per second पर, exhaustive search लगभग 10^19 वर्षों में लगेगा।

दोनों ही classical computing के साथ computationally infeasible हैं।

PBKDF2 विचार

2,048-iteration PBKDF2 brute-force attacks में एक constant factor जोड़ता है लेकिन प्राथमिक सुरक्षा barrier नहीं है। कुछ security researchers ने नोट किया है कि 2,048 iterations Argon2 या bcrypt जैसे modern key-derivation functions की तुलना में कम है। हालाँकि, क्योंकि mnemonic entropy (128 या 256 bits) dominant factor है, यह व्यावहारिक रूप में एक minor concern है।

Checksum सीमाएं

Checksum अधिकांश transcription errors को catch करता है लेकिन:

  • यह errors को detect करता है लेकिन correct नहीं करता।
  • 12-word mnemonics के लिए, केवल 4 checksum bits मौजूद हैं, यानी लगभग 1 in 16 random modifications checksum को pass करेंगे।
  • Checksum word reordering से बचाव नहीं करता जो valid checksum produce करने के लिए होता है।

Passphrase जोखिम

Passphrase feature powerful है लेकिन जोखिम introduce करता है:

  • यदि आप passphrase भूल जाते हैं, तो funds irrecoverable हैं (कोई "reset" mechanism नहीं)।
  • Passphrase validated नहीं होता — कोई भी string valid wallet produce करता है।
  • एक attacker जो mnemonic को obtain करता है लेकिन passphrase को नहीं, passphrase को brute-force करना चाहिए, जो passphrase की entropy के अनुसार additional security provide करता है।

BIP-39 Criticisms

BIP-39 Bitcoin development community के भीतर critics के बिना नहीं है।

कोई Versioning नहीं

BIP-39 में version byte शामिल नहीं है, यानी derivation process forever fixed है। यदि future improvement के लिए different key derivation function या different parameters की आवश्यकता है, तो यह mnemonic format के भीतर signal नहीं किया जा सकता। यही कारण है कि कुछ wallets (notably Electrum) अपनी own mnemonic scheme का उपयोग करते हैं जिसमें versioning है।

Word List के लिए Tight Coupling

Mnemonic exact word list पर dependent है। यदि word list को कभी modify किया जाता, तो existing mnemonics को recover नहीं किया जा सकता। Word lists को standardization के बाद से freeze किया गया है, लेकिन यह inflexibility को कुछ द्वारा design limitation के रूप में देखा जाता है।

कमजोर Key Stretching

जैसा कि नोट किया गया है, PBKDF2 के 2,048 iterations को modern standards के अनुसार weak माना जाता है। जबकि यह high-entropy mnemonics के लिए security को materially नहीं affect करता, यह shorter या user-chosen passphrases के लिए कम protection provide करता है।

Electrum का विकल्प

Electrum wallet अपनी own mnemonic scheme का उपयोग करता है जिसमें versioning शामिल है और fixed word list पर rely नहीं करता है। Electrum mnemonics BIP-39 compatible नहीं हैं। इसका अर्थ है कि Electrum seed phrase को BIP-39 wallet में restore नहीं किया जा सकता और vice versa। हमेशा जानें कि आपका wallet कौन सा standard उपयोग करता है।

BIP-39 Implementations

BIP-39 लगभग हर major wallet में implement किया गया है:

WalletBIP-39Word CountNotes
LedgerYes24Hardware, secure element
TrezorYes12/24SLIP-39 (Shamir) को भी support करता है
ColdcardYes24Bitcoin-only hardware
MetaMaskYes12Browser extension
Trust WalletYes12Mobile
ExodusYes12Desktop/mobile
ElectrumNo12अपनी own scheme का उपयोग करता है
BlueWalletYes12/24Bitcoin-focused mobile

Testing और Verification

Official Test Vectors

BIP-39 specification में test vectors शामिल हैं — known entropy values उनके corresponding mnemonic words और derived seeds के साथ। इनका उपयोग यह verify करने के लिए किया जाता है कि implementations सही हैं।

आप अपने wallet के BIP-39 implementation को official test vectors के विरुद्ध checking करके verify कर सकते हैं जो published हैं:

अपने Seed Phrase को Verify करना

यह verify करने के लिए कि आपने अपने seed phrase को सही तरीके से record किया है:

  1. अपने hardware wallet पर seed phrase generate करें।
  2. इसे सावधानीपूर्वक write down करें।
  3. Hardware wallet को factory settings में reset करें।
  4. आपके द्वारा write down किए गए seed phrase से restore करें।
  5. Verify करें कि वही addresses generate होते हैं।
  6. Confirm करें कि wallet transactions को sign कर सकता है।

यह प्रक्रिया confirm करती है कि आपका backup सही है और wallet का BIP-39 implementation expected के अनुसार काम करता है।

FAQ

BIP-39 का क्या अर्थ है?

BIP का मतलब Bitcoin Improvement Proposal है। BIP-39 proposal number 39 है, जो mnemonic (human-readable) representations of cryptographic entropy बनाने के लिए standard को define करता है। इसे 2013 में introduce किया गया था और लगभग सभी major cryptocurrency wallets द्वारा adopted किया गया है।

क्या सभी 12-word seed phrases BIP-39 हैं?

नहीं। कुछ wallets (notably Electrum) अपनी own mnemonic scheme का उपयोग करते हैं जो BIP-39 से distinct है। जबकि दोनों word lists से 12-word phrases बनाते हैं, encoding, word lists, और derivation processes अलग हैं। BIP-39 phrase को Electrum की scheme के साथ उपयोग नहीं किया जा सकता और vice versa। हमेशा अपने wallet के documentation को check करें।

क्या मैं शब्दों को choose करके अपना own BIP-39 seed phrase बना सकता हूँ?

आपको नहीं करना चाहिए। जबकि यह technically possible है 23 शब्दों को select करने और एक valid 24th word को compute करने के लिए (checksum को satisfy करने के लिए), human word selection sufficient entropy produce नहीं करता। BIP-39 की security यह पर depend करती है कि शब्द high-quality random data से derived हों, human choice से नहीं। CSPRNG को entropy generate करने दें।

Word "mnemonic" को PBKDF2 salt के रूप में क्यों उपयोग किया जाता है?

String "mnemonic" एक fixed salt है जो BIP-39 द्वारा specified है। जब passphrase का उपयोग किया जाता है, तो यह इस salt में append किया जाता है (उदा., "mnemonicMyPassphrase")। Fixed known salt का उपयोग करना ensures consistent seed derivation सभी implementations के बीच बिना mnemonic और optional passphrase के अलावा कोई additional information require किए।

क्या BIP-39 केवल Bitcoin के लिए उपयोग किया जाता है?

नहीं। BIP-39 लगभग सभी major cryptocurrencies में उपयोग किया जाता है, जिसमें Ethereum, Litecoin, Cardano, Solana, और कई अन्य शामिल हैं। Mnemonic generation और seed derivation process identical है; केवल subsequent key derivation paths (BIP-44 coin types द्वारा defined) chains के बीच अलग-अलग होते हैं।

BIP-39 और SLIP-39 के बीच क्या अंतर है?

BIP-39 एक single mnemonic produce करता है जो full secret का प्रतिनिधित्व करता है। SLIP-39 (Satoshi Labs Improvement Proposal 39) Shamir's Secret Sharing को implement करता है, secret को multiple shares में split करता है (उदा., 3-of-5)। कोई भी threshold number के shares secret को reconstruct कर सकते हैं, लेकिन fewer shares कोई information reveal नहीं करते। SLIP-39 BIP-39 से different word list और encoding का उपयोग करता है।

कितने valid BIP-39 mnemonics मौजूद हैं?

24-word mnemonics के लिए: 2^256 (लगभग 1.16 x 10^77)। 12-word mnemonics के लिए: 2^128 (लगभग 3.4 x 10^38)। ये numbers entropy space का प्रतिनिधित्व करते हैं। Checksum word combinations को constrain करता है लेकिन entropy को reduce नहीं करता — इसका केवल अर्थ है कि 24 BIP-39 शब्दों का हर random sequence valid mnemonic नहीं बनाता।

संबंधित Guides