क्रिप्टो में नॉनस क्या है? बिटकॉइन माइनिंग, एथेरियम, क्रिप्टोग्राफी

क्रिप्टो में नॉनस क्या है? बिटकॉइन माइनिंग, एथेरियम, क्रिप्टोग्राफी

दिसंबर 2010 में, बर्लिन में आयोजित चाओस कम्युनिकेशन कांग्रेस के मंच पर, fail0verflow नामक एक छोटे समूह ने घोषणा की कि उन्होंने प्लेस्टेशन 3 के लिए सोनी की मास्टर साइनिंग कुंजी निकाल ली है। इस तकनीक से 256-बिट एलिप्टिक कर्व को भेदना संभव नहीं हुआ। इसने एईएस को भी क्रैक नहीं किया। इसने सोनी की कोड-हस्ताक्षर प्रणाली की इस विशेषता का फायदा उठाया कि वह प्रत्येक हस्ताक्षर के लिए एक ही संख्या का पुन: उपयोग करती थी। वह संख्या एक नॉनस थी।

क्रिप्टो जगत के तीन ऐसे कोनों में एक ही शब्द, "नॉनस", बार-बार दिखाई देता है जिनका आपस में लगभग कोई संबंध नहीं है। यह वह वेरिएबल है जिसे बिटकॉइन माइनर एक वैध ब्लॉक हैश की खोज में प्रति सेकंड खरबों बार इस्तेमाल करता है। यह वह काउंटर है जिसका उपयोग आपका एथेरियम वॉलेट आउटबाउंड लेनदेन को क्रमबद्ध करने के लिए करता है, और यही कारण है कि एक रुका हुआ लेनदेन आपके द्वारा हस्ताक्षरित हर अगले लेनदेन को ब्लॉक कर देता है। यह वह अद्वितीय मान है जिसकी आवश्यकता AES-GCM सिफर को दो एन्क्रिप्टेड संदेशों को एक-दूसरे की सामग्री लीक होने से बचाने के लिए होती है। एक शब्द, तीन काम, जिनमें से कोई भी एक दूसरे के स्थान पर इस्तेमाल नहीं किया जा सकता। एक को दूसरे के लिए गलत समझना ही वह कारण है जिससे नए लोग "नॉनस बहुत कम" त्रुटियों को गलत समझते हैं, माइनर असंभव सेटअप बनाते हैं, और PS3 जैसे सिस्टम अपना रूट ऑफ ट्रस्ट खो देते हैं।

एक 32-बिट नॉनस जिसे "एक बार उपयोग की गई संख्या" कहा जाता है: मूल

यह संक्षिप्त रूप हर जगह प्रचलित है। "नॉनस" का अर्थ है एक बार इस्तेमाल की गई संख्या। मोटे तौर पर सही, लेकिन ऐतिहासिक रूप से गलत। अंग्रेज़ी शब्द क्रिप्टोग्राफ़ी से लगभग 750 साल पहले का है। "फॉर द नॉनस" मध्य अंग्रेज़ी पांडुलिपियों में लगभग 1200 के दशक में मिलता है। इसका अर्थ था "इस विशेष अवसर के लिए"।

क्रिप्टोग्राफी ने 1978 में नीडहम-श्रोएडर प्रमाणीकरण प्रोटोकॉल के साथ इस शब्द को अपनाया। वहां परिभाषित गुण यादृच्छिकता नहीं है, बल्कि एक परिभाषित दायरे के भीतर विशिष्टता है। विकिपीडिया, वास्तविक अभ्यास को ध्यान में रखते हुए, नॉनस को "एक मनमाना संख्या जिसे क्रिप्टोग्राफिक संचार में केवल एक बार उपयोग किया जा सकता है" कहता है। एक काउंटर, एक टाइमस्टैम्प, एक यादृच्छिक मान या इन तीनों का कोई भी मिश्रण इस श्रेणी में आता है। महत्वपूर्ण बात यह है कि सिस्टम के भीतर, एक ही नॉनस उसी कुंजी के साथ या उसी संदर्भ में कभी दोबारा प्रकट नहीं होता है।

एक शब्द ही सारा काम कर देता है, और काम तीन भागों में बंट जाता है। बिटकॉइन का माइनिंग नॉनस तब तक बदलता रहता है जब तक ब्लॉक हैश कठिनाई लक्ष्य से नीचे नहीं गिर जाता। एथेरियम का अकाउंट नॉनस एक काउंटर है जिसे नेटवर्क दोहराने नहीं देता। सिमेट्रिक एन्क्रिप्शन में क्रिप्टोग्राफिक नॉनस एक कुंजी के साथ जोड़ा गया मान होता है, और इसे एक बार फिर से उपयोग करने से एन्क्रिप्शन टूट जाता है।

