====== einzelne Dateien mit GPG verschlüsseln ====== siehe auch: [[::Daten packen]] 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]]// ===== Installation von GnuPG auf FreeBSD 12.1 ===== ==== GnuPG auf FreeBSD aus dem Repository installieren ==== [root@freebsd ~]# pkg install security/gnupg ... ===== Message from gnupg-2.2.23: -- GnuPG, when run on hosts without IPv6 connectivity, may fail to connect to dual-stack hkp servers [1]. As a workaround, add disable-ipv6 to /usr/local/etc/dirmngr.conf [1] https://dev.gnupg.org/rGecfc4db3a2f8bc2652ba4ac4de5ca1cd13bfcbec [root@freebsd ~]# gpg --help gpg (GnuPG) 2.2.24 libgcrypt 1.8.5 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: /root/.gnupg Unterstützte Verfahren: Öff. Schlüssel: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Verschlü.: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Komprimierung: nicht komprimiert, ZIP, ZLIB, BZIP2 Aufruf: gpg [Optionen] [Dateien] Signieren, prüfen, verschlüsseln, entschlüsseln. Die voreingestellte Operation ist abhängig von den Eingabedaten Befehle: ... ==== GnuPG auf FreeBSD aus dem Ports-Tree installieren ==== hier kann man selber entscheiden, mit welchen Optionen GnuPG gebaut werden soll und manchmal bekommt man hier auch eine etwas neuere Version: [root@freebsd ~]# cd /usr/ports/security/gnupg [root@freebsd /usr/ports/security/gnupg]# make config [root@freebsd /usr/ports/security/gnupg]# make && make install && make clean [root@freebsd ~]# gpg (GnuPG) 2.2.24 libgcrypt 1.8.5 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: /root/.gnupg Unterstützte Verfahren: Öff. Schlüssel: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Verschlü.: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Komprimierung: nicht komprimiert, ZIP, ZLIB, BZIP2 Aufruf: gpg [Optionen] [Dateien] Signieren, prüfen, verschlüsseln, entschlüsseln. Die voreingestellte Operation ist abhängig von den Eingabedaten Befehle: ... ===== Verschlüsselung mit Passwort ===== [[::GPG-Verschlüsselung mit Passwort]] ===== Verschlüsselung mit RSA-Schlüssel ===== Will man einem Freund eine Nachricht verschlüsselt zukommen lassen, dann muss der Freund einen privaten samt öffentlichen Schlüssel generieren und mir den öffentlichen Schlüssel zukommen lassen. Alle Nachrichten bzw. Dateien, die ich mit diesem öffentlichen Schlüssel verschlüsselt habe, kann er mit dem privaten Schlüssel wieder entschlüsseln. * [[http://wiki.ubuntuusers.de/GnuPG]] * [[http://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Options.html]] * [[http://www.online-tutorials.net/security/gnupg-gpg-tutorial/tutorials-t-69-124.html]] mit diesem Kommando kann man dem Zufallsgenerator helfen schneller Zufallszahlen zu erzeugen: [root@freebsd ~]# for i in $(seq 1 1000);do dd if=/dev/zero of=/tmp/u count=4096 bs=1M;done 2>&1 | cat > /dev/null & privates Schüsselpaar erzeugen: [root@freebsd ~]# gpg --full-generate-key gpg (GnuPG) 2.2.24; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: Warning: using insecure memory! Bitte wählen Sie, welche Art von Schlüssel Sie möchten: (1) RSA und RSA (voreingestellt) (2) DSA und Elgamal (3) DSA (nur signieren/beglaubigen) (4) RSA (nur signieren/beglaubigen) (14) Vorhandener Schlüssel auf der Karte Ihre Auswahl? 1 RSA-Schlüssel können zwischen 1024 und 4096 Bit lang sein. Welche Schlüssellänge wünschen Sie? (3072) 4096 Die verlangte Schlüssellänge beträgt 4096 Bit Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll. 0 = Schlüssel verfällt nie = Schlüssel verfällt nach n Tagen w = Schlüssel verfällt nach n Wochen m = Schlüssel verfällt nach n Monaten y = Schlüssel verfällt nach n Jahren Wie lange bleibt der Schlüssel gültig? (0) 20y Key verfällt am So. 23 Dez. 00:34:16 2040 MET Ist dies richtig? (j/N) j GnuPG erstellt eine User-ID, um Ihren Schlüssel identifizierbar zu machen. Ihr Name ("Vorname Nachname"): Fritz Fratz Email-Adresse: fritz@default.de Kommentar: Das ist ein Test Sie haben diese User-ID gewählt: "Fritz Fratz (Das ist ein Test) " Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? f Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. Bitte geben Sie die Passphrase ein, um Ihren Schlüssel zu schützen. Passphrase: Nochmal: Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. gpg: Schlüssel 769D0C1DBBDEFE91 ist als ultimativ vertrauenswürdig gekennzeichnet gpg: Verzeichnis `/root/.gnupg/openpgp-revocs.d' erzeugt gpg: Widerrufzertifikat wurde als '/root/.gnupg/openpgp-revocs.d/FA49E770EA1BA875AC37E8E4769D0C1DBBDEFE91.rev' gespeichert. Öffentlichen und geheimen Schlüssel erzeugt und signiert. pub rsa4096 2020-12-27 [SC] [verfällt: 2040-12-22] FA49E770EA1BA875AC37E8E4769D0C1DBBDEFE91 uid Fritz Fratz (Das ist ein Test) sub rsa4096 2020-12-27 [E] [verfällt: 2040-12-22] den öffentlichen Schlüssel exportieren (damit können uns andere eine Nachricht schicken): [root@freebsd ~]# gpg --export -a -o public_key_-_Fritz.key Fritz einen öffentlichen Schlüssel importieren; damit können wir eine Nachricht verschlüsseln, den nur der andere (Franzi) wieder entschlüsseln kann: [root@freebsd ~]# gpg --import gpg-key_-_Franzi.asc öffentlichen Schlüssel anzeigen: [root@freebsd ~]# gpg -k private Schlüssel anzeigen: [root@freebsd ~]# gpg --list-secret-keys ==== Verschlüsselungstest mit unserem selbst erstellten Schlüssel (Fritz) ==== Probiertext erstellen: # echo 'Der blubbfish geht um!' > test.txt # cat test.txt Der blubbfish geht um! Textdatei verschlüsseln: # gpg -ear "Fritz" test.txt Textdatei löschen: # rm test.txt Textdatei entschlüsseln: # gpg -dr "Fritz" -o test.txt test.txt.asc entschlüsselten Text lesen: # cat test.txt Der blubbfish geht um! === /root/bin/gpg_verschl.sh === #!/bin/bash SCHL_NAME="${1}" if [ -r "${2}" ] ; then gpg --recipient "${SCHL_NAME}" --encrypt --armor ${2} ls -lh ${2}.* else echo "${0} Fritz geheim.txt" fi === /root/bin/gpg_entschl.sh === #!/bin/bash SCHL_NAME="${1}" if [ -r "${2}" ] ; then gpg --recipient "${SCHL_NAME}" --decrypt ${2} > ${2}.txt ls -lh ${2}.* else echo "${0} Fritz geheim.txt.asc" fi ==== einen fremden öffentlichen Schlüssel verwenden ==== Textdatei mit einem fremden öffentlichen Schlüssel verschlüsseln: # gpg --recipient "Freund" --encrypt --armor test.txt gpg: CD3EC75A: There is no assurance this key belongs to the named user pub 2048g/CD3EC75A 2012-05-31 Freund Primary key fingerprint: 71D9 3DF5 5F09 75D2 2EEC 0807 692D 96D3 F42B 5607 Subkey fingerprint: 59FD 6FAF 83A2 BE3F 13EF 3227 283D 7965 CD3E C75A It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/N) Damit diese Meldung nicht mehr kommt, müssen wir GPG sagen, dass wir diesem Schlüssel vertrauen: # gpg --edit-key Freund gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub 1024D/F42B5607 created: 2012-05-31 expires: 2014-05-31 usage: SC trust: unknown validity: unknown sub 2048g/CD3EC75A created: 2012-05-31 expires: 2014-05-31 usage: E [ unknown] (1). Freund Command> trust pub 1024D/F42B5607 created: 2012-05-31 expires: 2014-05-31 usage: SC trust: unknown validity: unknown sub 2048g/CD3EC75A created: 2012-05-31 expires: 2014-05-31 usage: E [ unknown] (1). Freund Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) y pub 1024D/F42B5607 created: 2012-05-31 expires: 2014-05-31 usage: SC trust: ultimate validity: unknown sub 2048g/CD3EC75A created: 2012-05-31 expires: 2014-05-31 usage: E [ unknown] (1). Freund Please note that the shown key validity is not necessarily correct unless you restart the program. Command> q ==== Datenstrom von StdIn/Pipe verschlüsseln ==== Das funktioniert nur mit GPG-Schlüssel (''gpg -k'')! Einen Datenstrom von StdIn verschlüsseln und nach StdOut wieder ausgeben: [root@erde ~]# cat /tmp/datei.txt | gpg --digest-algo sha512 --compress-algo bzip2 -ear Fritz Einen Datenstrom von StdIn verschlüsseln und in einer Datei ablegen: [root@erde ~]# cat /tmp/datei.txt | gpg --digest-algo sha512 --compress-algo bzip2 -ear Fritz -o /tmp/datei.txt.gpg