# Verschlüsselungs-Analyse — Datenbank & Backups > Stand: Entwurf / Diskussionsgrundlage. Betrifft die SQLite-DB mit Userdaten, > Gesprächsverläufen, Erinnerungen und Notfall-Profilen (Name, Adresse, > Geburtsdatum, **medizinische Notizen**, Telefon). Ziel: Schutz der Daten **at > rest** gegen Diebstahl von DB-Datei, Backups oder Datenträger. > > Leitsatz: **Der Cipher ist der einfache Teil — entscheidend ist das > Schlüsselmanagement und das Bedrohungsmodell.** ## 1. Bedrohungsmodell — wogegen schützt at-rest-Verschlüsselung überhaupt? | Szenario | Hilft Verschlüsselung? | |---|---| | **Gestohlenes Backup** (kopiert, geleakt, alter USB/Cloud-Ordner) | **Ja** — wahrscheinlichster & am leichtesten zu schließender Fall | | **Gestohlene/ausgemusterte Platte** (Box aus, Disk-Image) | **Ja — nur wenn der Schlüssel NICHT auf derselben Platte liegt** | | **Live-Kompromittierung** (root/App-Zugriff auf dem laufenden Server) | **Nein** — die App muss entschlüsseln können → Schlüssel im RAM | | **Hypervisor / Rechenzentrum** (RAM- & Disk-Snapshot durch Betreiber) | **Kaum** — RAM-Snapshot greift den Schlüssel ab | **Kernfalle:** Liegt der Schlüssel als Datei/`.env` auf **derselben** Platte wie die DB, bekommt ein Disk-/Backup-Dieb beides → die Verschlüsselung ist wertlos. ## 2. Ganze DB einmal verschlüsseln vs. jeden User einzeln? **Empfehlung: ganze DB (eine Verschlüsselung), NICHT pro User.** - Pro-User-Verschlüsselung bringt nur dann Mehrwert, wenn die User-Schlüssel **nicht** serverseitig verfügbar sind (aus User-Geheimnis abgeleitet, nur bei aktiver Sitzung). - Der Assistent ist aber ein **autonomer, immer-laufender Server**: er verarbeitet Userdaten **ohne** anwesenden Nutzer (Auto-Erinnerungs-Extraktion, LLM-Kontext, Safety, Admin). Er muss also jederzeit entschlüsseln können → hält/leitet alle Schlüssel ab → ein Dieb des Schlüsselmaterials bekommt **trotzdem alles**. - Authelia/SSO liefert **keinen** stabilen pro-User-Krypto-Schlüssel. Echte Client-seitige Verschlüsselung würde den LLM-Assistenten unmöglich machen. - Pro-Feld-Verschlüsselung zerstört zudem Indizes/Suche/SQL, leakt Metadaten (wer/wann/wie viel) und lässt WAL-/Temp-Dateien im Klartext. → Pro-User = **sehr hoher Aufwand, kaum Sicherheitsgewinn** in dieser Architektur (Security-Theater). Whole-DB ist richtig und ausreichend. ## 3. Methoden für Whole-DB - **(a) SQLCipher** (verschlüsseltes SQLite): App öffnet die DB mit `PRAGMA key`, verschlüsselt DB + WAL transparent. Aufwand: Dependency (`pysqlcipher3`) + `store._connect` + Einmal-Migration. App-contained. - **(b) Verschlüsseltes Volume** (LUKS-Loopback, **gocryptfs** userspace, fscrypt) fürs `data/`: **app-transparent** (kein Code), deckt DB + WAL + Temp + dort liegende Backups ab. Aufwand: OS-Setup + **Entsperren beim Boot**. - **(c) LUKS Full-Disk-Encryption** (ganze Platte): deckt zusätzlich **Logs, Swap, OS** ab; ideal gegen physischen Diebstahl (s. Heim-Szenario). **Der eigentliche Hebel — Schlüssel-Ort:** nicht auf der Datenplatte. Optionen: Passphrase **beim Service-Start** injizieren (`systemd-ask-password`), Schlüssel beim Start **extern** holen (nur im RAM halten), oder **TPM** (s. u.). Trade-off: bricht den **unbeaufsichtigten Auto-Neustart** — bei einem Always-On-Care-System ein echter Betriebsnachteil. ## 4. Aufwand vs. Sicherheit | Maßnahme | Aufwand | Sicherheitsgewinn | |---|---|---| | Backups off-host/-site + `age`/GPG | **niedrig** | **hoch** (häufigstes Leck) | | Whole-DB, Schlüssel auf gleicher Platte | mittel | **niedrig** (nur „nackte .db-Kopie") | | Whole-DB, Schlüssel off-disk / Start-Injektion | mittel–hoch (Ops) | mittel–hoch (echter Disk-Diebstahl) | | LUKS-FDE + TPM2 (Heim-PC) | mittel | **hoch** (deckt alles, löst Key-Problem) | | Pro-User-Feldverschlüsselung | **sehr hoch** | marginal hier, bricht Features | ## 5. Empfohlenes Vorgehen (vHost), nach ROI sortiert 1. **Backups verschlüsselt & off-host — sofort, größter Nutzen, kleinster Aufwand.** Jedes Backup mit `age`/GPG (Public-Key); privater Schlüssel **nur offline/Heim-Host**. Backups **weg vom Server**. 2. **Live-DB verschlüsseln** (SQLCipher oder gocryptfs/LUKS). 3. **Schlüssel vom Datenträger trennen** (Start-Injektion) — macht Stufe 2 erst wirksam. 4. **Datensparsamkeit/Retention**: alte Verläufe automatisch löschen (Tools vorhanden) — weniger Daten = weniger Schaden. ## 6. Was leicht vergessen wird - **Backups liegen aktuell NEBEN der DB** auf demselben Datenträger (inkl. der `…bak-*`-Dateien) → ein Disk-Dieb bekommt DB **und** Backups. Größte aktuelle Schwachstelle → auslagern. - **WAL/-shm/-journal & SQLite-Temp** enthalten Klartext-Fragmente → spricht für Whole-DB/Volume statt Feld-Ebene. - **Logs / journald**: Gesprächsinhalte können in App-Logs landen → Log-Level prüfen. - **Swap**: Schlüssel & Klartext können in den Swap geraten → **verschlüsselter Swap**. - **Schlüsselverlust = Datenverlust**: Für ein Care-System ist **Verfügbarkeit** teils kritischer als Vertraulichkeit → **Key-Escrow/sicheres Backup des Schlüssels**. - **Sensibelste Daten = Notfall-Profil** (DSGVO-Gesundheitsdaten) — Hauptziel; evtl. zusätzliche Feldverschlüsselung als Defense-in-Depth (nur Stufe 2). - **Realismus vHost**: Gegen bösartigen RZ-Betreiber (RAM-Snapshot) schützt at-rest mit auto-verfügbarem Schlüssel **nicht** — ehrlich kommunizieren. --- ## 7. Wenn der Server LOKAL (zuhause) läuft — wie ändert sich das Bild? Der Standortwechsel verschiebt das Bedrohungsmodell **überwiegend zugunsten der Sicherheit**: ### 7.1 Der schwierigste Gegner verschwindet Kein Rechenzentrums-Betreiber/Hypervisor mehr, der RAM **und** Disk snapshotten kann. Du kontrollierst die physische Hardware → **at-rest-Verschlüsselung liefert nahezu ihren vollen Wert.** Wichtigste Änderung. ### 7.2 Neuer Hauptgegner: physischer Diebstahl / Einbruch Vorher abstrakt, jetzt konkret: Einbruch, Mitnahme von Rechner/Platten, Reparatur-/ Besuchszugriff, Platten-Entsorgung. **LUKS-Full-Disk-Encryption** ist dagegen das natürliche, starke Mittel: gestohlener Heim-PC mit LUKS = Briefbeschwerer. ### 7.3 Schlüsselmanagement wird einfacher UND besser: TPM Ein echter Heim-PC hat meist ein **TPM 2.0** (der vHost nicht). LUKS an das TPM binden → - entsperrt **automatisch, nur auf genau dieser Maschine** (kein Key auf Platte, keine manuelle Eingabe) → **unbeaufsichtigter Neustart** funktioniert wieder; - **Platte ausbauen & woanders auslesen** scheitert; - **Trade-off:** ganze Maschine gestohlen **und eingeschaltet** → TPM entsperrt. Wer das abdecken will: **TPM + PIN** (wieder Eingabe nötig — Verfügbarkeit vs. Diebstahlschutz). → Zuhause empfohlene Primärmaßnahme: **LUKS-FDE mit TPM2-Auto-Unlock (optional +PIN)** — deckt **alles** ab (DB, WAL, Logs, Swap, Temp), OS-nativ, löst zugleich das Schlüssel-/Neustart-Problem. ### 7.4 Backups: aus „off-host" wird „off-SITE" Zweites Laufwerk im selben Raum nützt wenig — Einbruch/Brand nimmt alles mit. → **verschlüsselte Off-Site-Backups** (`age`/GPG, Schlüssel getrennt) an einen zweiten Ort. Deckt Vertraulichkeit **und** Disaster-Recovery (Totalverlust) ab. ### 7.5 Was zuhause schwieriger wird / auf dich übergeht - **Physische Sicherheit**: abschließbarer Raum, gesperrter Bildschirm, Haushalts-/Gästevertrauen. - **Verfügbarkeit**: kein redundanter Strom/Kühlung/Remote-Hands → **USV** (auch gegen DB-Korruption bei Stromausfall). - **Netzwerk-/Live-Kompromittierung kann GRÖSSER werden**: Heim-LAN heterogen (IoT, schwache Segmentierung). Ist der Server **internet-exponiert**, kann ein gekapertes Gerät seitlich angreifen. **Verschlüsselung hilft hier nicht** → Netz-Härtung: möglichst **nur per VPN/Tunnel**, Reverse-Proxy, fail2ban, minimale Ports, SSO behalten, **eigenes VLAN** weg von IoT. - **Platten-Entsorgung** wird durch FDE unkritisch. ### 7.6 Unverändert - **Whole-DB schlägt weiter Pro-User.** - **Live-Kompromittierung** bleibt der Fall, den Verschlüsselung **nicht** abdeckt — durch mögliche Heim-Internet-Exposition evtl. das **dominante** Restrisiko → Netz-Härtung mindestens so ernst nehmen wie Verschlüsselung. ## 8. Fazit - **Whole-DB-Verschlüsselung reicht**; pro User lohnt sich nicht. - **vHost:** Fokus auf (1) verschlüsselte Off-Host-Backups, (2) Live-DB (SQLCipher/Volume), (3) Schlüssel vom Datenträger trennen. - **Heim-Server (besser & einfacher):** **LUKS-FDE + TPM2 (optional +PIN)** + **verschlüsselte Off-Site-Backups** + **Netz-Härtung gegen Live-Angriffe** + **physische Sicherheit & USV**. Der TPM löst zugleich Verschlüsselung und das Schlüssel-/Neustart-Dilemma. ### Offene Entscheidung Soll der Heim-Server **internet-exponiert** oder **nur per VPN/Tunnel** erreichbar sein? Davon hängt das Gewicht des Live-Kompromittierungs-Risikos ab — der einzige große Punkt, den Verschlüsselung nicht abdeckt.