Kryptografische Grundlagen mit Hilfe von OpenSSL erklärt
Autor : Gerd Raudenbusch
Stand : 11.09.2024
Während bei symmetrischen Kryptosystemen immer ein und der selbe Schlüssel sowohl zum Verschlüsseln als auch zum Entschlüsseln verwendet wird, sind es beim asymmetrischen Schlüssel zwei Schlüssel, und was der eine verschlüsselt, kann nur vom anderen entschlüsselt werden, und umgekehrt. Dabei generiert jeder Teilnehmer der Kommunikation anfänglich ein solches Schlüsselpaar und behält den privaten Schlüssel für sich, während der öffentliche Schlüssel mit den Kommunikations-Teilnehmern geteilt oder an geeigneter Stelle veröffentlicht wird.
Für die asymmetrische Verschlüsselung haben sich zwei mathematische Algorithmen als Grundlage etabliert :
- Der RSA-Algorithmus (benannt nach den Erfindern Rivest, Shamir und Adleman), der auf dem Faktorisierungsproblem basiert.
- Elliptische Kurven-Kryptografie (ECC), die das auf endlichen Körpern vorhandene diskrete Logarithmusproblem der ElGamal-Verschlüsselung auf elliptische Kurven abbildet. Ihr Vorteil sind wesentlich kürzere Schlüssellängen bei gleichbleibendem Sicherheitsniveau.
OpenSSL ist eine freie, umfangreiche und sehr weit verbreitete Software-Bibliothek, die viele kryptographische Algorithmen implementiert.
Dieser OpenSSL-Befehl beispielsweise erzeugt einen privaten RSA-Schlüssel :
openssl genrsa -out testkey-private.pem 2048
Dieser OpenSSL-Befehl erzeugt aus dem privaten einen zugehörigen öffentlichen RSA-Schlüssel :
openssl rsa -in testkey-private.pem -pubout -out testkey-public.pem
Mit den zwei Schlüsseln der asymmetrischen Kryptographie ergeben sich zwei wichtige, grundlegende Szenarien :
-
Signieren : Eine Nachricht wird mit dem eigenen privaten Schlüssel verschlüsselt. Jeder, der den öffentlichen Schlüssel hat, kann diese zwar Nachricht entschlüsseln und lesen, doch damit überzeugt er sich gleichzeitig von der Echtheit des Senders, weil nur der Sender den privaten Schlüssel dazu besitzen kann, mit dem die Nachricht verschlüsselt wurde. Damit wird seine Authentizität garantiert. In der Praxis wird für die Signatur jedoch nicht die ganze Nachricht, sondern nur ein Fingerabdruck davon, ein sogenannter "Digest" als Hashwert signiert.
Mit diesem Befehl beispielsweise wird ein SHA256-Digest einer Textdatei erstellt und mit dem privaten Schlüssel signiert :
openssl dgst -sha256 -sign testkey-private.pem -out signature.bin testmsg.txt
openssl dgst -sha256 -verify testkey-public.pem -signature signature.bin testmsg.txt
dient dem Empfänger, um seinerseits auf die gleiche Weise den SHA256-Digest zu einer empfangenen Nachricht zu erstellen und zu prüfen, ob die eigens erstellte Signatur der Nachricht zur empfangenen Signatur der Nachricht passt. -
Chiffrieren : Eine Nachricht wird mit dem öffentlichen Schlüssel des Empfängers verschlüsselt. Weil nur er den passenden privaten Schlüssel dazu hat, kann kein anderer die Nachricht lesen. Damit wird Vertraulichkeit garantiert.
Der folgende OpenSSL-Befehl beispielsweise verschlüsselt eine Textdatei mit dem öffentlichen Schlüssel des Empfängers :
openssl pkeyutl -encrypt -pubin -inkey testkey-public.pem -in testmsg.txt -out testmsg.encrypted.txt
openssl pkeyutl -decrypt -in testmsg.encrypted.txt -inkey testkey-private.pem -out testmsg.decrypted.txt
entschlüsselt diese Textdatei mit dem privaten Schlüssel des Empfängers wieder.In der Praxis wird man jedoch, aufgrund der viel geringeren Rechenlast, auf diese Weise nur einen Schlüssel verschlüsseln und an den Kommunikations-Partner schicken, der wiederum für eine symmetrische Chiffrierung zwischen den Kommunikations-Partnern verwendet wird.
Der folgende OpenSSL-Befehl erzeugt einen zugälligen symmetrischen Schlüssel :
openssl rand -base64 32
Dieser OpenSSL-Befehl verschlüsselt eine Textdatei symmetrisch mit AES-256 :
openssl aes-256-cbc -salt -pbkdf2 -in ./testmsg.txt -out testmsg.encrypted.txt -k "secretkey"
openssl aes-256-cbc -d -salt -pbkdf2 -in ./testmsg.encrypted.txt -out ./testmsg.decrypted.txt -k "secretkey"
entschlüsselt sie wieder mit dem gleichen Schlüssel.
Die Kryptographie hat die digitale Welt grundlegend verändert und revolutioniert und sichere Online-Kommunikation, digitale Signaturen und vertrauenswürdige E-Commerce-Transaktionen überhaupt erst ermöglicht. Sie ist ein unverzichtbarer Bestandteil der modernen Informationssicherheit und bildet das Rückgrat vieler sicherheitsrelevanter Anwendungen und Protokolle im Internet :
- Sie ermöglicht eine sichere Kommunikation zwischen Parteien, ohne dass zuvor ein gemeinsamer geheimer Schlüssel ausgetauscht werden muss. Dies ist besonders wichtig für die sichere Übertragung von Daten über unsichere Netzwerke wie das Internet.
- Der Empfänger kann überprüfen, ob die Nachricht tatsächlich vom angegebenen Sender stammt.
- Es kann sichergestellt werden, dass die Nachricht während der Übertragung nicht verändert wurde.
- Der Sender kann die Urheberschaft der Nachricht nicht abstreiten.
- Im Gegensatz zur symmetrischen Verschlüsselung vereinfacht die asymmetrische Kryptographie das Schlüsselmanagement erheblich. Jeder Teilnehmer benötigt nur ein Schlüsselpaar, unabhängig von der Anzahl der Kommunikationspartner.
Jede aktive Ausübung und Wahrung von Rechten erschwert die Angriffe auf sie. Mit dem Inanspruchnehmen von digitaler Verschlüsselung nehmen wir unser Menschenrecht auf Privatsphäre wahr.
Die Verwendung von Kryptographie wird nicht nur zum Mittel der persönlichen digitalen Verteidigung, sondern sie ist auch ein Akt, die Freiheitsrechte im allgemein gültigen rechtlichen System hochzuhalten, zu wahren und zu verteidigen.