====== GPG-Verschlüsselung mit Passwort ====== * siehe auch: * [[::Verschlüsselungsarten]] * [[::einzelne Dateien mit GPG verschlüsseln]] * [[::OpenSSL-Verschlüsselung mit Passwort]] * [[::EDV:GPG (GnuPG)]] Die Stärke der Sicherheit der drei besten Cipher/[[::Verschlüsselungsarten]] ist wie folgt, der sicherste steht oben: - **serpent** //(der sicherste in ''[[Verschlüsselung mit CryptSetup|CryptSetup]]'' - ganzes Dateisystem verschlüsseln)// - **twofish** //(der sicherste in ''[[::einzelne Dateien mit GPG verschlüsseln|GPG]]'' - einzelne Dateie verschlüsseln) -> **[[::GPG-Verschlüsselung mit Passwort]]**// - **blowfish** //(der sicherste in ''[[::einzelne Dateien mit openSSL verschlüsseln|openSSL]]'' - einzelne Dateie verschlüsseln) -> [[::OpenSSL-Verschlüsselung mit Passwort]]// ===== kurze Beispiele ===== > 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 Hallo 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 //[[https://de.wikipedia.org/wiki/Phil_Zimmermann|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. * [[http://wiki.ubuntuusers.de/Daten_verschlüsseln#GnuPG]] 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]]// - **TWOFISH** //([[https://de.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology|NIST]] hat Twofish im Jahre 2000 als **hoch-sicher** eingestuft, Twofish wurde bezüglich seiner Sicherheit kritisiert;)// - **BLOWFISH** //(TrueCrypt verwendet Blowfish mit 16 Runden im LRW-Modus.)// - **AES256** //([[https://de.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology|NIST]] hat Rijndael (AES) im Jahre 2000 als **hinreichend sicher** eingestuft)//