EnrollmentCAP-1
Erzeugt den Account Key rein per CSPRNG und koppelt sofort dieses Gerät.
Verschlüsselte NotizenCAP-4
Jede Notiz bekommt einen eigenen, per HKDF aus dem Account Key abgeleiteten Item-Key (info=item:<id>) und einen eigenen Salt. Serverseitig landet ausschließlich AES-256-GCM-Ciphertext.
Angriffs-LaborIntegritätsschutz
Simuliert einen manipulierten oder kompromittierten Server, der den Ciphertext einer Notiz unter dem Datensatz einer anderen ablegt (Item-Swapping). Weil der Item-Key per HKDF an die jeweilige Item-ID gebunden ist, schlägt die AEAD-Tag-Prüfung beim Entschlüsseln erkennbar fehl — die Manipulation wird nicht still‑schweigend akzeptiert.
Public-Key-Substitution Verified Key Directory · P1
Simuliert einen Server, der im Verzeichnis den Public Key eines fremden Kontos gegen einen Angreifer-Key austauscht (AD-10-Restrisiko). Jeder Directory-Eintrag ist von einer simulierten "Directory Authority" signiert (RSASSA-PKCS1-v1_5) — die alte Signatur passt nicht mehr zum neuen Key, die Verifikation schlägt fehl, und Gruppen-/Freigabe-Aktionen gegen dieses Konto werden blockiert.
Gruppen-SharingCAP-6
Ein Group Key wird pro Mitglied genau einmal mit dessen persönlichem Sharing-Public-Key gewrappt. Ein neues Mitglied bekommt nur eine weitere Wrap-Kopie — bestehende Items müssen nicht neu verschlüsselt werden. Zum Testen: mit einem zweiten Konto (z. B. in einem Inkognito-Fenster) enrollen und per Konto-Namen hinzufügen.
Befristete FreigabeCAP-7
Ein eigener, einmaliger Share-Key statt des dauerhaften Item-/Group-Keys. Nach Ablauf von expiresAt wird der Inhalt clientseitig nicht mehr angezeigt — ohne den Empfänger-Key zu rotieren.
Vertrauenswürdige GeräteCAP-3
Widerruf löscht nur die gewrappte Zeile — ohne Rotation des Account Key. Verwalten erfordert eine entsperrte Sitzung.
Server-SichtZero Knowledge
Genau das, was data/state.json tatsächlich enthält: Public Keys und opake Ciphertexte, niemals der Account Key oder ein privater Schlüssel.
| Gerät | Public-Key-Fingerprint | Gewrappter Account Key | Status |
|---|
Notizen: Titel liegt bewusst im Klartext (Metadaten-Leck, siehe Diskussion), nur der Inhalt ist per AES-256-GCM verschlüsselt.
| Titel (Klartext) | Ciphertext |
|---|
Gruppen (kontoübergreifend, data/groups.json): pro Mitglied nur eine gewrappte Group-Key-Kopie, nie der Group Key selbst.
| Gruppe | Mitglieder | Gewrappte Keys | Items |
|---|
Befristete Freigaben: eigener Share-Key pro Freigabe, nur für den Empfänger gewrappt.
| Titel | Von → An | Ablauf | Ciphertext |
|---|