B.4 Verschlüsselung der Festplatte
Falls Du A.4 nocht nicht gelesen hast, bitte ich Dich dringend, dies jetzt gleich nachzuholen (bevor Du weiter liest) =>
viewtopic-t-1112894-highlight-.html
Möglicherweise hast Du nach dem Lesen von A.4 bemerkt, dass ich kein Freund einer Festplattenvollverschlüsselung bin. Hier meine Erklärung: Weil es Falsch ist !!
(hier ist noch jemand der gleichen Meinung und hat dies ausführlicher begründet: https://linuxinsider.com/story/the-case ... 86774.html )
Integritäts-Management
Verschlüsselung ist kein Ersatz für eine ordentliche Integritäts-Prüfung (die Sicherheitsexperten unter Euch wissen das genauso und können diesen Teil gerne überspringen). Oder sollte es zumindest nicht sein. Verschlüsselung ist für Daten da; nicht für Binaries oder System-Einstellungen. Lasse mich kurz (grob) erklären, wie es sein sollte:
Nachdem Du den Part (A) komplett installiert hast, gibst Du dem Kernel (oder einem dafür verantwortlichen Programm) die Information/Befehl, sich den aktuellen Stand zu merken: Für alle ausführbaren Programme und wichtige Dateien aus /etc werden dann die Hash-Werte berechnet und gespeichert. Dieser Stand wird an einer Stelle gespeichert die unveränderlich und unerreichbar für alle anderen Menschen ist - egal ob sie mit CDROM (USB-Stick) booten, die Festplatte ausbauen oder das BIOS kurzschließen um da reinzukommen. Häh - wo soll das sein ?
Früher gab es nur eine Stelle: Ein Speicher-Medium welches entfernt werden kann (und wurde), z.B. eine Diskette (schau mal bei WikiPedia nach, was das ist); heute könnte es auch ein Stick sein. Das war ... nervig. Und so erfand man das TPM. Ein Ort wo nur der Kernel nachsehen darf, welche Werte drin sind. Aber nicht irgendein Kernel, sondern nur der, von dem sicher ist, dass es der richtige - von Dir installierte - ist. Dazu muß er signiert sein, damit Dein PC prüfen kann ob es der Originale ist (das nennt man SecureBoot). Wenn ja, bekommt er alle Hash-Werte zurück (im Detail ist es anders) und kann ab sofort prüfen, ob Deine "bash" und Deine "fstab" im Original-Zustand sind. Wenn diese verändert wurden, wird er Dich warnen und die Bash nicht starten. (wenn Du eine neue bash installierst, musst Du natürlich wieder bescheid geben, dass dieser neue Stand i.O. ist)
Falls jemand einen anderen Kernel über USB bootet, bekommt dieser vom TPM keine Daten - basta. Gut, er könnte dann alles mögliche in Deinem Root-Verzeichnis ändern. Aber er kann die passenden Hash-Werte im TPM (oder auf der entfernten Diskette) nicht so anpassen, dass sie zu seinen installierten Programmen passen. Sobald Du Deinen PC startest - mit Deinem sauber signierten richtigen Kernel - wird dieser sofort Alarm geben (und Du darfst dann Dein System neu installieren). Ach ja, wenn ein Angreifer versucht, Deinen echten Kernel auch noch auszutauschen, startet Dein PC nicht, weil er merkt dass die Signatur falsch ist.
Was ist jetzt der Unterschied zu einem verschlüsselten Root-Verzeichnis ? Da kann mir doch auch niemand etwas installieren, wenn ich nicht da bin, weil /root ja verschlüsselt ist. Stimmt - wenn Dein PC ausgeschaltet ist. Nicht aber wenn Dein PC eingeschaltet ist und Verbindung ins Internet hat ... und ein Angriff aus dem Netz auf Deinen PC erfolgreich war !
Dann kann folgendes passieren: Du hast mit Deinem Browser eine böse Seite erreicht, die einen Bug in Deinem Browser ausnutzt und diesen veranlasset etwas auszuführen, was Dein Browser normalerweise nicht tun würde. Dieser böse Teil merkt aber, dass Dein Browser in einer Sandbox läuft und keinen Zugriff auf Deine Daten hat. Deshalb versucht es jetzt einen Bug im Kernel auszunutzen um nicht als User "sandbox" sondern als "root" zu laufen (https://de.wikipedia.org/wiki/Rechteausweitung). Dann tauscht es die installierte "bash" gegen seine eigene Version. Du hast von alldem gar nichts bemerkt. Demnächst startest Du ein Terminal-Fenster und dann werden urplötzlich alle Deine Daten aus dem /home verschlüsselt um Dich damit zu erpressen. (In diesem Beispiel, siehst Du auch, wie wichtig ein gehärteter Kernel ist, denn ohne ausnutzbaren Kernel-Bug funktioniert das nicht so einfach / gar nicht.) Eine ordentliche Integritäts-Prüfung läuft nicht nur beim Systemstart, sondern laufend, und hätte Dich das Terminal-Fenster gar nicht starten lassen, sondern Alarm gegeben.
Fazit: Eine Festplattenvollverschlüsselung schützt nur gegen Offline-Angriffe. Wenn der PC aus ist und Du nicht da bist. Ein verschlüsseltes Root-Verzeichnis ist dagegen ungeschützt sobald Du angemeldet bist.
Wieso haben wir also keine ordentliche Integritäts-Prüfung ? TPM gibt es nun doch schon seit vielen Jahren ... IMA und EVM sind doch auch schon im Kernel ?
Dazu will ich eigentlich nichts sagen, nur soviel: Wenn Unternehmen nicht für den Kunden, sondern aus Eigeninteresse etwas entwickeln, passiert folgendes: Die, die es unbedingt benötigen versuchen andere Lösungen zu finden und die, die es gebrauchen könnten, lassen es ganz sein, weil es den Aufwand nicht wert ist UND alle LINUX-User die man aussperren wollte, haben viele Jahre Verzug und nutzen heute noch eine Krücke namens Festplattenvollverschlüsselung.
Verschlüsselung von /home
Ja ... ähm ... eigentlich wollte ich Dir hier eine schöne, neue und aktuelle Lösung präsentieren, die aktiv weiterentwickelt wird und bei Android schon im Einsatz ist: Fscrypt. Leider warte ich schon seit Monaten darauf dass Gentoo ...
Hier der Link zur Konkurrenz:
https://wiki.archlinux.org/index.php/Fscrypt
Sieh auch hier:
https://github.com/google/fscrypt
Es gibt bereits diverse (tlw. uralte) Lösungen, die aber leider alle nicht sehr empfehlenswert sind. eCryptfs wird auch nicht mehr aktiv weiter entwickelt und kann ich deshalb nicht mehr empfehlen. Weißt Du was, warten wir einfach noch ein paar Tage ...
... und dann wird das hier von mir ergänzt sobald wir das ordentlich emergen können, statt zu basteln.
Edit 2021-03-03: Hier wird auch über Fscrypt gesprochen: viewtopic-t-1129287-highlight-.html
Edit 2021-06-30: Ich wurde erhört !
.
