Zum Inhalt

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