Il existe de nombreuses façons d'implémenter quelque chose comme ça, mais en voici une qui ne devrait pas être trop difficile à faire:
Vous avez besoin d'un site Web accessible au public quelque part qui héberge un fichier contenant les hachages des clés de licence qui ont été mises sur liste noire. La façon dont vous gérez ce fichier dépend de vous, mais le fichier lui-même n'a besoin que d'un hachage par ligne.
Ensuite, de manière récurrente, votre logiciel lance un téléchargement de ce fichier (la plupart des langues côté serveur le prévoient), puis le recherche pour le hachage de la clé de licence installée. S'il est trouvé, l'application sait qu'il doit mourir jusqu'à ce que la liste noire soit supprimée.
MD5 ou similaire plus un secret devraient être suffisants pour cela. Vous pourriez devenir plus sophistiqué et demander à l'application d'envoyer la demande à votre site et de la rechercher dans une base de données à la volée, mais le fichier (pour ce que je suppose serait une courte liste, espérons-le) resterait petit et pourrait être la manière la plus simple.
La partie la plus difficile sera de maintenir l'application morte. Après tout, vous devez stocker cela quelque part en interne, ce qui signifie que si cela est trop évident, il pourrait être facilement renversé, et même si ce n'est pas trop évident, il peut être facilement annulé en restaurant les tables appropriées / des dossiers). C'est pourquoi je suggère également une deuxième méthode de protection.
Cette méthode stockerait "LIVE" ou "DEAD" (ou quelque chose de suffisamment similaire) dans une table ou un fichier, mais encore HASHed. Cela doit être haché avec votre sel ET un horodatage. Chaque fois qu'une page de votre application s'exécute, vérifiez cette valeur avec une version hachée de "LIVE" + sel + horodatage, puis autorisez une plage valide d'horodatages (par exemple, un jour, deux jours, une semaine, un mois, etc. Gardez à l'esprit que plus la plage est large, plus les performances seront difficiles.). Tant que les choses correspondent (ou qu'une correspondance est trouvée), l'application est vivante; sinon, même si la valeur dans le fichier ou la table spéciale est "LIVE", elle sera toujours morte en cas de tentative de restauration à partir de la sauvegarde car l'horodatage tombera en dehors de votre seuil.
En résumé (cela suppose que vous avez une méthode programmatique pour vérifier la validité d'une clé de licence, telle qu'une sorte de somme de contrôle ou une autre méthode):
- CheckBlacklist
- Convertir la clé de licence en hachage avec du sel
- Demander un fichier de liste noire au serveur
- Mon hachage est-il dans le fichier?
- Si OUI, stockez le hachage "DEAD" + sel + horodatage (tronqué au jour; pas besoin de stocker les heures + jours + minutes)
- Si NON, stockez le hachage "LIVE" + sel + horodatage (tronqué)
- IsKeyAlive
- Créer un hachage à partir de "LIVE" + sel + horodatage tronqué
- Charger le hachage DeadAlive
- Sont-ils d'accord?
- Si OUI, alors nous sommes vivants; retourne VRAI.
- Si NON, alors nous sommes peut-être morts, mais nous pouvons toujours être dans notre fenêtre d'horodatage:
- Soustrayez une journée de l'horodatage et répétez le hachage.
- Sommes-nous d'accord maintenant?
- OUI? Retour TRUE
- Ajoutez une journée à l'horodatage et répétez le hachage
- Sommes-nous d'accord maintenant?
- OUI? Retour TRUE
- À ce stade, nous sommes hors de la plage d'horodatage sans correspondance. Retour FAUX. (Kill app)
Maintenant, Dieu sait qu'il y a un million et une façon dont cela peut échouer. Considérez toutes les manières possibles et construisez un système fiable (y compris celui qui suppose que le client a raison si le fichier de liste noire ne peut pas être téléchargé). Testez, testez, testez-le, puis testez-en plus avant de déployer, car si cela se passe mal, vous aurez perdu la confiance de votre client.