हमने सबसे तेज़ बीएलएस हस्ताक्षर कार्यान्वयन में से एक बनाया है

 

हमने सबसे तेज़ बीएलएस हस्ताक्षर कार्यान्वयन में से एक बनाया है



बैंकों और कानूनी निविदाओं की पुरातन प्रणालियों की तुलना में क्रिप्टोकरेंसी की दुनिया जादू की तरह लग सकती है। लेकिन इस जादुई लिबास के नीचे, कुछ और भी रहस्यमय है। हम सभी के लिए कुछ बेहतर करने की दिशा में काम करने वाले प्रेरित और बुद्धिमान लोगों के अथक (और कुछ मामलों में व्यावहारिक रूप से खुद जादुई) प्रयासों के लिए बहुत सारे गणित, सॉफ्टवेयर और बुनियादी ढाँचे को मिलाते हैं।

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

अच्छा तो इसका क्या मतलब है?

क्रिप्टोग्राफ़िक प्रोटोकॉल आमतौर पर इनमें से कम से कम एक प्रदान करते हैं: गोपनीयता, अखंडता, गैर-अस्वीकृति, या प्रमाणीकरण। गोपनीयता का अर्थ है कि केवल वांछित पक्ष ही संदेश पढ़ सकते हैं, और आमतौर पर एन्क्रिप्शन के माध्यम से प्राप्त किया जाता है। सत्यनिष्ठा साबित करती है कि किसी संदेश के साथ छेड़छाड़ नहीं की गई है, और आमतौर पर हैशिंग फ़ंक्शन के माध्यम से प्राप्त किया जाता है। गैर-अस्वीकृति लेखकत्व की वैधता की गारंटी देती है - यानी कि किसी ने वास्तव में कुछ किया है। प्रमाणीकरण साबित करता है कि कोई है जो वे कहते हैं। गैर-अस्वीकृति और प्रमाणीकरण दोनों आमतौर पर डिजिटल हस्ताक्षर के माध्यम से प्राप्त किए जाते हैं।

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

बीएलएस हस्ताक्षर ईसीडीएसए पर एक उल्लेखनीय लाभ प्रदान करते हैं: अर्थात्, बीएलएस हस्ताक्षरों को समेकित किया जा सकता है, और इसके अलावानिरंतर स्थान में  एक समग्र हस्ताक्षर हस्ताक्षर का एक संयोजन है जो वही गारंटी प्रदान करता है जो मूल हस्ताक्षर ने किया था, लेकिन कम जगह लेता है और आमतौर पर काम करने के लिए अधिक कुशल होता है। निरंतर स्थान का अर्थ है कि एक सत्यापनकर्ता से एक वोट 10,000 सत्यापनकर्ताओं (या किसी अन्य संख्या) से 10,000 वोटों के समान भंडारण स्थान लेता है। 10,000 वोटों की पुष्टि करना भी एक वोट की पुष्टि करने जितना ही महंगा है। बीएलएस हस्ताक्षर हर मीट्रिक में जीत नहीं पाते हैं-उदाहरण के लिए, ईसीडीएसए हस्ताक्षर की तुलना में बीएलएस हस्ताक्षर को सत्यापित करना काफी धीमा है। इस प्रकार, बीएलएस हस्ताक्षरों का अनुकूलन अत्यंत महत्वपूर्ण है।

अधिक प्रत्यक्ष लाभ

"अगली पीढ़ी" के प्रसार, स्केलेबल ब्लॉकचैन प्रोटोकॉल ने छोटे डिजिटल हस्ताक्षर उत्पन्न करने पर एक प्रीमियम लगाया है जिसे कुशलता से एकत्रित या आसानी से थ्रेसहोल्ड किया जा सकता है।
-
बेन एडिंगटनबीएलएस12-381 हममें से बाकी लोगों के लिए

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

अनुकूलन का विवरण (और संख्या) इस लेख के दायरे से बाहर है, लेकिन एक पूरी सूची यहां उपलब्ध है 

