एक सार्वजनिक कुंजी एक हस्ताक्षर को कैसे सत्यापित करती है?


173

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

मेरी समझ यह थी कि सार्वजनिक कुंजी एन्क्रिप्ट, निजी कुंजी डिक्रिप्ट ... क्या कोई मुझे समझने में मदद कर सकता है?


3
अच्छा प्रश्न। :)
सूरज जैन

मैं इसे एक उत्तर के रूप में जोड़ना नहीं चाहता था और आने वाली लपटों को जोखिम में डालना चाहता हूं लेकिन यदि आप "कैसे" का वास्तव में अर्थ है "मैं कैसे एक हस्ताक्षर को सत्यापित करता हूं" शब्द का उपयोग कर रहा हूं, तो एक संभावना है कि gpg4win डाउनलोड किया जाए। एक बार स्थापित होने के बाद, आप किसी फ़ाइल को राइट-क्लिक कर सकते हैं और उसे सत्यापित कर सकते हैं। यह उत्पादों का एक सूट है जो विंडोज शेल में एकीकृत होता है। ऐसी ही एक उपयोगिता क्लियोपेट्रा है जो सत्यापन करने के लिए प्रमाणपत्रों को ऑनलाइन देखेगी।
१'

जवाबों:


210

"सार्वजनिक कुंजी एन्क्रिप्ट, निजी कुंजी डिक्रिप्ट" की आपकी समझ ... डेटा / संदेश के लिए सही है। डिजिटल हस्ताक्षर के लिए, यह रिवर्स है। एक डिजिटल हस्ताक्षर के साथ, आप यह साबित करने की कोशिश कर रहे हैं कि आपके द्वारा हस्ताक्षरित दस्तावेज़ आपके पास आया है। ऐसा करने के लिए, आपको कुछ ऐसा उपयोग करने की आवश्यकता है जो केवल आपके पास हो: आपकी निजी कुंजी।

इसके सरलतम विवरण में एक डिजिटल हस्ताक्षर डेटा (फ़ाइल, संदेश, आदि) का एक हैश (SHA1, MD5, आदि) है जो बाद में हस्ताक्षरकर्ता की निजी कुंजी के साथ एन्क्रिप्ट किया गया है। चूँकि ऐसा कुछ केवल हस्ताक्षरकर्ता के पास है (या होना चाहिए) वह है जहाँ से ट्रस्ट आता है। हर कोई हस्ताक्षरकर्ता की सार्वजनिक कुंजी तक पहुंच (या होनी चाहिए) है।

तो, एक डिजिटल हस्ताक्षर को मान्य करने के लिए, प्राप्तकर्ता

  1. उसी डेटा (फ़ाइल, संदेश, आदि) के हैश की गणना करता है,
  2. प्रेषक की सार्वजनिक कुंजी का उपयोग करके डिजिटल हस्ताक्षर का प्रयास करता है, और
  3. 2 हैश मूल्यों की तुलना करता है।

यदि वे मेल खाते हैं, तो हस्ताक्षर वैध माना जाता है। यदि वे मेल नहीं खाते हैं, तो इसका मतलब है कि इसे साइन करने के लिए एक अलग कुंजी का उपयोग किया गया था, या यह कि डेटा को बदल दिया गया है (या तो जानबूझकर या अनजाने में)।

उम्मीद है की वो मदद करदे!


13
मेरी समझ यह थी कि चाबियाँ सममित नहीं थीं ... अर्थात, सार्वजनिक कुंजी के साथ एन्क्रिप्ट की गई वस्तुएं निजी कुंजी द्वारा डिक्रिप्ट की जा सकती हैं, लेकिन यह संबंध विपरीत काम नहीं करता है ... अधिक विशेष रूप से, मैंने ऑब्जेक्ट्स नहीं सोचा था निजी कुंजी के साथ एन्क्रिप्टेड सार्वजनिक कुंजी द्वारा डिक्रिप्ट किया जा सकता है। अगर वास्तव में ऐसा है, तो निश्चित रूप से यह मेरे सवाल का जवाब देता है।
jcampos8782

