Versuchsdurchführung
GPG zur Dateiverschlüsselung in Linux
Vorbereitung
Bei diesem Versuch ging es darum verschiedene Dateitypen mithilfe von GPG zu verschlüsseln und in einer gestaffelten Reihenfolge anzuordnen, sodass jede entschlüsselte Datei einen Hinweis auf die nächste enthält. Dadurch soll praxisnah demonstriert werden, wie GPG zur sicheren, kontrollierten Weitergabe sensibler Informationen über verschiedene Medien hinweg eingesetzt werden kann.
Zur Vorbereitung wurden vier Dateien erstellt, die jeweils ein Rätsel enthalten.
Durchführung
Die Durchführung des Experiments erfolgte in mehreren Schritten:
Schritt 1 - Generierung Schlüsselpaar
Generierung des Schlüsselpaares (Veit): Mit dem Befehl gpg --full-gen-key
wurde ein RSA-Schlüsselpaar mit einer Schlüssellänge von x Bits generiert.
gpg --export --armor e@mail.com
> mein_publickey.asc
--armor
erzeugt lesbare ASCII-Datei (Textdatei).
mein_publickey.asc ist die Datei mit dem public key, die dann verschickt werden konnte, in unserem Fall von Veit an Sonja.
Schritt 2 - synchrone Verschlüsselung der Dateien 2, 3 & 4
Zur Verschlüsselung mit Passwort wurden verschiedene GPG-Optionen getestet. Die Verschlüsselung erfolgte jeweils in der WSL-Umgebung, wie in den Screenshots dokumentiert.
Der Basisbefehl lautet für die Beispieldatei 4.png gpg -c 4.png
, wobei -c die symmetrische Verschlüsselung aktiviert.
Im nächsten Schritt ist dann wie auf den Bildern zu sehen eine Passworteingabe erforderlich. In unserem Beispiel wurden aufgrund des Rätsels sehr einfache Passwörter gewählt, woraufhin ein Sicherheitshinweis erschien.
In unserem Versuch wurden folgende Befehle/ Optionen gewählt um unterschiedliche Verschlüsselungsmethoden zu testen.
gpg -c -o 4.png.gpg 4.png
-c
aktiviert die symmetrische Verschlüsselung (Passworteingabe erforderlich)
-o
definiert den Namen der Ausgabedatei
Ohne weitere Parameter verwendet GPG Standardwerte (z. B. AES128)
gpg -c --cipher-algo AES256 -z 0 -o 3.pdf.gpg 3.pdf
--cipher-algo
AES256 setzt den Verschlüsselungsalgorithmus explizit auf AES mit 256 Bit, einen aktuellen kryptografischen Standard
-z 0 deaktiviert die Komprimierung (sinnvoll bei PDF/Binary-Dateien, um Metadatenleaks zu vermeiden)
gpg -c --cipher-algo TWOFISH --digest-algo SHA512 --compress-algo ZLIB -o 2.txt.gpg 2.txt
--cipher-algo TWOFISH
verwendet einen alternativen starken Blockverschlüsselungsalgorithmus
--digest-algo SHA512
bestimmt den Hash-Algorithmus zur Passwortableitung (stärker als Standard SHA-1)
--compress-algo ZLIB
aktiviert Kompression mit dem ZLIB-Verfahren, das effizienter als ZIP ist
Schritt 3 - synchrone Verschlüsselung von Datei 1
Um Datei 1.txt asymmetrisch zu verschlüsseln, wurde zunächst der von Veit bereitgestellte öffentliche Schlüssel importiert: gpg --import key_veit.txt
.
Anschließend konnte 1.txt mit dem Schlüssel von Veit verschlüsselt werden: gpg -e -r e@mail.com -o 1.txt.gpg 1.txt
Damit war nur Veit in der Lage, die Datei mit seinem privaten Schlüssel zu entschlüsseln.
🎯 Wann welche Methode?
Zweck | Empfohlene Methode |
---|---|
Daten nur für mich | Symmetrisch (-c ) |
Sicher an andere senden | Asymmetrisch (-e -r ) |
Dateien signieren | Signatur (--sign ) |
Automatisierter Austausch | Asymmetrisch mit bekannten Schlüsseln |
🧾 Erweiterte GPG-Konzepte und Optionen
Variante | Beschreibung |
---|---|
--sign | Digitale Signatur (stellt sicher, dass der Inhalt vom Absender stammt) |
--encrypt --sign | Verschlüsselung und Signatur kombiniert |
--armor (-a ) | ASCII-Format (Textausgabe), z. B. für E-Mails |
--symmetric | Synonym für -c , also symmetrische Verschlüsselung |
--recipient (-r ) | Empfänger angeben (für asymmetrische Verschlüsselung) |
--trust-model always | Verzicht auf GPG-Trust-Abfrage (praktisch für Skripte oder automatisierte Umgebungen) |
Ergebnisse
Das Ergebnis der Entschlüsselung war ein entsprechendes erfolg.
Das erste Rätsel ist einfach da es mit meinem Publik Key verschlüsselt wurde.
Nach Eingabe von gpg --output doc1.txt --decrypt 1.txt.gpg
im Verzeichnis mit den Verschlüsselt Dateien wird eine Abfrage meines Passwort ausgelöst.
Nach Eingabe meines Passworts wir der Output in einer Datei namens doc1.txt
abgelegt.
In der Datei ist ein kurzes Rätsel das am Ende das Passwort für die nächste Nachricht beinhaltet.
Sonja liebt Binärzahlen. Sie hat dir eine Nachricht geschickt, aber natürlich in ihrer Lieblingssprache:
01000010 01111001 01110100 01100101
Was steht da?
Hinweis: Jede 8-stellige Gruppe ist eine ASCII-Zahl.
Das Ergebnis ist das Passwort für die nächste Datei.
In diesem Fall Byte
.
Durch das Aufrufen des nächsten Entschlüsselungsbefehl gpg --output doc2.txt --decrypt 2.txt.gpg
und der Eingabe das Passwort byte
kommen wir auf die nächste Nachricht.
Rätsel Nr. 2:
Ich bin kurz, aber stark.In vielen Programmiersprachen bin ich der Anfang – manchmal auch das Ende.Ohne mich läuft nichts, mit mir beginnt alles.
Ich bin vier Buchstaben lang.Was bin ich?
Tipp: Ich bin eine Datei.
🔐 Das Lösungswort ist das Passwort für das nächste Rätsel.
Hier ist die Antwort main
.
Bei der nächsten Datei die wir entschlüsselt handelt es sich um ein PDF. Dazu wird folgender Befehl verwendet gpg --output doc3.pdf --decrypt 3.pdf.gpg
.
Das PDF sieht ungefähr so aus.
GPGXALKCVARMORTRBBLOCKIHASHSDRUYEQTHKEYPASSXZQFDSIGNMTCRYPTWNOIZSECUREGTHAVMAINSWBNMXCZTUR
Im folgenden Gitter sind mehrere Begriffe versteckt.
Nur einer davon ist das richtige Passwort für die finale Datei.
Tipp: Du suchst ein englisches Wort mit 6 Buchstaben, das beschreibt, wie deine Daten nach GPG-Verschlüsselung idealerweise sein sollten.
🔐 Das Ergebnis ist das Passwort für die Bilddatei.
Hier ist die Antwort secure
.
Die letzte Daten wird mit Hilfe des Befehl gpg --output doc4.png --decrypt 4.png.gpg
und der Antwort aus der vorherigen Rätsel entschlüsselt.
Am Ende erhalten wir dieses Bild.
Probleme
Während des Experiments traten keine größeren Probleme auf. Jedoch ist zu beachten, dass eine sorgfältige Verwaltung des GPG-Schlüsselpaares und die sichere Aufbewahrung des Passworts entscheidend für die Sicherheit der verschlüsselten Daten sind. Eine regelmäßige Sicherung des Schlüsselpaares ist ebenfalls empfohlen, um Datenverlusten vorzubeugen.
AGE zur Dateiverschlüsselung in Linux
(age
)[https://age-encryption.org] ist ein neues Verschlüsselungstool, das
eine einfache Alternative zu GPG darstellen soll.
Es legt vorallem Wert auf diese
- Einfachheit: Sehr bedienbar und wenig Overhead
- Sicherheit: Moderne kryptografische Algorithmen
- Portabilität: Verwendung auf verschiedenen Betriebssysteme
- Klarer Fokus: Ausschließlich Verschlüsselung und Entschlüsselung
Die Portabilität wird klar wenn man sich die Installationsbeschreibung auf GitHub anschaut: https://github.com/FiloSottile/age?tab=readme-ov-file#installation
Vorbereitung
Das CLI-Tool age
muss installiert werden. Eine Anleitung gibt es
hier.
Es gibt auch eine Rust-Implemenatation des Tools Namens rage
.
In diesem Versuch soll die Performance und Bedienbarkeit der Tools gpg
, age
und rage
verglichen werden.