विटालिक ब्यूटिरिन के माध्यम से विटालिक ब्यूटिरिन ब्लॉग
यह इस पोस्ट का दर्पण है https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
ट्रिगर चेतावनी: गणित.
नियतात्मक सीमा हस्ताक्षर, zk-SNARKs और शून्य-ज्ञान प्रमाणों के अन्य सरल रूपों सहित विभिन्न निर्माणों के पीछे प्रमुख क्रिप्टोग्राफ़िक प्राइमेटिव्स में से एक अण्डाकार वक्र युग्मन है। अण्डाकार वक्र युग्म (या "बिलिनियर मानचित्र") एन्क्रिप्शन और डिजिटल हस्ताक्षर सहित क्रिप्टोग्राफ़िक अनुप्रयोगों के लिए अण्डाकार वक्रों का उपयोग करने के 30 साल लंबे इतिहास में हाल ही में जोड़ा गया है; युग्म "एन्क्रिप्टेड गुणन" का एक रूप पेश करते हैं, जो कि अण्डाकार वक्र-आधारित प्रोटोकॉल क्या कर सकते हैं, इसका काफी विस्तार करता है। इस लेख का उद्देश्य अण्डाकार वक्र युग्मों में विस्तार से जाना होगा, और वे कैसे काम करते हैं इसकी एक सामान्य रूपरेखा समझाना होगा।
आपसे यह अपेक्षा नहीं की जाती है कि आप इसे पहली बार या दसवीं बार पढ़ने पर सब कुछ समझ लेंगे; यह चीज़ वास्तव में कठिन है। लेकिन उम्मीद है कि यह लेख आपको कम से कम यह अंदाज़ा देगा कि हुड के नीचे क्या चल रहा है।
अण्डाकार वक्र स्वयं समझने के लिए बहुत ही गैर-तुच्छ विषय हैं, और यह लेख आम तौर पर मान लेगा कि आप जानते हैं कि वे कैसे काम करते हैं; यदि आप ऐसा नहीं करते हैं, तो मैं इस लेख को प्राइमर के रूप में यहां सुझाता हूं: https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/. एक त्वरित सारांश के रूप में, अण्डाकार वक्र क्रिप्टोग्राफी में "बिंदु" नामक गणितीय वस्तुएं शामिल होती हैं (ये (�,�) निर्देशांक के साथ शाब्दिक दो-आयामी बिंदु हैं), उन्हें जोड़ने और घटाने के लिए विशेष सूत्रों के साथ (यानी �= के निर्देशांक की गणना के लिए) �+�), और आप किसी बिंदु को पूर्णांक से गुणा भी कर सकते हैं (अर्थात �⋅�=�+�+...+�, हालांकि � बड़ा होने पर इसकी गणना करने का एक तेज़ तरीका है)।
यहां बताया गया है कि ग्राफ़िक रूप से बिंदु जोड़ कैसा दिखता है।
एक विशेष बिंदु मौजूद है जिसे "अनंत पर बिंदु" (�) कहा जाता है, जो बिंदु अंकगणित में शून्य के बराबर है; यह हमेशा मामला है कि �+�=�। इसके अलावा, एक वक्र में "आदेश“; एक संख्या मौजूद है जैसे कि किसी भी � के लिए �⋅�=� (और निश्चित रूप से, �⋅(�+1)=�, �⋅(7⋅�+5)=�⋅5, और इसी तरह)। कुछ आम सहमति वाले "जनरेटर बिंदु" भी हैं, जिन्हें कुछ अर्थों में संख्या 1 का प्रतिनिधित्व करने के लिए समझा जाता है। सैद्धांतिक रूप से, वक्र पर कोई भी बिंदु (छोड़कर) � हो सकता है; जो कुछ भी मायने रखता है वह यह है कि � मानकीकृत है।
युग्म इस दृष्टि से एक कदम आगे बढ़ते हैं कि वे आपको अण्डाकार वक्र बिंदुओं पर कुछ प्रकार के अधिक जटिल समीकरणों की जाँच करने की अनुमति देते हैं - उदाहरण के लिए, यदि �=�⋅�,�=�⋅� और �=�⋅�, तो आप जाँच सकते हैं कि या नहीं �⋅�=� नहीं, इनपुट के रूप में केवल �,� और � है। ऐसा प्रतीत हो सकता है कि अण्डाकार वक्रों की मूलभूत सुरक्षा गारंटी को तोड़ा जा रहा है, क्योंकि � के बारे में जानकारी सिर्फ पी जानने से लीक हो रही है, लेकिन यह पता चलता है कि रिसाव अत्यधिक निहित है - विशेष रूप से, निर्णयात्मक डिफी हेलमैन समस्या आसान है, लेकिन कम्प्यूटेशनल डिफी हेलमैन समस्या (उपरोक्त उदाहरण में � और � जानना, कंप्यूटिंग �=�⋅�⋅�) और द असतत लघुगणक समस्या ( � से � पुनर्प्राप्त करना) कम्प्यूटेशनल रूप से अव्यवहार्य रहता है (कम से कम, यदि वे पहले थे)।
यह देखने का तीसरा तरीका कि युग्म क्या करते हैं, और जो शायद हमारे द्वारा उपयोग किए जाने वाले अधिकांश मामलों के लिए सबसे अधिक रोशन करने वाला है, वह यह है कि यदि आप अण्डाकार वक्र बिंदुओं को एक-तरफ़ा एन्क्रिप्टेड संख्याओं के रूप में देखते हैं (अर्थात, ����) ���(�)=�⋅�=�), तो जबकि पारंपरिक अण्डाकार वक्र गणित आपको जांचने देता है रैखिक संख्याओं पर बाधाएं (उदाहरण के लिए यदि �=�⋅�,�=�⋅� और �=�⋅�, तो 5⋅�+7⋅�=11⋅� की जांच करना है वास्तव में यह जांचना कि 5⋅�+7⋅�=11⋅�), युग्म आपको जांचने देते हैं द्विघात बाधाएं (उदाहरण के लिए �(�,�)⋅�(�,�⋅5)=1 की जांच करना है वास्तव में जाँच कर रहा है कि �⋅�+5=0). और द्विघात तक जाना हमें नियतिवादी सीमा हस्ताक्षरों, द्विघात अंकगणित कार्यक्रमों और अन्य सभी अच्छी चीजों के साथ काम करने के लिए पर्याप्त है।
अब, यह मज़ेदार �(�,�) ऑपरेटर क्या है जिसका हमने ऊपर परिचय दिया है? ये जोड़ी है. गणितज्ञ कभी-कभी इसे a भी कहते हैं द्विरेखीय मानचित्र; यहां "बिलिनियर" शब्द का मूल अर्थ यह है कि यह बाधाओं को संतुष्ट करता है:
�(�,�+�)=�(�,�)⋅�(�,�)
�(�+�,�)=�(�,�)⋅�(�,�)
ध्यान दें कि + और ⋅ मनमाना ऑपरेटर हो सकते हैं; जब आप नए प्रकार की गणितीय वस्तुएं बना रहे होते हैं, तो अमूर्त बीजगणित को इसकी परवाह नहीं होती कि + और ⋅ कैसे हैं परिभाषित, जब तक वे सामान्य तरीकों से सुसंगत हैं, उदाहरण के लिए। �+�=�+�,(�⋅�)⋅�=�⋅(�⋅�) और (�⋅�)+(�⋅�)=(�+�)⋅�।
यदि �, �, � और � सरल होते संख्या, तो एक साधारण जोड़ी बनाना आसान है: हम �(�,�)=2�� कर सकते हैं। फिर, हम देख सकते हैं:
�(3,4+5)=23⋅9=227
�(3,4)⋅�(3,5)=23⋅4⋅23⋅5=212⋅215=227
यह द्विरेखीय है!
हालाँकि, ऐसे सरल युग्म क्रिप्टोग्राफी के लिए उपयुक्त नहीं हैं क्योंकि जिन वस्तुओं पर वे काम करते हैं वे सरल पूर्णांक हैं और उनका विश्लेषण करना बहुत आसान है; पूर्णांक विभाजित करना, लघुगणक की गणना करना और विभिन्न अन्य गणनाएँ करना आसान बनाते हैं; सरल पूर्णांकों में "सार्वजनिक कुंजी" या "वन-वे फ़ंक्शन" की कोई अवधारणा नहीं होती है। इसके अतिरिक्त, ऊपर वर्णित युग्म के साथ आप पीछे की ओर जा सकते हैं - � को जानना, और �(�,�) को जानना, आप � को निर्धारित करने के लिए बस एक विभाजन और लघुगणक की गणना कर सकते हैं। हम ऐसी गणितीय वस्तुएँ चाहते हैं जो यथासंभव "ब्लैक बॉक्स" के करीब हों, जहाँ आप जोड़, घटाव, गुणा और भाग कर सकें, लेकिन और कुछ मत करो. यहीं पर अण्डाकार वक्र और अण्डाकार वक्र युग्म आते हैं।
यह पता चला है कि अण्डाकार वक्र बिंदुओं पर एक द्विरेखीय मानचित्र बनाना संभव है - अर्थात, एक फ़ंक्शन �(�,�) के साथ आएं जहां इनपुट � और � अण्डाकार वक्र बिंदु हैं, और जहां आउटपुट को ए कहा जाता है (��)12 तत्व (कम से कम विशिष्ट मामले में हम यहां कवर करेंगे; वक्र के विवरण के आधार पर विशिष्टताएं भिन्न होती हैं, इस पर बाद में और अधिक), लेकिन ऐसा करने के पीछे का गणित काफी जटिल है।
सबसे पहले, आइए प्राइम फ़ील्ड और एक्सटेंशन फ़ील्ड को कवर करें। इस पोस्ट में पहले चित्र में सुंदर अण्डाकार वक्र केवल उसी तरह दिखता है यदि आप मानते हैं कि वक्र समीकरण नियमित वास्तविक संख्याओं का उपयोग करके परिभाषित किया गया है। हालाँकि, यदि हम वास्तव में क्रिप्टोग्राफी में नियमित वास्तविक संख्याओं का उपयोग करते हैं, तो आप "पीछे की ओर जाने" के लिए लघुगणक का उपयोग कर सकते हैं, और सब कुछ टूट जाता है; इसके अतिरिक्त, संख्याओं को वास्तव में संग्रहीत करने और प्रदर्शित करने के लिए आवश्यक स्थान की मात्रा मनमाने ढंग से बढ़ सकती है। इसलिए, हम इसके बजाय a में संख्याओं का उपयोग करते हैं प्रधान क्षेत्र.
एक अभाज्य क्षेत्र में संख्याओं का समूह 0,1,2…�−1 होता है, जहां � अभाज्य है, और विभिन्न संक्रियाओं को इस प्रकार परिभाषित किया गया है:
�+�:(�+�) % �
�⋅�:(�⋅�) % �
�−�:(�−�) % �
�/�:(�⋅��−2) ��
मूलतः, सारा गणित मॉड्यूलो में किया जाता है - (देखें यहाँ उत्पन्न करें मॉड्यूलर गणित के परिचय के लिए)। विभाजन एक विशेष मामला है; आम तौर पर, 32 एक पूर्णांक नहीं है, और यहां हम केवल पूर्णांकों से निपटना चाहते हैं, इसलिए हम इसके बजाय संख्या � को इस तरह खोजने का प्रयास करते हैं कि �⋅2=3, जहां ⋅ निश्चित रूप से ऊपर परिभाषित मॉड्यूलर गुणन को संदर्भित करता है। करने के लिए धन्यवाद फ़र्मेट की छोटी प्रमेय, ऊपर दिखाई गई घातांक चाल काम करती है, लेकिन इसका उपयोग करने का एक तेज़ तरीका भी है विस्तारित यूक्लिडियन एल्गोरिथम. मान लीजिए �=7; कुछ उदाहरण निम्नलिखित हैं:
2+3=5 % 7=5
4+6=10 % 7=3
2−5=−3 % 7=4
6⋅3=18 % 7=4
3/2=(3⋅25) % 7=5
5⋅2=10 % 7=3
यदि आप इस प्रकार के गणित के साथ खेलते हैं, तो आप देखेंगे कि यह पूरी तरह से सुसंगत है और सभी सामान्य नियमों को पूरा करता है। उपरोक्त अंतिम दो उदाहरण दिखाते हैं कि कैसे (�/�)⋅�=�; आप यह भी देख सकते हैं कि (�+�)+�=�+(�+�),(�+�)⋅�=�⋅�+�⋅�, और अन्य सभी हाई स्कूल बीजगणितीय पहचान जिन्हें आप जानते हैं और पसंद करते हैं, जारी हैं सच भी मानना. वास्तव में अण्डाकार वक्रों में, बिंदुओं और समीकरणों की गणना आमतौर पर अभाज्य क्षेत्रों में की जाती है।
अब, के बारे में बात करते हैं विस्तार क्षेत्र. संभवतः आपने पहले भी कोई एक्सटेंशन फ़ील्ड देखी होगी; गणित की पाठ्यपुस्तकों में आपके सामने आने वाला सबसे आम उदाहरण जटिल संख्याओं का क्षेत्र है, जहां वास्तविक संख्याओं का क्षेत्र अतिरिक्त तत्व −1=� के साथ "विस्तारित" होता है। मूल रूप से, एक्सटेंशन फ़ील्ड एक मौजूदा फ़ील्ड को लेकर काम करते हैं, फिर एक नए तत्व का "आविष्कार" करते हैं और उस तत्व और मौजूदा तत्वों के बीच संबंध को परिभाषित करते हैं (इस मामले में, �2+1=0), यह सुनिश्चित करते हुए कि यह समीकरण सत्य नहीं है किसी भी संख्या के लिए जो मूल फ़ील्ड में है, और मूल फ़ील्ड के तत्वों और आपके द्वारा अभी बनाए गए नए तत्व के सभी रैखिक संयोजनों के सेट को देख रहा है।
हम प्रमुख क्षेत्रों का विस्तार भी कर सकते हैं; उदाहरण के लिए, हम प्राइम फ़ील्ड mod7 का विस्तार कर सकते हैं जिसका वर्णन हमने ऊपर � के साथ किया है, और फिर हम यह कर सकते हैं:
(2+3�)+(4+2�)=6+5�
(5+2�)+3=1+2�
(6+2�)⋅2=5+4�
4�⋅(2+�)=3+�
उस अंतिम परिणाम का पता लगाना थोड़ा कठिन हो सकता है; वहां क्या हुआ कि हम पहले उत्पाद को 4�⋅2+4�⋅� में विघटित करते हैं, जो 8�−4 देता है, और फिर क्योंकि हम mod7 गणित में काम कर रहे हैं जो �+3 हो जाता है। विभाजित करने के लिए, हम करते हैं:
�/�:(�⋅�(�2−2)) ��
ध्यान दें कि फ़र्मेट के छोटे प्रमेय का प्रतिपादक अब � के बजाय �2 है, हालांकि एक बार फिर अगर हम अधिक कुशल होना चाहते हैं तो हम काम करने के लिए विस्तारित यूक्लिडियन एल्गोरिदम का विस्तार भी कर सकते हैं। ध्यान दें कि इस क्षेत्र में किसी भी � के लिए ��2−1=1, इसलिए हम �2−1 को "क्षेत्र में गुणक समूह का क्रम" कहते हैं।
वास्तविक संख्याओं के साथ, बीजगणित का मौलिक प्रमेय यह सुनिश्चित करता है कि द्विघात विस्तार जिसे हम जटिल संख्याएँ कहते हैं, "पूर्ण" है - आप इसे आगे नहीं बढ़ा सकते, क्योंकि किसी भी गणितीय संबंध के लिए (कम से कम, बीजगणितीय सूत्र द्वारा परिभाषित कोई भी गणितीय संबंध) जिसे आप कुछ नए तत्वों के बीच ला सकते हैं � और मौजूदा सम्मिश्र संख्याएँ, कम से कम एक सम्मिश्र संख्या के साथ आना संभव है जो पहले से ही उस रिश्ते को संतुष्ट करती हो। हालाँकि, प्राइम फ़ील्ड के साथ, हमारे पास यह समस्या नहीं है, और इसलिए हम आगे जा सकते हैं और क्यूबिक एक्सटेंशन बना सकते हैं (जहाँ कुछ नए तत्व और मौजूदा फ़ील्ड तत्वों के बीच गणितीय संबंध एक क्यूबिक समीकरण है, इसलिए 1, और 2 हैं) सभी रैखिक रूप से एक-दूसरे से स्वतंत्र), उच्च-क्रम एक्सटेंशन, एक्सटेंशन के एक्सटेंशन आदि। और यह इस प्रकार के सुपरचार्ज्ड मॉड्यूलर जटिल संख्याएं हैं जिन पर अण्डाकार वक्र युग्म बनाए जाते हैं।
इन सभी ऑपरेशनों को कोड में लिखने में शामिल सटीक गणित को देखने में रुचि रखने वालों के लिए, प्राइम फ़ील्ड और फ़ील्ड एक्सटेंशन यहां लागू किए गए हैं: https://github.com/ethereum/py_pairing/blob/master/py_ecc/bn128/bn128_field_elements.py
अब, अण्डाकार वक्र युग्मों पर। एक अण्डाकार वक्र युग्मन (या बल्कि, युग्मन के विशिष्ट रूप का हम यहां पता लगाएंगे; अन्य प्रकार के युग्म भी हैं, हालांकि उनका तर्क काफी समान है) एक मानचित्र �2×�1→�� है, जहां:
- �1 एक अण्डाकार वक्र है, जहां बिंदु �2=�3+� के रूप के समीकरण को संतुष्ट करते हैं, और जहां दोनों निर्देशांक �� के तत्व हैं (यानी वे सरल संख्याएं हैं, अंकगणित को छोड़कर सभी को कुछ अभाज्य संख्याओं के आधार पर किया जाता है)
- �2 एक अण्डाकार वक्र है, जहां बिंदु �1 के समान समीकरण को संतुष्ट करते हैं, सिवाय इसके कि जहां निर्देशांक (��)12 के तत्व हैं (यानी। वे सुपरचार्ज्ड जटिल संख्याएं हैं जिनके बारे में हमने ऊपर बात की थी; हम एक नई "जादुई संख्या" परिभाषित करते हैं ” �, जिसे 12वीं डिग्री बहुपद जैसे �12−18⋅�6+82=0) द्वारा परिभाषित किया गया है
- �� वस्तु का वह प्रकार है जिसमें अण्डाकार वक्र का परिणाम जाता है। जिन वक्रों को हम देखते हैं, उनमें � (��)12 है (वही सुपरचार्ज्ड सम्मिश्र संख्या जो �2 में उपयोग की गई है)
मुख्य गुण जिसे इसे संतुष्ट करना चाहिए वह द्विरेखीयता है, जिसका इस संदर्भ में अर्थ है कि:
- �(�,�+�)=�(�,�)⋅�(�,�)
- �(�+�,�)=�(�,�)⋅�(�,�)
दो अन्य महत्वपूर्ण मानदंड हैं:
- कुशल संगणना (उदाहरण के लिए, हम सभी बिंदुओं के अलग-अलग लघुगणक लेकर और उन्हें एक साथ गुणा करके एक आसान युग्मन बना सकते हैं, लेकिन यह पहली बार में अण्डाकार वक्र क्रिप्टोग्राफी को तोड़ने जितना ही कम्प्यूटेशनल रूप से कठिन है, इसलिए इसकी गिनती नहीं होती है)
- गैर पतनशीलता (निश्चित रूप से, आप केवल �(�,�)=1 को परिभाषित कर सकते हैं, लेकिन यह विशेष रूप से उपयोगी युग्म नहीं है)
इसे कैसे किया जा सकता है?
युग्मन फ़ंक्शन क्यों काम करते हैं इसके पीछे का गणित काफी पेचीदा है और इसमें हमने अब तक जो देखा है उससे भी आगे जाकर काफी उन्नत बीजगणित शामिल है, लेकिन मैं एक रूपरेखा प्रदान करूंगा। सबसे पहले, हमें a की अवधारणा को परिभाषित करने की आवश्यकता है भाजक, मूल रूप से अण्डाकार वक्र बिंदुओं पर कार्यों का प्रतिनिधित्व करने का एक वैकल्पिक तरीका। किसी फ़ंक्शन का विभाजक मूल रूप से फ़ंक्शन के शून्य और अनंत को गिनता है। यह देखने के लिए कि इसका क्या मतलब है, आइए कुछ उदाहरण देखें। आइए कुछ बिंदु �=(�,�) तय करें, और निम्नलिखित फ़ंक्शन पर विचार करें:
�(�,�)=�−��
भाजक [�]+[−�]−2⋅[�] है (वर्ग कोष्ठक का उपयोग उस तथ्य को दर्शाने के लिए किया जाता है जिसका हम उल्लेख कर रहे हैं फ़ंक्शन के शून्य और अनंत के सेट में बिंदु की उपस्थिति, बिंदु P ही नहीं; [�]+[�] है नहीं [�+�]) जैसी ही बात। तर्क इस प्रकार है:
- फ़ंक्शन � पर शून्य के बराबर है, चूँकि � is ��, तो �−��=0
- फ़ंक्शन - पर शून्य के बराबर है, क्योंकि - और - समान समन्वय साझा करते हैं
- फ़ंक्शन अनंत तक जाता है जैसे � अनंत तक जाता है, इसलिए हम कहते हैं कि फ़ंक्शन � पर अनंत के बराबर है। एक तकनीकी कारण है कि इस अनंत को दो बार गिनने की आवश्यकता है, इसलिए −2 की "बहुलता" के साथ जोड़ा जाता है (नकारात्मक क्योंकि यह एक अनंत है और शून्य नहीं है, इस दोहरी गिनती के कारण दो)।
तकनीकी कारण मोटे तौर पर यह है: क्योंकि वक्र का समीकरण �3=�2+� है, इसलिए �1.5 के साथ बने रहने के लिए �2 की तुलना में अनंत तक "3 गुना तेज" चला जाता है; इसलिए, यदि एक रैखिक फ़ंक्शन में केवल � शामिल है तो इसे बहुलता 2 की अनंतता के रूप में दर्शाया जाता है, लेकिन यदि इसमें � शामिल है तो इसे बहुलता 3 की अनंतता के रूप में दर्शाया जाता है।
अब, एक "लाइन फ़ंक्शन" पर विचार करें:
��+��+�=0
जहां �, � और � को सावधानी से चुना जाता है ता�क रेखा �बन्दुओं � और � से होकर गुज़रती है। चूँकि अण्डाकार वक्र जोड़ कैसे काम करता है (शीर्ष पर चित्र देखें), इसका मतलब यह भी है कि यह - से होकर गुजरता है। और यह � और � दोनों पर निर्भर होकर अनंत तक जाता है, इसलिए भाजक [�]+[�]+[−�−�]−3⋅[�] बन जाता है।
हम जानते हैं कि प्रत्येक "तर्कसंगत फ़ंक्शन" (यानी बिंदु के निर्देशांक पर केवल +,−,⋅ और / संचालन की एक सीमित संख्या का उपयोग करके परिभाषित एक फ़ंक्शन) विशिष्ट रूप से कुछ विभाजक से मेल खाता है, एक स्थिरांक से गुणा तक (यानी)। यदि दो फ़ंक्शन � और � का विभाजक समान है, तो कुछ स्थिरांक � के लिए �=�⋅�)।
किन्हीं दो कार्यों � और � के लिए, �⋅� का भाजक � के भाजक और � के भाजक के बराबर है (गणित की पाठ्यपुस्तकों में, आप (�⋅�)=(�)+(�)) देखेंगे, उदाहरण के लिए यदि �(�,�)=��−�, तो (�3)=3⋅[�]+3⋅[−�]−6⋅[�]; � और −� को इस तथ्य के कारण "तीन बार गिना" जाता है कि �3 एक निश्चित गणितीय अर्थ में उन बिंदुओं पर 0 के करीब "तीन गुना तेजी से" पहुंचता है।
ध्यान दें कि एक प्रमेय है जो बताता है कि यदि आप किसी फ़ंक्शन के विभाजक से "वर्ग कोष्ठक हटाते हैं", तो बिंदुओं का योग �([�]+[�]+[−�−�]−3⋅[ �] स्पष्ट रूप से फिट बैठता है, जैसे �+�−�−�−3⋅�=�), और कोई भी भाजक जिसमें यह गुण होता है, वह किसी फ़ंक्शन का भाजक होता है।
अब, हम टेट जोड़ियों को देखने के लिए तैयार हैं। उनके विभाजकों के माध्यम से परिभाषित निम्नलिखित कार्यों पर विचार करें:
- (��)=�⋅[�]−�⋅[�], जहां �, �1 का क्रम है, यानी। �⋅�=� किसी � के लिए
- (��)=�⋅[�]−�⋅[�]
- (�)=[�+�]−[�]−[�]+[�]
अब, आइए उत्पाद को देखें ��⋅��⋅��। भाजक है:
�⋅[�]−�⋅[�]+�⋅[�]−�⋅[�]+�⋅[�+�]−�⋅[�]−�⋅[�]+�⋅[�]
जो बड़े करीने से सरल बनाता है:
�⋅[�+�]−�⋅[�]
ध्यान दें कि यह भाजक ठीक उसी प्रारूप का है, जो ऊपर �� और �� के भाजक का है। इसलिए, ��⋅��⋅��=��+�।
अब, हम एक प्रक्रिया शुरू करते हैं जिसे "अंतिम घातांक" चरण कहा जाता है, जहां हम अपने कार्यों का परिणाम ऊपर (��,��, आदि) लेते हैं और इसे घात �=(�12−1)/� तक बढ़ाते हैं, जहां �12−1 (��)12 में गुणक समूह का क्रम है (अर्थात। के लिए) कोई �∈(��)12,�(�12−1)=1). ध्यान दें कि यदि आप इस घातांक को किसी भी परिणाम पर लागू करते हैं पहले ही � की घात तक बढ़ाए जाने पर, आपको �12−1 की घात पर एक घातांक मिलता है, इसलिए परिणाम 1 हो जाता है। इसलिए, अंतिम घातांक के बाद, �� रद्द हो जाता है और हमें ���⋅���=( ��+�)�. आपके लिए कुछ द्विरेखीयता है।
अब, यदि आप एक ऐसा फ़ंक्शन बनाना चाहते हैं जो दोनों तर्कों में द्विरेखीय हो, तो आपको डरावने गणित में जाने की आवश्यकता है, जहां सीधे किसी मान का �� लेने के बजाय, आप किसी का �� लेते हैं भाजक, और यहीं से संपूर्ण "टेट पेयरिंग" आती है। कुछ और परिणाम साबित करने के लिए आपको "रैखिक तुल्यता" और "वेइल पारस्परिकता" जैसी धारणाओं से निपटना होगा, और खरगोश का छेद वहीं से आगे बढ़ता है। आप इस सब पर अधिक पठन सामग्री पा सकते हैं यहाँ उत्पन्न करें और यहाँ उत्पन्न करें.
टेट युग्मन के एक संशोधित संस्करण के कार्यान्वयन के लिए, जिसे इष्टतम एट पारिंग कहा जाता है, यहाँ देखने के. कोड लागू होता है मिलर का एल्गोरिदम, जो वास्तव में �� की गणना करने के लिए आवश्यक है।
ध्यान दें कि तथ्य यह है कि इस तरह की जोड़ियां संभव हैं, यह कुछ हद तक मिश्रित आशीर्वाद है: एक तरफ, इसका मतलब है कि जोड़ियों के साथ हम जो भी प्रोटोकॉल कर सकते हैं वे संभव हो जाते हैं, लेकिन इसका मतलब यह भी है कि हमें अण्डाकार वक्रों के बारे में अधिक सावधान रहना होगा हम उपयोग करते हैं।
प्रत्येक अण्डाकार वक्र का एक मान होता है जिसे a कहा जाता है एम्बेडिंग डिग्री; अनिवार्य रूप से, सबसे छोटा � ऐसा है कि ��−1 � का गुणज है (जहाँ � फ़ील्ड के लिए प्रयुक्त अभाज्य है और � वक्र क्रम है)। उपरोक्त फ़ील्ड में, �=12, और पारंपरिक ईसीसी के लिए उपयोग किए जाने वाले फ़ील्ड में (यानी जहां हम युग्मों की परवाह नहीं करते हैं), एम्बेडिंग डिग्री अक्सर बहुत बड़ी होती है, इस हद तक कि युग्मों की गणना करना कम्प्यूटेशनल रूप से असंभव है; हालाँकि, यदि हम सावधान नहीं हैं तो हम ऐसे फ़ील्ड उत्पन्न कर सकते हैं जहाँ �=4 या 1 भी हो।
यदि �=1, तो अण्डाकार वक्रों के लिए "असतत लघुगणक" समस्या (अनिवार्य रूप से, केवल बिंदु �=�⋅� को जानकर � को पुनर्प्राप्त करना, समस्या जिसे आपको अण्डाकार वक्र निजी कुंजी को "क्रैक" करने के लिए हल करना है) को कम किया जा सकता है �� पर एक समान गणित समस्या में, जहां समस्या बहुत आसान हो जाती है (इसे कहा जाता है)। एमओवी हमला); 12 या उससे अधिक की एम्बेडिंग डिग्री के साथ वक्रों का उपयोग यह सुनिश्चित करता है कि यह कमी या तो अनुपलब्ध है, या युग्मन परिणामों पर असतत लॉग समस्या को हल करना कम से कम उतना ही कठिन है जितना कि सार्वजनिक कुंजी से "सामान्य तरीके" से एक निजी कुंजी को पुनर्प्राप्त करना। कम्प्यूटेशनल रूप से अव्यवहार्य)। चिंता न करें; इस मुद्दे के लिए सभी मानक वक्र मापदंडों की पूरी तरह से जाँच की गई है।
zk-SNARKs कैसे काम करते हैं, इसकी गणितीय व्याख्या के लिए हमारे साथ बने रहें, जल्द ही आ रहा है।
समीक्षा करने और सुधार करने के लिए क्रिश्चियन रीटविस्नर, एरियल गेबिज़ोन (ज़कैश से) और अल्फ्रेड मेनेजेस को विशेष धन्यवाद।
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोडेटा.नेटवर्क वर्टिकल जेनरेटिव एआई। स्वयं को शक्तिवान बनाएं। यहां पहुंचें।
- प्लेटोआईस्ट्रीम। Web3 इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- प्लेटोईएसजी. कार्बन, क्लीनटेक, ऊर्जा, पर्यावरण, सौर, कचरा प्रबंधन। यहां पहुंचें।
- प्लेटोहेल्थ। बायोटेक और क्लिनिकल परीक्षण इंटेलिजेंस। यहां पहुंचें।
- BlockOffsets. पर्यावरणीय ऑफसेट स्वामित्व का आधुनिकीकरण। यहां पहुंचें।
- स्रोत: प्लेटो डेटा इंटेलिजेंस।