Benutzer-Werkzeuge

Webseiten-Werkzeuge


gpg-verschluesselung_mit_passwort

Dies ist eine alte Version des Dokuments!


GPG-Verschlüsselung mit Passwort

kurze Beispiele

mit AES (für meine Begriffe zu schwach) verschlüsseln+entschlüsseln:

> gpg --no-options --no-symkey-cache --cipher-algo AES -aco Text.txt.gpg Text.txt
> gpg --no-options --no-symkey-cache -do Text.txt Text.txt.gpg

mit BLOWFISH (nicht der Beste aber besser als AES) verschlüsseln+entschlüsseln:

> gpg --no-options --no-symkey-cache --cipher-algo BLOWFISH -aco Text.txt.gpg Text.txt
> gpg --no-options --no-symkey-cache -do Text.txt Text.txt.gpg

mit TWOFISH (der Beste den GPG kann) verschlüsseln+entschlüsseln:

> gpg --no-options --no-symkey-cache --cipher-algo TWOFISH -aco Text.txt.gpg Text.txt
> gpg --no-options --no-symkey-cache -do Text.txt Text.txt.gpg

Allgemeines

#------------------------------------------------------------------------------#
#
# gpg --version
#   zeigt alle verfügbaren Verschlüsselungsverfahren an
#
# --no-options
#   die Konfigurationsdatei "~/.gnupg" soll nicht gelesen werden,
#   Es sollen nur die an der CLI übergebenen Optionen verwendet werden!
#
# --no-symkey-cache
#   das eingegebene Passwort nicht zwischenspeichern
#
# -c | --symmetric
#   symetrisch verschlüsseln
#
# -d | --decrypt
#   entschlüsseln
#
# --cipher-algo
#   zu verwendender Verschlüsselungsalgorithmus
#
# --personal-cipher-preferences
#   Liste bevorzugter Verschlüsselungsalgorithmen
#
# --digest-algo
#   zu verwendender Hash-Algorithmus
#
# --personal-digest-preferences
#   Liste bevorzugter Hash-Algorithmen
#
# --batch --passphrase ${PWT}
#   das Passwort zur Verschlüsselung wird aus der Variable PWT gelesen
#
# Es ist auch zu bedenken, dass nicht alle GPG-Implementationen
# alle Verschlüsselungsalgorithmen oder alle Hash-Algorithmen unterstützen.
# Demnach kann es passieren, dass das Ziel die verschlüsselte Datei
# nicht wieder entschlüsseln kann.
#
#------------------------------------------------------------------------------#

Leider kann GPG kein Serpent, deshalb müssen wir Twofish verwenden.

Ein kurzes Beispiel für eine symetrische Datenverschlüsselung (kompatibel zu OpenPGP), will man nach dem Passwort gefragt werden und es nicht direkt im Kommando mit übergeben, dann braucht man nur diese Optionen wegzulassen "--batch --passphrase geheim":

> echo "Hallo" | gpg --no-options --personal-cipher-preferences TWOFISH -ac --batch --passphrase geheim
-----BEGIN PGP MESSAGE-----

jA0ECgMCptokjrv0u+T/0jsB7RKCRkOWl9984IXFXOEzanQc9t5qehK01t5VaIj1
zik23XqDVRReTLDEc507ZNjTjwHkFTrB8G/GSw==
=DZT8
-----END PGP MESSAGE-----

> echo "Hallo" | gpg --no-options --personal-cipher-preferences TWOFISH -ac --batch --passphrase geheim -o /tmp/test.txt

> cat /tmp/test.txt | gpg --no-options -d --batch --passphrase geheim
gpg: TWOFISH verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
Hallo
> echo "Hallo" | gpg --no-options --no-symkey-cache --cipher-algo TWOFISH --digest-algo SHA512 -c --batch --passphrase Geheim01 | base64 -w0
jA0ECgMClVOvtjdn9X//0jsBMcDZbeeI5FsDiddwJv22c8LRDxePo36/sDnzNcGnctF2mdWnG3Yn730Wr6jJsdPKbXi3J0Wy/scrwg==

> echo 'jA0ECgMClVOvtjdn9X//0jsBMcDZbeeI5FsDiddwJv22c8LRDxePo36/sDnzNcGnctF2mdWnG3Yn730Wr6jJsdPKbXi3J0Wy/scrwg==' | base64 -d | gpg --no-options --no-symkey-cache -d --batch --passphrase Geheim01
gpg: TWOFISH verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
Hallo

