4 Frage: Wie überprüft ein öffentlicher Schlüssel eine Signatur?

Frage erstellt am Fri, Aug 10, 2018 12:00 AM

Ich versuche, besser zu verstehen, wie öffentliche /private Schlüssel funktionieren. Ich verstehe, dass ein Absender einem Dokument eine digitale Signatur hinzufügen kann, indem er seinen privaten Schlüssel verwendet, um im Wesentlichen einen Hash des Dokuments zu erhalten, aber ich verstehe nicht, wie der öffentliche Schlüssel zum Überprüfen dieser Signatur verwendet werden kann.

Mein Verständnis war, dass öffentliche Schlüssel verschlüsseln, private Schlüssel entschlüsseln ... kann mir jemand helfen, das zu verstehen?

    
121
  1. Schöne Frage. :)
    2018-01-28 10: 31: 42Z
  2. Ich wollte dies nicht als Antwort hinzufügen und die folgenden Flammen riskieren, aber wenn Sie das Wort "wie" wirklich bedeutet "verwenden, wie überprüfe ich es? eine signatur "dann besteht eine möglichkeit darin, gpg4win herunterzuladen. Nach der Installation können Sie mit der rechten Maustaste auf eine Datei klicken und diese überprüfen. Es handelt sich um eine Reihe von Produkten, die sich in die Windows-Shell integrieren lassen. Ein solches Hilfsprogramm ist Kleopatra, das Zertifikate online nachschlägt, um die Validierung durchzuführen.
    2018-11-08 17: 30: 46Z
4 Antworten                              4                         

Ihr Verständnis von "Verschlüsselung öffentlicher Schlüssel, Entschlüsselung privater Schlüssel" ist korrekt ... für die Verschlüsselung von Daten /Nachrichten. Bei digitalen Signaturen ist es umgekehrt. Mit einer digitalen Signatur versuchen Sie nachzuweisen, dass das von Ihnen unterzeichnete Dokument von Ihnen stammt. Dazu müssen Sie etwas verwenden, das nur SIE haben: Ihren privaten Schlüssel.

Eine digitale Signatur ist in ihrer einfachsten Beschreibung ein Hash (SHA1, MD5 usw.) der Daten (Datei, Nachricht usw.), die anschließend mit dem privaten Schlüssel des Unterzeichners verschlüsselt werden. Da dies nur der Unterzeichner hat (oder sollte), kommt das Vertrauen von dort. Jeder hat (oder sollte) Zugriff auf den öffentlichen Schlüssel des Unterzeichners.

Um eine digitale Signatur zu validieren, muss der Empfänger

  1. Berechnet einen Hash aus denselben Daten (Datei, Nachricht usw.).
  2. Entschlüsselt die digitale Signatur mit dem PUBLIC-Schlüssel des Absenders und
  3. Vergleicht die 2 Hashwerte.

Wenn sie übereinstimmen, wird die Signatur als gültig betrachtet. Wenn sie nicht übereinstimmen, bedeutet dies, dass ein anderer Schlüssel zum Signieren verwendet wurde oder dass die Daten (absichtlich oder unbeabsichtigt) geändert wurden.

Hoffe das hilft!

    
162
2018-01-28 13: 26: 58Z
  1. Meines Erachtens waren die Schlüssel nicht symmetrisch ... dh mit einem öffentlichen Schlüssel verschlüsselte Objekte können mit dem privaten Schlüssel entschlüsselt werden, aber diese Beziehung hat nicht umgekehrt funktioniert ... genauer gesagt, ich dachte nicht, dass mit dem privaten Schlüssel verschlüsselte Objekte mit dem öffentlichen Schlüssel entschlüsselt werden könnten. Wenn dies tatsächlich der Fall ist, beantwortet dies definitiv meine Frage.
    2013-08-15 18: 55: 32Z
  2. Die Schlüssel arbeiten umgekehrt zueinander. Etwas mit Ihrem öffentlichen Schlüssel verschlüsselt? Entschlüsseln Sie es mit Ihrem privaten Schlüssel. Wenn Sie dagegen etwas mit Ihrem privaten Schlüssel verschlüsselt haben, entschlüsseln Sie es mit Ihrem öffentlichen Schlüssel. Dies ist die Natur der asymmetrischen Kryptographie
    2013-08-15 19: 12: 25Z
  3. Symmetrisch bedeutet nur, dass derselbe Schlüssel zum Ver- /Entschlüsseln verwendet wird. Assymetrisch bedeutet, dass ein Schlüssel verschlüsselt und ein anderer Schlüssel entschlüsselt wird (und dass das Gegenteil auch der Fall ist).
    2013-08-19 05: 27: 38Z
  4. @ Jodimoro, technisch gesehen ist eine Nachricht NICHT "geheim", wenn sie mit einem privaten Schlüssel verschlüsselt ist. Wenn es mit einem privaten Schlüssel verschlüsselt ist, kann jeder mit dem öffentlich verfügbaren "öffentlichen" Schlüssel die Nachricht entschlüsseln.
    2018-05-01 18: 04: 17Z
  5. @ Jodimoro Der einzige Grund, warum der Hash mit einem privaten Schlüssel in eine Signatur verschlüsselt wird, besteht darin, sicherzustellen, dass der Hash nicht geändert wird, sondern dass er "geheim" ist.
    2018-05-01 18: 16: 58Z

