Benutzer-Werkzeuge

Webseiten-Werkzeuge


einzelne_dateien_mit_gpg_verschluesseln

Dies ist eine alte Version des Dokuments!


einzelne Dateien mit GPG verschlüsseln

siehe auch: Daten packen

Die Stärke der Sicherheit der drei besten Cipher ist wie folgt, der sicherste steht oben:

  1. serpent (der sicherste in CryptSetup - ganzes Dateisystem verschlüsseln)
  2. twofish (der sicherste in GPG - einzelne Dateie verschlüsseln)
  3. blowfish (der sicherste in openSSL - einzelne Dateie verschlüsseln)

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
/home/http/wiki/data/attic/einzelne_dateien_mit_gpg_verschluesseln.1629663313.txt · Zuletzt geändert: von manfred