Inhaltsverzeichnis
Kryptografie
Daten
Dateien
GnuPG = GNU Privacy Guard
PGP = Pretty Good Privacy
https://wiki.ubuntuusers.de/GnuPG/
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.
Installation
sudo apt-get install gnupg2
Eigene vorhandene Schlüssel auflisten
gpg2 --list-secret-keys
gpg2 -K
Öffentliche vorhandene (fremde) Schlüssel auflisten
gpg2 --list-keys
gpg2 -k
Schlüsselpaar erzeugen
gpg2 --full-gen-key
Fingerprint anzeigen
gpg2 --fingerprint <ID oder Name des Schlüssels>
Ö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
Datei Verschlüsseln
gpg2 --encrypt -a --recipient <Name oder Key_Id> test.txt
Datei Entschlüsseln
gpg2 --decrypt --output entschluesselt.txt test.txt.asc
Datei Signieren
gpg2 --detach-sig -a test.txt
Datei Signatur überprüfen
gpg2 --verify test.txt.asc
E-Mails
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.
Partitionen
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)
/dev/nvme0n1p3 = verschlüsselte Partition.
Anzeige der Header-Information:
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) / Vor dem Löschen immer erst neues anlegen
Neues Passwort/Slot anlegen
sudo cryptsetup luksAddKey /dev/nvme0n1p3
Passwort/Slot löschen <SLOT> = 0 bis 7
sudo cryptsetup luksKillSlot /dev/nvme0n1p3 <SLOT>
Container & Laufwerke
Veracrypt
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
wget https://launchpad.net/veracrypt/trunk/1.25.9/+download/veracrypt-console-1.25.9-Debian-11-amd64.deb
Versionsnummer entsprechend der aktuellen bzw. verwendeten Version anpassen.
Installation
sudo apt install ./veracrypt-console-1.25.9-Debian-11-amd64.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
Auto-Mount
Soll eine Partition oder eine Container-Datei automatisch nach dem Einloggen eingebunden werden, dann muss hierfür u.a. 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. Ist die Systemplatte geschützt, Passworteingabe bereits beim Booten des Rechners, kann das Passwort in diesem Bereich geschützt abgelegt werden. Andersfalls macht das automatische Einbinden wenig Sinn, wenn ein Angreifer auch auf das Passwort eines (dann nur noch gering) geschützten Bereiches zufgreifen kann.
Damit Veracrypt Festplatten beim starten automatisch mounten kann, (beliebige) Datei, wie o.a. in einem geschützten Bereich, anlegen. Hier wird Device sda eingebunden.
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
Secure Shell oder SSH bezeichnet ein kryptographisches Netzwerkprotokoll für den sicheren Betrieb von Netzwerkdiensten über ungesicherte Netzwerke.
Siehe SSH-Verbindungen.
VPN
Virtual Private Network (deutsch „virtuelles privates Netzwerk“; kurz: VPN) bezeichnet eine Netzwerkverbindung, die von Unbeteiligten nicht einsehbar ist.
Siehe WireGuard - VPN-Server
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
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
Diskussion