Dateien mit OpenSSL verschlüsseln

LinuxBeginner
Jetzt üben

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:

  1. Drücken Sie Strg + O, um die Änderungen in die Datei zu schreiben.
  2. Drücken Sie Enter, um den Dateinamen zu bestätigen (sample.txt).
  3. 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 von symmetric_key.hex als 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.