Benutzer-Werkzeuge

Webseiten-Werkzeuge


open:it:crypto

Kryptografie

Daten

Dateien verschlüsseln

GnuPG = GNU Privacy Guard
PGP = Pretty Good Privacy

Quellen:

Installation1)

sudo apt install gnupg2

Verschlüsseln mit Passwort

Das Passwort bei u.a. Befehlen wird jeweils abgefragt.

Einzelne Datei mit Passwort verschlüsseln

gpg -c <Original_DATEINAME>

Neuer Dateiname automatisch = <Original_DATEINAME> + „.gpg“

Einzelne mit Passwort verschlüsselte Datei entschlüsseln

gpg -d <Krypt_DATEINAME>.gpg > <DATEINAME>

Verwaltung von Schlüsseln

Für das verschlüsseln wird ein Schlüsselpaar benötigt. Mit dem öffentlichen Schlüssel wird verschlüsselt, den kann jeder haben. So ist es kein Problem diesen auf der eigenen Webseite zu veröffentlichen. Mit dem privaten Schlüssel wird entschlüsselt, der muss geheim bleiben. Verschlüsselt ein Dritter mit dem öffentlichen Schlüssel, kann auch dieser die Datei nicht mehr ohne den privaten Schlüssel entschlüsseln. da er i.d.R. das Original besitzt, ist das auch nicht notwendig.

Der private Schlüssel muss unbedingt vor fremdem Zugriff geschützt bleiben!
Das gilt auch für den wie u.a. exportierten Schlüssel für die E-Mail-Nutzung.
Nach Aussen gegeben wird NUR der öffentliche Schlüssel.

Vorhandene private Schlüssel auflisten

gpg2 --list-secret-keys
gpg2 -K

Vorhandene öffentliche Schlüssel auflisten

gpg2 --list-keys
gpg2 -k

Schlüsselpaar erzeugen

gpg2 --full-gen-key 

Der Schlüssel befindet sich dann im Home-Verzeichnis des ausführenden Users unter ~/.gnupg

Privaten Schlüssel exportieren (um ihn z.B. im E-Mailprogramm zu verwenden)

gpg --export-secret-keys --armor > my-secret-key.asc

Dateiname my-secret-key.asc nach Wunsch benennen (Erweiterung .asc sollte bleiben). Diese durch das System neu erstellte Datei befindet sich anschließend in dem Verzeichnis, in dem der Befehl ausgeführt wurde.

Öffentlichen Schlüssel exportieren

gpg -a --output gpg-key --export <Schlüssel-ID oder Name>
gpg -a --export <Schlüssel-ID oder Name> | tee gpg-key

Verschlüsseln mit Schlüsseln

Datei mit Schlüssel verschlüsseln

gpg2 --encrypt -a --recipient <Name oder Key_Id> test.txt 

Datei mit Schlüssel entschlüsseln

gpg2 --decrypt --output entschluesselt.txt test.txt.asc

Fingerprint und Signatur

siehe Wikipedia/Elektronische_Signatur
siehe Wikipedia/Fingerprint

Fingerprint anzeigen

gpg2 --fingerprint <ID oder Name des Schlüssels>

Datei Signieren

gpg2 --detach-sig -a test.txt

Datei Signatur überprüfen

gpg2 --verify test.txt.asc

E-Mails verschlüsseln

E-Mails digital signieren und verschlüsseln

In diversen E-Mail-Programmen ist OpenPGP bereits enthalten und neue Schlüssel können direkt damit erstellt werden.
Der öffentliche Schlüssel wird an den Kommunikationspartner geschickt, der die von ihm verfassten E-Mails damit verschlüsselt. (Nur) der Besitzer des privaten Schlüssels kann die E-Mail dann wieder entschlüsseln.
Lesen klappt nur mit einem System, auf dem der Schlüssel hinterlegt ist. Ist der private Schlüssel nur auf dem Notebook hinterlegt, kann die selbe E-Mail z.B. auf dem Handy nicht entschlüsselt werden. Der private Schlüssel muss dann auch dort hinterlegt werden.

Thunderbird

Schlüsselpaar erzeugen:
Extras → OpenPGP-Schlüssel verwalten → erzeugen → neues Schlüsselpaar.

Beim Einrichten von OpenPGP muss bei Thunderbird die Anwendung des privaten Schlüssels in den Konten-Einstellungen unter Ende-zu-Ende-Verschlüsselung aktiviert werden.

E-Mail Schlüssel veröffentlichen

