Monday, August 1, 2022

बिटकॉइन ब्लॉकचेन पर ईसीडीएसए में एक कमजोर लेनदेन और लैटिस अटैक की मदद से हमें बीटीसी सिक्कों की एक निजी कुंजी प्राप्त हुई

 


हम ग्रिड हमले के बारे में क्या जानते हैं?

आरंभ करने के लिए,  अंडाकार वक्र डिजिटल हस्ताक्षर एल्गोरिदम (ECDSA)  एक सामान्य डिजिटल हस्ताक्षर योजना है जिसे हम अपनी कई कोड समीक्षाओं में देखते हैं। इसमें कुछ वांछनीय गुण हैं, लेकिन एक साइड-चैनल हमले के साथ निजी कुंजी को पुनर्प्राप्त करने के लिए बहुत नाजुक भी हो सकता है जो गुप्त गैर के एक बिट से भी कम का खुलासा करता है।

ECDSA डिजिटल सिग्नेचर एल्गोरिथम का एक विशेष रूप है  (DSA)। DSA एक काफी सामान्य डिजिटल हस्ताक्षर योजना है, जिसे तीन एल्गोरिदम द्वारा परिभाषित किया गया है: कुंजी पीढ़ी, हस्ताक्षर और सत्यापन। कुंजी पीढ़ी एल्गोरिथ्म निजी और सार्वजनिक कुंजी उत्पन्न करता है;  निजी कुंजी हस्ताक्षर बनाने के लिए जिम्मेदार है;  और सार्वजनिक कुंजी हस्ताक्षरों को सत्यापित करने के लिए जिम्मेदार है।  हस्ताक्षर एल्गोरिथ्म इनपुट के रूप में एक संदेश और एक निजी कुंजी लेता है और एक हस्ताक्षर उत्पन्न करता है। सत्यापन एल्गोरिथ्म इनपुट के रूप में एक संदेश, एक हस्ताक्षर और एक सार्वजनिक कुंजी लेता है और  true या  का मान देता है false, यह दर्शाता है कि हस्ताक्षर वैध है या नहीं।

DSA किसी भी गणितीय समूह के लिए परिभाषित किया गया है, और यह योजना तब तक सुरक्षित है जब तक उस समूह के लिए असतत लघुगणक समस्या कठिन है। आमतौर पर इस्तेमाल किया जाने वाला समूह पूर्णांक मॉड्यूलो एक अभाज्य संख्या p है।

इस समूह के साथ हमारे पास एक समूह जनरेटर जी और कुछ क्रिप्टोग्राफिक रूप से सुरक्षित  हैश  फ़ंक्शन  होगा H। हम यह मान सकते हैं  p , g और  H सामान्य ज्ञान होगा।

मुख्य पीढ़ी पहले यादृच्छिक रूप  x से मॉड्यूलो पूर्णांक से  एक मान का चयन करके काम करती है p । फिर मूल्य की गणना की जाती है y = g^x mod p

हस्ताक्षर की निजी कुंजी है  x , और सार्वजनिक कुंजी है  y । हस्ताक्षर कुंजी को गुप्त रखा जाना चाहिए, क्योंकि यह वही है जो हस्ताक्षर करने की अनुमति देता है।

हस्ताक्षर एल्गोरिथ्म संदेश  m और गुप्त कुंजी x से एक हस्ताक्षर बनाता है। सबसे पहले, एक यादृच्छिक समूह तत्व उत्पन्न होता है  k । इसे एक गैर के रूप में जाना जाता है, जो हमलों के लिए महत्वपूर्ण है।

फिर मूल्यों की गणना की जाती है  r = g^k mod p और s = ( k^-1 ( H ( m ) + xr )) mod p

यहां  k^- 1 , उलटा समूह  H ( m ) है, और हैश एम की गणना करने और परिणाम को पूर्णांक मॉड्यूल पी के रूप में व्याख्या करने का परिणाम है।

हस्ताक्षर की एक जोड़ी के रूप में परिभाषित किया गया है  ( r , s )। (नोट: यदि  r या  मानों sमें से एक के बराबर है  0, तो एल्गोरिथम के नए मान के साथ पुनरारंभ होता है  k )।

सत्यापन एल्गोरिथ्म इनपुट के रूप में एक हस्ताक्षर  ( r , s ), एक संदेश  m और एक सार्वजनिक कुंजी y प्राप्त करता है। चलो  ŝ = s^-1 , फिर एल्गोरिथ्म सच हो जाता है अगर और केवल अगर  r , s ≠ 0 и r = ( g H ( m ) y r ) ŝ ।

यह सत्यापन जांच काम करती है क्योंकि  g^H( m ) y^r = g^H(m)+ xr = g^ks, और इसलिए (g^H(m)y^r)^ŝ = g^k = r

एक डिजिटल हस्ताक्षर योजना को सुरक्षित माना जाता है यदि इसे नकली नहीं बनाया जा सकता है।

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