यह शब्द अस्पष्ट है। संदर्भ स्पष्ट हैं।

क्रिप्टो में नॉनस

बिटकॉइन माइनिंग में नॉनस कैसे काम करता है

बिटकॉइन में, नॉनस 80-बाइट ब्लॉक हेडर के अंदर 32-बिट फ़ील्ड में मौजूद होता है। यानी चार बाइट्स। इसके मान शून्य से लेकर 4,294,967,295 तक होते हैं। लगभग 4.3 अरब संभावित संख्याएँ, जो सतोशी द्वारा प्रोटोकॉल लिखते समय बहुत बड़ी लगती थीं, लेकिन अब एक डेस्क-आकार के ASIC द्वारा माइक्रोसेकंड में ही संसाधित हो जाती हैं।

माइनिंग एक ऐसी प्रक्रिया है जिसमें उस फ़ील्ड में एक ऐसा मान खोजना होता है जो एक वैध ब्लॉक हैश उत्पन्न करे। 80-बाइट हेडर लें। इसे बिटकॉइन ब्लॉकचेन में उपयोग होने वाले क्रिप्टोग्राफ़िक हैश फ़ंक्शन SHA-256 से दो बार गुजारें। इससे एक 256-बिट संख्या प्राप्त होती है। इस संख्या की तुलना नेटवर्क के कठिनाई लक्ष्य (प्रूफ-ऑफ-वर्क को संचालित करने वाली सर्वसम्मति प्रणाली) द्वारा निर्धारित लक्ष्य हैश से करें। यदि लक्ष्य से कम है, तो ब्लॉक वैध है और माइनर जीत जाता है। यदि लक्ष्य से अधिक है, तो नॉनस को एक से बढ़ाएँ और रीहैश करें। बिटकॉइन माइनर इस प्रक्रिया को तब तक दोहराते हैं जब तक कि कोई वैध नॉनस नहीं मिल जाता और नया ब्लॉक ब्लॉकचेन में जुड़ जाता है।

इतने बड़े काम के लिए इतना छोटा क्षेत्र क्यों? संरचनात्मक कारण। नॉनस (nonce) हेडर का सबसे सस्ता हिस्सा है जिसे माइनर बदल सकता है। बाकी सभी क्षेत्रों की निर्भरताएँ हैं। मर्कल रूट ब्लॉक के लेन-देन का सारांश प्रस्तुत करता है, इसलिए इसे बदलने से नए हैश को आज़माने से पहले पूरे लेन-देन ट्री को फिर से गणना करनी पड़ती है। नॉनस इन सभी प्रक्रियाओं को दरकिनार कर देता है। प्रत्येक हैश प्रयास स्वतंत्र होता है। नॉनस को बढ़ाने से उतना ही फायदा होता है जितना कि किसी यादृच्छिक मान को चुनने से। यह एक तरह का ब्रूट फ़ोर्स है, जिसे आम सहमति की भाषा में प्रस्तुत किया गया है।

यह डिज़ाइन लगभग एक साल तक ठीक चला। फिर ASIC ने इसे तोड़ दिया। आधुनिक माइनर्स 4.3 अरब नॉनस स्पेस को माइक्रोसेकंड में ही खत्म कर देते हैं, सेकंड में नहीं। एक Bitmain Antminer S21 Pro 234 टेराहैश प्रति सेकंड की गति से चलता है। इस हार्डवेयर पर पूरा नॉनस फील्ड लगभग 18 माइक्रोसेकंड में खत्म हो जाता है। मई 2026 तक, बिटकॉइन नेटवर्क का कुल हैशरेट लगभग 996 EH/s था, और डिफिकल्टी 132.47 ट्रिलियन थी। एक अकेला S21 Pro अकेले ही प्रति सेकंड हजारों बार हर संभव नॉनस वैल्यू को प्रोसेस कर लेता है।