Wie in der Antwort von atn angegeben, funktionieren die Tasten umgekehrt.

  

Verschlüsselung mit öffentlichem Schlüssel, Entschlüsselung mit privatem Schlüssel (Verschlüsselung):

 
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
  

Verschlüsselung mit privatem Schlüssel, Entschlüsselung mit öffentlichem Schlüssel (Signieren):

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

Nachfolgend finden Sie ein Beispielskript zum Testen des gesamten Ablaufs mit 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"

Dieses Skript gibt Folgendes aus:

 
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
    
52
2017-05-23 12: 02: 56Z
  1. Großartig! Danke vielmals!!! Suche in diesen einfachen Zeilen 2 Tage! Schätzen Sie das!
    2017-05-23 12: 04: 13Z
  2. Vielen Dank, dass Sie das Skript hinzugefügt haben - dies hat definitiv zur Aufklärung beigetragen.
    2018-03-04 13: 16: 12Z

Der öffentliche Schlüssel verschlüsselt und nur der private Schlüssel kann ihn entschlüsseln, und das Gegenteil ist der Fall. Beide verschlüsseln mit unterschiedlichen Hashes, aber jeder Schlüssel kann die Verschlüsselung des anderen entschlüsseln.

Es gibt verschiedene Möglichkeiten, um zu überprüfen, ob eine Nachricht von einem erwarteten Absender stammt. Zum Beispiel:

Der Absender sendet:

  1. Die Nachricht

  2. Der Hash der Nachricht, der mit ihrem privaten Schlüssel verschlüsselt ist

Der Empfänger:

  1. Entschlüsselt die Signatur (2) mit dem öffentlichen Schlüssel, um eine Nachricht zu erhalten. Vermutlich die gleiche Nachricht wie (1), aber wir wissen es noch nicht. Wir müssen nun überprüfen, ob zwei Nachrichten identisch sind. Dazu verschlüsseln wir beide mit unserem öffentlichen Schlüssel und vergleichen die beiden Hashes. Also werden wir ...
  2. Verschlüsseln Sie die ursprüngliche Nachricht (1) mit dem öffentlichen Schlüssel, um einen Hash zu erhalten.
  3. Verschlüsseln Sie die entschlüsselte Nachricht (3), um einen zweiten Hash zu erhalten, und vergleichen Sie sie mit (4), um sicherzustellen, dass sie identisch sind.

Wenn sie nicht identisch sind, bedeutet dies, dass die Nachricht manipuliert oder mit einem anderen Schlüssel signiert wurde und nicht mit dem, von dem wir dachten ...

Ein weiteres Beispiel wäre, dass der Absender einen gemeinsamen Hash verwendet, den der Empfänger möglicherweise ebenfalls verwendet. Zum Beispiel:

Der Absender sendet:

  1. Eine Nachricht
  2. Nimmt einen bekannten Hash der Nachricht und verschlüsselt ihn dann mit dem privaten Schlüssel

Der Empfänger:

  1. Entschlüsselt (2) und erhält einen Hash-Wert
  2. Hasht die Nachricht (1) mit demselben Hash, den der Absender verwendet.
  3. Vergleicht die beiden Hashes, um sicherzustellen, dass sie übereinstimmen.

Dies stellt erneut sicher, dass die Nachricht nicht manipuliert wurde und vom erwarteten Absender stammt.

    
6
2018-10-11 20: 16: 34Z

Ich dachte, ich würde eine ergänzende Erklärung für alle geben, die etwas intuitiver Aufschlussreiches suchen.

Ein großer Teil dieser Verwirrung ergibt sich aus der Benennung von "öffentlichen Schlüsseln" und "privaten Schlüsseln" als solche, da die Funktionsweise dieser Dinge in direktem Widerspruch dazu steht, wie ein "Schlüssel" verstanden wird.

Nehmen Sie zum Beispiel die Verschlüsselung. Man könnte sich das so vorstellen:

  • Die Teilnehmer, die die geheimen Nachrichten lesen möchten, behalten jeweils einen Schlüssel versteckt (d. h. ein privater Schlüssel)
  • Alle Teilnehmer, die geheime Nachrichten senden möchten, haben die Möglichkeit, eine entsperrte Sperre (d. h. eine öffentliche Sperre) zu erhalten.
  • Das Senden einer geheimen Nachricht ist so einfach wie das Sperren mit einem entsperrten Schloss. Das Entsperren kann jedoch nur mit einem der versteckten Schlüssel erfolgen.