DSA एक गणितीय समूह पर परिभाषित किया गया है। जब  DSA इस गणितीय समूह के रूप में अण्डाकार वक्रों के समूह के साथ प्रयोग किया जाता है, तो हम इसे कहते हैं  ECDSA। अंडाकार वक्र समूह  में अंडाकार वक्र बिंदु होते हैं, जो जोड़े होते हैं  , जो  कुछ के लिए  ( x , y )समीकरण को संतुष्ट करते  हैं  । इस ब्लॉग पोस्ट के लिए, आपको केवल यह जानने की आवश्यकता है कि अण्डाकार वक्रों का उपयोग करके आप एक परिमित समूह को परिभाषित कर सकते हैं, जिसका अर्थ है कि आपको समूह जनरेटर,  (अण्डाकार वक्र बिंदु) मिलता है , और  जोड़  और  बिंदु गुणन संचालन  ठीक उसी तरह जैसे आप करते हैं पूर्णांकों के साथ कर सकते हैं। चूँकि वे एक परिमित समूह बनाते हैं, जनक,y^2 = x^3 + ax + ba , bg g , एक सीमित क्रम होगा,  pयह ब्लॉग पोस्ट आपको यह नहीं बताएगा या आपको यह जानने की आवश्यकता नहीं है कि ये  अण्डाकार वक्र संचालन कैसे काम करते हैं ।

ECDSA के समान काम करता है  DSA, लेकिन एक अलग समूह के साथ। गुप्त कुंजी x  अभी भी एक यादृच्छिक मान मॉड्यूलो पूर्णांक होगी  p । अब सार्वजनिक कुंजी  y की गणना अभी भी की जाती है  y = g^x , सिवाय इसके कि g अब अण्डाकार वक्र पर एक बिंदु है। इसका मतलब है कि y भी अंडाकार वक्र पर एक बिंदु होगा (पहले y एक पूर्णांक मॉड्यूल पी था)। एक और अंतर यह है कि हम r के मान की गणना कैसे करते हैं। हम अभी भी पहले की तरह एक पूर्णांक मोडुलो p के रूप में एक यादृच्छिक गैर k उत्पन्न करते हैं। हम गणना करेंगे  g^k , लेकिन फिर से, g एक अण्डाकार वक्र का एक बिंदु है, और इसलिए,  g^k भी। इसलिए, हम गणना  ( x^k , y^k ) = g^k और सेट  कर सकते हैं r = x^k । अब अर्थ s पहले की तरह गणना की जा सकती है, और हमें अपना हस्ताक्षर मिलता है  ( r , s ), जो अभी भी पहले की तरह एक पूर्णांक मॉड्यूलो है  p । जाँच करने के लिए, हमें इस तथ्य को ठीक करने की आवश्यकता है कि हमने  r थोड़ा अलग तरीके से गणना की है।

इसलिए, पहले की तरह, हम   के मान की  गणना( g^H(m)y^r)^ŝ करते हैं  , लेकिन अब वह मान अण्डाकार वक्र पर एक बिंदु है, इसलिए हम  xउस बिंदु का -कोर्डिनेट लेते हैं और इसकी तुलना हमारे मान से करते हैं  r ।

 पुन: उपयोग किए गए गैर से  गुप्त चाबियों की वसूली NONCES

अब जब हम समझ गए हैं कि यह क्या है  ECDSA और यह कैसे काम करता है, तो आइए इसकी  नाजुकता को प्रदर्शित करें । फिर से, चूंकि यह एक डिजिटल हस्ताक्षर योजना है, इसलिए यह जरूरी है कि  गुप्त कुंजी  संदेश पर हस्ताक्षर करने वाले व्यक्ति के अलावा किसी और के सामने प्रकट न हो।

हालांकि, अगर हस्ताक्षरकर्ता कभी भी हस्ताक्षर जारी करता है और इस्तेमाल किए गए गैर को भी जारी करता है, तो  हमलावर  तुरंत  गुप्त कुंजी को पुनर्प्राप्त कर सकता है ।

( r , s ) मान लें कि मैं एक संदेश के लिए  एक हस्ताक्षर जारी करता हूं  m और गलती से पता चलता है कि मैंने एक गैर का उपयोग किया है  k ।

चूंकि  s = ( k^-1 ( H ( m ) + xr )), हम आसानी से गुप्त कुंजी की गणना कर सकते हैं:

s = (k^-1(H(m) + xr))

ks = H(m) + xr

ks – H(m) = xr

x = r^-1(ks – H(m))

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

यहां तक ​​कि अगर हस्ताक्षरकर्ता प्रत्येक  गैर NONCES को गुप्त रखता है , अगर वह गलती से एक  गैर NONCES  (यहां तक ​​कि विभिन्न संदेशों के लिए) दोहराता है,  तो गुप्त कुंजी  को भी  तुरंत पुनर्प्राप्त किया जा सकता है ।

 एक ही गैर से   संदेशों और (क्रमशः) पर बनाए गए दो हस्ताक्षर होने  ( r , s 1 ) दें   -  चूंकि   उनके पास एक ही गैर है, r मान समान होंगे, इसलिए एक हमलावर के लिए यह पता लगाना बहुत आसान है:( r , s 2 )m 1m 2k