63
चाबियाँ एक दूसरे के विपरीत काम करती हैं। अपनी सार्वजनिक कुंजी के साथ कुछ एन्क्रिप्ट किया गया? इसे अपनी निजी कुंजी के साथ डिक्रिप्ट करें। इसके विपरीत, यदि आपने अपनी निजी कुंजी के साथ कुछ एन्क्रिप्ट किया है, तो आप इसे अपनी जनता के साथ डिक्रिप्ट करते हैं। ऐसी असममित क्रिप्टोग्राफी की प्रकृति है।
शैडोमैन

20
सममित का अर्थ है कि एक ही कुंजी का उपयोग एन्क्रिप्ट / डिक्रिप्ट करने के लिए किया जाता है। एसिमेट्रिक का अर्थ है कि एक कुंजी एनक्रिप्ट और एक अलग कुंजी डिक्रिप्ट (और यह रिवर्स भी सच है)।
सेग्रीज

8
@ जोडीमोरो, तकनीकी रूप से एक संदेश "सीक्रेट" नहीं है यदि इसे एक निजी कुंजी के साथ एन्क्रिप्ट किया गया है। यदि यह किसी निजी कुंजी के साथ एन्क्रिप्ट किया गया है, तो सार्वजनिक रूप से उपलब्ध "सार्वजनिक" कुंजी के साथ कोई भी संदेश को डिक्रिप्ट कर सकता है।
रेवल्वेस

4
@ जोडीमोरो एकमात्र कारण हैश को एक निजी कुंजी के साथ एक हस्ताक्षर में एन्क्रिप्ट किया गया है यह सुनिश्चित करने के लिए कि हैश को बदला नहीं गया है ... यह सुनिश्चित करने के लिए नहीं कि यह "गुप्त" है।
रेवेल्वेस

73

चाबियाँ विपरीत काम करती हैं:

सार्वजनिक कुंजी एन्क्रिप्ट, निजी कुंजी डिक्रिप्शन (एन्क्रिप्टिंग):

openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message.ssl
openssl rsautl -decrypt -inkey private.pem       -in message.ssl -out message.txt

निजी कुंजी एनक्रिप्ट, सार्वजनिक कुंजी डिक्रिप्ट (हस्ताक्षर):

openssl rsautl -sign -inkey private.pem       -in message.txt -out message.ssl
openssl rsautl       -inkey public.pem -pubin -in message.ssl -out message.txt

नीचे इस पूरे प्रवाह का परीक्षण करने के लिए एक उदाहरण स्क्रिप्ट है openssl

#!/bin/sh
# Create message to be encrypted
echo "Creating message file"
echo "---------------------"
echo "My secret message" > message.txt
echo "done\n"

# Create asymmetric keypair
echo "Creating asymmetric key pair"
echo "----------------------------"
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -pubout
echo "done\n"

# Encrypt with public & decrypt with private
echo "Public key encrypts and private key decrypts"
echo "--------------------------------------------"
openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt         -out message_enc_pub.ssl
openssl rsautl -decrypt -inkey private.pem       -in message_enc_pub.ssl -out message_pub.txt
xxd message_enc_pub.ssl # Print the binary contents of the encrypted message
cat message_pub.txt # Print the decrypted message
echo "done\n"

# Encrypt with private & decrypt with public
echo "Private key encrypts and public key decrypts"
echo "--------------------------------------------"
openssl rsautl -sign    -inkey private.pem -in message.txt          -out message_enc_priv.ssl
openssl rsautl -inkey public.pem -pubin    -in message_enc_priv.ssl -out message_priv.txt
xxd message_enc_priv.ssl
cat message_priv.txt
echo "done\n"

यह स्क्रिप्ट निम्न आउटपुट देती है:

Creating message file
---------------------
done

