SLIP-39 वॉलेट का बैकअप कई शब्द-सूचियों में रखने का मानक है। हर सूची को रिकवरी हिस्सा कहा जाता है। पहले ही तय किया जाता है कि कितने अलग-अलग हिस्से चाहिए होंगे। उदाहरण के लिए, तीन में से दो वाली व्यवस्था में एक हिस्सा खोने पर भी वॉलेट वापस मिल सकता है। केवल एक पर्याप्त नहीं है। SatoshiLabs का यह मानक Shamir’s Secret Sharing का उपयोग करता है, जो किसी रहस्य को बाँटने की गणितीय विधि है। इसके हिस्से सामान्य BIP 39 Seed Phrase के शब्दों को केवल दूसरे ढंग से लिख देने से नहीं बनते।
अन्ना तीन में से दो वाला बैकअप चुनती है। वॉलेट बिटकॉइन पाने और भेजने वाला ऐप या उपकरण है। वॉलेट तीन अलग हिस्से बनाता है और किन्हीं दो से रिकवरी हो सकती है। इस न्यूनतम संख्या को थ्रेशोल्ड कहते हैं। एक ही हिस्से की दो तस्वीरें फिर भी एक हिस्सा ही हैं। सरल व्यवस्था में एक समूह होता है। SLIP-39 अधिक जटिल नियम भी अपनाता है: जैसे 3 में से 2 समूह, और हर समूह में 3 में से 2 हिस्से आवश्यक हों। समूह A के दो और B के दो हिस्से पर्याप्त हैं। A के तीन और B का एक पर्याप्त नहीं, क्योंकि केवल समूह A पूरा है। इसलिए केवल कागज़ों की गिनती नहीं, उनका वितरण भी मायने रखता है। [1] [6]
हर सूची में अलग डेटा और उसे सही तरह जोड़ने की जानकारी होती है। SLIP-39 में 1024 अंग्रेज़ी शब्दों की निश्चित सूची है। वॉलेट का इंटरफ़ेस हिंदी में होने पर भी बैकअप के शब्दों का अनुवाद नहीं होता। 128 बिट के रहस्य से हर हिस्सा 20 शब्दों का बनता है, और 256 बिट से 33 शब्दों का। बिट डेटा की बुनियादी इकाई है, लिखने के लिए कोई अतिरिक्त शब्द नहीं। हिस्से में उसके सेट, समूह और स्थान की पहचान, आवश्यक थ्रेशोल्ड और एन्क्रिप्शन सेटिंग भी होती हैं। रिकवरी इनके मेल और हिस्सों के अलग होने की जाँच करती है। इसलिए समान लंबाई वाली मनमानी सूचियाँ मिलाई नहीं जा सकतीं। [1]
अन्ना passphrase भी इस्तेमाल कर सकती है, यानी अपनी चुनी हुई अतिरिक्त पासवर्ड-पंक्ति। पर्याप्त हिस्से उसका विकल्प नहीं हैं। सही संयोजन भी उसकी टाइपिंग की गलती खुद नहीं पहचानता: अलग passphrase से अलग मुख्य रहस्य बनता है और दूसरा वॉलेट खुलता है। इसलिए केवल बैकअप वैध होने का संदेश देखना काफी नहीं; परिणाम का मिलान पहले से ज्ञात पतों से किया जाता है। Passphrase न हो तो इनपुट खाली रहता है। SLIP-39 मुद्रण योग्य ASCII 32–126 स्वीकारता है: बुनियादी लैटिन अक्षर और चिह्न, बिना उच्चारण-चिह्नों के, जिनमें स्पेस भी शामिल है। यह इस मानक का नियम है, सभी वॉलेट का नहीं। Passphrase डिवाइस खोलने वाला PIN नहीं है। [1]
BIP 39 Seed Phrase दूसरी तरह बनती है और उसकी शब्द-सूची अलग है। उसके शब्दों को अलग कागज़ों पर लिखने से SLIP-39 के हिस्से नहीं बनते। उसी वॉलेट को बनाए रखने के लिए रूपांतरण में seed, यानी BIP 32 के कुंजी-वृक्ष का गुप्त इनपुट डेटा, और सही Derivation Path बचनी चाहिए। यह पथ इस्तेमाल होने वाली कुंजियों तक पहुँचाता है। मूल एंट्रॉपी, अर्थात शब्द बनने से पहले के यादृच्छिक डेटा, को दूसरे तरीके से लिख देना पर्याप्त नहीं। BIP 39 शब्दों और passphrase से 512 बिट का seed बनाता है; SLIP-39 में सीधे उसका बैकअप लेने पर हर हिस्सा 59 शब्दों का होता है। एक वॉलेट बदलने से अलग passphrase से खुलने वाले दूसरे वॉलेट अपने आप साथ नहीं आते। पहले संबंधित समर्थित प्रक्रिया की पुष्टि करनी चाहिए। [1] [3] [2]
extendable चिह्न वाला संगत बैकअप वही वॉलेट रखते हुए हिस्सों का बँटवारा बदलने देता है। Trezor इसी तरह एक हिस्से वाले बैकअप से कई हिस्सों पर जाने की प्रक्रिया बताता है। लेकिन कागज़ बदलने से अन्ना का रहस्य नहीं बदला: पर्याप्त पुराना संयोजन अब भी काम करता है। पुराने और नए हिस्से मिलाने नहीं चाहिए। तकनीकी रूप से चिह्न का मान 1 होने पर सेट की पहचान को salt नामक एन्क्रिप्शन के सहायक इनपुट से बाहर रखा जाता है। तब उसी encrypted master secret (EMS), यानी एन्क्रिप्ट किए मुख्य रहस्य, को passphrase जाने बिना नई पहचान के साथ फिर बाँटा जा सकता है। इससे पुराने, काम आने वाले बैकअप के लीक होने की समस्या दूर नहीं होती। [1] [4]
निजी कुंजी एक गुप्त संख्यात्मक मान है, जिससे वॉलेट पैसे खर्च करने की अनुमति देने वाला डिजिटल हस्ताक्षर बनाता है। रिकवरी के बाद अन्ना का वॉलेट सामान्य तरीके से हस्ताक्षर कर सकता है। हिस्से रखने वालों को हर भुगतान मंज़ूर करने की ज़रूरत नहीं: SLIP-39 एक रहस्य वापस बनाता है, जबकि Multisig खर्च की शर्तों के अनुसार कई हस्ताक्षर माँगता है। एक ही घर में रखे तीन हिस्से एक आग में नष्ट हो सकते हैं। वितरण ऐसा होना चाहिए कि साझा नुकसान और हमलावर के पर्याप्त हिस्से जुटाने, दोनों में कठिनाई हो। लेकिन अधिक जटिल योजना रिकवरी को भी कठिन बनाती है। जाँच विश्वसनीय डिवाइस पर समर्थित प्रक्रिया से होनी चाहिए। संदर्भ लाइब्रेरी python-shamir-mnemonic डेवलपरों को सार्वजनिक परीक्षण उदाहरणों से संगतता जाँचने के लिए है, आपके असली बैकअप को संसाधित करने के लिए नहीं। वह साफ चेतावनी देती है कि वह रहस्यों की पर्याप्त सुरक्षा नहीं करती। [1] [4] [5] [6]
BIP 32 वॉलेट में मुख्य रहस्य इनपुट seed है, कुंजी-वृक्ष का पहले से निकाला गया विस्तारित निजी मूल नहीं। पहले seed एन्क्रिप्ट होता है, फिर प्राप्त EMS के हिस्से बनते हैं। एन्क्रिप्शन Feistel संरचना के चार दौर इस्तेमाल करता है। हर दौर में PBKDF2-HMAC-SHA256 की 2500×2^e पुनरावृत्तियाँ होती हैं; सहेजा गया घातांक e गणना की लागत तय करता है। यह पासवर्ड का ठीक-ठीक निर्धारित प्रसंस्करण है, नए यादृच्छिक शब्द जोड़ना नहीं। विभाजन हर बाइट पर GF(256) में होता है, जो 256 मानों वाली गणितीय संरचना है। बहुपद में रहस्य f(255) पर रहता है; थ्रेशोल्ड कम से कम 2 हो तो f(254) पर digest नामक सत्यापन मान रखा जाता है। [1] [2]
हिस्से के अंतिम तीन शब्द RS1024 चेकसम बनाते हैं। वह अधिकतम तीन शब्दों को प्रभावित करने वाली त्रुटि निश्चित रूप से पकड़ता है, लेकिन बैकअप बनाने वाले का हस्ताक्षर या स्वामित्व का प्रमाण नहीं है। मानक स्वतः सुधार की सलाह नहीं देता: प्रोग्राम वैध, मगर मूल से अलग शब्द बना सकता है। हिस्से जोड़ते समय एक और 32 बिट का digest गलत सेट पहचानने में मदद करता है। इसका एक सैद्धांतिक परिणाम भी है: थ्रेशोल्ड से एक हिस्सा कम रखने वाला व्यक्ति exhaustive search, यानी सभी संभावनाएँ जाँचकर, कुछ संभावित रहस्यों को खारिज कर सकता है। इसलिए थ्रेशोल्ड से नीचे बिल्कुल कोई जानकारी नहीं मिलती, यह गणितीय दावा यहाँ बिना शर्त लागू नहीं होता। इसका मतलब आसानी से सुरक्षा टूटना नहीं; यह बताता है कि मूल रहस्य पर्याप्त मजबूत होना क्यों आवश्यक है। [1]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. इस प्रविष्टि का उल्लेख यहाँ भी है BIP 39, Trezor, Pavol ‘Stick’ Rusnák, Shamir Secret Sharing.