Architektur¶
Überblick über Bausteine, Datenflüsse und Vertrauensgrenzen. Formate und Protokolle im Detail:
SPEC.md (Boxcryptor), docs/cryptomator-format.md, docs/cryptomator-hub.md. Sicherheitsmodell:
docs/security.md.
Bausteine¶
flowchart LR
subgraph Desktop["Rechner der Nutzerin"]
GUI["krywerk<br/>Desktop-App (Tauri)"]
MNT["krywerk-mount<br/>Laufwerk (CLI)"]
HCLI["krywerk-hub<br/>Team-Ordner (CLI)"]
REC["krywerk-recover<br/>Boxcryptor-Dateien (CLI)"]
subgraph Libs["Bibliotheken"]
BCM["kw-mount<br/>WinFsp · FUSE-T · libfuse"]
VAULT["kw-vault<br/>Klartextsicht, Umstellung"]
CMF["kw-format<br/>Cryptomator-Format 8"]
BCC["kw-legacy<br/>Boxcryptor-Format"]
HUB["kw-hub-client<br/>Hub-Client"]
JOSE["kw-jose<br/>JWE/JWS P-384"]
end
end
subgraph Server["Organisation"]
KS["krywerk-server<br/>Schlüsselserver + Web-Verwaltung"]
DB[("SQLite")]
IDP["Anmeldedienst (OIDC)<br/>Keycloak / Entra ID"]
end
CLOUD[("Sync-Ordner<br/>OneDrive · Nextcloud · NAS …")]
GUI --> BCM & HUB
MNT --> BCM & HUB
HCLI --> HUB
REC --> BCC
BCM --> VAULT --> CMF & BCC
HUB --> JOSE
HUB -- HTTPS --> KS
GUI -. Browser-Anmeldung .-> IDP
KS --> DB
KS -- JWKS --> IDP
VAULT -- "nur Chiffrat" --> CLOUD
| Crate | Art | Aufgabe |
|---|---|---|
kw-legacy |
Bibliothek | Boxcryptor-Format (Clean Room): Schlüsseldatei, Dateiinhalt, Dateinamen |
kw-vault |
Bibliothek | Klartextsicht über Boxcryptor-Ordner und Cryptomator-Tresore, Overlay für die Umstellung |
kw-format |
Bibliothek | Cryptomator-Tresorformat 8 (Masterkey, Inhalt, Namen) |
kw-jose |
Bibliothek | JWE (ECDH-ES, PBES2) und JWS (ES384) auf P-384 für Team-Ordner |
kw-hub-client |
Bibliothek | Client für das Hub-Protokoll: Anmeldung (OIDC + PKCE), Geräte, Tresorschlüssel, Verwaltung, Notfallzugriff |
kw-mount |
Bibliothek + krywerk-mount |
Laufwerksadapter: WinFsp (Windows), FUSE-T (macOS), libfuse 3 (Linux) über eine gemeinsame C-Brücke |
kw-app |
krywerk |
Desktop-App: Laufwerke, Team-Ordner, Umstellung, Infobereich, Kontextmenü |
kw-hub |
krywerk-hub |
Team-Ordner per Kommandozeile verwalten |
kw-recover |
krywerk-recover |
Boxcryptor-Dateien ohne Laufwerk ent-/verschlüsseln |
kw-server |
krywerk-server |
Hub-kompatibler Schlüsselserver (axum, SQLite), Web-Verwaltung, Notfallzugriff, Protokoll |
Laufwerk: kein eigener Kernel-Treiber¶
Krywerk implementiert ein Dateisystem im Benutzermodus. Den Treiber liefert jeweils ein gepflegtes, signiertes Framework: WinFsp unter Windows, FUSE-T (ohne Kernel-Erweiterung) unter macOS, libfuse 3 unter Linux. Jede Leseoperation entschlüsselt nur die betroffenen Blöcke; geschrieben wird blockweise mit neuer Zufalls-Nonce.
sequenceDiagram
participant App as Programm (Word, Finder …)
participant FS as WinFsp / FUSE
participant M as kw-mount
participant V as kw-vault / kw-format
participant D as Sync-Ordner (Chiffrat)
App->>FS: read("Bericht.docx", 0..64 KiB)
FS->>M: read(Pfad, Offset, Länge)
M->>V: Klartextpfad → verschlüsselter Pfad
V->>D: Chiffrat-Blöcke lesen
V-->>M: Blöcke mit AES-GCM prüfen und entschlüsseln
M-->>FS: Klartext
FS-->>App: Daten
Team-Ordner: Schlüssel ohne gemeinsames Passwort¶
Der Tresorschlüssel eines Team-Ordners liegt auf dem Server nur verschlüsselt – einzeln für jede Person (ECDH P-384, JWE). Die privaten Schlüssel einer Person liegen auf dem Server verschlüsselt mit ihrem Freischaltcode und auf jedem ihrer Geräte verschlüsselt mit dem Geräteschlüssel, der das Gerät nie verlässt (Windows DPAPI, macOS-Schlüsselbund, Linux Secret Service).
sequenceDiagram
participant U as Krywerk-App
participant I as Anmeldedienst (OIDC)
participant S as Krywerk Server
U->>I: Anmeldung im Browser (PKCE)
I-->>U: Access Token
U->>S: GET /api/vaults/{id}/access-token (Token, Geräte-ID)
S->>S: Zugriff prüfen (Person, Gruppe, Rolle)
S-->>U: Tresorschlüssel, verschlüsselt für diese Person
U->>U: mit Geräteschlüssel → Personenschlüssel → Tresorschlüssel entschlüsseln
U->>U: Laufwerk einhängen
Vertrauensgrenzen:
- Server: sieht Namen, E-Mail-Adressen, Gruppen, Freigaben und verschlüsselte Schlüssel – nie Dateien, Dateinamen oder entschlüsselte Schlüssel.
- Speicherort (Cloud, NAS): sieht nur Chiffrat, verschlüsselte Namen, Anzahl und ungefähre Größe der Dateien.
- Anmeldedienst: bestätigt, wer sich anmeldet; erhält keine Schlüssel.
Umstellung von Boxcryptor¶
Während der Umstellung zeigt ein Overlay (kw-vault::overlay) den alten Boxcryptor-Ordner und den
neuen Tresor als ein Laufwerk. Neue und geänderte Dateien landen im Tresor; der Rest wird auf
Knopfdruck oder ordnerweise übertragen. Danach wird der Boxcryptor-Ordner nicht mehr gebraucht.
Plattformen¶
| Windows | macOS | Linux | |
|---|---|---|---|
| Laufwerk | WinFsp | FUSE-T | libfuse 3 |
| Passwörter, Geräteschlüssel | DPAPI | Schlüsselbund | Secret Service (KWallet, GNOME) |
| Kontextmenü | Explorer | Finder-Schnellaktionen | Dolphin, Nautilus |
| Fensterinhalt | WebView2 | WKWebView | WebKitGTK |