Mein Home-Verzeichnis sichern:

> tar cf - --exclude='.cache' ~/ | gpg --no-options --no-symkey-cache --cipher-algo TWOFISH --digest-algo SHA512 -c --batch --passphrase ${PWT} | base64 | gzip -9 > /var/tmp/mein_home.tar.gpg.b64.gz

Philip R. Zimmermann (* 12. Februar 1954 in Camden, New Jersey) ist Softwareentwickler und Erfinder der E-Mail-Verschlüsselungssoftware Pretty Good Privacy (PGP). Er ist Mitbegründer und Chefentwickler von Silent Circle, einem Unternehmen für verschlüsselte Kommunikation.

Zimmermann studierte Informatik an der Florida Atlantic University und arbeitete anschließend als Softwareentwickler in Boulder, Colorado. Mit seinem Programm PGP war er der erste, der die asymmetrische Kryptographie (auch Public-Key-Kryptographie genannt) als Software der Allgemeinheit leicht zugänglich machte. Dies führte dazu, dass die US-Zollbehörden ihn zum Ziel einer drei Jahre dauernden Untersuchung machten, da die Regierung der Ansicht war, dass US-amerikanische Exportbeschränkungen für kryptographische Software verletzt worden waren, als PGP ab Juni 1991 nach Veröffentlichung als Freeware im Internet seinen Siegeszug rund um die Welt antrat. Nachdem die Regierung den Fall Anfang 1996 ohne Anklage fallen ließ, gründete Zimmermann die PGP Inc., die im Dezember 1997 von Network Associates Inc. (NAI) übernommen wurde, welche ihrerseits 2010 von der börsennotierten Symantec Corporation übernommen wurden. Zimmermann blieb nach dem Verkauf drei Jahre lang bei NAI als Senior Fellow. Im Jahr 2002 wurde PGP der NAI von einer neuen Firma namens PGP Corporation abgekauft, wo Zimmermann nun als spezieller Berater tätig ist. Zimmermann ist Fellow des Stanford Law School’s Center for Internet and Society.

Im März 2006 stellte er die Beta-Version einer neu entwickelten Software namens Zfone zur Verschlüsselung von VoIP-Telefonaten vor.

Im Mai 2015 zog Zimmermann mitsamt seiner Firma Silent Circle von den USA nach Le Grand-Saconnex, einem Vorort von Genf in der Schweiz. Als Grund nannte er Datenschutzbedenken durch die Globale Überwachungs- und Spionageaffäre.

Zimmermann unterstützt außerdem das soziale Netzwerk Okuna, dessen Ziel es ist, eine ethische und datenschutzfreundliche Alternative zu bestehenden sozialen Netzwerken wie Facebook zu sein.


Base64-Kodierung:

> echo 'Hallo' | gpg --enarmor
-----BEGIN PGP ARMORED FILE-----
Comment: Use "gpg --dearmor" for unpacking

SGFsbG8K
=9zV7
-----END PGP ARMORED FILE-----

> echo 'SGFsbG8K' | base64 -d
Hallo

> echo 'Hallo' | gpg --enarmor -o /tmp/test.txt

> cat /tmp/test.txt | gpg --dearmor
Hallo

Im Standard wird von GPG (Ubuntu 18.04) der Verschlüsselungsalgorithmus "CAST5" verwendet, der recht unsicher ist. Will man einen anderen verwenden, dann kann man ihn mit dem Parameter "--cipher-algo" angeben.

mögliche Verschlüsselungsalgorithmen:

# gpg --version
...
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, 
        CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Das ist eine symetrische Verschlüsselung und kann (theoretisch) durch einen brutforce-Angriff geknackt werden.

Datei mit dem Standard-Cipher (mit CAST5 - unsicher) verschlüsseln:

# gpg -c datei.txt
# ls datei.txt.gpg

Datei entschlüsseln:

# gpg -d datei.txt.gpg
# gpg -do datei2.txt datei.txt.gpg

Datei mit TWOFISH (sehr sicher) verschlüsseln:

# gpg -c --cipher-algo TWOFISH datei.txt
# ls datei.txt.gpg

Datei mit dem Cipher "TWOFISH" (Nachfolger von Blowfish) und dem Hash "SHA512" verschlüsseln:

