Backup und Recovery¶
Die Verwaltung bietet ueber das Shared-Package fegh_backup verschluesselte Voll-Backups aller Nutzdaten. Gleiche Bausteine nutzen Doku-App und Verwaltung.
Funktionsweise im Detail¶
Das Problem, das wir loesen¶
Eine Einrichtung kann ohne ihre Daten nicht arbeiten. Verlust passiert typisch durch:
- Geraeteschaden / -verlust: Tablet faellt, Laptop geklaut
- Software-Fehler: App crasht, Datenbank-File wird korrupt
- Bedienfehler: "Einstellungen zuruecksetzen" zu breit interpretiert
- Malware: Ransomware verschluesselt die Dateien vor Ort
- Cloud-Ausfall: der Cloud-Provider hat einen seltenen Totalausfall
Ohne regelmaessiges Backup heisst das: Monate an Dokumentation weg, Rechnungsstellung blockiert, Klientenakte rekonstruierbar. Mit Backup heisst es: max. 24 Stunden Rueckstand (Backup-Zyklus), Wiederherstellung in ~15 Minuten.
Konkretes Szenario: Der Tag, an dem der Verwaltungs-PC stirbt¶
Donnerstag 09:00 — Anjas Verwaltungs-PC faehrt nicht mehr hoch. Festplatte hat einen Schaden, Daten sind lokal verloren.
Kein Grund zur Panik: Das Backup lief zuletzt am Mittwoch 03:00 Uhr automatisch — also 30 Stunden alt. Alle Daten bis Mittwoch Abend sind gesichert.
09:30 — Anja hat neuen Ersatz-PC.
- Verwaltungs-App frisch installieren.
- Beim Start: Setup-Wizard → "Backup wiederherstellen" waehlen.
- Cloud-Credentials eingeben (die liegen im Tresor bei den Recovery-Codes).
- System findet unter
/backup/mehrere Voll-Backups, neuestes von Mittwoch Nacht wird ausgewaehlt. - Anja gibt ihre Sync-Passphrase ein → Backup wird entschluesselt.
SharedPreferenceswerden wiederhergestellt: Klienten, Teams, Rechnungen, Medikationsplaene, Kassenbuch — alles zurueck.
10:15 — Einsatzfaehig. Anja hat 75 Minuten Ausfall und 30 Stunden an Daten verloren. Fuer die 30 Stunden muss sie:
- Donnerstag-Vormittag-Termine aus dem Tablet der Mitarbeiterin (Mia hat dort bereits offline dokumentiert) uebernehmen — geht ueber Cloud-Sync automatisch.
- Eine Bar-Zahlung vom Donnerstag 08:00 manuell nachbuchen.
11:00 — Everything back to normal.
Backup + Restore als Sequenzdiagramm¶
sequenceDiagram
autonumber
participant Scheduler as 24h-Scheduler
participant App as Verwaltungs-App
participant SP as SharedPreferences
participant Codec as BackupCodec
participant Cloud as Cloud-Speicher
Note over Scheduler,Cloud: TAEGLICHER BACKUP-LAUF (03:00)
Scheduler->>App: trigger backup
App->>SP: lese alle _v1 Keys
SP-->>App: JSON-Map
App->>Codec: encode(JSON, Sync-Passphrase)
Codec->>Codec: AES-256-GCM + Checksum
Codec-->>App: Envelope-Bytes
App->>Cloud: PUT /backup/2026-04-20T03-00-00.fegh.bak
App->>App: Audit: backup.created
Note over Scheduler,Cloud: RESTORE NACH PC-CRASH
App->>Cloud: GET /backup/neustes.fegh.bak
Cloud-->>App: Envelope-Bytes
App->>Codec: decode(bytes, Sync-Passphrase)
Codec->>Codec: Checksum pruefen
Codec->>Codec: AES-256-GCM entschluesseln
Codec-->>App: JSON-Map
App->>SP: alle _v1 Keys zurueckschreiben
App-->>App: Restore erfolgreich
Was konkret im Backup ist¶
Ein Backup ist eine verschluesselte Datei (typisch 500 KB - 5 MB je nach Einrichtungsgroesse), die folgende SharedPreferences-Keys enthaelt:
clients_v1(alle Klient-Records)teams_v1(Team-Struktur + Mitgliedschaften)employees_v1(Mitarbeiter-Daten)shifts_v1(Dienstplan)shift_swap_requests_v1(Tausch-Anfragen)medications_v1+medication_administrations_v1btm_entries_v1+btm_destructions_v1kassenbuch_eintraege_v1+kassenbuch_monatsabschluesse_v1wohnraum_v1rechnungen_v1+rechnung_empfaenger_v1settings_v1audit.log(aktuelles Log)
Nicht im Backup: - Keys (MEK, DEK, Team-Keys) — die sind geraetegebunden und separat per Recovery-Code wiederherstellbar. - Transiente Cache-Dateien. - Lokale Einstellungen des einzelnen Geraets (Theme, Layout).
Das Backup-Envelope-Format¶
fegh_backup schreibt ein self-contained, AES-256-GCM
verschluesseltes Envelope:
BEGIN FEGH BACKUP v1
version: 1
created: 2026-04-20T03:00:00Z
appVersion: 0.3.0-beta.1
orgId: assistenz-ggmbh
records: 12
checksum: SHA-256:<hex>
--- encrypted payload ---
<AES-256-GCM ciphertext>
--- end encrypted payload ---
END FEGH BACKUP v1
Entschluesselung braucht zwei Dinge:
- Die Sync-Passphrase (aus Settings, PBKDF2-abgeleitet)
- Die Checksum muss uebereinstimmen (gegen bit-rot oder Truncation)
Der RecoveryService validiert beides und fuehrt den Restore
atomar durch: entweder alles oder nichts.
Rhythmus und Retention¶
- Standard: 1x taeglich 03:00 Uhr, Ablage in Cloud
backup/ - Retention: 30 Tage rolliert, danach wird das aelteste Backup geloescht
- Manuell: jederzeit ueber
Admin-Console → Backup → Jetzt sichernausloesbar
Fuer Einrichtungen mit sehr hohem Schutzbedarf: Zusaetzliches Offline-Backup auf verschluesseltem USB-Stick (manuell, 1x pro Monat) sorgt fuer Immunitaet gegen Ransomware-Angriffe, die auch die Cloud erreichen.
Rechtlicher Hintergrund¶
- Art. 32 Abs. 1 lit. b DSGVO — "Faehigkeit, die Vertraulichkeit, Integritaet, Verfuegbarkeit und Belastbarkeit der Systeme und Dienste im Zusammenhang mit der Verarbeitung auf Dauer sicherzustellen". Backup = Verfuegbarkeit.
- Art. 32 Abs. 1 lit. c DSGVO — "Faehigkeit, die Verfuegbarkeit der personenbezogenen Daten und den Zugang zu ihnen bei einem physischen oder technischen Zwischenfall rasch wiederherzustellen". Wiederherstellungszeit = Teil des Notfallkonzepts.
- BSI IT-Grundschutz CON.3 — Datensicherungskonzept. Die Retention + Offline-Option erfuellt die Anforderungen fuer mittleren Schutzbedarf.
- HGB §257 — Rechnungsdaten 10 Jahre aufbewahren; das Cloud-Backup plus ein jaehrliches Archiv-Backup deckt das ab.
Was wird gesichert?¶
Das Backup umfasst die wichtigen SharedPreferences-Keys:
- Mitarbeiter, Teams, Klienten
- Schichten, Urlaub, Zeitnachweise
- Rechnungen und Empfaenger
- Medikationsplaene und -quittungen
- Wohnraum und Kassenbuch-Eintraege
- Benachrichtigungen und Settings
Nicht enthalten: Cloud-Zugangsdaten (Cloud-Benutzer und -Passwort) und Master-Encryption-Key (MEK). Diese sind geraetegebunden — nach einer Wiederherstellung muessen sie neu hinterlegt werden.
Dateiformat¶
Ein Backup ist eine einzelne .ehbackup-Datei mit folgendem Byte-Layout:
[ 1 Byte Version (0x01) ]
[ 16 Byte Salt ]
[ 12 Byte Nonce ]
[ 16 Byte GCM-MAC ]
[ n Bytes Ciphertext ]
Der Ciphertext ist ein JSON-Envelope mit:
- Metadaten: Backup-ID, Erstellzeit, Geraet, App-Version, Daten-Version
- Payload: Eine Map
<Key, JSON-String>aller gesicherten SharedPreferences-Keys
Kryptographie¶
- AES-256-GCM (authentifizierte Verschluesselung)
- PBKDF2 mit HMAC-SHA-256 und 100 000 Runden fuer den Key aus dem Passwort
- Zufaelliges Salt pro Backup — gleiches Passwort erzeugt nie dasselbe Output
Ein GCM-Tag am Anfang verhindert nachtraeglich modifizierte Dateien — Manipulation fuehrt zu einem kontrollierten Entschluesselungsfehler.
Bedienung¶
Einstellungen → Backup & Wiederherstellung → Backup-Manager oeffnen zeigt drei Sektionen:
- Backup erstellen — Passwort vergeben (doppelt eingegeben), sofortige Erzeugung in
ApplicationSupportDirectory/backups/. - Backup wiederherstellen — Datei auswaehlen, Passwort eingeben, Warn-Dialog bestaetigen. Bestehende Daten werden ueberschrieben.
- Liste vorhandener Backups — mit Dateigroesse, Erstelldatum, Restore- und Delete-Action pro Eintrag.
Recovery-Phrase (Admin-MEK)¶
Unabhaengig vom Backup bietet fegh_backup die 12-Wort Recovery-Phrase fuer Administratoren — ein zweiter Weg, den Master-Encryption-Key wiederherzustellen, falls die Sync-Passphrase verloren geht:
- 12 Woerter aus einer deutschen 128-Wort-Liste (nicht BIP39)
- MEK wird mit der Phrase verschluesselt und optional auf der Cloud abgelegt
- PBKDF2 mit 50 000 HMAC-SHA-256-Runden fuer die Key-Ableitung
Die Phrase wird einmal angezeigt, sollte physisch notiert und an einem sicheren Ort aufbewahrt werden (Tresor, Wertschließfach).
Was tun bei Verlust?¶
| Verlust | Ausweg |
|---|---|
| Cloud-Passwort | Neu vergeben im Cloud-Portal, in der App anpassen |
| Sync-Passphrase | Recovery-Phrase nutzen, MEK wiederherstellen |
| Recovery-Phrase | Keine Datenwiederherstellung moeglich — Daten verloren |
| Backup-Passwort | Kein Zugriff auf die konkrete Backup-Datei |
Die drei Geheimnisse (Cloud-Passwort, Sync-Passphrase, Recovery-Phrase) sollten getrennt und redundant aufbewahrt werden — mindestens eine Instanz jeweils offline.
Geplant (nicht im MVP)¶
- Automatisches taegliches Backup in die Cloud
- Recovery-Code fuer einzelne Mitarbeiter (Passwort-Reset via Teamleitung)
- Incremental Backup statt Voll-Backup
Siehe auch¶
- Shared-Packages —
fegh_backupim Detail - Audit-Log — Backup-Events sind protokolliert