IT security, FreeBSD, Linux, mail server hardening, post-quantum crypto, DNS, retro computing & hands-on hardware hacks. Privater Tech-Blog seit 2003.

Autor: Sebastian van de Meer (Seite 35 von 47)

Der sichere GPG-Schlüssel

Absolut sicher ist nichts. Man kann nur versuchen, es Angreifern so aufwendig wie möglich zu machen. Bei GPG-Schlüsseln fängt das bei der Schlüssellänge und den Algorithmen an.

Schlüssellänge und Algorithmus

DSA-Schlüssel sind auf 512-1024 Bit begrenzt und anfällig bei schlechten Zufallsgeneratoren. ElGamal-Schlüssel können beliebig groß werden, teilen aber das Zufallsproblem. RSA mit 4096 Bit ist heute ein guter Kompromiss: rechenbar für aktuelle Hardware, nicht rechenbar für bekannte Angriffe. Quantencomputer könnten RSA in Zukunft gefährden, sind davon aber noch weit entfernt.

Unterstützte Verfahren anzeigen

gpg --version

Unterstützte Verfahren:
Öff. Schlüssel: RSA, ELG, DSA
Verschlü.: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
            CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Komprimierung: nicht komprimiert, ZIP, ZLIB, BZIP2

MD5 ist gebrochen, SHA1 gilt als unsicher. SHA-256 und SHA-512 sind die sinnvolle Wahl. Bei den symmetrischen Verfahren sind AES-256 und Twofish solide. 3DES bleibt als Fallback, weil GPG es als Pflichtverfahren mitführt.

Algorithmus-Präferenzen setzen

Man kann im eigenen Schlüssel festlegen, welche Algorithmen in welcher Reihenfolge bevorzugt werden. Die kurze Key-ID (0x0F9874D8) reicht dafür, auch wenn man für andere Zwecke besser die volle Fingerprint-ID nutzt.

gpg --edit-key 0x0F9874D8

Aktuelle Einstellungen anzeigen:

gpg> showpref
[ uneing.] (1). Sebastian van de Meer (E-Mail Address) kernel-error @ kernel-error.com;
Verschlü.: TWOFISH, AES256, AES192, 3DES
Digest: RIPEMD160, SHA512, SHA256, SHA1
Komprimierung: BZIP2, ZLIB, nicht komprimiert
Eigenschaften: MDC, Keyserver no-modify

Gewünschte Algorithmen setzen:

gpg> setpref TWOFISH AES256 AES192 RIPEMD160 SHA512 SHA256 BZIP2 ZLIB
gpg> q
Änderungen speichern? (j/N) j

Der Schlüssel arbeitet ab sofort nur noch mit den festgelegten Verfahren. Kommunikationspartner, deren GPG-Installation keines dieser Verfahren unterstützt, fallen automatisch auf 3DES zurück.

Welchen Verfahren man letztlich vertraut, muss jeder für sich entscheiden.


Update 2025: Gehärtete gpg.conf für GnuPG 2.4

Die Schlüssel-Präferenzen oben sind der erste Schritt. Der zweite ist die lokale gpg.conf. Sie bestimmt, welche Algorithmen GnuPG überhaupt anbietet, wie die Passphrase gehärtet wird und wo nach Schlüsseln gesucht wird. Meine aktuelle Konfiguration für GnuPG 2.4 unter Linux:

# ~/.gnupg/gpg.conf — Hardened Config für GnuPG 2.4

# Ausgabe: lange Key-IDs und Fingerprints anzeigen
keyid-format 0xlong
with-fingerprint
utf8-strings

# Schlüssel automatisch suchen: erst WKD, dann DANE, dann Keyserver
auto-key-retrieve
auto-key-locate wkd,dane,local,keyserver
keyserver hkps://keys.openpgp.org

# Starke Defaults
cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512

# KDF-Härtung: S2K mit 65 Mio. Iterationen
s2k-mode 3
s2k-digest-algo SHA512
s2k-cipher-algo AES256
s2k-count 65011712

# Legacy-Algorithmen komplett deaktivieren
disable-cipher-algo 3DES
disable-cipher-algo IDEA
disable-cipher-algo CAST5
disable-cipher-algo BLOWFISH
disable-cipher-algo TWOFISH

# Metadata minimieren
no-comments
no-emit-version
export-options export-minimal

# Trust-Modell: TOFU kombiniert mit Web of Trust
trust-model tofu+pgp

# Bevorzugte Algorithmen (lokal)
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
weak-digest SHA1
force-ocb