सतोशी के प्रोटोकॉल के अनुसार, 32-बिट स्पेस खत्म होने के बाद माइनर के पास दो आसान विकल्प होते हैं। पहला विकल्प है "एक्स्ट्रा नॉनस", जो कॉइनबेस ट्रांजैक्शन के स्क्रिप्टसिग में छिपा होता है। BIP34 इसे कोडिफ़ाई करता है। यह दो से सौ बाइट्स तक का होता है और माइनर द्वारा नियंत्रित होता है। एक्स्ट्रा नॉनस में बदलाव करने पर कॉइनबेस TXID बदल जाता है, मर्कल रूट को दोबारा कंप्यूट करना पड़ता है, ब्लॉक हेडर बदल जाता है और एक नया 32-बिट नॉनस सर्च शुरू हो जाता है। दूसरा विकल्प है टाइमस्टैम्प को बढ़ाना या प्रोटोकॉल की अनुमत सीमा के भीतर वर्जन बिट्स को रोटेट करना। आजकल माइनिंग पूल सामान्य संचालन के हिस्से के रूप में इन सभी को बारी-बारी से करते हैं। नॉनस को एडजस्ट करना सबसे सस्ता बदलाव है। एक्स्ट्रा नॉनस को एडजस्ट करना दूसरा सबसे सस्ता है। मर्कल और टाइमस्टैम्प रोटेशन बाद में आते हैं, क्योंकि इन्हें दोबारा कंप्यूट करने में लगने वाला काम लागत के आधार पर अलग-अलग होता है।

जब कोई व्यक्ति लक्ष्य से नीचे का हैश प्राप्त कर लेता है - जिसे माइनर "गोल्डन नॉनस" कहते हैं - तो नया ब्लॉक पीयर-टू-पीयर नेटवर्क पर फैल जाता है, और प्रत्येक प्रतियोगी अपनी वर्तमान खोज को रोककर अगले दौर में फिर से शुरू करता है।

एएसआईसी मॉडल हैशरेट 32-बिट नॉनस को समाप्त करने का समय आ गया है क्षमता
एंटमाइनर एस21 200 थाई/एस ~21 µs 17.5 J/TH
एंटमाइनर एस21 प्रो 234 हजार/एस ~18 µs 15 जे/टीएच
एंटमाइनर S21 XP 270 हजार/एस ~16 µs 13.5 J/TH

एक हालिया वास्तविक उदाहरण इस अवधारणा को पुष्ट करता है। ब्लॉक 948,000, जिसे 2026 की शुरुआत में माइन किया गया था, का ब्लॉक हैश `00000000000000000001b01841afc366a4f999b291c8563ee0d0db956fc2db44` है और इसका विजेता नॉनस मान 2,582,463,598 है। इस एकल पूर्णांक को ब्लॉक हेडर के शेष भाग के साथ मिलाकर एक ऐसा हैश प्राप्त हुआ जो इतना कम था कि उसे ब्लॉकचेन में जोड़ा जा सके। उस दौर में इसके माइनर द्वारा प्रयास किए गए प्रत्येक अन्य नॉनस का मान बहुत अधिक था।

यह है प्रूफ ऑफ वर्क, तकनीकी रूप से। यह कोई पहेली नहीं है। बल्कि एक वैध नॉनस की खोज है, जिसके लिए बिजली का भुगतान किया जाता है।

हैश नॉनस बनाम अकाउंट नॉनस: एक ही शब्द, अलग-अलग कार्य

क्रिप्टोकरेंसी में "नॉनस" शब्द का इस्तेमाल एक और चीज़ के लिए किया जाता है, और यही समानता नए उपयोगकर्ताओं के बीच भ्रम का सबसे बड़ा कारण है। बिटकॉइन का माइनिंग नॉनस एक सर्च वेरिएबल है। एथेरियम का अकाउंट नॉनस एक काउंटर है। नाम के अलावा इनमें लगभग कोई समानता नहीं है।

हैश नॉनस (बिटकॉइन) खाता नॉनस (एथेरियम)
काम लक्ष्य से नीचे एक वैध हैश खोजें प्रत्येक खाते के लिए आउटबाउंड लेनदेन को क्रमबद्ध करें
जहां यह रहता है ब्लॉक हेडर (32 बिट) खाते की स्थिति (पूर्ण पूर्णांक, 0 से शुरू)
इसे कौन उत्परिवर्तित करता है? हार्डवेयर में माइनर प्रति सेकंड अरबों की संख्या में डेटा ट्रांसफर करता है। वॉलेट स्वचालित रूप से, प्रति प्रेषण एक बार में एक बार काम करता है।
"गलत" का अर्थ क्या है? लॉटरी टिकट विफल रहा, अगले नॉनस को आजमाएं लेनदेन अस्वीकृत हो गया है या अटक गया है
आम सहमति से जुड़ा हुआ? हां, यह काम का प्रमाण है। नहीं, यह रीप्ले प्रोटेक्शन है।

