Inhaltsverzeichnis
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
CryptSetup- ganzes Dateisystem verschlüsseln) - twofish (der sicherste in
GPG- einzelne Dateie verschlüsseln) → GPG-Verschlüsselung mit Passwort - blowfish (der sicherste in
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 <https://gnu.org/licenses/gpl.html> 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 <https://gnu.org/licenses/gpl.html>
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
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.
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
<n> = Schlüssel verfällt nach n Tagen
<n>w = Schlüssel verfällt nach n Wochen
<n>m = Schlüssel verfällt nach n Monaten
<n>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) <fritz@default.de>"
Ä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) <fritz@default.de>
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 <freund@domain.net>
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 <freund@domain.net>
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 <freund@domain.net>
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 <freund@domain.net>
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
