Skip to content

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.

alt text

alt text

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.

alt text

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.

alt text

🎯 Wann welche Methode?

ZweckEmpfohlene Methode
Daten nur für michSymmetrisch (-c)
Sicher an andere sendenAsymmetrisch (-e -r)
Dateien signierenSignatur (--sign)
Automatisierter AustauschAsymmetrisch mit bekannten Schlüsseln

🧾 Erweiterte GPG-Konzepte und Optionen

VarianteBeschreibung
--signDigitale Signatur (stellt sicher, dass der Inhalt vom Absender stammt)
--encrypt --signVerschlüsselung und Signatur kombiniert
--armor (-a)ASCII-Format (Textausgabe), z. B. für E-Mails
--symmetricSynonym für -c, also symmetrische Verschlüsselung
--recipient (-r)Empfänger angeben (für asymmetrische Verschlüsselung)
--trust-model alwaysVerzicht 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.

GPGXALKCV
ARMORTRBB
LOCKIHASH
SDRUYEQTH
KEYPASSXZ
QFDSIGNMT
CRYPTWNOI
ZSECUREGT
HAVMAINSW
BNMXCZTUR
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.

alt text

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.

Durchführung

Ergebnisse

Probleme