हैश नॉनस एक अस्थायी संख्या होती है जिसे माइनर हटा देता है। अकाउंट नॉनस एक स्थायी स्थिति होती है जो नेटवर्क में आपके पते के रूप में दर्ज हो जाती है। इन दोनों को एक-दूसरे से भ्रमित करना - बिटकॉइन ब्लॉक के ब्लॉकचेन नॉनस को सीक्वेंस काउंटर की तरह समझना - इसी वजह से लोग एथेरियम के "नॉनस बहुत कम" एरर को पढ़कर यह मान लेते हैं कि उनका माइनिंग सेटअप खराब हो गया है। अलग-अलग ब्लॉकचेन, अलग-अलग काम, लेकिन शब्द एक ही है। यहां तक कि एक ही इकोसिस्टम के भीतर भी, ब्लॉकचेन संचालन में नॉनस की भूमिका पूरी तरह इस बात पर निर्भर करती है कि आप कंसेंसस लेयर देख रहे हैं या अकाउंट लेयर।

एथेरियम खाता नॉनस और अटके हुए लेनदेन की समस्या

एथेरियम पर प्रत्येक बाहरी स्वामित्व वाले खाते का अपना नॉनस होता है। यह काउंटर शून्य से शुरू होता है, यानी जब पता पहली बार कोई लेनदेन भेजता है। इसके बाद, ब्लॉक में आने वाले प्रत्येक लेनदेन के लिए यह एक-एक करके बढ़ता जाता है। जब आप कुछ भेजते हैं, तो आपका वॉलेट नेटवर्क से वर्तमान मान पूछता है, उसमें अगला नंबर जोड़ता है और हस्ताक्षर करता है। नेटवर्क केवल निर्धारित क्रम में ही आउटबाउंड लेनदेन स्वीकार करता है। नॉनस 0, फिर 1, फिर 2। बीच में अंतराल की अनुमति नहीं है।

यह सख्त क्रमबद्धता ही एथेरियम को रीप्ले सुरक्षा प्रदान करती है। एक हस्ताक्षरित लेनदेन एक विशिष्ट नॉनस से बंधता है, और EIP-155 के बाद से, एक विशिष्ट चेन आईडी से भी बंधता है। कोई हमलावर पुराने निष्पादित लेनदेन को नए लेनदेन के रूप में पुनः प्रसारित नहीं कर सकता। जब तक पुनः प्रसारण पहुंचता है, खाता नॉनस पहले ही उससे आगे बढ़ चुका होता है। चेन आईडी एक ही बार में क्रॉस-चेन रीप्ले को समाप्त कर देती है। एक ही चेन के भीतर, एक पुष्ट लेनदेन एक काउंटर पर एक बिंदु पर बना रहता है जो पहले ही आगे बढ़ चुका होता है।

यही कठोर क्रम प्रणाली नई एथेरियम वॉलेट्स के लिए परेशानी का सबब बन जाती है। एक लेन-देन बहुत कम टिप के साथ होता है। वैलिडेटर उसे अस्वीकार कर देते हैं। मेमोरी पूल उसे प्राथमिकता कतार से हटा देता है। अब लेन-देन अधर में लटका रहता है - न तो पुष्टि होती है, न ही विफलता, बस अटका हुआ। इससे भी बुरा यह है कि उसी पते से हस्ताक्षरित प्रत्येक बाद के लेन-देन को उच्च नॉनस मिलता है। नेटवर्क इनमें से किसी को भी तब तक नहीं छूता जब तक कि अटका हुआ लेन-देन या तो पुष्टि न हो जाए या उसे बदल न दिया जाए। एक धीमा लेन-देन पूरी कतार को रोक देता है।

