Asymmetrische Verschlüsselung mit OpenSSL

Asymmetrische Verschlüsselung mit OpenSSL

Um mit OpenSSL (bzw. generell) verschlüsseln zu können, benötigt man mindestens einen Schlüssel. Bei asymmetrische Verschlüsselung werden zwei Schlüssel benötigt: Das sogenannte Schlüsselpaar. Der Public-Key, welcher benutzt wird um Nachrichten (oder was auch immer) an einen Empfänger zu verschlüsseln und den Private-Key, welcher benötigt wird, um Nachrichten zu entschlüsseln. Eine mit einem Public-Key verschlüsselte Nachricht lässt sich ausschließlich mit dem dazugehörigen Private-Key entschlüsseln. Daher müssen beide Schlüssel sorgfältig aufbewahrt werden. Der Private-Key darf unter keinen Umständen jemand anderem in die Hänge gelangen.

Schematische Darstellung einer möglichen Verschlüsselung mit OpenSSL
Schematische Darstellung einer möglichen Verschlüsselung mit OpenSSL

Wir benötigen also als Erstes ein Schlüsselpaar. Dazu wird zuerst der Private-Key über die Option „genpkey“ erzeugt. Dabei ist darauf zu achten, dass als Algorithmus RSA gewählt wird (asymmetrische Verschlüsselung) und eine ausreichend lange Schlüssellänge (4096 Bit). Das NIST empfiehlt seit 2015 eine Schlüssellänge von mindestens 2048 Bit. Das BSI empfiehlt in seiner technischen Richtlinie TR-02102-1 ab 2023 eine Schlüssellänge von >3000 Bit.

„Für einen Einsatzzeitraum ab dem Jahr 2023 wird durch die vorliegende technische Richtlinie empfohlen, eine Schlüssellänge von mindestens 3000 Bits zu nutzen, um ein vergleichbares Sicherheitsniveau für alle asymmetrischen Verfahren zu erreichen.“

BSI-TR-02102-1

Der Private-Key wird in diesem Fall noch symmetrisch mit AES256 und dem Passwort „geheim“ verschlüsselt.

Anschließend wird der Public-Key generiert (bzw. der öffentliche Teil aus dem privaten Schlüssel extrahiert) und ebenfalls im .pem-Format gespeichert.

Für das Testszenario wird ein Textfile mit der Nachricht (nachricht.txt) „ich bin ein gehimer text“ generiert.

Die Nachricht wird nun mit OpenSSL unter Zuhilfenahme unseres RSA Schlüssels verschlüsselt und als „nachricht.enc“ gespeichert.

Der Inhalt der Nachricht ist nun verschlüsselt.

Aus der verschlüsselten Nachricht kann die ursprüngliche Nachricht nun wiederhergestellt werden, indem sie mit dem Private-Key entschlüsselt wird (nachricht.dec).

Übrigens: RSA Schlüssel eigenen sich nicht nur zum Verschlüsseln von Nachrichten oder Dateien, sondern auch zum Signieren.

Die Kommentare sind geschlossen.