Der öffentliche Schlüssel kann auf der Webseite von openpgp.org veröffentlicht werden. Dann hat jeder Zugriff auf den öffentlichen Schlüssel und kann danmit E-Mails an den dort hinterlegten Empfänger verschlüsseln. Der Schlüssel kann direkt über Thunderbird (Konto-Einstellungen → Ende-zu-Ende-Verschlüsselung→Veröffentlichen (Buttom im Feld des Schlüssels) veröffentlicht oder auf der Seite von openpgp.org hochgeladen werden. Die abschließende Veröffentlichung erfolgt nach Bestätigung der eingehenden E-Mail.

E-Mail Anhang verschlüsseln

Wenn die Entschlüsselung nach dem Verfahren mit Schlüssel für den Empfänger nicht geeignet/möglich ist, kann stattdessen ein E-Mail-Anhang verschlüsselt werden, bevor er der E-Mail angehängt wird. Siehe einzelne Datei mit Passwort verschlüsseln. Der Empfänger benötigt dann natürlich das Passwort und das sollte ihm im günstigsten Fall über einen 2. Kanal (z.B. per Telefon) zur Verfügung gestellt werden. In keinem Fall darf es in derselben E-Mail enthalten sein!
Abhängig von der notwendigen Sicherheitsstufe sollte auch die Komplexität bzw. die Länge des Passwortes gewählt werden. Einfache Passwörter sind ungeeignet, letztlich nur für unwichtige Dokumente richtig und dann kann man auch Unverschlüsselt senden.

Partitionen verschlüsseln

Handelt es sich um die Systempartition, muss dies bereits während der Installation des OS erfolgen.
Achtung: Muss ein Server mit verschlüsseltem System neu gestartet werden, dann kann man dies nicht aus der Ferne durchführen. Das Passwort muss lokal, vor Ort eingegeben werden!!!
Siehe auch Installation Debian, Partitionierung.
Option: System und Daten trennen und nur Datenbereiche verschlüsseln, dann lässt sich das auch aus der Ferne realiseren. Hierzu kann z.B. Veracrypt genutzt werden.

Partitionen anzeigen

lsblk

Speicherplätze anzeigen

df -h

https://wiki.ubuntuusers.de/LUKS/

Mit cryptsetup (LVM-LUKS)
Anzeige der Header-Information2):

sudo cryptsetup luksDump /dev/nvme0n1p3

Anzeige Status:

sudo cryptsetup status /dev/nvme0n1p3_crypt

Passwort: Bis zu 8 Passwörter/Slots möglich (Keyslot 0 bis 7)
Neues Passwort/Slot anlegen

sudo cryptsetup luksAddKey /dev/nvme0n1p3

Passwort/Slot löschen <SLOT> = 0 bis 73)

sudo cryptsetup luksKillSlot /dev/nvme0n1p3 <SLOT>

Passwort ändern

sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Container & Laufwerke verschlüsseln

LUKS

Veracrypt

Achtung: In der Standardeinstellung von Veracrypt bleibt die Änderungszeit von Containerdateien erhalten, auch wenn deren Inhalt verändert wird.
Wird eine Containerdatei jedoch z.B. über Nextcloud synchronisiert, kann auch Nextcloud nicht erkennen, wenn sich innerhalb des Containers Änderungen ergeben und wird ggf. nicht richtig synchronisieren.
Lösung für die GUI-Anwendung: Einstellungen → Voreinstelllungen → „Änderungszeiten von Containerdateien erhalten“ auf allen betroffenen Systemen abschalten.

Hier Installation und Befehle über Konsole.
Beispielhaft für ein verschlüsseltes und am Server angeschlossenes USB-Speichermedium.

https://veracrypt.fr/en/
https://github.com/arcanecode/VeraCrypt-CommandLine-Examples/blob/main/Linux/post.md

Download Programm über Konsole mit

wget https://launchpad.net/veracrypt/trunk............deb

Pfad & Dateiname holen unter https://www.veracrypt.fr/en/Downloads.html

Installation

sudo apt install ./veracrypt-console-.........deb

Anzeige der Speichermedien

lsblk
df -h

Einhängen

veracrypt --text --mount /dev/<SDB> /<ZIELPFAD>/ --password <PASSWORD> --pim 0 --keyfiles "" --protect-hidden no --slot 1 --verbose

Anpassen:
<SDB> Ort der Festplatte → Abfrage über „lsblk“
<ZIELPFAD> (existierendes) Verzeichnis
<PASSWORD>

Aushängen

sudo veracrypt --text --dismount --slot 1

Anzeige gemounteter Volumen

sudo veracrypt --text --list

Veracrypt Auto-Mount

Soll eine Partition oder eine Container-Datei automatisch nach dem Einloggen eingebunden werden, dann muss hierfür auch das Passwort auf dem PC hinterlegt werden. Wenn dies in einem nicht geschützten Bereich erfolgt, dann ist das grundsätzlich problematisch, da auch ein Angreifer, der im Besitz des Gerätes ist, das Passwort auf der Festplatte finden kann. Hier würde sich Variante 1 anbieten.
Ist die Systemplatte geschützt, Passworteingabe bereits beim Booten des Rechners, kann das Passwort für weitere Festplatten in diesem geschützten Bereich abgelegt werden. Siehe Variante 2.

