
AES-256-GCM-Feldverschlüsselung, LUKS-Volume, TLS 1.3.
Vier Verschlüsselungs-Schichten: LUKS-Volume-Verschlüsselung des Hetzner Cloud Datenträgers, AES-256-GCM auf Feldebene für Bankdaten (IBAN, BIC, Bankname), TLS 1.3 für alle Verbindungen, Master-Key in Server-Env-Variable, off-host gesichert.
Auf einen Blick
Immorium verschlüsselt Daten auf vier Ebenen: (1) LUKS-Volume-Verschlüsselung des Hetzner Cloud Datenträgers (AES-256), schützt vor physischem Zugriff. (2) Feld-Verschlüsselung der Bankdaten (IBAN, BIC, Bankname) zusätzlich mit AES-256-GCM in lib/crypto/field.ts; das versionierte Chiffrat-Format ist „encv1:” + base64(iv||tag||ct). (3) TLS 1.3 für alle Verbindungen mit Forward Secrecy. (4) Master-Key in der Server-Env-Variable FIELD_ENCRYPTION_KEY (base64, 32 Bytes), außerhalb des Repos, off-host gesichert. Bei Verlust des Keys werden die verschlüsselten Felder kryptographisch wertlos. Standards: BSI TR-02102-1, NIST SP 800-38D, OWASP-Best-Practices.
AES-256-GCM
Feldverschlüsselung für IBAN, BIC, Bankname
TLS 1.3
Verschlüsselung aller Verbindungen
LUKS
Vollverschlüsselung des Hetzner Cloud Volume
Env-Var
Master-Key in Server-Env, off-host gesichert
Vier Verschlüsselungs-Ebenen
Vom Festplatten-Schutz bis zum Passwort.
Volume-Verschlüsselung mit LUKS
Das gesamte Datenbank-Volume (Hetzner Cloud Volume) ist mit LUKS und AES-256 vollverschlüsselt. Wer physischen Zugriff auf die Festplatten hätte, sieht nur Chiffrat. Diese Schicht schützt vor Diebstahl von Hardware oder unbefugtem Rechenzentrum-Zugriff.
Feld-Verschlüsselung für Bankdaten
Bankdaten (IBAN, BIC, Bankname) werden vor dem Speichern in der Datenbank zusätzlich mit AES-256-GCM auf Feldebene verschlüsselt (lib/crypto/field.ts). Selbst wer Lesezugriff auf die SQLite-Datei hätte, sieht hier ein versioniertes Chiffrat (Format: "encv1:" + base64(iv||tag||ct)) statt der Klartext-IBAN.
Transport-Verschlüsselung (TLS 1.3)
Alle Verbindungen zwischen Browser und Server sind mit TLS 1.3 verschlüsselt. Schwächere TLS-Versionen sind am Edge deaktiviert. Forward Secrecy ist Pflicht: selbst bei späterer Kompromittierung des Server-Schlüssels können vergangene Sessions nicht entschlüsselt werden.
Schlüssel-Verwaltung
Der AES-256-GCM Master-Key liegt in der Server-Env-Variable FIELD_ENCRYPTION_KEY (base64-encodiert, 32 Bytes), außerhalb des Anwendungs-Repos. Eine Off-Host-Sicherung (Password Manager) ist Bestandteil des Betriebs. Bei Verlust des Keys werden die verschlüsselten Bankdaten-Felder kryptographisch wertlos.
Geschützte Felder
Drei Felder mit AES-256-GCM-Verschlüsselung.
| Feld | Warum geschützt |
|---|---|
| IBAN (Vermieter) | Bankzugang, Identifikator für Mieter-Auszahlungen |
| BIC (Vermieter) | Komplement zur IBAN für SEPA-Überweisungen |
| Bankname (Vermieter) | Indirekt: kann Rückschluss auf die Bank zulassen |
Standards & Vorschriften
Fünf Standards, denen Immorium folgt.
DSGVO Art. 32
Technische und organisatorische Maßnahmen. Verschlüsselung als zentrale Schutzmaßnahme
DSGVO Art. 5 Abs. 1 f
Integrität und Vertraulichkeit personenbezogener Daten
BSI TR-02102-1
Bundesamt für Sicherheit in der Informationstechnik. Kryptographie-Empfehlungen
OWASP Top 10
Implementierung folgt OWASP-Best-Practices (Prepared Statements, Input-Validation, minimale DB-Rechte)
NIST SP 800-38D
Galois/Counter Mode (GCM) für AES, anerkannter Standard
FAQ
Häufige Fragen zur Verschlüsselung.
Welche Daten sind verschlüsselt?
Drei Ebenen: (1) Volume-Verschlüsselung: Das gesamte Datenbank-Volume (Hetzner Cloud Volume) ist mit LUKS und AES-256 verschlüsselt und schützt vor physischem Zugriff. (2) Feld-Verschlüsselung: Bankdaten (IBAN, BIC, Bankname) werden vor dem Schreiben in die SQLite-Datenbank zusätzlich mit AES-256-GCM auf Feldebene verschlüsselt (lib/crypto/field.ts). (3) Transport: alle Verbindungen mit TLS 1.3, nur Cipher Suites mit Forward Secrecy.
Was ist AES-256-GCM?
AES-256-GCM ist ein anerkannter Verschlüsselungs-Standard nach NIST SP 800-38D. AES (Advanced Encryption Standard) mit 256-Bit-Schlüssellänge ist die stärkste Variante; GCM (Galois/Counter Mode) ist ein moderner Modus, der gleichzeitig verschlüsselt und Integrität sichert (kein nachträgliches Manipulieren des Chiffrats möglich). Wird vom BSI (TR-02102-1) explizit empfohlen.
Wo liegt der Verschlüsselungs-Schlüssel?
Der AES-256-GCM Master-Key liegt in der Server-Env-Variable FIELD_ENCRYPTION_KEY (base64-encodiert, 32 Bytes), außerhalb des Anwendungs-Repos. Eine Off-Host-Sicherung in einem Password Manager ist Bestandteil des Betriebs. Bei Verlust des Keys werden die verschlüsselten Bankdaten-Felder kryptographisch wertlos.
Wie werden Login-Sessions gehandhabt?
Authentifizierung läuft über Better-Auth mit httpOnly+Secure+SameSite-Lax-Cookies, 30 Tage Sitzungsdauer. Login per Google OAuth oder optional als anonyme Demo-Session. Magic-Link-Tokens für das Mieterportal werden nur gehasht in der Datenbank gespeichert; der Klartext-Token existiert ausschließlich in der E-Mail und in der angeklickten URL.
Was passiert bei Datenleck?
Drei Szenarien: (1) Datenträger-Diebstahl: LUKS-Volume-Verschlüsselung schützt. Festplatten-Inhalt ist Chiffrat. (2) Lesezugriff auf die SQLite-Datei: Bankdaten weiterhin durch die zusätzliche AES-256-GCM-Feldverschlüsselung geschützt, solange der Master-Key separat gesichert ist. (3) Kompromittierter App-Server mit Zugriff auf die Env-Variable: dann sind auch die Bankdaten-Felder lesbar. Im Notfall greift der Incident-Response-Plan (docs/breach-runbook.md) mit 72-Stunden-Meldepflicht nach Art. 33 DSGVO.
Wie funktioniert die TLS-Verschlüsselung?
Alle Verbindungen zwischen Browser und Server laufen über TLS 1.3 (RFC 8446, 2018), den modernsten TLS-Standard. Forward Secrecy ist Pflicht (DHE/ECDHE Key Exchange): selbst bei späterer Kompromittierung des Server-Schlüssels können vergangene Sessions nicht entschlüsselt werden.
Was ist mit der KI-Verarbeitung?
OCR-Texte werden vor Übergabe an Google Gemini lokal pseudonymisiert (siehe /sicherheit/anonymisierung-ki). Die pseudonymisierte Anfrage wird mit TLS 1.3 an Google Gemini (Google Ireland Ltd., EU-Verarbeitung) übertragen. Das Token-Mapping zur Re-Identifikation bleibt nur im Speicher der Server-Anfrage und wird danach verworfen.
Wie sind Backups geschützt?
Nightly Snapshot der SQLite-Datenbank, gespiegelt in einen separaten GCS-Bucket. Da der Snapshot die feldverschlüsselten Bankdaten unverändert mitsichert, sind diese im Snapshot ebenfalls AES-256-GCM-verschlüsselt. Server-seitige Verschlüsselung auf Google-Cloud-Ebene schützt den Bucket zusätzlich. Backup-Aufbewahrung typisch 30 Tage rollend.
Was ist Forward Secrecy?
Eine Eigenschaft moderner Verschlüsselungs-Protokolle (TLS 1.3 standardmäßig): Selbst wenn der Server-Schlüssel später kompromittiert wird, können vergangene Sessions nicht entschlüsselt werden, weil für jede Session ein temporärer Schlüssel über Diffie-Hellman-Schlüsselaustausch generiert wird. Schutz gegen rückwirkende Decryption-Angriffe.
Wie oft wird der Schlüssel rotiert?
Eine planmäßige Rotation des FIELD_ENCRYPTION_KEY ist über die Re-Encryption-Migration (scripts/encrypt-iban.ts) möglich: bei Rotation werden alle Chiffrate mit dem neuen Schlüssel neu verschlüsselt, der alte Schlüssel wird vernichtet. Bei Sicherheitsvorfall: außerplanmäßige Rotation mit anschließender Re-Encryption. Session-Schlüssel für TLS 1.3 sind pro Verbindung neu (Forward Secrecy).
Was, wenn ich End-to-End-Verschlüsselung will?
Aktuell setzt Immorium auf serverseitige Verschlüsselung: Sie können Ihre Daten weiterhin lesen, ohne einen separaten Client-Schlüssel zu verwalten. Echte End-to-End-Verschlüsselung (Daten sind auch für Immorium nicht lesbar) würde Funktionen wie Volltextsuche, OCR-Extraktion und KI-Bildbearbeitung unmöglich machen, da der Server die Klartextinhalte verarbeiten muss. Bei besonders hohen Sicherheitsanforderungen sprechen Sie uns über datenschutz@immorium.ch an.
Wie wird gegen SQL-Injection geschützt?
Drei Schichten: (1) Prepared Statements überall, keine String-Konkatenation von Eingaben in SQL. (2) Input-Validation auf den API-Routen. (3) Per-Route Ownership-Checks (lib/api/with-auth.ts) filtern alle DB-Zugriffe nach userId, sodass selbst bei Bypass der Validation kein Cross-Tenant-Zugriff möglich ist. Implementierung folgt OWASP-Best-Practices.
Immorium-Hausverwaltung im Überblick · Verknüpft mit: Datenschutz nach DSGVO. Stand Mai 2026.