# Default-Key (Ed25519)
default-key 0x5F279C362EEAB216

Was sich geändert hat

Ed25519 statt RSA. Mein aktueller Schlüssel ist ein Ed25519. Kürzere Schlüssel, schnellere Operationen, gleiche Sicherheit. RSA 4096 funktioniert weiterhin, aber für neue Schlüssel gibt es keinen Grund mehr dafür.

Legacy-Algorithmen deaktiviert. 3DES, IDEA, CAST5, Blowfish und Twofish sind per disable-cipher-algo komplett gesperrt. GnuPG bietet sie nicht mehr an und akzeptiert sie nicht. Das ist aggressiver als setpref, weil es auch eingehende Nachrichten betrifft. Wer damit Probleme bekommt, hat ein Gegenüber mit sehr veraltetem Setup.

S2K-Hardening. Die s2k-count Direktive bestimmt, wie oft die Passphrase bei symmetrischer Verschlüsselung gehasht wird. 65 Millionen Iterationen machen Brute-Force auf die Passphrase deutlich teurer. Der Wert ist der Maximalwert, den GnuPG akzeptiert.

OCB statt MDC. force-ocb erzwingt Authenticated Encryption (OCB) statt des älteren MDC (Modification Detection Code). OCB erkennt Manipulationen kryptographisch, nicht nur per Hash.

TOFU+PGP. trust-model tofu+pgp kombiniert das klassische Web of Trust mit Trust on First Use. Beim ersten Kontakt wird der Schlüssel akzeptiert, danach warnt GnuPG bei Änderungen. Pragmatischer als reines WoT, das in der Praxis kaum jemand pflegt.

WKD und DANE. auto-key-locate wkd,dane,local,keyserver sucht Schlüssel zuerst per Web Key Directory und DANE, bevor der Keyserver gefragt wird. WKD liefert den Schlüssel direkt von der Domain des Empfängers. keys.openpgp.org als Keyserver statt der alten SKS-Pools, weil dort E-Mail-Adressen nur nach Bestätigung veröffentlicht werden.

Metadata minimieren. no-comments, no-emit-version und export-minimal sorgen dafür, dass verschlüsselte Nachrichten und exportierte Schlüssel keine unnötigen Informationen enthalten. Kein Kommentarfeld, keine GnuPG-Versionsnummer, keine überflüssigen Signaturen beim Export.

Siehe auch: GPG: E-Mails signieren und verschlüsseln mit GnuPG, GPG-Schlüssel per PKA im DNS veröffentlichen, OPENPGPKEY: GPG-Schlüssel direkt im DNS veröffentlichen

Fragen? Einfach melden.

Linux LUKS: Falsche Tastatur bei der Passphrase-Abfrage

Festplattenverschlüsselung mit LUKS ist eine feine Sache. Bis man beim Booten sein Passphrase eingibt, es dreimal falsch ist und sich fragt ob man den Verstand verloren hat. Man hat sein Passphrase mit deutscher Tastatur eingerichtet, aber beim Booten lädt Linux die Keymap erst nach der LUKS-Abfrage. Also tippt man auf einer englischen Tastatur und wundert sich, warum Y und Z vertauscht sind und die Umlaute fehlen.

Ich hab mich davon auch schon verarschen lassen. Nicht nur einmal. Die Lösung ist je nach Distribution unterschiedlich, aber das Grundprinzip ist immer dasselbe: Man muss dem initramfs beibringen, die richtige Keymap zu laden bevor die Passphrase-Abfrage kommt.

Lösung: vconsole.conf + initramfs

Auf systemd-basierten Distributionen (Debian, Ubuntu, Fedora, Arch) setzt man die Keymap in /etc/vconsole.conf:

# /etc/vconsole.conf
KEYMAP=de-latin1

Danach das initramfs neu bauen, damit die Keymap beim Booten verfügbar ist:

# Debian/Ubuntu
update-initramfs -u

# Fedora/RHEL
dracut --force

# Arch
mkinitcpio -P

Nach dem nächsten Reboot wird die deutsche Keymap vor der LUKS-Abfrage geladen.

Alternative: GRUB Kernel-Parameter

Auf Gentoo-basierten Distributionen (Gentoo, Funtoo, das inzwischen eingestellte Sabayon) kann man die Keymap über Kernel-Parameter in GRUB setzen:

# /etc/default/grub
GRUB_CMDLINE_LINUX="... dokeymap keymap=de"

Nach grub-mkconfig -o /boot/grub/grub.cfg greift das beim nächsten Boot. dokeymap weist das initramfs an, die Keymap sofort zu wechseln.