Creating asymmetric key pair
----------------------------
Generating RSA private key, 1024 bit long modulus
...........++++++
....++++++
e is 65537 (0x10001)
writing RSA key
done

Public key encrypts and private key decrypts
--------------------------------------------
00000000: 31c0 f70d 7ed2 088d 9675 801c fb9b 4f95  1...~....u....O.
00000010: c936 8cd0 0cc4 9159 33c4 9625 d752 5b77  .6.....Y3..%.R[w
00000020: 5bfc 988d 19fe d790 b633 191f 50cf 1bf7  [........3..P...
00000030: 34c0 7788 efa2 4967 848f 99e2 a442 91b9  4.w...Ig.....B..
00000040: 5fc7 6c79 40ea d0bc 6cd4 3c9a 488e 9913  _.ly@...l.<.H...
00000050: 387f f7d6 b8e6 5eba 0771 371c c4f0 8c7f  8.....^..q7.....
00000060: 8c87 39a9 0c4c 22ab 13ed c117 c718 92e6  ..9..L".........
00000070: 3d5b 8534 7187 cc2d 2f94 0743 1fcb d890  =[.4q..-/..C....
My secret message
done

Private key encrypts and public key decrypts
--------------------------------------------
00000000: 6955 cdd0 66e4 3696 76e1 a328 ac67 4ca3  iU..f.6.v..(.gL.
00000010: d6bb 5896 b6fe 68f1 55f1 437a 831c fee9  ..X...h.U.Cz....
00000020: 133a a7e9 005b 3fc5 88f7 5210 cdbb 2cba  .:...[?...R...,.
00000030: 29f1 d52d 3131 a88b 78e5 333e 90cf 3531  )..-11..x.3>..51
00000040: 08c3 3df8 b76e 41f2 a84a c7fb 0c5b c3b2  ..=..nA..J...[..
00000050: 9d3b ed4a b6ad 89bc 9ebc 9154 da48 6f2d  .;.J.......T.Ho-
00000060: 5d8e b686 635f b6a4 8774 a621 5558 7172  ]...c_...t.!UXqr
00000070: fbd3 0c35 df0f 6a16 aa84 f5da 5d5e 5336  ...5..j.....]^S6
My secret message
done

2
स्क्रिप्ट जोड़ने के लिए धन्यवाद - निश्चित रूप से स्पष्ट चीजों की मदद की।
पैट

बहुत बहुत धन्यवाद, यह हमेशा मेरे लिए समझने के लिए आसान है ecample के साथ
साइमन

16

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

सत्यापित करने के लिए कुछ अलग तरीके हैं कि कुछ अपेक्षित प्रेषक से एक संदेश आया। उदाहरण के लिए:

प्रेषक भेजता है:

  1. संदेश

  2. संदेश का हैश उनकी निजी कुंजी के साथ एन्क्रिप्टेड है

प्राप्तकर्ता:

  1. एक संदेश प्राप्त करने के लिए सार्वजनिक कुंजी के साथ हस्ताक्षर (2) का प्रयास करता है, माना जाता है कि एक ही संदेश के रूप में (1) लेकिन हमें अभी तक पता नहीं है। अब हमारे पास दो संदेश हैं जिन्हें हमें सत्यापित करने की आवश्यकता है वे समान हैं। तो ऐसा करने के लिए, हम अपनी सार्वजनिक कुंजी के साथ उन दोनों को एन्क्रिप्ट करेंगे और दो हैश की तुलना करेंगे। तो हम करेंगे ...।
  2. हैश प्राप्त करने के लिए सार्वजनिक कुंजी के साथ मूल संदेश (1) को एन्क्रिप्ट करें
  3. एक दूसरे हैश पाने के लिए डिक्रिप्ट किए गए संदेश (3) को एन्क्रिप्ट करें और यह सत्यापित करने के लिए (4) की तुलना करें कि वे समान हैं।

यदि वे समान नहीं हैं तो इसका मतलब है कि या तो संदेश के साथ छेड़छाड़ की गई थी या इसे किसी अन्य कुंजी के साथ हस्ताक्षरित किया गया था, न कि हमने जो सोचा था ...

एक अन्य उदाहरण प्रेषक के लिए एक सामान्य हैश का उपयोग करने के लिए होगा जो कि रिसीवर को भी उपयोग करने के लिए पता हो सकता है। उदाहरण के लिए:

प्रेषक भेजता है:

  1. एक संदेश
  2. संदेश के एक ज्ञात हैश लेता है, फिर निजी कुंजी के साथ हैश को एन्क्रिप्ट करता है

प्राप्तकर्ता:

  1. निर्णय (2) और हैश मान प्राप्त करता है
  2. प्रेषक द्वारा उपयोग किए गए उसी हैश के साथ संदेश (1) को मिटा देता है
  3. यह सुनिश्चित करने के लिए दो हैश की तुलना करें कि वे मेल खाते हैं

यह फिर से सुनिश्चित करता है कि संदेश के साथ छेड़छाड़ नहीं की गई थी और यह अपेक्षित प्रेषक से है।


6

अगर मुझे आपके प्रश्न को दोबारा समझना है कि मैं इसे कैसे समझता हूं, तो आप निम्नलिखित पूछ रहे हैं:

यदि सार्वजनिक कुंजी क्रिप्टोग्राफी यह सुनिश्चित करती है कि एक सार्वजनिक कुंजी एक निजी कुंजी से प्राप्त की जा सकती है, लेकिन एक निजी कुंजी सार्वजनिक कुंजी से प्राप्त नहीं की जा सकती है, तो आप आश्चर्यचकित हो सकते हैं , कैसे एक सार्वजनिक कुंजी प्रेषक के बिना एक निजी कुंजी के साथ हस्ताक्षरित संदेश को डिक्रिप्ट कर सकती है प्राप्तकर्ता को हस्ताक्षरित संदेश के भीतर निजी कुंजी को उजागर करना? (फिर से पढ़ें कि कुछ समय तक यह समझ में आता है)

अन्य उत्तर पहले ही बता चुके हैं कि असममित क्रिप्टोग्राफी का अर्थ है कि आप या तो :

  1. सार्वजनिक कुंजी के साथ एन्क्रिप्ट करें, मिलान करने वाली निजी कुंजी के साथ डिक्रिप्ट करें (नीचे pseudocode)
var msg = 'secret message';

var encryptedMessage = encrypt(pub_key, msg);

var decryptedMessage = decrypt(priv_key, encryptedMessage);

print(msg == decryptedMessage == 'secret message'); // True
  1. निजी कुंजी के साथ एन्क्रिप्ट करें, मिलान सार्वजनिक कुंजी के साथ डिक्रिप्ट करें (नीचे pseudocode)
var msg = 'secret message';

var encryptedMessage = encrypt(priv_key, msg);

var decryptedMessage = decrypt(pub_key, encryptedMessage); // HOW DOES THIS WORK???

print(msg == decryptedMessage == 'secret message'); // True

हम जानते हैं कि दोनों # 1 और # 2 काम करते हैं। उदाहरण # 1 सहज ज्ञान युक्त बनाता है, जबकि उदाहरण # 2 मूल प्रश्न को दर्शाता है ।

पता चलता है, अण्डाकार वक्र क्रिप्टोग्राफी (जिसे "दीर्घवृत्त वक्र गुणन" भी कहा जाता है) मूल प्रश्न का उत्तर है। एलिप्टिक वक्र क्रिप्टोग्राफी गणितीय संबंध है जो निम्नलिखित स्थितियों को संभव बनाता है:

  1. सार्वजनिक कुंजी गणितीय रूप से निजी कुंजी से उत्पन्न की जा सकती है
  2. एक निजी कुंजी को गणितीय रूप से सार्वजनिक कुंजी से उत्पन्न नहीं किया जा सकता है (अर्थात "ट्रैपर फ़ंक्शन")
  3. एक निजी कुंजी को एक सार्वजनिक कुंजी द्वारा सत्यापित किया जा सकता है

ज्यादातर के लिए, स्थिति # 1 और # 2 समझ में आती है, लेकिन # 3 के बारे में क्या?

आपके पास दो विकल्प हैं:

  1. आप एक खरगोश-छेद नीचे जा सकते हैं और घंटों तक यह जानने में घंटों का समय बिता सकते हैं कि अण्डाकार वक्र क्रिप्टोग्राफी कैसे काम करती है ( यहाँ एक महान प्रारंभिक बिंदु है ) ... या ...
  2. आप ऊपर दिए गए गुणों को स्वीकार कर सकते हैं - ठीक उसी तरह जैसे आप न्यूटन के गति के 3 नियमों को स्वीकार करते हैं, उन्हें स्वयं प्राप्त करने की आवश्यकता के बिना ।

अंत में, एक सार्वजनिक / निजी कीपर दीर्घवृत्तीय वक्र क्रिप्टोग्राफी का उपयोग करके बनाई गई है, जो स्वभाव से, एक सार्वजनिक और निजी कुंजी बनाता है जो गणितीय रूप से दोनों दिशाओं में जुड़ा हुआ है, लेकिन गणितीय रूप से दोनों दिशाओं में प्राप्त नहीं होता है । यह आपके लिए यह सुनिश्चित करने के लिए किसी की सार्वजनिक कुंजी का उपयोग करने के लिए संभव है कि उन्होंने एक विशिष्ट संदेश पर हस्ताक्षर किए, उनके बिना आपकी निजी कुंजी को उजागर किए बिना।


आपकी 3 स्थितियां यह सब समझाती हैं। मैं सिर्फ इस शब्द 'अण्डाकार वक्र' को पढ़ता हूं ans I wtf जैसा था
साइमन

5

सोचा था कि मैं किसी के लिए एक पूरक विवरण प्रदान करूँगा जो किसी और चीज़ की तलाश कर रहा हो।

इस भ्रम का एक बड़ा हिस्सा 'सार्वजनिक कुंजी' और 'निजी कुंजी' के नामकरण से उत्पन्न होता है, क्योंकि ये चीजें वास्तव में कैसे काम करती हैं, यह सीधे तौर पर बाधाओं के साथ है कि 'कुंजी' को कैसे समझा जाता है।

उदाहरण के लिए एन्क्रिप्शन लें। इस तरह से काम करने के बारे में सोचा जा सकता है:

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

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

हालाँकि, डिजिटल हस्ताक्षर भेजने के लिए भूमिकाएँ कुछ उलट हैं:

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

    1. अनलॉक किए गए संदेश में यात्रा के दौरान छेड़छाड़ नहीं की गई थी, और

    2. यह संदेश उस व्यक्ति का होना चाहिए, जिसके पास उनकी सार्वजनिक कुंजी का मिलान लॉक है।

  • और अंत में, यह पूरी प्रणाली केवल तभी काम करती है, जो कोई भी हस्ताक्षरकर्ता के हस्ताक्षर को मान्य करना चाहता है, उसके पास हस्ताक्षरकर्ता के ताले से मिलान कुंजी प्राप्त करने के लिए जाने के लिए एक आधिकारिक स्थान है। अन्यथा, कोई भी कह सकता है "अरे, यहाँ-और-तो-प्राइवेट लॉक की कुंजी है", आपको एक संदेश भेजते हैं जो उनके होने का दिखावा करता है, लेकिन इसे अपने निजी लॉक के साथ लॉक करें, आप उपरोक्त सभी चरणों को पूरा करते हैं और मानते हैं कि संदेश वास्तव में होना चाहिए उस व्यक्ति से जिसे आपने सोचा था, लेकिन आप मूर्ख हैं क्योंकि आप एक सार्वजनिक कुंजी के सच्चे मालिक के रूप में भ्रमित थे।

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


4
Adds की ’को ed अनलॉक लॉक’ में बदलना बस भ्रम में जोड़ता है।
लोर्ने

@EJP मैं 'अनलॉक लॉक' करने के लिए कुंजी नहीं बदलता। इसे बदलकर 'लॉक' कर दिया गया है। 'अनलॉक्ड लॉक' का उपयोग केवल आइटम के उपयोग को व्यक्त करने के उद्देश्य से किया जाता है। Regardles, यह आपकी राय है, और अगर आपको क्रिप्टो समुदाय में कोई दीर्घकालिक अनुभव है, तो यह संभवतः बेहद पक्षपाती है क्योंकि मौजूदा शब्द हैं कि आप प्रौद्योगिकी को समझने के लिए कैसे विकसित हुए हैं। आप उन लोगों को क्यों नहीं आने देते हैं जो केवल यह निर्धारित करना शुरू कर रहे हैं कि उपमा उपयोगी है या नहीं?
जूता

1
मुझे लगता है कि इस मामले की पहली समझ प्रदान करने के लिए ताले और चाबी के साथ सादृश्य काफी अच्छा है। एक बार जब आप ताले और कुंजियों की कल्पना करते हैं, तो उन्हें अलग-अलग पूर्णांकों का आदान-प्रदान किया जा सकता है जो आरएएस (या अन्य प्रकार) की चाबियों के लिए इकट्ठे होते हैं।
एंड्रियास लुंडग्रेन

मुझे व्यक्तिगत रूप से लगता है कि यह अंतर्दृष्टि सबसे अच्छी है, मैंने अब तक पढ़ा है। और निश्चित रूप से देखें कि कैसे निजी / सार्वजनिक की कुंजी के बजाय लॉक जोड़ना पूरे सिस्टम को नियमित रूप से नए कामर्स के लिए सहज ज्ञान युक्त आत्म-व्याख्यात्मक बनाता है। जबकि फिलहाल ऐसा बिल्कुल नहीं है। हम अनुभवी देव हैं (अभी तक क्रिप्टो करने के लिए कोई प्रत्यक्ष स्पर्श नहीं) और हमने कुछ समय के लिए सार्वजनिक / निजी के उद्देश्य के बारे में तर्क दिया। मैं कह रहा था कि निजी, एन्क्रिप्ट करने के लिए प्रयोग किया जाता है, जबकि वह कह रहे थे कि जनता के लिए एन्क्रिप्ट प्रयोग किया जाता है: डी
jayarjo

0

आपके प्रश्न के लिए - मैं आरएसए कार्यान्वयन को देख रहा था। और जिस तरह से एक सार्वजनिक कुंजी का उपयोग निजी कुंजी का उपयोग करके हस्ताक्षर को सत्यापित करने के लिए किया जाता है, उस पर अधिक स्पष्टता मिली। निस्संदेह, निजी कुंजी उजागर नहीं है। यहां कैसे...

यहां ट्रिक एक फ़ंक्शन के भीतर निजी कुंजी को छिपाने के लिए है। इस मामले में,(p-1)*(q-1).

पी को निजी कुंजी और ई को सार्वजनिक कुंजी मानें। 'p' को किसी अन्य फ़ंक्शन के भीतर छुपाया गया है।

E.g., `d = (p-1)(q-1); d * e = 1` (d is the inverse of e - public key)

डेटा भेजा गया [[एन्क्रिप्टेड (हैश), संदेश] = [एम ^ डी, संदेश]; जहाँ m संदेश है मान लीजिए 'डेटा भेजा गया' = y उस अखंडता की जाँच करने के लिए जिसे हम पाते हैं y m को पाने के लिए e। के बाद से m ^(d*e) = m ^1 = m

उम्मीद है की यह मदद करेगा! :)

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