ईसीडीएसए में निजी कुंजी जाने बिना हस्ताक्षर करें

इस पोस्ट को पहली बार प्रकाशित किया गया था मध्यम.

हम प्रदर्शित करते हैं कि वैध हस्ताक्षर कैसे तैयार किया जाए बिना एलिप्टिक कर्व डिजिटल सिग्नेचर एल्गोरिथम (ईसीडीएसए) का उपयोग करके निजी कुंजी जानना।

ईसीडीएसए पर हस्ताक्षर

इस प्रकार ऐलिस के पास एक निजी कुंजी है (d) और एक सार्वजनिक कुंजी (क्यू = डीजी). वह एक संदेश पर हस्ताक्षर करती है (m) निम्नलिखित चरणों के साथ:

  1. संदेश को हैश करें: एच = हैश(एम).
  2. एक यादृच्छिक संख्या बनाएँ k और गणना करें आर = केजी। खोज Rका x-समन्वय है r.
  3. गणना एस = (एच + आरडी)/के.

हस्ताक्षर जोड़ी है (आर, एस)। दोनों r और s केवल अदिश संख्याएँ हैं।

निजी चाबी

निजी कुंजी जाने बिना हस्ताक्षर करें

परंपरागत रूप से, ऐलिस को अपनी सार्वजनिक कुंजी के विरुद्ध वैध हस्ताक्षर उत्पन्न करने के लिए एक निजी कुंजी को जानना होगा। उल्लेखनीय रूप से, निजी कुंजी को जाने बिना एक वैध हस्ताक्षर निम्नानुसार तैयार किया जा सकता है:

  1. एक यादृच्छिक संख्या उत्पन्न करें r. अगर कोई मतलब नहीं है R के साथ वक्र पर r इसके x-निर्देशांक के रूप में, बस इसका एक और मान आज़माएँ r.
  2. एक यादृच्छिक संख्या उत्पन्न करें s.
  3. सार्वजनिक कुंजी के लिए हल करें क्यू = (एसआर - एचजी)/आर.

(आर, एस) सार्वजनिक कुंजी क्यू और संदेश एम के लिए एक वैध हस्ताक्षर है। इसका कारण जानने के लिए, हम निष्कर्ष निकाल सकते हैं Q के रूप में इस प्रकार है:

एस = (एच + आरडी)/के
एसके = एच + आरडी
एसकेजी = एचजी + आरडीजी
एसआर = एचजी + आरक्यू
क्यू = (एसआर - एचजी)/आर

हम फोन करते हैं Q a बिना चाबी सार्वजनिक कुंजी, क्योंकि यह किसी ज्ञात निजी कुंजी से प्राप्त नहीं हुई है। अनुबंध में, आइए हम सार्वजनिक कुंजी को कॉल करें बंद यदि यह किसी ज्ञात निजी कुंजी से प्राप्त हुआ है, जैसा कि आमतौर पर किया जाता है।

ध्यान दें कि पहले एक हस्ताक्षर तैयार किया जाता है से पहले एक सार्वजनिक कुंजी निकाली जाती है, जो नियमित ईसीडीएसए हस्ताक्षर के विपरीत है।

निहितार्थ

यदि कोई सार्वजनिक कुंजी बिना चाबी के उत्पन्न की जाती है, तो केवल इसे उत्पन्न करने वाला व्यक्ति ही इसके विरुद्ध वैध हस्ताक्षर प्रस्तुत कर सकता है, हस्ताक्षर के साथ और हैश एच के साथ संदेश. हस्ताक्षर और संदेश संयुक्त रूप से यहां निजी कुंजी के रूप में कार्य करते हैं, जो मौजूद है लेकिन है अज्ञात. नोट संदेश हैश h का उपयोग किया जाता है और इस प्रकार गणना करने में प्रतिबद्ध होता है Q, मतलब हस्ताक्षर है केवल एम के लिए मान्य है, लेकिन किसी अन्य संदेश के लिए नहीं। सार्वजनिक कुंजी के विरुद्ध हस्ताक्षर को सत्यापित करने के लिए हस्ताक्षर और संदेश दोनों की आवश्यकता होती है।

बिना चाबी बनाम बिना चाबी वाली कुंजी

कुंजीयुक्त सार्वजनिक कुंजी की निजी कुंजी ज्ञात होती है, जबकि बिना कुंजी वाली सार्वजनिक कुंजी अज्ञात होती है। कुंजीयुक्त परिदृश्य में, सार्वजनिक कुंजी हस्ताक्षर से पहले ज्ञात होती है, जबकि बिना कुंजी वाले परिदृश्य में यह विपरीत होता है।

किसी सार्वजनिक कुंजी को देखकर अकेला, यह निर्धारित नहीं किया जा सकता कि यह बिना चाबी वाला है या बिना चाबी वाला।