इसका समाधान 'रिप्लेस-बाय-फी' नामक एक मैकेनिज़्म में निहित है। आपका वॉलेट अटके हुए ट्रांज़ैक्शन के समान नॉनस पर एक नया ट्रांज़ैक्शन पुनः प्रसारित करता है, लेकिन अधिक गैस के साथ। EIP-1559, गैस-प्राइसिंग मॉडल जो अगस्त 2021 में लंदन अपग्रेड के बाद से एथेरियम को संचालित कर रहा है, यह नियम निर्धारित करता है: नए ट्रांज़ैक्शन को मूल ट्रांज़ैक्शन की तुलना में `maxFeePerGas` और `maxPriorityFeePerGas` दोनों को कम से कम दस प्रतिशत बढ़ाना होगा। क्या आप अटके हुए ट्रांज़ैक्शन को बदलने के बजाय उसे पूरी तरह से समाप्त करना चाहते हैं? अटके हुए नॉनस पर शून्य-ETH का सेल्फ-ट्रांसफर भेजें, जिसमें अधिक टिप हो। स्लॉट स्वयं उपयोग हो जाता है, और कतार में मौजूद सभी बाद के ट्रांज़ैक्शन अनब्लॉक हो जाते हैं।

संदर्भ के लिए, मई 2026 के आंकड़े देखें। प्राथमिकता टिप का औसत लगभग 1.875 ग्वाई है। एक सामान्य 21,000 गैस रद्द करने पर सामान्य दिनों में लगभग $0.05 का शुल्क लगता है, और भीड़भाड़ के दौरान यह शुल्क काफी कम हो जाता है। एक बात जो हर कोई अंततः सीखता है, वह यह है कि हमेशा सबसे कम लंबित लेनदेन को पहले रद्द करें। जब पिछला लेनदेन अभी भी लंबित हो, तो बाद के लेनदेन पर शुल्क बढ़ाना व्यर्थ है।

अकाउंट एब्स्ट्रैक्शन इस कहानी को थोड़ा नया रूप देता है। ERC-4337 स्मार्ट अकाउंट 2D नॉनस का उपयोग करते हैं, जो पूर्णांक को 192-बिट "कुंजी" और 64-बिट अनुक्रम में विभाजित करता है। अलग-अलग कुंजियाँ समानांतर लेनदेन स्ट्रीम बनाती हैं। एक कुंजी पर रुका हुआ बैच दूसरी कुंजी पर काम को बाधित नहीं करता है। अकाउंट नॉनस अंततः एक एकल रैखिक काउंटर से आगे बढ़ गया है।

एक और भ्रम जिसे दूर करना ज़रूरी है। सितंबर 2022 में मर्ज के दौरान एथेरियम के प्रूफ ऑफ स्टेक में परिवर्तन से अकाउंट नॉनस नहीं हटा। ब्लॉक हेडर के अंदर मौजूद माइनिंग नॉनस गायब हो गया, क्योंकि अब वैलिडेटर्स को हैश पज़ल के बजाय स्लॉट के आधार पर चुना जाता है। अकाउंट नॉनस वहीं मौजूद रहा जहां वह हमेशा से था, यानी अकाउंट स्टेट ट्राई में।

एन्क्रिप्शन में क्रिप्टोग्राफिक नॉनस: विनाशकारी संस्करण

ब्लॉकचेन से बाहर निकलें तो क्रिप्टोग्राफिक नॉनस कहीं अधिक सटीक काम करता है। अगर आप इसमें गलती करते हैं, तो सब कुछ धराशायी हो जाएगा।

हर आधुनिक प्रमाणित सिफर एक गुप्त कुंजी को प्रति-संदेश नॉनस के साथ जोड़ता है। TLS 1.3 में मुख्य रूप से इस्तेमाल होने वाला AES-GCM 96 बिट्स का उपयोग करता है। NIST SP 800-38D ने इसका विनिर्देश लिखा था। ChaCha20-Poly1305, जो RFC 8439 (जून 2018) में संहिताबद्ध एक वैकल्पिक प्रणाली है, उसी 96-बिट नॉनस लंबाई को कॉपी करता है और इसे 256-बिट कुंजी के साथ जोड़ता है। सरल शब्दों में, दोनों में नियम यह है: प्रत्येक (कुंजी, नॉनस) जोड़ी केवल एक बार चलती है। पुन: उपयोग कोई मामूली कमी नहीं है। यह एक गंभीर समस्या है।

समस्या क्या है? AES-GCM में एक ही कुंजी के अंतर्गत एक नॉनस का पुनः उपयोग करें। मान लीजिए कि हमलावर ने दोनों सिफरटेक्स्ट प्राप्त कर लिए हैं। वे दोनों का XOR करते हैं। इससे दोनों मूल प्लेनटेक्स्ट का XOR प्राप्त होता है। गोपनीयता एक ही झटके में समाप्त हो जाती है। स्थिति और भी खराब हो जाती है। GCM का प्रमाणीकरण मोड अपनी आंतरिक प्रमाणीकरण सबकी (वह मान जो उस कुंजी के अंतर्गत प्रत्येक सिफरटेक्स्ट को हस्ताक्षरित करता है) लीक कर देता है। सबकी प्राप्त होने पर, हमलावर नए प्रमाणित सिफरटेक्स्ट लिखता है और वैध प्राप्तकर्ता उन्हें वास्तविक मान लेता है। एक अत्याधुनिक सिफर, एक गलत नॉनस के कारण, सीज़र शिफ्ट से भी नीचे गिर जाता है।

