Warum "einfach das letzte Ergebnis cachen" nicht wirklich funktioniert
Die naheliegende Lösung ist, die letzte erfolgreiche Prüfung in einer lokalen Datei oder der Registry zu speichern und den Netzwerkaufruf beim nächsten Mal zu überspringen. Das löst das Offline-Problem, prüft aber nichts — es ist eine Zeichenkette auf der Festplatte, die jeder Nutzer mit einem Texteditor von false auf true umschalten kann. Sie läuft auch nicht sauber ab (eine kopierte Datei funktioniert für immer auf einer zweiten Maschine), und sie kann dir nicht sagen, wann sie tatsächlich zuletzt validiert wurde. Du hast "keine Offline-Unterstützung" gegen "Offline-Unterstützung, die eigentlich keine Prüfung ist" eingetauscht — die Datei wird vertraut, nicht verifiziert.
Warum echte Offline-Verifizierung selbst zu bauen schwieriger ist als ein Flag zu cachen
Echte Offline-Verifizierung bedeutet, dass die App beweisen können muss, dass eine Lizenz gültig ist, ohne einen Server zu fragen — nur mit Daten, die ausschließlich von diesem Server stammen können. Dafür braucht man ein Privat-/Öffentlich-Schlüsselpaar (der Server signiert, die App hält nur die öffentliche Hälfte), eine kompakte signierte Payload mit Lizenzschlüssel, Maschinen-ID und einem Ablaufdatum, das die App gegen die Uhr prüfen kann, eine Möglichkeit, Manipulation erkennbar zu machen — ein Byte umkippen, und die Signatur muss fehlschlagen — und eine Entscheidung, wie lange ein veraltetes, aber signiertes Ergebnis noch vertraut wird, bevor die App gezwungen ist, wieder online nachzufragen. Nichts davon ist exotische Kryptografie, aber es korrekt zu verdrahten — die Signatur zu prüfen, bevor man die Payload überhaupt parst, jeden Claim darin zu prüfen, ein sinnvolles Ablauffenster zu wählen — ist genau die Art von Sache, die man einmal subtil falsch machen und nie bemerken kann.
Signierte Leases: Der Server signiert, die App verifiziert nur
Genau das macht SublimeKeys' Offline-Verifizierung. Jeder activate/verify-Aufruf liefert einen Lease zurück — ein kleines, Ed25519-signiertes Token mit Lizenzschlüssel, Maschinen-ID, Produkt-ID und einem Ablaufdatum, gültig für 7 Tage. Deine App cacht ihn lokal und prüft die Signatur gegen einen öffentlichen Schlüssel, der in deinem eigenen Binary mitgeliefert wird — der private Schlüssel verlässt unseren Server nie, sodass es nichts auf der Festplatte des Nutzers gibt, das zu einem gültigen Lease umgeschrieben werden könnte. Ein manipulierter Lease scheitert sofort an der Signaturprüfung, noch bevor sein Inhalt überhaupt geparst wird. Läuft das 7-Tage-Fenster ab, geht die nächste Prüfung still online, holt sich einen frischen Lease, und der Zyklus wiederholt sich — so bleibt eine vollständig offline Maschine bis zu eine Woche lang nachweislich lizenziert, und eine widerrufene Lizenz wird beim nächsten Reconnect erkannt.
So fügst du es hinzu — 3 Schritte mit den offiziellen SDKs
Was dir das wirklich bringt
Deine App verifiziert eine Lizenz in Mikrosekunden mit null Netzwerkaufrufen an einem normalen Tag, funktioniert weiterhin korrekt während einer Woche im Flugmodus oder in einem abgeschotteten Firmennetzwerk, und erkennt trotzdem eine widerrufene oder erstattete Lizenz innerhalb von 7 Tagen nach dem Reconnect der Maschine — ohne dass du selbst eine einzige Zeile Kryptografie schreibst, ein Schlüsselverwaltungssystem hostest oder dein eigenes Token-Format erfindest, das irgendwann jemand editieren kann.
Wer das wirklich braucht
Reisende Nutzer
Berater, Außendiensttechniker, alle, deren Laptop echte Zeit offline zwischen Flügen und Kundenterminen verbringt.
Abgeschottete Firmennetzwerke
Maschinen hinter Firewalls, die ausgehende API-Aufrufe zu allem blockieren, was nicht explizit auf der Whitelist steht.
Python-Desktop-Tools
pip install sublimekeys — Offline-Verifizierung im offiziellen SDK eingebaut.
Electron-Apps
npm install sublimekeys — gleiche signierte-Lease-Verifizierung, keine nativen Abhängigkeiten.
Air-gapped / regulierte Umgebungen
Maschinen, die nie ins Internet sollen, nur gelegentlich synchronisiert werden.
About
Patrick Chen — Indie-Entwickler hinter Sublimearts.io. Hat die Offline-Verifizierung in SublimeKeys gebaut, nachdem er erkannt hat, dass jede Desktop-App, die an reisende oder Unternehmenskunden verkauft wird, irgendwann an dieselbe "kein Internet"-Wand stößt.
Did you find this helpful?