Wenn es zu spät ist

Wer sein Passphrase bereits mit der falschen Keymap eingegeben hat und nicht mehr reinkommt: Das Passphrase auf einer US-Tastatur tippen. Also mental die deutschen Sonderzeichen auf ihre US-Positionen mappen. Z und Y sind vertauscht, ö ist ; und ä ist ‚, Bindestrich liegt woanders. Oder man schließt eine externe USB-Tastatur an und stellt sie auf US. Sobald man drin ist, die Keymap wie oben beschrieben fixen.

Fragen? Einfach melden.

DNSSEC und DANE: TLS-Zertifikate mit TLSA-Records absichern

Meine Domain ist per DNSSEC gesichert, der Webserver bietet TLS an. Mit DANE (DNS-based Authentication of Named Entities) lässt sich beides verbinden: Die Checksumme des TLS-Zertifikats wird als TLSA-Record im DNS veröffentlicht — DNSSEC schützt diesen Record vor Manipulation.

Warum DANE?

Das klassische CA-System hat ein grundsätzliches Problem: Jede der hunderten Certificate Authorities kann ein Zertifikat für jede Domain ausstellen. Wird eine CA kompromittiert oder handelt fahrlässig, können gefälschte Zertifikate im Umlauf sein — der Browser merkt nichts. DANE löst das, indem der Domaininhaber selbst festlegt, welches Zertifikat gültig ist. Der Hash steht im DNS, DNSSEC garantiert die Integrität. Keine CA kann das unterlaufen.

Unterstützt ein Client DANE, prüft er beim TLS-Handshake, ob der TLSA-Record zum angebotenen Zertifikat passt. Das funktioniert auch mit selbstsignierten Zertifikaten — solange der Hash stimmt und DNSSEC aktiv ist, wird dem Zertifikat vertraut. Die Spezifikation steht in RFC 6698.

TLSA-Record erstellen

Der TLSA-Record enthält einen Hash des Public Keys (SPKI) aus dem Zertifikat. Mit OpenSSL erzeugt:

openssl x509 -in server.pem -noout -pubkey \
  | openssl pkey -pubin -outform DER \
  | openssl dgst -sha256

Den Hash trägt man als TLSA-Record in die DNS-Zone ein. Für den Webserver (Port 443):

_443._tcp.www.kernel-error.de. 3600 IN TLSA 3 1 1 a321...f7

Die drei Zahlen 3 1 1 bedeuten:

  • 3 — DANE-EE (End Entity): Das Zertifikat wird direkt geprüft, kein CA-Vertrauen nötig
  • 1 — SPKI (Subject Public Key Info): Nur der Public Key wird gehasht, nicht das ganze Zertifikat. Vorteil: Bei Erneuerung mit demselben Key bleibt der TLSA-Record gültig
  • 1 — SHA-256 als Hash-Algorithmus

Der TTL von 3600 Sekunden ist bewusst kurz gewählt — bei einem Zertifikatswechsel mit neuem Key soll der alte Record schnell ablaufen.

Prüfen

Mit dig lässt sich der TLSA-Record abfragen:

dig TLSA _443._tcp.www.kernel-error.de +short
3 1 1 a321...f7

Ob der Record auch zum tatsächlich ausgelieferten Zertifikat passt, prüft man mit OpenSSL — Hash vom Server-Zertifikat erzeugen und mit dem DNS-Record vergleichen:

echo | openssl s_client -connect www.kernel-error.de:443 2>/dev/null \
  | openssl x509 -noout -pubkey \
  | openssl pkey -pubin -outform DER \
  | openssl dgst -sha256

Stimmen die Hashes überein, ist alles korrekt. Komfortabler geht es mit posttls-finger (Teil von Postfix) — das Tool prüft TLSA-Record und Zertifikat in einem Schritt.

DANE für E-Mail

DANE funktioniert nicht nur für Webserver. Für E-Mail ist es sogar wichtiger — SMTP hat kein Vertrauensmodell wie Browser, opportunistisches TLS kann trivial per Downgrade-Angriff ausgehebelt werden. Mit DANE und TLSA-Records auf Port 25 wird die Verschlüsselung kryptographisch verifizierbar. Wie man das mit Postfix einrichtet, steht im Beitrag Postfix mit DANE und DNSSEC absichern. Zur Visualisierung des DANE-Anteils im Mailverkehr habe ich damals Mailgraph um DANE-Graphen erweitert.

Siehe auch: DNSSEC einrichten

Fragen? Einfach melden.

