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).
WatchVault-Startbildschirm auf der Amazfit T-Rex 3 — reales Gerätefoto, Release 0.20.3.

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.

PIN-Eingabebildschirm auf der Uhr, Zugangssperre für den verschlüsselten Dateitresor.
PIN-Gate auf der Uhr — mehr bekommt ein Angreifer mit dem Gerät nicht zu sehen.

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.

Bestätigung des abgeschlossenen Syncs auf der Uhr nach der Übertragung über die Kette PC-Telefon-BLE-Uhr.
Sync auf der Uhr abgeschlossen — Ende der Kette PC → Telefon → BLE → Uhr.

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.

Blob-Übersicht im PC-Tool, die Speicherebene des behobenen TOCTOU-Fehlers.
Blob-Übersicht im PC-Tool — hier saß der inzwischen behobene TOCTOU-Fehler bei gleichzeitigen Uploads.

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