भले ही एक हस्ताक्षर के लिए खुलासा किया गया हो एक संदेश, यह तय करना असंभव है कि सार्वजनिक कुंजी बिना चाबी के है या नहीं क्योंकि हस्ताक्षर निजी कुंजी से आ सकते हैं या पहले से उत्पन्न हो सकते हैं।

हालाँकि, यदि ऐलिस बॉब द्वारा चुने गए संदेश के विरुद्ध हस्ताक्षर कर सकती है, तो इसकी अत्यधिक संभावना है कि वह निजी कुंजी जानती है क्योंकि वह सार्वजनिक कुंजी में किए गए संदेश को पहले से नहीं जानती है और वैध हस्ताक्षर उत्पन्न नहीं कर सकती है।

यदि दो अलग-अलग संदेशों के लिए हस्ताक्षर हैं, भले ही दोनों ऐलिस द्वारा चुने गए हों, तो हम सुनिश्चित हो सकते हैं कि सार्वजनिक कुंजी कुंजीबद्ध है।

बिटकॉइन में उपयोग करें

यह आरोप लगाया गया है कि सार्वजनिक कुंजी (के रूप में निरूपित करें Q₀) बिटकॉइन के जेनेसिस में कॉइनबेस लेनदेन बिना चाबी के होता है। यदि हां, तो जिसके पास हस्ताक्षर है वह एक संदेश पर हस्ताक्षर कर सकता है, जिसका उपयोग गणना करते समय किया जाता है Q₀. वह किसी अन्य संदेश पर हस्ताक्षर नहीं कर सकता.

हालाँकि, हस्ताक्षर केवल ऑफ-चेन मान्य है, लेकिन ऑन-चेन नहीं. उस Q₀ पर भेजे गए सिक्कों को ऐसे हस्ताक्षर के साथ खर्च नहीं किया जा सकता है, जिसमें जेनेसिस ब्लॉक के बाद भेजे गए सिक्के भी शामिल हैं। यह भी देखने के लिए कि क्यों, हमें यह देखना होगा कि संदेश क्या है m लेन-देन बनाते समय हस्ताक्षरित किया जाता है। इसमें मूल रूप से वर्तमान व्यय लेनदेन और खर्च किया जा रहा आउटपुट शामिल है। आउटपुट में शामिल है Q₀ इसके लिपि भाग में, अर्थ m पर निर्भर करता है Q₀. हालांकि, Q₀ स्वयं पर निर्भर करता है hmका हैश. यह चक्रीय निर्भरता (प्राप्त करने के लिए) Q₀, आप की जरूरत है m पहला; लेकिन पाने के लिए m, आप की जरूरत है Q₀ पहला), एक हस्ताक्षर के समान जो बिटकॉइन में स्वयं हस्ताक्षर नहीं कर सकता, उत्पन्न होने से रोकता है Q₀.

ध्यान दें कि यह न केवल बिटकॉइन में किसी भी सार्वजनिक कुंजी पर लागू होता है Q₀.

कार्यान्वयन

नीचे एक पूर्ण कामकाजी उदाहरण दिया गया है जहां निजी कुंजी को जाने बिना हस्ताक्षर तैयार किया जाता है।

इसे कोई भी चला सकता है और स्वतंत्र रूप से सत्यापित कर सकता है। एक परीक्षण रन नीचे दिखाया गया है.

बैकएंड में कोडबैकएंड में कोड

संदर्भ

  1. ब्लेक, आईएफ, सेरूसी, जी. और स्मार्ट, एनपी (संस्करण) (2005) एलिप्टिक कर्व क्रिप्टोग्राफी में प्रगति. कैम्ब्रिज: कैम्ब्रिज यूनिवर्सिटी प्रेस (लंदन गणितीय सोसायटी व्याख्यान नोट श्रृंखला)।
  2. ग्राफ़ क्रेडिट: बुकानन, विलियम जे (2024)। एलिप्टिक कर्व डिजिटल सिग्नेचर एल्गोरिथम (ईसीडीएसए)। Asecuritysite.com। https://asecuritysite.com/ecdsa/ecdsa2

***

[1] जेनेसिस ब्लॉक में कॉइनबेस आउटपुट खर्च नहीं किया जा सकता है, भले ही इसमें सार्वजनिक कुंजी कुंजी हो, क्योंकि यह यूटीएक्सओ सेट में शामिल नहीं है। https://gist.github.com/msinkec/5eaf5aa97ed0f5e8d66e7e32fd8b1a0a

देखें: डिजिटल पहचान, डिजिटल संपत्तियां Web3 को सक्षम बनाती हैं

यूट्यूब वीडियोयूट्यूब वीडियो

ब्लॉकचेन पर नए हैं? ब्लॉकचेन तकनीक के बारे में अधिक जानने के लिए कॉइनगीक के ब्लॉकचेन फॉर बिगिनर्स सेक्शन को देखें, जो अंतिम संसाधन मार्गदर्शिका है।

स्रोत: https://coingeek.com/sign-without-knowing-the-private-key-in-ecdsa/