Kabelbruch am Fujitsu Siemens Notebook

Irgendwo hat mein Notebook einen „Wackler oder Kabelbruch“ auf dem Weg zum Display. Fujitsu Siemens NH751… Ich habe das Thema einfach eine Zeit lang ignoriert. Löst natürlich nicht das Problem, ist mir klar.
Wie zu erwarten wurde es nicht besser sondern schlimmer. In der Zwischenzeit war es nicht mal mehr damit erledigt eine „funktionierende“ Kippstellung des Monitors zu finden. Also aufschrauben und nachschauen!

Es scheint wirklich ein Kabelbruch zu sein, irgendwo in der Nähe des rechten Scharniers. Gott ist das Notebook schlecht zu zerlegen. Da hat wohl jemand bei der Konstruktion nicht an Techniker gedacht 🙁

Ich habe 1 Stunde herum gefummelt, bevor ich den Kabelbruch gelötet hatte. Wie auch immer. Inzwischen ist es verlötet und es klappt wieder alles korrekt.

Es ärgert mich denn noch dass bei so vielen Geräten nicht darauf geachtet wird es am Ende reparieren zu können. Sollen wir denn wirklich alles wegwerfen?

 

 

Fragen? Einfach melden.

Western Digital Scorpio Black WDC WD7500BPKT-00PK4T0

Mein Notebook bietet glücklicherweise die Möglichkeit zwei Festplatten zu betreiben. Eine Platte ist eine SSD mit knapp 120GB für das System. Die andere habe ich heute gegen eine Western Digital Scorpio Black mit 750GB ausgetauscht. Hier liegt nun mein „home“.

Ich habe mich beim anlegen der Partitionen dagegen entschieden noch Platz für die Windows Spielepartition zu lassen. Ich habe einfach in den vergangenen Monate kaum noch Zeit zum Zocken gefunden. Irgendwas hatte einfach immer eine höhere Priorität. Nun ist also meine Homedir um 200GB größer und natürlich ganz brav mit luks verschlüsselt. Festplattenverschlüssellung mit Linux wwwwwööööööööööhhhhhhhhyyyyyyy.

In diesem Sinne… Gute Nacht!

luks-crypto-home Screenshot der Passsatz eingabe.

Fragen? Einfach melden.

TRIM für SSDs und Flash-Speicher unter Linux aktivieren

Was macht TRIM?

Wenn eine Datei gelöscht wird, entfernt das Dateisystem nur den Eintrag aus seinem Inhaltsverzeichnis. Die Speicherblöcke werden als überschreibbar markiert — aber der Datenträger selbst erfährt davon nichts. Bei klassischen Festplatten ist das egal. Bei Flash-Speicher (SSDs, USB-Sticks, Speicherkarten) wird es zum Problem.

Flash-Speicher verteilt Schreibvorgänge gleichmäßig über alle Zellen — das nennt sich Wear Leveling und verlängert die Lebensdauer. Dafür muss der Controller aber wissen, welche Blöcke frei sind. Ohne diese Information kann er irgendwann nur noch den kleinen Reservebereich nutzen und wird spürbar langsam. Genau hier kommt TRIM ins Spiel: Es teilt dem Datenträger mit, welche Blöcke nicht mehr gebraucht werden.

Methode 1: fstrim (manuell oder per Cronjob)

  • Informiert den Datenträger nur zum Zeitpunkt der Ausführung
  • Funktioniert ab Kernel 2.6.33
  • Lässt sich einfach per Cronjob automatisieren

Einmalig ausführen:

fstrim -v /

Täglich per Cronjob — ein Script unter /etc/cron.daily/hdd-trim anlegen:

#!/bin/bash
echo "Gestartet am: $(date)" >> /var/log/hdd-trim.log
fstrim -v / >> /var/log/hdd-trim.log
chmod +x /etc/cron.daily/hdd-trim

Die meisten Linux-Distributionen bringen mittlerweile einen systemd-Timer fstrim.timer mit, der wöchentlich TRIM ausführt. Ob er aktiv ist: systemctl status fstrim.timer

Methode 2: discard (Echtzeit-TRIM per fstab)

  • Informiert den Datenträger in Echtzeit bei jedem Löschvorgang
  • Erzeugt minimal mehr I/O als periodisches fstrim
  • Bei modernen SSDs und Kerneln problemlos nutzbar

In der /etc/fstab die Option discard zu den Mount-Optionen hinzufügen:

/dev/sda1  /  ext4  noatime,errors=remount-ro,discard  0  1