इनमें से कोई भी बात काल्पनिक नहीं है। 2016 में प्रकाशित USENIX WOOT के एक शोध पत्र, "Nonce-Disrespecting Adversaries" में उत्पादन HTTPS एंडपॉइंट्स की जांच की गई और 184 ऐसे सर्वर पाए गए जो GCM nonces का पुन: उपयोग कर रहे थे। इन दोषपूर्ण बिल्ड्स में विशिष्ट Cisco IOS XE इमेज और Radware ADC फर्मवेयर शामिल थे। CVE-2016-0270 और कई संबंधित CVE इन्हें ट्रैक करते हैं।

दिसंबर 2010 में सोनी के PS3 में हुई सेंधमारी, एक अलग सिफर (ECDSA) का इस्तेमाल करके इसी तरह की समस्या को उजागर कर रही थी। हर ECDSA सिग्नेचर के लिए एक सिग्नेचर-आधारित मान ( k) की आवश्यकता होती है, जो अद्वितीय और गुप्त होता है। सोनी के साइनिंग कोड में इस अद्वितीयता वाले हिस्से को छोड़ दिया गया था। इसमें k को एक स्थिर मान के रूप में हार्डकोड किया गया था और हर सिग्नेचर पर इसका दोबारा इस्तेमाल किया गया था। अगर हमलावर को अलग-अलग संदेशों पर समान k वाले दो ECDSA सिग्नेचर दिए जाएं, तो उनके पास दो अज्ञात राशियों वाले दो रैखिक समीकरण होंगे। हल करने पर, निजी साइनिंग कुंजी, गुप्त रूप में, प्राप्त हो जाती है। fail0verflow ने बर्लिन में 27वें Chaos Communication Congress में मंच पर इस प्रक्रिया को समझाया। सोनी की मास्टर साइनिंग कुंजी कुछ ही घंटों में खुले इंटरनेट पर लीक हो गई। अब तक बने हर PS3 ने एक साथ अपनी भरोसे की श्रृंखला खो दी।

2013 में RFC 6979 के रूप में संहिताबद्ध नियतात्मक समाधान, प्रक्रिया से यादृच्छिक संख्या जनरेटर को हटा देता है। संदेश और निजी कुंजी के HMAC से k प्राप्त करें। समान संदेश, समान कुंजी, समान k — RNG के दूषित होने का कोई खतरा नहीं। आधुनिक बिटकॉइन लाइब्रेरी डिफ़ॉल्ट रूप से नियतात्मक ECDSA प्रदान करती हैं।

इन कहानियों से दो निष्कर्ष निकलते हैं, जो अक्सर डेवलपर्स को भ्रमित करते हैं। AEAD सिफर (AES-GCM, ChaCha20-Poly1305) के साथ, एक अनुमानित नॉनस ठीक है। काउंटर काम करता है। विशिष्टता ही पूरी आवश्यकता है। ECDSA और श्नोर हस्ताक्षरों के साथ, नियम उलट जाता है। एक अनुमानित k विनाशकारी हो सकता है। वहां हस्ताक्षर करने वाले नॉनस को एक ही समय में अद्वितीय, अप्रत्याशित और गुप्त होना चाहिए। इन दोनों तरीकों को मिलाने से ही कस्टम वॉलेट कोड में नॉनस-रियूज़ बग्स बार-बार सामने आते हैं। कोपिया बैकअप प्रोजेक्ट के 2024 ऑडिट में लंबे समय तक चलने वाली कुंजियों पर एक यादृच्छिक GCM-नॉनस टकराव जोखिम दर्ज किया गया था, और नए SDK पर पेंटेस्टिंग रिपोर्ट में महीने दर महीने इसी तरह के निष्कर्ष सामने आते हैं।

नॉनस बनाम साल्ट बनाम IV: तीन-तरफ़ा भ्रम से बचना