s1 = k^-1(H(m1) + xr) and s2 = k^-1(H(m2) + xr)

s1 – s2 = k^-1(H(m1) – H(m2))

k(s1 – s2) = H(m1) – H(m2)

k = (s1 – s2)^-1(H(m1) – H(m2))

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

आइए इसे एक पल के लिए पचा लें।

यदि  हस्ताक्षर करने वाले गैर NONCES  का कभी भी खुलासा किया जाता है, तो  गुप्त कुंजी को तुरंत  पुनर्प्राप्त किया जा सकता है , जो  हमारी संपूर्ण हस्ताक्षर योजना को तोड़ देता है ।

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

यह बहुत नाजुक है और यह केवल  हल्के हमले हैं !

लेकिन एक  नया  लैटिस अटैक  है जिसका बहुत विस्तार से वर्णन किया गया है  (जोआचिम ब्रेइटनर और नादिया हेनिंगर)Йоахим Брайтнер и Надя Хенингер 

दस्तावेज़  [पीडीएफ] :  बायस्ड नॉन सेंस: क्रिप्टोकरेंसी में कमजोर ईसीडीएसए हस्ताक्षर के खिलाफ जाली हमले

बिटकॉइन ब्लॉकचेन में, हमें एक निश्चित लेनदेन मिला:

लेनदेन:  08d917f0fee48b0d765006fa52d62dd3d704563200f2817046973e3bf6d11f1f

बिटकॉइन पतों के लिए:  15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

और हम नकली हस्ताक्षरों को गुणा करने और ग्रिड लागू करने में कामयाब रहे

जहां  GOOGLE COLAB  में संकुल की स्थापना के साथ  Python स्क्रिप्ट  algorithmLLL.py का उपयोग किया जा रहा है

इंस्टॉल करें >> सेज + ईसीडीएसए + बिटकॉइन + एल्गोरिथम एलएलएल

 हम में एक कमजोर लेनदेन से  बाहर निकलने Private Key में  कामयाब रहे  Bitcoin WalletECDSA

इंस्टालेशन
इंस्टालेशन
बैश स्क्रिप्ट चलाएँ: lattice.sh
बैश स्क्रिप्ट चलाएँ: lattice.sh
एचईएक्स प्रारूप में परिणाम निजी कुंजी मिली!
एचईएक्स प्रारूप में परिणाम निजी कुंजी मिली!
फ़ाइल: ONESIGN.txt (ECDSA हस्ताक्षर R, S, Z मान)
फ़ाइल: ONESIGN.txt (ECDSA हस्ताक्षर R, S, Z मान)
हमने पायथन लिपि एल्गोरिथमLLL.py . के लिए नकली हस्ताक्षरों का प्रचार किया
हमने पायथन लिपि एल्गोरिथमLLL.py . के लिए नकली हस्ताक्षरों का प्रचार किया
फ़ाइल: PRIVATEKEY.txt
फ़ाइल: PRIVATEKEY.txt
फ़ाइल: ADDRESS.txt
फ़ाइल: ADDRESS.txt
बिटएड्रेस वेबसाइट पर निजी कुंजी की जाँच करना
बिटएड्रेस वेबसाइट पर निजी कुंजी की जाँच करना

निजी कुंजी मिली!

https://www.blockchain.com/btc/address/15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

0.001 बीटीसी
0.001 बीटीसी
ADDR: 15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E
WIF:  5JCAmNLXeSwi2SCgNH7wRL5qSQhPa7sZvj8eDwxisY5hJm8Uh92
HEX:  31AFD65CAD430D276E3360B1C762808D1D051154724B6FC15ED978FA9D06B1C1 

यह वीडियो डेटा की वित्तीय सुरक्षा सुनिश्चित करने के लिए  क्रिप्टो डीप टेक पोर्टल के लिए बनाया गया था  और बिटकॉइन क्रिप्टोकुरेंसी में कमजोर ईसीडीएसए हस्ताक्षरों के खिलाफ secp256k1 अंडाकार वक्र क्रिप्टोग्राफी सुनिश्चित करने के लिए बनाया गया था।

वीडियो:  https://youtu.be/YP4Xj6gUcf4

टेलीग्राम :  https://t.me/cryptodeeptech

स्रोत:  https://cryptodeep.ru/lattice-attack


No comments:

Post a Comment

Phantom Curve Attack: How the Pollard–Kangaroo Algorithm Exposes Private Keys of Lost Bitcoin Wallets via Low-Entropy Nonces under Exponential Degradation of the Secret Key Parameter “K”

  Crypto Deep Tech This paper provides a comprehensive cryptanalysis of the   Dark Skippy  attack , a specialized implementation of a fundam...