WatchVault
Verschlüsselter Tresor auf einer Smartwatch.
Die Uhr fungiert als versiegelter Träger für sensible Dokumente, während die gesamte Kryptographie und der Klartext ausschließlich auf dem PC verarbeitet werden. Das Pairing zwischen beiden Geräten erfolgt über einen 6-stelligen Code und ist die Grundlage für den Datentransport. Die Software ist vollständig getestet und auf der Amazfit T-Rex 3 verifiziert (Release 0.20.3).
Privates Projekt, kein Store-Release — Sideload über den Zepp App Developer Mode.
- Stack
- Python-3-PC-Tool (age-Verschlüsselung, scrypt-KDF, lokaler HTTP-Server, pipx-CLI) · Zepp-OS-Mini-Programm (API-Level 4.0, @zeppos/zml, PIN-UI, Sandbox-Speicher) · JS-Side-Service als Brücke zwischen HTTP und BLE-Dateiübertragung
- Zeitrahmen
- 14-phasiger Entwicklungsprozess, 26.05.2026 → 22.09.2026, verifiziert auf der Amazfit T-Rex 3.
- Rolle
- Solo-Build — Konzept bis Deployment.
- Umfang
- Uhr: 6.829 Zeilen JavaScript, 206 Tests · PC: 2.453 Zeilen Python, 189 Testfunktionen (Stand 22.09.2026).
Asymmetrisches Sicherheitsmodell und Rollenteilung
Die Uhr fungiert als „dummer“ verschlüsselter Träger für einen PIN-gesperrten Dateitresor mit sensiblen Dokumenten. Der PC bildet als einzige Komponente den Ort für Schlüsselmaterial und Klartext. Die Verschlüsselung erfolgt über das age-Format mit scrypt-Ableitung, sodass bei einer Kompromittierung der Uhr lediglich Ciphertext vorliegt.
Transportkette über mehrere Stationen
Der Datentransport erfolgt über eine Kette von PC, Zepp-App-Side-Service auf dem Telefon, BLE und schließlich der Uhr. Die Steuerung umfasst die Verben STATUS, LIST, PAIR und DELETE getrennt vom gestreamten Binärpfad via ZML-Transfer. Beidseitige Timeouts von 120 Sekunden stellen sicher, dass Abbrüche sauber gemeldet werden.
UI-Entwicklung für das runde Display
Natives Betriebssystem-Scrolling mit Inertia ersetzt das herkömmliche seitenweise Blättern. Der Verzicht auf das Widget SCROLL_LIST verhindert Fehler wie Blanking oder das Verbleiben von Restinhalten der vorherigen Seite. Zeilen und Kopfzeilen werden entlang der Kreissehne eingerückt, damit am runden Rand nichts abgeschnitten wird. Touch-Ziele sind durchgängig auf mindestens 44 Pixel groß fixiert.
Code, Tests und Härtungsphase
Der Watch-Code umfasst 6.829 Zeilen JavaScript und der PC-Code 2.453 Zeilen Python. Die Testsuiten bestehen aus 206 Tests für die Uhr und 189 Testfunktionen für den PC. Ein TOCTOU-Fehler bei gleichzeitigen Uploads derselben Blob-ID wurde in einer Härtungsphase korrigiert. Ein Widget-Leck bei der Listendarstellung wurde ebenfalls identifiziert und behoben.
Absicherung auf der PC-Seite
Gleichzeitige Uploads derselben Blob-ID werden atomar über os.link aufgelöst, wobei der zweite Versuch ein HTTP 409 erhält. Abgerissene Uploads werden verworfen und nicht committet. Die Verzeichnisrechte werden auf 0700 erzwungen.
Reifegrad und Hardware-Verifikation
Die Distribution erfolgt ausschließlich per Sideload über den Zepp App Developer Mode ohne Store-Release. Die Software ist vollständig und getestet sowie auf der Amazfit T-Rex 3 verifiziert (Release 0.20.3). Diese Verifizierung bestätigt den Sideload und den Gerätelauf.
Kontakt
Interesse an einem Walkthrough?
Der Quellcode ist privat — Architektur und Code gehe ich aber gern in einem Gespräch mit Ihnen durch, NDA-freundlich.
Kontakt