Device, Mountpunkt und Dateisystem natürlich an das eigene Setup anpassen.

Welche Methode?

Für die meisten Setups reicht der wöchentliche fstrim.timer — das ist heute die empfohlene Methode. discard in der fstab ist sinnvoll, wenn der Datenträger permanent voll ist und sofort von freigegebenen Blöcken profitieren soll. Für ZFS gibt es eine eigene TRIM-Konfiguration — siehe TRIM im ZFS-Pool aktivieren.

Achtung: TRIM sagt dem Datenträger, dass er Blöcke überschreiben darf. Wenn hier etwas schiefgeht, sind Daten weg. Vorher prüfen, ob Kernel, Dateisystem und SSD-Firmware TRIM korrekt unterstützen — und ein Backup haben.

Siehe auch: TRIM für SSDs im ZFS-Pool

Fragen? Einfach melden.

IPv6 Prefix Delegation: FritzBox und MikroTik

Prefix Delegation per DHCPv6 ist nichts Neues. Dass eine FritzBox das bietet, war mir aber neu. Vielleicht unterschätze ich das Teil?

Ich bekomme ein /48 zugeteilt, die FritzBox bietet die — nicht weiter konfigurierbare — Möglichkeit, ein /62 per Prefix Delegation an einen weiteren Router im Netzwerk weiterzugeben.

Ich habe also meinen MikroTik über den DHCPv6-Client mit einem Prefix füttern lassen. Der MikroTik arbeitet als Hotspot und Trenner fürs WLAN. Nun schiebt dieser das per Prefix Delegation zugewiesene /64 auch ins WLAN durch.

Damit ist im WLAN über die FritzBox und den MikroTik auch IPv6 angekommen. An der FritzBox lässt sich kaum etwas hinsichtlich Netzwerk konfigurieren — ist halt alles zielgruppengerecht. Aber hier hat mich die Kiste von AVM überrascht.

Fragen? Einfach melden.

Bash Schnipsel zu dd und pv

Bash Schnipsel zu dd und pv

dd kennt ja im Grunde jeder. Das man mit folgender Zeile den Status des aktuell laufenden dd Prozesses sehen kann nun auch:

$ kill -USR1 `pidof dd`

 Sichert man gerade mit dd eine Festplatte oder kommt sonst irgendwie in die Situation Daten auf der Konsole hin und her zu pipen, dann liefert pv genaue Statusinformationen dazu:

$ dd if=/dev/sda bs=16065b | pv | bzip2 -9 >/pfad/image.bz2

 pv lässt sich einfach in fast jede Pipe einbauen und wirft Informationen zu den durchfließenden Daten.

So long….

Fragen? Einfach melden.

PRISM: Ein Blick auf das Überwachungsprogramm

Nachdem nun dieses Thema in den Medien so hochgekocht ist und auch der letzte Facebooknutzer mitbekommen hat das seine Daten nicht „privat“ sind *lach*.
Kommen in der letzten Zeit vermehrt Fragen zu Verschlüsselung bei mir an. Egal ob Kunden auf der Arbeit, Bekannte vom Stammtisch oder irgendwer aus dem Internet! Zwar hat noch immer keiner etwas zu verbergen, zumindest nicht wirklich, also nur das mit den Filmen und den mp3s und den Spielen und und und….. Darum geht es ja aber nicht, denn plötzlich scheint es doch nicht mehr jeden etwas anzugehen, welche Nachrichten, E-Mails oder Bilder sie verschicken. Bla bla bla bla…
War da nicht etwas mit einem Frosch der aus kochendem Wasser springt, wenn man ihn aber im Wasser erwärmt sitzen bleibt bis er tot ist? Ich habe es noch nie probiert, will es auch nicht… Der Punkt ist denn noch klar, oder? Da rennt man Jahrelang herum und predigt was das Zeug hält und nix is.
Ein paar Leute sind stinkig, einige machen sich Gedanken über Verschlüsselung aber in 1 – 2 Monaten interessiert sich kein Mensch mehr dafür und alle verschicken weiterhin ihre Postkarten. Man hat ja nichts zu verbergen und wenn, soll doch so ein Agent von der NSA oder BSI oder sonst einem Verein die Urlaubsbilder sehen, richtig? *ironie alarm*
Na, was soll es? Die Aluhüte mussten ihren Vorrat an Clinex und Handcreme aufstocken *i told you so* und wir sind alle noch ein kleines Bisschen mehr abgestumpft. Dann kann die nächste Welle der Empörung ja kommen.

Fragen? Einfach melden.

« Ältere Beiträge Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