आगे क्या होगा?

इस तरह के एल्गोरिदम को अनुकूलित करने पर काम कर रहे क्रिप्टोग्राफर, बेंचमार्क पेयरिंग के लिए एक रिपॉजिटरी बनाने के लिए एक साथ काम करने की योजना बना रहे हैं, ताकि ऐसे एल्गोरिदम के प्रदर्शन को मापने में मदद मिल सके, और एथेरियम 2 (साथ ही अन्य क्रिप्टोक्यूरेंसी इकोसिस्टम जो बीएलएस पर भरोसा करते हैं) को जितनी जल्दी हो सके बना सकते हैं। होना!

कॉन्स्टेंटाइन कुछ समय के लिए निंबस में दिखाई नहीं देगा, क्योंकि अभी और अनुकूलन किए जाने हैं, और पुस्तकालय वर्तमान में अलेखापरीक्षित है - वर्तमान में (लेकिन जल्द ही कुछ समय के लिए ऑडिट किया जाएगा)

बीएलएस क्या है? [तकनीकी]

(यदि आप बीएलएस के गणित में रुचि नहीं रखते हैं, तो आप यहां रुक सकते हैं।)

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

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

बीएलएस सिग्नेचर स्कीम 2001 में डैन बोनेह, बेन लिन और होवाव शाचम द्वारा बनाई गई थी।

घड़ियाँ उर्फ ​​मॉड्यूलर अंकगणित

जब आप "टाइम मैथ" करते हैं (इस उदाहरण के लिए 12 घंटे की घड़ी पर विचार करें) तो आप संख्याओं को इस तरह से जोड़ते हैं जो जोड़ की हमारी सामान्य समझ से मेल नहीं खाती। "11 के बाद 3 घंटे" 14 के बराबर नहीं है, यह 2 है। हम एक विशेष प्रकार का जोड़ कर रहे हैं, जहां हम संख्याओं को जोड़ते हैं, और फिर 12 से कम करते हैं यह कोई संयोग नहीं है कि 2 = 14 - 12

अण्डाकार वक्र

एक अंडाकार वक्र (वास्तविक संख्याओं पर) एक वक्र है जिसे समीकरण द्वारा वर्णित किया जाता है:
y^2 = x^3 + ax + b,
जहां a और b "सामान्य" प्रकार की संख्याएं हैं (वास्तविक संख्याएं, उदाहरण के लिए 10, वर्ग (2), पीआई)

कई प्रकार की क्रिप्टोग्राफी और क्रिप्टोक्यूरेंसी अनुप्रयोगों के लिए अण्डाकार वक्र महत्वपूर्ण हैं। वे भी कुछ घड़ियों की तरह हैं। अण्डाकार वक्र के बिंदु वे बिंदु (x, y) होते हैं जो वक्र के समीकरण को संतुष्ट करते हैं। इन बिंदुओं को एक साथ जोड़ा जा सकता है, विशेष रूप से, इस तरह से जो जोड़ की हमारी सामान्य समझ से मेल नहीं खाता।

अण्डाकार वक्र जोड़

पी + क्यू = आर

अण्डाकार वक्र क्षैतिज अक्ष के चारों ओर सममित होते हैं। एक अंडाकार वक्र पर दो बिंदु जोड़ने के लिए, दो बिंदुओं के माध्यम से एक रेखा खींचें और वक्र पर तीसरा बिंदु खोजें जो रेखा को छेड़छाड़ करता है। फिर, उस बिंदु को क्षैतिज अक्ष पर प्रतिबिंबित करें: यह अंडाकार वक्र पर दो बिंदुओं का योग है। (एक बिंदु P को उसके परावर्तन में जोड़ना, यानी P + (-P), एक विशेष स्थिति है और इसका परिणाम "अनंत पर बिंदु" होता है, लेकिन हमारे उद्देश्यों के लिए हम इसे "शून्य" के रूप में सोच सकते हैं।)

