Im allgemeinsten Sinne bedeutet "Signieren" in diesem Zusammenhang einen Prozess, der vom Text und etwas geheimem Wissen abhängt, so dass jeder, der Zugriff auf den Text und geheimes Wissen hat, die Ausgabe erstellen kann, und jeder, dem das gegeben wird Text und die Ausgabe können überprüfen, ob die Ausgabe korrekt ist, aber es ist für jeden, der keinen Zugriff auf das geheime Wissen hat, unmöglich, unabhängig die richtige Ausgabe zu erstellen.
Eine Methode hierfür ist die Verwendung der Verschlüsselung mit öffentlichem Schlüssel. Hierbei handelt es sich um ein System, bei dem zwei Schlüssel und ein kryptografischer Prozess vorhanden sind, sodass der kryptografische Prozess mit einem Schlüssel angewendet wird. Anschließend wird das Ergebnis verwendet und der kryptografische Prozess angewendet Wenn Sie mit der anderen Taste arbeiten, erhalten Sie die ursprüngliche Eingabe. Einer dieser Schlüssel ist öffentlich verteilt und wird als "öffentlicher Schlüssel" bezeichnet. Der andere Schlüssel wird geheim gehalten und als "privater Schlüssel" bezeichnet.
Wenn der Zugriff auf Informationen eingeschränkt wird, worauf sich „Verschlüsselung“ im Allgemeinen bezieht, besteht die Verschlüsselung mit öffentlichem Schlüssel darin, dass der Absender den öffentlichen Schlüssel des Empfängers in der Datei verwendet und der Empfänger seinen privaten Schlüssel in der Datei verwendet Ergebnis; Somit kann nur der beabsichtigte Empfänger die Datei lesen. Das Signieren kann erfolgen, indem der Absender seinen privaten Schlüssel und der Empfänger den öffentlichen Schlüssel des Absenders verwendet. Während im ersten Fall nur der Empfänger die Datei lesen kann (da nur er seinen privaten Schlüssel hat), kann im zweiten Fall nur der Absender die Datei senden (da nur er seinen privaten Schlüssel kennt). Im ersten Fall kann jeder schreiben, aber nur einer kann lesen, während im zweiten Fall nur eine Person schreiben kann, aber jeder lesen kann.
Wenn nur das Ergebnis der Verwendung des privaten Schlüssels des Absenders gesendet wird, muss jeder den öffentlichen Schlüssel des Absenders abrufen, um die Datei lesen zu können. So oft wird auch die Originaldatei gesendet, damit die Leute sie lesen können, ohne diesen Prozess durchlaufen zu müssen. Da das Senden sowohl der Datei als auch des Ergebnisses der Anwendung des kryptografischen Prozesses auf die gesamte Datei das Senden von doppelt so vielen Daten wie nur der Datei bedeutet, wird normalerweise ein Hash verwendet, um die Größe der Signatur zu verringern. Dies kann durch Hashing der Datei und anschließendes Signieren des Hash erfolgen (und dann kann der Empfänger die Datei hashen und den kryptografischen Prozess mit dem öffentlichen Schlüssel auf die Hash-Datei anwenden und prüfen, ob dieser mit dem gesendeten signierten Hash übereinstimmt) / p>
Obwohl das Signieren einer Datei, das Überprüfen einer Signatur und die Verschlüsselung denselben kryptografischen Prozess verwenden können, bezieht sich der Begriff "Verschlüsselung" hauptsächlich darauf, wann dieser Prozess verwendet wird, um andere Personen vom Lesen der Datei abzuhalten. eher als zur Authentifizierung. Wenn wir den Prozess zur Geheimhaltung anwenden, senden wir nur das Ergebnis, da wir nicht möchten, dass nicht autorisierte Personen Zugriff auf den Klartext haben. Wenn wir uns authentifizieren, senden wir beide, damit der Empfänger überprüfen kann, ob sie übereinstimmen.
Wenn ein Absender möchte, dass nur der beabsichtigte Empfänger eine Datei lesen kann, kann der Absender als separate Datei verschlüsseln Prozess. Das würde also funktionieren, wenn der Absender die Datei hasht, ihren privaten Schlüssel auf das Ergebnis anwendet, das Ergebnis an die Datei anhängt, dann den privaten Schlüssel des Empfängers auf die Datei + Signatur anwendet und dann Senden Sie das an den Empfänger. Somit würde der Empfänger message = recept.public (Datei + sender.private (Hash (Datei))
erhalten. Der Empfänger würde dann seinen privaten Schlüssel auf die Nachricht anwenden, den ursprünglichen Dateiteil des Hashs Ergebnis und prüfen Sie, ob dies mit dem öffentlichen Schlüssel des Absenders übereinstimmt, der auf die Signatur angewendet wird:
Hash ((Empfänger.Privat (Nachricht)). Datei) == Sender.Public ((Empfänger.Privat () Nachricht)). Unterschrift)