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. Ich verstehe jedoch 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?
digital-signature
public-key-encryption
private-key
public-key
pki
jcampos8782
quelle
quelle
Antworten:
Ihr Verständnis von "Verschlüsselung öffentlicher Schlüssel, Entschlüsselung privater Schlüssel" ist korrekt ... für Daten / Nachrichten ENCRYPTION. Bei digitalen Signaturen ist es umgekehrt. Mit einer digitalen Signatur versuchen Sie zu beweisen, dass das von Ihnen signierte Dokument von Ihnen stammt. Dazu müssen Sie etwas verwenden, das nur SIE haben: Ihren privaten Schlüssel.
Eine digitale Signatur in ihrer einfachsten Beschreibung ist 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 etwas ist, das nur der Unterzeichner hat (oder haben 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
Wenn sie übereinstimmen, gilt die Signatur als gültig. Wenn sie nicht übereinstimmen, bedeutet dies entweder, dass ein anderer Schlüssel zum Signieren verwendet wurde oder dass die Daten (absichtlich oder unbeabsichtigt) geändert wurden.
Hoffentlich hilft das!
quelle
Die Tasten arbeiten umgekehrt:
Unten finden Sie ein Beispielskript, mit dem Sie diesen gesamten Ablauf testen können
openssl
.Dieses Skript gibt Folgendes aus:
quelle
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. Beispielsweise:
Der Absender sendet:
Die Nachricht
Der Hash der Nachricht, der mit ihrem privaten Schlüssel verschlüsselt ist
Der Empfänger:
Wenn sie nicht identisch sind, bedeutet dies, dass entweder die Nachricht manipuliert oder mit einem anderen Schlüssel signiert wurde und nicht mit dem, den wir dachten ...
Ein anderes Beispiel wäre, dass der Absender einen allgemeinen Hash verwendet, den der Empfänger möglicherweise ebenfalls verwendet. Beispielsweise:
Der Absender sendet:
Der Empfänger:
Dadurch wird erneut sichergestellt, dass die Nachricht nicht manipuliert wurde und vom erwarteten Absender stammt.
quelle
Wenn ich Ihre Frage so umformulieren musste, wie ich sie verstehe, stellen Sie Folgendes:
Andere Antworten haben bereits erklärt, wie asymmetrische Kryptographie bedeutet, dass Sie entweder :
Wir wissen, dass sowohl Beispiel 1 als auch Beispiel 2 funktionieren. Beispiel 1 ist intuitiv sinnvoll, während Beispiel 2 die ursprüngliche Frage aufwirft .
Es stellt sich heraus, dass die Kryptographie mit elliptischen Kurven (auch als "Multiplikation mit elliptischen Kurven" bezeichnet) die Antwort auf die ursprüngliche Frage ist. Die Kryptographie mit elliptischen Kurven ist die mathematische Beziehung, die die folgenden Bedingungen ermöglicht:
Für die meisten sind die Bedingungen 1 und 2 sinnvoll, aber was ist mit 3?
Sie haben hier zwei Möglichkeiten:
Zusammenfassend wird ein öffentliches / privates Schlüsselpaar unter Verwendung der Kryptographie mit elliptischen Kurven erstellt, die von Natur aus einen öffentlichen und einen privaten Schlüssel erstellt, die mathematisch in beide Richtungen verknüpft , aber nicht in beide Richtungen mathematisch abgeleitet sind . Auf diese Weise können Sie den öffentlichen Schlüssel einer Person verwenden, um zu überprüfen, ob diese eine bestimmte Nachricht signiert hat, ohne dass sie Ihnen ihren privaten Schlüssel zur Verfügung stellt.
quelle
Ich dachte, ich würde eine ergänzende Erklärung für jeden liefern, der etwas Intuitiveres sucht.
Ein großer Teil dieser Verwirrung ergibt sich aus der Benennung von "öffentlichen Schlüsseln" und "privaten Schlüsseln" als solchen, da die tatsächliche Funktionsweise dieser Dinge direkt im Widerspruch dazu steht, wie ein "Schlüssel" verstanden wird.
Nehmen wir zum Beispiel die Verschlüsselung. Man könnte sich vorstellen, dass es so funktioniert:
Dies ermöglicht das Senden geheimer Nachrichten zwischen Parteien, aber von einem intuitiven Standpunkt aus gesehen ist "öffentliche Sperre" ein geeigneterer Name als "öffentlicher Schlüssel".
Beim Senden digitaler Signaturen sind die Rollen jedoch etwas vertauscht:
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 gleich sind, wissen sie Folgendes:
Die entsperrte Nachricht wurde während der Reise nicht manipuliert und,
Die Nachricht muss von der Person stammen, die das passende Schloss 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, einen maßgeblichen Ort hat, an den er gehen kann, um den passenden Schlüssel für die Schlösser des Unterzeichners zu erhalten. Andernfalls kann jeder sagen "Hey, hier ist der Schlüssel zum privaten Schloss von so und so", Ihnen eine Nachricht senden, die vorgibt, sie zu sein, aber sie mit ihrem privaten Schloss sperren. Sie führen alle oben genannten Schritte aus und glauben, dass die Nachricht tatsächlich sein muss von der Person, die Sie gedacht haben, aber Sie werden getäuscht, weil Sie in Bezug auf den wahren Besitzer 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.
quelle
Auf Ihre Frage - ich habe mir die RSA-Implementierung angesehen. Und Sie erhalten mehr Klarheit darüber, wie ein öffentlicher Schlüssel zum Überprüfen der Signatur mithilfe eines privaten Schlüssels verwendet wird. Zweifellos ist der private Schlüssel nicht verfügbar. Hier ist, wie...
Trick hier ist, den privaten Schlüssel innerhalb einer Funktion zu verstecken. In diesem Fall,
(p-1)*(q-1).
Betrachten Sie p als privaten Schlüssel und e als öffentlichen Schlüssel. 'p' ist in einer anderen Funktion gekapselt, um es auszublenden.
Gesendete Daten = [verschlüsselt (Hash), Nachricht] = [m ^ d, Nachricht]; Dabei ist m die Nachricht. Angenommen, 'Daten gesendet' = y Um die Integrität zu überprüfen, finden wir y ^ e, um m zu erhalten. Schon seit
m ^(d*e) = m ^1 = m
.Hoffe das hilft! :) :)
quelle