अंडाकार वक्र जोड़ के बारे में अधिक जानकारी के लिएअंडाकार वक्र क्रिप्टोग्राफी पर (अपेक्षाकृत समझने में आसान) प्राइमर देखें , विशेष रूप से "अण्डाकार वक्र: बेहतर ट्रैपडोर के बिल्डिंग ब्लॉक" और "अजीब समरूपता" अनुभाग।

मामलों को बदतर बनाने के लिए, सभी अंडाकार वक्रों को "वास्तविक संख्याओं पर" परिभाषित नहीं किया जाता है, जिसका अर्थ है कि और बी कम परिचित हो सकते हैं। वे जटिल संख्याएं हो सकती हैं, उदाहरण के लिए, या अण्डाकार वक्र के किसी भी क्षेत्र के तत्वों को परिभाषित किया गया है (जैसा किक्षेत्र एफ पर परिभाषित अंडाकार वक्र " में है ) - एक फ़ील्ड संख्या जैसी चीजों का एक सेट है जो आम तौर पर व्यवहार करती है संख्याओं की तरह (शून्य को छोड़कर, उन्हें जोड़ा, घटाया, गुणा और विभाजित किया जा सकता है)

परिमित क्षेत्र उर्फ ​​अजीब घड़ियां

परिमित क्षेत्र एक सामान्य और उपयोगी प्रकार के क्षेत्र हैं। एक घड़ी पर विचार करें जो केवल 5 तक जाती है। हर बार जब आप इस घड़ी में संख्याएँ जोड़ते हैं, तो आप 5 से कम हो जाते हैं

1 + 3 = 4

2 + 4 = 6 → 1

2 + 3 = 5 → 0

हम इन संख्याओं को गुणा भी कर सकते हैं, और कटौती की एक समान प्रक्रिया लागू कर सकते हैं:

2*2 = 4

2*4 = 8 → 3

0*2 = 0

(विभाजन थोड़ा अजीब है, और हमारे उद्देश्यों के लिए सुविधाजनक रूप से अनावश्यक है।)

समूहों

समूह फ़ील्ड की तरह होते हैं, लेकिन कम नियमों के साथ। एक समूह संख्या जैसी चीजों का एक संग्रह है जिसे जोड़ा जा सकता है (जरूरी नहीं कि जिस तरह से हम सामान्य रूप से जोड़ के बारे में सोचते हैं), और समूह के किन्हीं दो तत्वों को जोड़ने से हमेशा समूह का तीसरा तत्व उत्पन्न होगा। प्रत्येक क्षेत्र एक समूह है, लेकिन प्रत्येक समूह एक क्षेत्र नहीं है।

हम जिन समूहों से संबंधित हैं , वे चक्रीय होंगे , जिसका अर्थ है कि समूह के किसी अन्य तत्व को प्राप्त करने के लिए समूह के कुछ विशिष्ट तत्व को स्वयं में जोड़ा जा सकता है। इस तत्व को जनरेटर कहा जाता है

बीएलएस प्रस्तावना

हम दो अण्डाकार वक्रों से चिंतित हैं जिन्हें BLS12-381 (बैरेटो-लिन-स्कॉट, समान लिन) के रूप में संदर्भित किया जाता है। पहला वक्र एक अभाज्य परिमित क्षेत्र पर परिभाषित किया गया है , अर्थात q तत्वों वाला एक परिमित क्षेत्र, जहाँ q अभाज्य है। दूसरा वक्र थोड़ा अधिक जटिल है, और इसे q^2 तत्वों के साथ एक परिमित क्षेत्र में परिभाषित किया गया है। पहले और दूसरे क्षेत्र के बीच का संबंध काफी हद तक वास्तविक और सम्मिश्र संख्याओं के बीच जैसा है, दूसरा क्षेत्र अनिवार्य रूप से i के साथ संयुक्त पहला क्षेत्र है।

हमने कहा कि अण्डाकार वक्रों का वर्णन समीकरण y^2 = x^3 + ax + b द्वारा किया जाता है। हमारा पहला वक्र दिखता है

y^2 = x^3 + 0x + 4, यानी a = 0 और b = 4 इस वक्र पर अंक पूर्णांक के जोड़े के रूप में दर्शाए जाते हैं।

हमारा दूसरा वक्र दिखता है

y^2 = x^3 + 4(1 + i), जहां मैं -1 का वर्गमूल है। इस वक्र के बिंदुओं को सम्मिश्र संख्याओं के युग्म के रूप में दर्शाया जाता है।

हम प्रत्येक वक्र पर बिंदुओं का एक समूह पाते हैं (ऐसे बिंदुओं को जोड़ना "अण्डाकार वक्र जोड़" में वर्णित है), जिसे हम पहले वक्र के लिए G1 और दूसरे के लिए G2 कहेंगे। प्रत्येक समूह में समान तत्वों की संख्या होती है, r हमारे उद्देश्यों के लिए, यह महत्वपूर्ण है कि r अभाज्य है।

पेयरिंग/बिलिनियर फंक्शन्स

हम सिर्फ एक सेकंड में पेयरिंग और बिलिनियर फंक्शन के बारे में बात करेंगे, लेकिन सबसे पहले, एक लीनियर फंक्शन क्या हैएक फलन f रैखिक होता है यदि f (x+y) = f (x) + f (y) और f (a * x) = a * f (x) हो।

एक द्विरेखीय फलन दो चरों का एक फलन है जो प्रत्येक के सापेक्ष रैखिक होता है। इस सरल उदाहरण पर विचार करेंf (x, y) = xy. यदि हम y के लिए कुछ गैर-शून्य स्थिरांक चुनते हैं, उदाहरण के लिए y=2, तो f(x,2) = 2x, जिसे हम जानते हैं कि रैखिक हैऔर अगर हम इसके बजाय x के लिए कुछ गैर-शून्य स्थिर मान चुनते हैं, उदाहरण के लिए x=3, तो f(3,y) = 3y, जिसे हम जानते हैं रैखिक है। अतः f(x,y) = xy द्विरेखीय है

हमें बीएलएस के लिए एक जोड़ी की आवश्यकता होगी। सादगी के लिए, हम एक जोड़ी को एक बिलिनियर फ़ंक्शन मान सकते हैं जो इनपुट के समान आकार के दो समूहों (जी 1 और जी 2) से दो पैरामीटर लेता है, और तीसरे समूह से एक आउटपुट उत्पन्न करता है। जोड़े आमतौर पर इस तरह लिखे जाते हैं:
e(x,y),
जहां x G1 का एक तत्व है, और y G2 का एक तत्व है।

बीएलएस योजना (अंत में)

तो, यहाँ सभी टुकड़े हैं।

r = समूह G1 और G2 के तत्वों की संख्या, अभाज्य, <= 255 बिट्स

sk = निजी/गुप्त कुंजी, 1 और r-1 के बीच यादृच्छिक रूप से चुनी गई संख्या, समावेशी

g1 = G1 का चुना हुआ जनरेटर (अर्थात हम G1 में कोई भी बिंदु प्राप्त करने के लिए कुछ बार स्वयं में g1 जोड़ सकते हैं) क्योंकि G1 में तत्वों की एक प्रमुख संख्या है, कोई भी बिंदु चुने हुए जनरेटर के रूप में कार्य कर सकता है (हालांकि व्यवहार में एक जनरेटर को दूसरे के लिए पसंद करने के लिए कुछ दक्षता कारण हैं, और यह तय करना कि किस जनरेटर का उपयोग करना है, एक प्रतिलिपि प्रस्तुत करने योग्य तरीके से किया जाता है जैसे कि लोग या तो हस्ताक्षर योजना के अंत में एक ही चुनने में सक्षम हैं)

पीके = सार्वजनिक कुंजी; pk = [sk]g1, यानी g1 + g1 + … + g1, sk बार

यदि आप pk से प्रारंभ कर रहे हैं , तो असतत लघुगणक समस्या sk का पता लगाना संभव नहीं बनाती है।

एम = संदेश पर हस्ताक्षर किया जाना है।

हम मानते हैं कि एम को जी 2 के एक बिंदु पर मैप करने का कोई तरीका है, कुछ हैशिंग फ़ंक्शन के माध्यम से किया जाता है जिसे हम एच कहते हैं। व्यावहारिक रूप से अंडाकार वक्रों को शामिल करने वाली प्रत्येक क्रिप्टोग्राफ़िक योजना में वक्र पर एक समूह को संदेशों का अनुवाद करने की कुछ विधि शामिल होती है, इसलिए हम इस पर प्रकाश डालेंगे विवरण।

H(m) = संदेश m . के लिए G2 पर संगत बिंदु

σ = हस्ताक्षर, σ = [sk]H(m), यानी H(m) + H(m) +… + H(m), sk बार

तो, एक संक्षिप्त अंतराल: g1 G1 का एक तत्व है, जिसका अर्थ है कि यह पहले अण्डाकार वक्र पर एक बिंदु है। इसका मतलब है कि g1 का जोड़ अण्डाकार वक्र जोड़ है, जो थोड़ा फंकी है (जैसा कि "एलिप्टिक कर्व एडिशन" में वर्णित है) H(m) G2 का एक तत्व है, जिसका अर्थ है कि यह दूसरे, जटिल अण्डाकार वक्र पर एक बिंदु है। अपने आप में H(m) का योग भी उतना ही अजीब है।

हस्ताक्षर सत्यापित करने के लिए, हम संदेश m, हस्ताक्षर σ और सार्वजनिक कुंजी pk लेते हैं। हम पुष्टि कर रहे हैं कि संदेश को उस गुप्त कुंजी (sk) से हस्ताक्षरित किया गया था जो pk से मेल खाती है।

हस्ताक्षर तभी मान्य है जब (जी 1, ) = (पीके, एच ​​(एम)), जिसे आसानी से सत्यापित किया जा सकता है (अधिमानतः एक कंप्यूटर द्वारा) जनरेटर को दिया जाता है (जिसे एक विशिष्ट और प्रतिलिपि प्रस्तुत करने योग्य तरीके से चुना जाता है) , हस्ताक्षर, सार्वजनिक कुंजी और संदेश का हैश।

बीएलएस में पेयरिंग कैसे उपयोगी है, यह समझने के लिए हम एक सरल उदाहरण का उपयोग कर सकते हैं। हम सरल उदाहरण बिलिनियर फ़ंक्शन f(x,y) = xy का उपयोग करेंगे।

इसलिए,

pk = सार्वजनिक कुंजी = गुप्त कुंजी * जनरेटर = sk * g1

= हस्ताक्षर = गुप्त कुंजी * एच (संदेश) = एसके * एच (एम)

यदि संदेश को संबंधित सार्वजनिक कुंजी द्वारा हस्ताक्षरित किया गया था, तो निम्नलिखित दो फ़ंक्शन इनपुट समान आउटपुट (गुप्त कुंजी को प्रकट किए बिनाउत्पन्न करेंगे :

एफ (जी 1, σ) = जी 1 * σ = जी 1 * एसके * एच (एम)

एफ (पीके, एच ​​(एम)) = पीके * एच (एम) = एसके * जी 1 * एच (एम) = जी* एसके * एच (एम)

(बोल्ड सिर्फ जोर देने के लिए है।)

 

Comments

Popular posts from this blog

कीकार्ड: सुरक्षा सुविधाओं का अवलोकन

वेब विकास

इथेरियम सिंगल साइन-ऑन