सुरक्षा संबंधी लिखित रिपोर्टों में लोग तीन शब्दों का इस्तेमाल इस तरह करते हैं मानो उनका अर्थ एक ही हो। साल्ट। नॉनस। IV। ये पर्यायवाची नहीं हैं।

पासवर्ड हैशिंग में सॉल्ट का उपयोग होता है। इसमें प्रत्येक उपयोगकर्ता के लिए एक यादृच्छिक मान लिया जाता है, उसे हैश में मिलाया जाता है, और फिर "password123" के लिए पहले से तैयार की गई रेनबो टेबल आपके डेटाबेस पर काम करना बंद कर देती हैं। सॉल्ट, हैश के साथ ही सादे टेक्स्ट में मौजूद होता है। इसे कोई छिपाता नहीं है। दो उपयोगकर्ताओं द्वारा एक ही सॉल्ट का उपयोग करना जोखिम भरा हो सकता है; इससे हमलावर को एक पासवर्ड क्रैक करने पर दूसरे पासवर्ड को भी क्रैक करने का खतरा रहता है। हालांकि, यह कोई बहुत बड़ी समस्या नहीं है।

नॉनस का संबंध मैसेजिंग और सिग्नेचर से है। सिमेट्रिक एन्क्रिप्शन में यह प्रति-मैसेज होता है। ECDSA में यह प्रति-सिग्नेचर होता है। AES-GCM जैसे AEAD सिफर नॉनस को स्पष्ट रूप से उजागर करते हैं, ठीक वैसे ही जैसे हैश के बगल में सॉल्ट होता है। ECDSA इसे छुपाता है, इसे एक रहस्य की तरह मानता है और हर बार नई रैंडमनेस की मांग करता है। दोनों ही मामलों में, टकराव मामूली बात नहीं है। यह घातक होता है। पूरी गारंटी खत्म हो जाती है।

IV — जो इनिशियलाइज़ेशन वेक्टर का संक्षिप्त रूप है — नए स्पेसिफिकेशन्स में नॉनस के लिए इस्तेमाल होने वाला पुराना नाम है। CBC और CTR मोड कई सालों से इस शब्द का इस्तेमाल करते आ रहे हैं। आधुनिक AEAD डॉक्यूमेंटेशन ने इसे बदल दिया, मुख्य रूप से इसलिए क्योंकि "वेक्टर" गणितीय होमवर्क जैसा लगता था और लोग इसका बार-बार इस्तेमाल करते रहते थे। "नॉनस" नियम पर अधिक ज़ोर देता है।

क्या आपको एक ऐसा नियम चाहिए जो एक स्टिकी नोट पर फिट हो जाए? एक नियम आपके द्वारा सहेजे जा रहे रहस्य की रक्षा करता है। एक नियम आपके द्वारा भेजे जा रहे रहस्य की रक्षा करता है।

क्रिप्टो में नॉनस

बिटकॉइन माइनिंग से जुड़ी रोचक जानकारियों के अलावा नॉनस का महत्व क्यों है?

नॉनस एक छोटा ऑब्जेक्ट होता है। बिटकॉइन में यह बत्तीस बिट्स का होता है। एथेरियम में यह एक काउंटर होता है। एईएस-जीसीएम में यह बारह बाइट्स का होता है। अपने आकार के हिसाब से इसका महत्व कहीं अधिक है। आम उपयोगकर्ताओं के लिए, एथेरियम का हर रुका हुआ लेनदेन, किसी बैंकिंग साइट से होने वाला हर टीएलएस हैंडशेक, और हार्डवेयर वॉलेट द्वारा उत्पन्न हर हस्ताक्षर, नॉनस के सही ढंग से हैंडल होने पर निर्भर करता है। डेवलपर्स के लिए, नॉनस की गलत हैंडलिंग कस्टम क्रिप्टोग्राफिक कोड में गंभीर बग्स का सबसे आम कारण है। पीएस3 की घटना एक चरम उदाहरण थी, लेकिन यही खामी नए वॉलेट एसडीके और बैकअप टूल्स में भी दिखाई देती रहती है। बिटकॉइन की अर्थव्यवस्था के लिए, 32-बिट नॉनस और अतिरिक्त नॉनस की कार्यप्रणाली ने ही एएसआईसी माइनिंग को एक निष्पक्ष लॉटरी बना दिया था। यह सतोशी के सबसे महत्वपूर्ण डिज़ाइन विकल्पों में से एक है, जो एक साधारण से हेडर फ़ील्ड में स्पष्ट रूप से छिपा हुआ है।

