module OpenSSL::PKey

Asymmetrische Public-Key-Algorithmen

Asymmetrische Public-Key-Algorithmen lösen das Problem der Einrichtung und des Austauschs von geheimen Schlüsseln zur Ver-/Entschlüsselung von Nachrichten. Der Schlüssel in einem solchen Algorithmus besteht aus zwei Teilen: einem Public Key, der an andere verteilt werden kann, und einem Private Key, der geheim bleiben muss.

Mit einem Public Key verschlüsselte Nachrichten können nur von Empfängern entschlüsselt werden, die im Besitz des zugehörigen Private Keys sind. Da asymmetrische Algorithmen erheblich langsamer als symmetrische Schlüsselalgorithmen sind (siehe OpenSSL::Cipher), werden sie oft verwendet, um einen symmetrischen Schlüssel zwischen zwei Parteien einzurichten, die im Besitz des Public Keys des jeweils anderen sind.

Asymmetrische Algorithmen bieten viele nützliche Funktionen, die in vielen verschiedenen Bereichen eingesetzt werden. Eine sehr häufige Anwendung ist die Erstellung und Validierung digitaler Signaturen. Zum Signieren eines Dokuments verwendet der Unterzeichner im Allgemeinen einen Message-Digest-Algorithmus (siehe OpenSSL::Digest), um eine Zusammenfassung des Dokuments zu berechnen, die dann mit dem Private Key verschlüsselt (d. h. signiert) wird. Jeder, der im Besitz des Public Keys ist, kann die Signatur dann verifizieren, indem er die Message-Digest-Zusammenfassung des Originaldokuments selbst berechnet, die Signatur mit dem Public Key des Unterzeichners entschlüsselt und das Ergebnis mit der zuvor berechneten Message-Digest-Zusammenfassung vergleicht. Die Signatur ist genau dann gültig, wenn die entschlüsselte Signatur mit dieser Message-Digest-Zusammenfassung übereinstimmt.

Das Modul PKey bietet Unterstützung für drei beliebte Public/Private-Key-Algorithmen

Jede dieser Implementierungen ist tatsächlich eine Unterklasse der abstrakten Klasse PKey, die die Schnittstelle zur Unterstützung digitaler Signaturen in Form von PKey#sign und PKey#verify bietet.

Diffie-Hellman-Schlüsselaustausch

Schließlich bietet PKey auch OpenSSL::PKey::DH, eine Implementierung des Diffie-Hellman-Schlüsselaustauschprotokolls, das auf diskreten Logarithmen in endlichen Körpern basiert, derselben Grundlage, auf der DSA aufbaut. Das Diffie-Hellman-Protokoll kann verwendet werden, um (symmetrische) Schlüssel über unsichere Kanäle auszutauschen, ohne dass eine vorherige gemeinsame Kenntnis zwischen den teilnehmenden Parteien erforderlich ist. Da die Sicherheit von DH relativ lange „Public Keys“ (d. h. den Teil, der offen zwischen den Teilnehmern übertragen wird) erfordert, ist DH tendenziell ziemlich langsam. Wenn Sicherheit oder Geschwindigkeit Ihre Hauptanliegen sind, bietet OpenSSL::PKey::EC eine weitere Implementierung des Diffie-Hellman-Protokolls.