- favicon.svg (transparentes SVG des Umschlag-Logos) + <link rel=icon>
- Logo neben dem "schattenpost"-Schriftzug im Header (Inline-SVG, Accent-Farbe)
- Service-Worker-Cache v3 -> v4, favicon.svg in die Offline-Shell
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Authentifizierung für CLI und Web:
- Poly1305 (RFC 8439) pur in Python (bigint) und JS (BigInt), keine neue Dependency
- MAC-Schluessel pro Nachricht frisch aus dem Pad (len+32), encrypt-then-MAC
ueber Header + Ciphertext; reveal lehnt manipulierte/desynchrone Bilder hart ab
- Stego-Format SPS2 -> SPS3 (16-B-Tag im Header); alte SPS2-Bilder werden noch
gelesen, aber als unauthentifiziert markiert
- Service-Worker-Cache auf v3 gebumpt
- Interop-Runner (web/_interop_run.sh): RFC-Vektor cross-impl, beide Richtungen,
Tamper-Erkennung
README fuer Public ueberarbeitet (ehrliches Bedrohungsmodell, Voraussetzungen,
Projektstruktur, Tests) + MIT-LICENSE.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Neues Schluesselmodell: pro Beziehung zwei Stroeme (send.key/recv.key),
Sende-Offset lebt im Schluessel-Header und wird beim Senden fortgeschrieben.
Loest two-time-pad bei bidirektionaler Nutzung deterministisch.
- Stream-Identifier im Bild -> falscher Schluessel wird erkannt statt
Kauderwelsch zu liefern. Rollen-Guards (send/recv) gegen Fehlbenutzung.
- CLI genkey erzeugt gerichtetes Keypaar (meine_seite/partner_seite).
- Web-App auf v2 umgestellt; Senden liefert aktualisierten send.key zum
Download (Browser-Sandbox kann nicht auf den Stick schreiben).
- PWA: manifest + service worker (offline) + icons.
- Interop CLI<->Web in beide Richtungen per Node-Test abgesichert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>