← Blog
Tutorial9. Juli 2026·7 Min. Lesezeit

Wie man eine Softwarelizenz offline verifiziert ohne einer Datei auf der Festplatte zu vertrauen.

Deine App läuft auf einem Laptop ohne WLAN — ein Flug, ein Kunde mit abgeschotteter Netzwerkumgebung, eine Maschine, die überhaupt nicht ins Internet gehen soll. Wenn deine Lizenzprüfung jedes Mal eine Server-Roundtrip braucht, versagt sie genau dann, wenn dein Nutzer sie am dringendsten braucht. So prüfst du eine Lizenz vollständig offline, ohne einfach dem zu vertrauen, was eine lokale Datei behauptet.

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

1pip install sublimekeys (Python) oder npm install sublimekeys (Node.js/Electron) — beide SDKs liefern den öffentlichen Schlüssel und die Verifizierungslogik bereits mit
2Rufe activate() einmal mit dem Schlüssel des Nutzers auf — speichert lokal einen signierten Lease, ohne zusätzlichen Code
3Rufe verify() bei jedem späteren Start auf — prüft zuerst den gecachten Lease, vollständig offline, und ruft die API erst auf, wenn das 7-Tage-Vertrauensfenster abläuft

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.

SublimeKeys kostenlos testen →1 Produkt · 25 Schlüssel · Keine Kreditkarte · keys.sublimearts.io

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?