Einführung
In diesem Lab erlernen Sie den Umgang mit OpenSSL zur Verschlüsselung und Entschlüsselung von Dateien – eine grundlegende Fertigkeit im Bereich der Cybersicherheit. Sie werden praktisch üben, wie man einen symmetrischen Schlüssel generiert und die AES-Verschlüsselung anwendet, um sensible Daten zu schützen.
Dieses Lab führt Sie durch die Installation von OpenSSL, das Erstellen einer Testdatei und das Durchlaufen eines vollständigen Verschlüsselungs- und Entschlüsselungszyklus. Diese praktische Erfahrung hilft Ihnen dabei, die grundlegenden Techniken zum Datenschutz zu verstehen, die in realen Anwendungen zum Einsatz kommen.
OpenSSL installieren und überprüfen
In diesem Schritt installieren Sie OpenSSL, ein mächtiges Toolkit für die Implementierung sicherer Kommunikation. Obwohl OpenSSL in vielen Linux-Distributionen bereits enthalten ist, stellt dieser Schritt sicher, dass es korrekt installiert und einsatzbereit ist.
Überprüfen Sie zunächst, ob OpenSSL installiert ist, indem Sie die installierte Version abfragen.
openssl version
Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die OpenSSL-Version auf Ihrem System angibt.
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
Abschließend können Sie das Hilfe-Menü aufrufen, um eine Liste der verfügbaren Befehle anzuzeigen und zu bestätigen, dass OpenSSL ordnungsgemäß funktioniert.
openssl help
Dieser Befehl listet die verschiedenen kryptografischen Operationen auf, die OpenSSL ausführen kann und die wir in den nächsten Schritten erkunden werden.
Eine Beispieldatei für die Verschlüsselung erstellen
In diesem Schritt erstellen Sie eine einfache Textdatei, die als Grundlage für unsere Verschlüsselungs- und Entschlüsselungsübungen dient. Die Verwendung einer bekannten Datei ermöglicht es uns, den Erfolg des Vorgangs leicht zu überprüfen, indem wir den ursprünglichen Inhalt mit dem entschlüsselten Inhalt vergleichen.
Ihr Terminal sollte sich bereits im Verzeichnis /home/labex/project befinden. Wir werden die Datei hier erstellen.
Verwenden Sie zunächst den Texteditor nano, um eine neue Datei namens sample.txt zu erstellen.
nano sample.txt
Sobald sich nano öffnet, geben Sie den folgenden Text in den Editor ein:
This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.
Speichern Sie nun die Datei und beenden Sie nano:
- Drücken Sie
Strg + O, um die Änderungen in die Datei zu schreiben. - Drücken Sie
Enter, um den Dateinamen zu bestätigen (sample.txt). - Drücken Sie
Strg + X, um den Editor zu verlassen.
Um sicherzustellen, dass die Datei korrekt erstellt wurde, lassen Sie sich deren Inhalt mit dem Befehl cat anzeigen.
cat sample.txt
Die Ausgabe sollte genau den Text zeigen, den Sie eingegeben haben:
This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.
Diese Beispieldatei ist nun bereit für den Verschlüsselungsprozess in den kommenden Schritten.
Einen symmetrischen Verschlüsselungsschlüssel generieren
In diesem Schritt generieren Sie einen symmetrischen Schlüssel. Dabei handelt es sich um einen geheimen Schlüssel, der sowohl für die Verschlüsselung als auch für die Entschlüsselung von Daten verwendet wird. Wir nutzen OpenSSL, um einen starken Zufallsschlüssel zu erstellen, der für die AES-256-Verschlüsselung geeignet ist – einen hochsicheren und weit verbreiteten Standard.
Stellen Sie sicher, dass Sie sich in Ihrem Projektverzeichnis /home/labex/project befinden.
cd ~/project
Verwenden Sie den Befehl openssl rand, um 32 Bytes (256 Bits) an Zufallsdaten zu generieren und diese im Hexadezimalformat in einer Datei namens symmetric_key.hex zu speichern.
openssl rand -hex 32 > symmetric_key.hex
Schauen Sie sich den generierten Schlüssel an, um zu sehen, wie er aussieht.
cat symmetric_key.hex
Die Ausgabe ist eine 64 Zeichen lange hexadezimale Zeichenfolge, die Ihren 256-Bit-Schlüssel repräsentiert. Sie wird in etwa so aussehen (Ihr Schlüssel wird jedoch anders sein):
2f8b5e9a1c3d4e6f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f
Da dieser Schlüssel Ihre Daten entsperren kann, ist es entscheidend, ihn zu schützen. Verwenden Sie den Befehl chmod, um die Dateiberechtigungen so zu setzen, dass nur der Dateieigentümer (Sie) die Datei lesen und beschreiben kann.
chmod 600 symmetric_key.hex
Überprüfen Sie abschließend die Dateiberechtigungen mit ls -l.
ls -l symmetric_key.hex
Die Ausgabe sollte die Berechtigungen als -rw------- anzeigen, was bestätigt, dass die Datei gesichert ist.
-rw------- 1 labex labex 65 Nov 15 10:30 symmetric_key.hex
Nachdem der Schlüssel generiert und gesichert wurde, sind Sie nun bereit, die Beispieldatei zu verschlüsseln.
Die Datei mit AES verschlüsseln
Jetzt verwenden Sie den symmetrischen Schlüssel, um sample.txt zu verschlüsseln. Wir nutzen dafür das Verschlüsselungsverfahren AES-256-CBC. AES (Advanced Encryption Standard) mit einem 256-Bit-Schlüssel ist ein sehr starker Algorithmus, und CBC (Cipher Block Chaining) ist ein Betriebsmodus, der die Sicherheit erhöht, indem er jeden verschlüsselten Block vom vorherigen abhängig macht.
Der Befehl openssl enc übernimmt die Verschlüsselung. Wir geben das Verfahren, die Eingabedatei, die Ausgabedatei und die Schlüsseldatei an.
Führen Sie den folgenden Befehl aus, um sample.txt zu verschlüsseln und das Ergebnis in sample.enc zu speichern.
openssl enc -aes-256-cbc -in sample.txt -out sample.enc -pass file:symmetric_key.hex
-aes-256-cbc: Gibt das Verschlüsselungsverfahren an.-in sample.txt: Die zu verschlüsselnde Eingabedatei.-out sample.enc: Der Name der resultierenden (verschlüsselten) Datei.-pass file:symmetric_key.hex: Weist OpenSSL an, den Inhalt vonsymmetric_key.hexals Passwort (Schlüssel) zu verwenden.
Listen Sie nach der Ausführung des Befehls die Dateien auf, um die neue verschlüsselte Datei sample.enc zu sehen.
ls -l
Sie werden feststellen, dass sample.enc aufgrund des Verschlüsselungs-Overheads wie Padding und Metadaten etwas größer ist als sample.txt.
total 12
-rw-r--r-- 1 labex labex 96 Nov 15 10:35 sample.enc
-rw-r--r-- 1 labex labex 89 Nov 15 10:20 sample.txt
-rw------- 1 labex labex 65 Nov 15 10:30 symmetric_key.hex
Wenn Sie versuchen, den Inhalt der verschlüsselten Datei anzuzeigen, werden Sie unlesbare Binärdaten sehen.
cat sample.enc
Die unleserliche Ausgabe bestätigt, dass die Datei erfolgreich verschlüsselt wurde.
Die Datei entschlüsseln und die Integrität überprüfen
In diesem letzten Schritt werden Sie sample.enc entschlüsseln, um den ursprünglichen Text zurückzuerhalten. Dies bestätigt, dass Ihr Schlüssel funktioniert und der gesamte Verschlüsselungs- und Entschlüsselungszyklus erfolgreich war.
Um die Datei zu entschlüsseln, verwenden Sie erneut den Befehl openssl enc, diesmal jedoch mit dem Flag -d, um die Entschlüsselung (Decryption) anzugeben.
Führen Sie den folgenden Befehl aus, um sample.enc zu entschlüsseln und das Ergebnis in einer neuen Datei namens sample.dec zu speichern.
openssl enc -d -aes-256-cbc -in sample.enc -out sample.dec -pass file:symmetric_key.hex
Lassen Sie uns nun überprüfen, ob die Entschlüsselung funktioniert hat. Der beste Weg hierfür ist der Vergleich der entschlüsselten Datei (sample.dec) mit der Originaldatei (sample.txt). Der Befehl diff ist dafür ideal geeignet.
diff sample.txt sample.dec
Wenn die Dateien identisch sind, erzeugt dieser Befehl keine Ausgabe, was bedeutet, dass die Entschlüsselung erfolgreich war.
Für eine abschließende visuelle Bestätigung lassen Sie sich den Inhalt der entschlüsselten Datei anzeigen.
cat sample.dec
Die Ausgabe sollte exakt der Ihrer ursprünglichen Datei sample.txt entsprechen:
This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.
Sie haben nun erfolgreich eine Datei verschlüsselt und sie mit OpenSSL wieder in ihre ursprüngliche Form zurückgeführt.
Zusammenfassung
In diesem Lab haben Sie praktische Erfahrungen mit der Dateiverschlüsselung und -entschlüsselung unter Verwendung von OpenSSL gesammelt. Sie haben gelernt, wie man einen starken symmetrischen Schlüssel generiert, diesen zur Verschlüsselung einer Datei mit dem AES-256-Algorithmus einsetzt und die Datei anschließend wieder entschlüsselt, um die ursprünglichen Daten wiederherzustellen. Dieser Prozess ist eine grundlegende Fertigkeit zum Schutz sensibler Informationen in der Cybersicherheit.