Variante 1

https://www.computercorrect.com/2018/operating-systems/linux/ubuntu/auto-mounting-a-veracrypt-volume-under-ubuntu-debian-linux/
https://www.freedesktop.org/software/systemd/man/latest/crypttab.html
Block (Volumen) beim Booten anlegen

sudo nano /etc/crypttab
volume_name /dev/sda password tcrypt-veracrypt,tcrypt-keyfile=/path/to/keyfile
  • volume_name kann frei gewählt werden und wird als bekanntes Volumen im Pfad /dev/mapper/ hinzugefügt
  • /dev/sda = Pfad des Volumens oder des Containiers, das verschlüsselt ist
  • password
    • '-' = Abfrage des Passwortes beim booten. Die beiden Anführungszeichen müssen auch gesetzt werden. Versuche, das Passwort direkt hier einzutragen sind gescheitert.
    • Alternative: Pfad zu einer Datei, die ausschließlich das Passwort enthält.
    • Alternative: Wird ein keyfile genutzt, dann wird hier eingetragen /dev/null
  • Wird eine keyfile benutzt, dann wird der Pfad hier eingetragen. Wenn keiner verwendet wird, dann ist der Text „,tcrypt-keyfile=/path/to/keyfile“ inkl. Komma zu entfernen.

Ansicht der bestehenden Blocks

lsblk

Block/Volumen beim Booten einbinden (mount)

sudo nano /etc/fstab
/dev/mapper/volume_name /mnt/point auto nosuid,nodev,nofail 0 0
  • volume_name, wie oben ausgewählt (Pfad /dev/mapper gehört trotzdem dazu)
  • /mnt/pont = wie gewünscht
Variante 2
sudo nano /secureplace/decrypt.sh
#!/bin/bash
sudo veracrypt -t /dev/sda /mnt/xyz --non-interactive -p <PASSWORD>

<PASSWORD> ersetzen mit dem echten Passwort

Datei /etc/fuse.conf editieren:

sudo nano /etc/fuse.conf
mount_max = 1000		| das # davor entfernen
user_allow_other		| das # davor entfernen

<USER> (Name ändern) zur Gruppe users hinzufügen

sudo usermod -a -G users <USER>

Datei /etc/sudoers editieren (am Ende einfügen):

sudo visudo
%users  ALL=(root) NOPASSWD: /usr/bin/veracrypt

Automatisch beim Starten über /etc/crontab ausführen

sudo nano /etc/crontab
@reboot <USER>      /secureplace/decrypt.sh

am Ende einfügen, Pfad s.o., und <USER> anpassen

Datenübertragung

SSH-Verbindungen

Secure Shell oder SSH bezeichnet ein kryptographisches Netzwerkprotokoll für den sicheren Betrieb von Netzwerkdiensten über ungesicherte Netzwerke.
Siehe SSH-Verbindungen.

VPN-Tunnel

Virtual Private Network (deutsch „virtuelles privates Netzwerk“; kurz: VPN) bezeichnet eine Netzwerkverbindung, die von Unbeteiligten nicht einsehbar ist.
Siehe WireGuard - VPN-Server

Webseiten mit TLS/SSL

Transport Layer Security (TLS, englisch für „Transportschichtsicherheit“), auch bekannt unter der Vorgängerbezeichnung Secure Sockets Layer (SSL), ist ein Verschlüsselungsprotokoll zur sicheren Datenübertragung im Internet.
Siehe SSL-Verbindung mit Apache Web-Server

Datenübertragung mit SFTP/FTP

SFTP: SSH File Transfer Protocol bzw. Secure File Transfer Protocol, ein Netzwerkprotokoll
FTP: File Transfer Protocol ohne Verschlüsselung & Signatur.
Siehe FTP-Zugang

E-Mails

Die Verbindungssicherheit erfolgt i.d.R. über den E-Mail-Provider in Kombination mit der Einrichtung des E-Mail-Programms.
Im Falle des Betriebs eines eigenen E-Mail-Servers siehe: Mail-Server.
Ist die Übertagungssicherheit nicht gewährleistet, kann entweder die gesamte E-Mail verschlüsselt oder verschlüsselte Dateien mit der E-Mail gesandt werden.

1)
gnuPG2 is an encryption tool that includes digital signatures and certificates.
2)
/dev/nvme0n1p3 = die hier gewählte verschlüsselte Partition
3)
Vor dem Löschen ein neues anlegen!!!
open/it/crypto.txt · Zuletzt geändert: 2024/09/10 19:30 von Kai