Hiermit können geheime Nachrichten zwischen Teilnehmern gesendet werden. Vom intuitiven Standpunkt aus ist die öffentliche Sperre ein geeigneterer Namee als "öffentlicher Schlüssel".

Beim Senden von digitalen Signaturen sind die Rollen jedoch etwas vertauscht:

  • Der Teilnehmer, der Nachrichten signieren möchte, ist der einzige, der Zugriff auf die entsperrten Sperren (d. h. eine private Sperre) hat.
  • Die Parteien, die die Signatur überprüfen möchten, haben alle die Möglichkeit, einen Schlüssel (d. h. einen öffentlichen Schlüssel) zu erhalten.
  • Der Unterzeichner erstellt dann zwei identische Nachrichten: eine, die jeder lesen kann und eine, die ihn begleitet, die er jedoch mit einer seiner privaten Sperren sperrt.
  • Wenn der Empfänger die Nachricht erhält, kann er sie lesen und dann mit dem öffentlichen Schlüssel die gesperrte Nachricht entsperren und die beiden Nachrichten vergleichen. Wenn die Nachrichten identisch sind, wissen sie Folgendes:

    1. Die entsperrte Nachricht wurde während der Reise nicht manipuliert und

    2. Die Nachricht muss von der Person stammen, die die entsprechende Sperre für ihren öffentlichen Schlüssel hat.

  • Und schließlich funktioniert dieses gesamte System nur, wenn jeder, der die Signatur eines Unterzeichners validieren möchte, über einen autorisierenden Ort verfügt, um den passenden Schlüssel für die Schlösser des Unterzeichners abzurufen. Ansonsten kann jeder sagen "Hey, hier ist der Schlüssel für die private Sperre von so und so". Senden Sie eine Nachricht, die vorgibt, sie zu sein, aber sperren Sie sie mit ihrer privaten Sperre. Führen Sie alle oben genannten Schritte aus und glauben Sie, dass die Nachricht tatsächlich sein muss von der Person, die Sie dachten, aber Sie werden getäuscht, weil Sie hinsichtlich des wahren Besitzers eines öffentlichen Schlüssels irregeführt wurden.

Solange es eine vertrauenswürdige Quelle zum Abrufen des öffentlichen Schlüssels eines Unterzeichners gibt, wissen Sie, wer der rechtmäßige Eigentümer eines öffentlichen Schlüssels ist, und können dessen Signatur validieren.

    
2
2018-03-02 21: 37: 53Z
  1. Wenn Sie "key" in "unlocked lock" ändern, wird die Verwirrung nur noch verstärkt.
    2018-03-02 22: 47: 55Z
  2. @ EJP Ich ändere den Schlüssel nicht in "entsperrte Sperre". Es wurde in "Sperre" geändert. 'Unlocked locked' wird nur zum Ausdruck der Verwendung des Artikels verwendet. Dies ist Ihre Meinung, und wenn Sie über langjährige Erfahrung in der Krypto-Community verfügen, ist dies wahrscheinlich äußerst voreingenommen, da die vorhandenen Begriffe so sind, wie Sie die Technologie verstanden haben. Warum lassen Sie nicht Leute, die gerade erst anfangen, entscheiden, ob die Analogie nützlich ist oder nicht?
    2018-03-03 05: 16: 54Z
  3. Ich denke, die Analogie mit Schlössern und Schlüsseln ist recht gut, um ein erstes Verständnis dieser Angelegenheit zu vermitteln. Sobald Sie die Schlösser und Schlüssel visualisiert haben, können diese durch verschiedene Ganzzahlen ersetzt werden, die zu RSA-Schlüsseln (oder anderen Schlüsseltypen) zusammengesetzt sind.
    2018-05-06 17: 44: 54Z
  4. Ich persönlich halte diese Einsicht für die beste, die ich bisher gelesen habe. Und sehen Sie auf jeden Fall, wie das Hinzufügen von Schloss anstelle von Schlüssel zu privat /öffentlich das gesamte System intuitiv selbsterklärend macht, wenn Sie regelmäßig neu einsteigen. Während im Moment ist es überhaupt nicht. Wir sind erfahrene Entwickler (nur ohne direkten Bezug zu Krypto) und haben uns einige Zeit über den Zweck von öffentlich /privat gestritten. Ich sagte, dass privat zum Verschlüsseln verwendet wird, während öffentlich zum Verschlüsseln verwendet wird: D
    2019-04-10 11: 20: 37Z
Quelle platziert Hier