# gpg -c --cipher-algo TWOFISH --digest-algo sha512 datei.txt
# ls datei.txt.gpg

Ausgabedatei im Text-Format (in Base64 kodiert) ablegen (-a):

# gpg -ac --cipher-algo TWOFISH --digest-algo sha512 datei.txt
# ls datei.txt.asc

Ausgabedateinamen gezielt angeben (-o datei.txt.gpg):

# gpg --cipher-algo TWOFISH --digest-algo sha512 -aco datei.txt.gpg datei.txt
# ls datei.txt.gpg

Datei zusätzlich noch mit BZIP2 komprimieren:

# gpg --cipher-algo TWOFISH --digest-algo sha512 --compress-algo bzip2 -aco datei.txt.gpg datei.txt
# ls datei.txt.gpg

Datei entschlüsseln, die Ausgabe wird auf der Standardausgabe ausgegeben:

# gpg -d datei.txt.gpg

den Dateinamen kann man für die Ausgabedatei auch angeben (-o datei2.txt):

# gpg -do datei2.txt datei.txt.gpg

Hashwerte ausgeben:

# echo "Hallo" | gpg --print-md md5
32 90 EC 3C 19 A8 A3 93  62 F7 D7 00 43 F1 56 27

# echo "Hallo" | gpg --print-md RIPEMD160
BB92 5A11 4E28 179E E57C  3378 AF27 EBC2 F835 74FA

# echo "Hallo" | gpg --print-md sha1
6CE3 FE14 79A1 0EDB 2F1B  DD6D 181A 5B0E 210A BE1A

# echo "Hallo" | gpg --print-md sha224
FF36B3C6 7C62E22E 4804C9BD 7F0E5FC3 70A8A0CD 513CC310 E4E19E0B

# echo "Hallo" | gpg --print-md sha256
78FCA7A0 DBD0325B 8F77333C 82FB1BA2 A5CBF9E9 0284BD24 E91CB58A C1D6232F

# echo "Hallo" | gpg --print-md sha384
0B34B80F 0FB9AEF2 F6338137 F14FE80E E248F75C 835E5210 FFCF1589 693B480A 2E0769B4
 6F536C97 EFC6EDC7 D89F0C37

# echo "Hallo" | gpg --print-md sha512
D34796C5 60B67648 0ACBF13B 8272440D E01DD052 6A13AFE7 BE00ABCF B81808F1 8C3939D5
 DC863622 E7A327CA 701B9697 C16E0BC8 978AADA8 215F6CEB D1A4E31B

eine einfache Zeichenkette verschlüsseln:

# echo "Hallo" | gpg -ac --cipher-algo TWOFISH --digest-algo sha512

# echo "Hallo" | gpg -ac --cipher-algo TWOFISH --digest-algo sha512 -o /tmp/hallo.txt
# cat /tmp/hallo.txt | gpg -d
gpg: TWOFISH verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
Hallo

Detaillierte Informationen (in Ubuntu 20.04 ist der Standard-Cipher jetzt AES256):

# echo "Hallo" | gpg -acv
gpg: pinentry launched (29419 gnome3 1.1.0 - xterm :1)
gpg: pinentry launched (29430 gnome3 1.1.0 - xterm :1)
gpg: benutze Cipher AES256
gpg: Schreiben auf die Standardausgabe
-----BEGIN PGP MESSAGE-----

jA0ECQMCB0fTUjxNyLH/0jsBM+F6mEcOAHva0flesoGN5mAau1bWVyHkXhUW8Bv5
Cb8rhAMAkxgYm2fkNZsx4myvDM27b0pkteOxvA==
=aAaZ
-----END PGP MESSAGE-----
  • die drei sichersten Cipher in GnuPG Version 2.2.19-3ubuntu2.1 (Ubuntu 20.04 LTS) → Verschlüsselungsarten
    1. TWOFISH (NIST hat Twofish im Jahre 2000 als hoch-sicher eingestuft, Twofish wurde bezüglich seiner Sicherheit kritisiert;)
    2. BLOWFISH (TrueCrypt verwendet Blowfish mit 16 Runden im LRW-Modus.)
    3. AES256 (NIST hat Rijndael (AES) im Jahre 2000 als hinreichend sicher eingestuft)
/home/http/wiki/data/attic/gpg-verschluesselung_mit_passwort.1654769303.txt · Zuletzt geändert: von manfred