नॉनस वह चीज़ है जो बताती है कि यह घटना एक बार, इसी क्रम में, बिल्कुल इसी तरह घटी । इसे हटा दें, तो विशिष्टता पर निर्भर हर प्रणाली ध्वस्त हो जाती है और हमलावर इसे आसानी से दोबारा बना सकता है। आम सहमति टूट जाती है। रीप्ले सुरक्षा खत्म हो जाती है। एन्क्रिप्शन लीक हो जाता है। हस्ताक्षर जाली हो जाते हैं।

कोई प्रश्न?

दोनों के लिए हाँ, अलग-अलग तरीकों से। सोलाना खाता-स्तर के नॉनस को बनाए रखता है और ऑफ़लाइन हस्ताक्षर के लिए टिकाऊ नॉनस खाते जोड़ता है। प्रूफ-ऑफ-स्टेक एथेरियम ने सितंबर 2022 के विलय के बाद खाता नॉनस को बनाए रखा, लेकिन ब्लॉक हेडर से माइनिंग नॉनस को हटा दिया, क्योंकि अब वैलिडेटर्स को हैश पज़ल के बजाय स्लॉट द्वारा चुना जाता है।

एथेरियम पर, एकमात्र तरीका रिप्लेस-बाय-फी है, जिसमें अधिक गैस शुल्क का भुगतान करके जानबूझकर एक अपुष्ट लेनदेन को उसी नॉनस पर दूसरे से बदल दिया जाता है। पुष्टि होने के बाद, दो लेनदेन कभी भी एक ही खाते पर नॉनस साझा नहीं कर सकते। एक कुंजी के तहत एईएस-जीसीएम में, नॉनस साझा करना पूरी तरह से प्रतिबंधित है। इसका पुन: उपयोग गोपनीयता और प्रमाणीकरण दोनों को एक साथ भंग कर देता है।

शुल्क के आधार पर प्रतिस्थापन प्रक्रिया चलाएँ। अटके हुए लेनदेन के समान नॉनस पर एक नया लेनदेन सबमिट करें, जिसमें `maxFeePerGas` और `maxPriorityFeePerGas` को दस प्रतिशत या उससे अधिक बढ़ा दिया गया हो। प्रतिस्थापन के बजाय रद्द करने के लिए, अटके हुए नॉनस पर अपने पते पर शून्य-मूल्य का हस्तांतरण भेजें, जिसमें अधिक टिप हो। हमेशा सबसे कम लंबित नॉनस को पहले प्रतिस्थापित करें।

तीन कार्य, एक मूल विचार। नॉनस (nonce) विशिष्टता सुनिश्चित करता है ताकि एक ही ऑपरेशन दोबारा न हो सके। यह खाता-आधारित बहीखातों में लेन-देन को क्रमबद्ध करता है। और यह वह खोज चर है जिसे खनिक प्रूफ-ऑफ-वर्क में वैध हैश की खोज करते समय समायोजित करते हैं। अलग-अलग कार्यप्रणाली, एक ही उद्देश्य: प्रत्येक घटना को दूसरी घटना से अलग बनाना।

यह वाक्यांश आमतौर पर खाता-स्तर या प्रमाणीकरण नॉनस को इंगित करता है। एक ऐसे एकल-उपयोग मान की कल्पना करें जो किसी सत्र, लेनदेन या एपीआई अनुरोध से जुड़ा हो, ताकि अनुरोध को दोबारा न चलाया जा सके। यहां "टोकन" का अर्थ ERC-20 नहीं है। OAuth और OpenID Connect दोनों ही अपने प्रमाणीकरण प्रवाह के दौरान नॉनस टोकन पर निर्भर करते हैं।

"नॉनस" शब्द का अर्थ है एक ऐसी संख्या जिसका उपयोग किसी विशिष्ट क्रिप्टोग्राफिक दायरे में केवल एक बार किया जाता है। बिटकॉइन में इसका उपयोग 32-बिट सर्च फ़ील्ड के रूप में किया जाता है, जिसका उपयोग माइनर वैध हैश खोजने के लिए करता है। एथेरियम में इसका उपयोग काउंटर के रूप में किया जाता है जो एक खाते के लिए आउटबाउंड लेनदेन को क्रमबद्ध करता है। एन्क्रिप्शन में इसका उपयोग प्रति-संदेश मान के रूप में किया जाता है, जो कुंजी के साथ मिलकर कभी दोहराया नहीं जाना चाहिए।

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.