← Blog
Tutoriel9 Juillet 2026·7 min de lecture

Comment vérifier une licence logicielle hors ligne sans faire confiance à un fichier sur le disque.

Votre app tourne sur un ordinateur portable sans wifi — un vol, un client avec un réseau verrouillé, une machine qui n'est pas censée atteindre internet du tout. Si votre contrôle de licence a besoin d'un aller-retour serveur à chaque fois, il échoue exactement quand votre utilisateur a besoin qu'il fonctionne. Voici comment vérifier une licence complètement hors ligne, sans simplement faire confiance à ce que dit un fichier local.

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

1pip install sublimekeys (Python) ou npm install sublimekeys (Node.js/Electron) — les deux SDK embarquent déjà la clé publique et la logique de vérification
2Appelez activate() une fois avec la clé de l'utilisateur — enregistre un lease signé localement, sans code supplémentaire
3Appelez verify() à chaque lancement suivant — vérifie d'abord le lease en cache, entièrement hors ligne, et n'appelle l'API que lorsque la fenêtre de confiance de 7 jours expire

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.

Essayez SublimeKeys gratuitement →1 produit · 25 clés · Sans carte bancaire · keys.sublimearts.io

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?