Opensl का उपयोग करके एक् पब्लिक की x और y घटकों को प्राप्त करें


12

मैं के लिए एक कुंजी युग्म पैदा कर रहा हूँ ईसीसी की अवस्था 'secp128r1' से openssl का उपयोग कर

मेरे द्वारा अनुसरण किए गए चरण:

  • पहले मैंने कमांड का उपयोग करके एक निजी कुंजी उत्पन्न की

    Opensl ecparam -genkey -name secp128r1 -noout -out private.pem

  • तब मैंने कमांड का उपयोग करके संबंधित सार्वजनिक कुंजी देखी

    Opensl ec -in private.pem -text -noout

    जिसने एक आउटपुट दिखाया:

    ईसी कुंजी पढ़ें

    निजी-कुंजी: (128 बिट)
    निजी:
    00: 9f: bf: 2b: bd: 06: 86: 3a: aa: bc: 7c: 3e: 90: 57: 40:
    f4: bc
    pub:
    04: 04: CE : 24: 34: d4: cb: f2: 58: 94: 2f: 8a: 5f: 06: d7:
    3f: ed: 5a: 50: ef: fb : cb : b7: 49: 62: 16: 62: 9e : आ: d5:
    30: a8: a5

    ASN1 OID: secp128r1

मैं स्पष्ट रूप से x और y घटक सार्वजनिक कुंजी से उत्पन्न चाहता हूं, कृपया कोई भी ऐसा करने का सही तरीका सुझा सकता है?
उपरोक्त सार्वजनिक कुंजी 264 बिट लंबी है, इसलिए इसे
धन्यवाद के रूप में (/ विभाजित) नहीं किया जा सकता है


5
सुरक्षा का डुप्लिकेट.स्टैकएक्सचेंज.com/questions/60926/… ; प्रति टूल्स . ietf.org/html/rfc5480#section-2.2 पहला ऑक्टेट (04) का मतलब है, जो कि एक्स द्वारा पीछा किया जाता है, वाई प्रत्येक कोऑक्टेट करता है, यहां ऑक्टेट के लिए गोल आकार का आकार है, यहां 16 ऑक्टेट हैं।
dave_thompson_085

2
@dave_Thompson - मुझे लगता है कि आपको जवाब देना चाहिए। यह अच्छा प्रश्न और अच्छी जानकारी थी (और सही साइट पर !!!), और आपको एक अच्छे उत्तर का लाभ मिलना चाहिए।
jww

जवाबों:


1

सबसे पहले, secp128r1 पुराना है। आज के मानक के लिए बेहतर सुरक्षा देने वाले कर्व्स का उपयोग करें। डैनियल जे। बर्नस्टीन और तनाजा लैंगे द्वारा सुरक्षित रूप से देखें ।

एक अण्डाकार वक्र को आकार q और प्रत्येक तत्व-बिंदु के क्षेत्र पर परिभाषित किया गया है- इसमें दो निर्देशांक X और Y हैं । एलिप्टिक कर्व Secp128r1 में 2 128 -2 97 -1 आकार ve हैं, यानी अंकों की संख्या 2 ^ 128 से थोड़ी कम है। इसका मतलब है कि हमें 128-बिट प्रतिनिधित्व की आवश्यकता है।

सार्वजनिक कुंजी जो वक्र पर एक बिंदु है, उसके दो निर्देशांक हैं, इसलिए, हमें दो 128-बिट स्टोर करने की आवश्यकता है।

यदि हम अण्डाकार वक्र Y 2 = X 3 + aX + b के समीकरण को देखें, जहाँ

 a = FFFFFFFD FFFFFFFF FFFFFFFF FFFFFF
 b = E87579C1 1079F43D D824993C 2CEE5E

यदि हम X को समीकरण से जानते हैं तो हम Y पा सकते हैं । चूँकि हम एक ऐसे क्षेत्र में काम कर रहे हैं, जिसमें वाई के पास अधिकतम दो वर्गमूल हो सकते हैं। Y 2 में y या -y वर्गमूल के रूप में होगा। इस ज्ञान का उपयोग किसी बिंदु के प्रतिनिधित्व को संपीड़ित करने के लिए किया जा सकता है और इसे बिंदु संपीड़न कहा जाता है । बस x समन्वय और एक बिट का चयन करने के लिए y या -y । अब आधार बिंदु देखें ( प्रमाणिक अनुशंसा देखें )

 base point = 03 161FF752 8B899B2D 0C28607C A52C5B86
            = 04 161FF752 8B899B2D 0C28607C A52C5B86 CF5AC839 5BAFEB13 C02DA292 DDED7A83 

पहली ओकटेट संरचना निर्धारित करता है

  • 04 इसका कोई मतलब नहीं है
  • 03इसका मतलब है कि एक संपीड़न है और सकारात्मक के रूप में y का चयन करें
  • 02इसका मतलब है कि एक संपीड़न है और नकारात्मक के रूप में y का चयन करें

अब ओपी के मापदंडों में बदल;

pub:
04:
04:ce:24:34:d4:cb:f2:58:94:2f:8a:5f:06:d7:3f:ed: -->X
5a:50:ef:fb:cc:b7:49:62:16:62:9e:aa:d5:30:a8:a5  -->Y

पहला ऑक्टेट का 04मतलब है कि कोई कंप्रेशन नहीं है। पहली पंक्ति X निर्देशांक है और दूसरी पंक्ति आपकी सार्वजनिक कुंजी का Y निर्देशांक है।

निजी कुंजी n के बारे में क्या ? यह सिर्फ एक स्केलर -इन्टेगर है - 0 <= n <= just के बीच

निजी: 00: 9f: bf: 2b: bd: 06: 86: 3a: aa: bc: 7c: 3e: 90: 57: 40: f4: bc

इसलिए, उपरोक्त संख्या - बिंदु नहीं - आपकी निजी कुंजी है।

इस जानकारी को निकालने के लिए आप कुछ वेब टूल का भी उपयोग कर सकते हैं।

नोट: कृपया अपनी निजी कुंजी को उजागर न करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.