Pourquoi "juste mettre en cache le dernier résultat" ne fonctionne pas vraiment
La solution évidente est de se souvenir du dernier contrôle réussi dans un fichier local ou le registre, et de sauter l'appel réseau la prochaine fois. Ça résout le problème hors ligne, mais ça ne vérifie rien — c'est une chaîne sur le disque que n'importe quel utilisateur avec un éditeur de texte peut faire passer de false à true. Ça n'expire pas non plus proprement (un fichier copié fonctionne pour toujours sur une seconde machine), et ça ne peut pas vous dire quand ça a vraiment été validé pour la dernière fois. Vous avez échangé "pas de support hors ligne" contre "un support hors ligne qui n'est pas vraiment un contrôle" — le fichier est de confiance, pas vérifié.
Pourquoi construire soi-même une vraie vérification hors ligne est plus difficile que mettre en cache un drapeau
Une vraie vérification hors ligne signifie que l'app doit pouvoir prouver qu'une licence est valide sans demander à un serveur, en utilisant uniquement des données qui ne peuvent provenir que de ce serveur. Cela nécessite une paire de clés privée/publique (le serveur signe, l'app ne détient que la moitié publique), une charge utile signée compacte avec la clé de licence, l'ID machine et une expiration que l'app peut vérifier contre l'horloge, un moyen de rendre la falsification détectable — changez un octet et la signature doit échouer — et une décision sur combien de temps un résultat signé mais périmé reste digne de confiance avant que l'app soit forcée de recontacter le serveur. Rien de tout cela n'est de la cryptographie exotique, mais bien le câbler — vérifier la signature avant même d'analyser la charge utile, vérifier chaque revendication à l'intérieur, choisir une fenêtre d'expiration sensée — est exactement le genre de chose facile à mal faire subtilement une fois et à ne jamais s'en apercevoir.
Leases signés : le serveur signe, l'app ne fait que vérifier
C'est exactement ce que fait la vérification hors ligne de SublimeKeys. Chaque appel activate/verify renvoie un lease — un petit jeton signé Ed25519 contenant la clé de licence, l'ID machine, l'ID produit et une expiration, valable 7 jours. Votre app le met en cache localement et vérifie la signature contre une clé publique embarquée dans votre propre binaire — la clé privée ne quitte jamais notre serveur, donc il n'y a rien sur le disque de l'utilisateur qui puisse être modifié en un lease valide. Un lease falsifié échoue immédiatement à la vérification de signature, avant même que son contenu soit analysé. Une fois la fenêtre de 7 jours écoulée, le contrôle suivant passe silencieusement en ligne, obtient un lease frais, et le cycle recommence — ainsi une machine complètement hors ligne reste vérifiablement sous licence jusqu'à une semaine à la fois, et une licence révoquée est détectée à la prochaine reconnexion.
Comment l'ajouter — 3 étapes avec les SDK officiels
Ce que ça vous apporte vraiment
Votre app vérifie une licence en microsecondes avec zéro appel réseau un jour normal, continue de fonctionner correctement pendant une semaine en mode avion ou sur un réseau d'entreprise verrouillé, et détecte quand même une licence révoquée ou remboursée dans les 7 jours suivant la reconnexion de la machine — sans que vous n'écriviez une seule ligne de cryptographie vous-même, n'hébergiez un système de gestion de clés, ou n'inventiez votre propre format de jeton que quelqu'un finit toujours par trouver le moyen de modifier.
À qui ça sert vraiment
Utilisateurs en déplacement
Consultants, techniciens de terrain, quiconque dont l'ordinateur portable passe du vrai temps hors ligne entre vols et clients.
Réseaux d'entreprise verrouillés
Machines derrière des pare-feux qui bloquent les appels API sortants vers tout ce qui n'est pas explicitement autorisé.
Outils de bureau Python
pip install sublimekeys — vérification hors ligne intégrée dans le SDK officiel.
Apps Electron
npm install sublimekeys — même vérification par lease signé, zéro dépendance native.
Environnements air-gapped / réglementés
Machines qui ne doivent jamais atteindre internet, seulement se synchroniser occasionnellement.
About
Patrick Chen — développeur indépendant derrière Sublimearts.io. A construit la vérification hors ligne dans SublimeKeys après avoir réalisé que chaque app de bureau vendue à des utilisateurs en déplacement ou en entreprise finit par heurter le même mur "pas d'internet".
Did you find this helpful?