Comment empêcher l'utilisation de la licence expirée via une altération de l'horloge système?
Je suis actuellement en train de travailler sur un gestionnaire de licences à l'aide de java, je vais être en spécifiant un début et une date de fin pour mon application, de sorte que je peux forcer un utilisateur autorisé à re-licence de programme après un certain laps de temps.
Mais le problème je suis confronté est que n'importe qui peut faire reculer leur date et l'heure système, afin de maintenir la validité de la licence. Est-il possible en Java pour détecter la date et l'heure système est modifié. J'ai déjà essayé (Network Time Protocol) pour obtenir la date et l'heure à partir d'un serveur de temps.
source d'informationauteur Lalchand
Vous devez vous connecter pour publier un commentaire.
- Vous susceptible de stocker un fichier de licence sur le système. a) inclure le temps que le logiciel a été enregistré dans le fichier de licence, b) signer numériquement le fichier.
La signature numérique vous indique si le fichier de licence a été falsifié. Si pas, le temps de vous dire quand le logiciel a été enregistrée; si le "temps actuel" est moins que le temps enregistré, votre gestionnaire de licences sait quelque chose de drôle qui se passe et il peut répondre selon (refuser d'exécuter, supprimer la licence, ...
Si vous voulez vraiment faire respecter la plage de date, d'écrire à l'heure actuelle sur chaque exécution d'un programme à un autre digitially fichier signé, en vérifiant que le temps va toujours de façon monotone jusqu'.
Vous pouvez également vérifier votre dernière heure enregistrées à l'encontre de tous les fichiers de votre application écrit-puis-lit. Un tel fichier avec une date postérieure à votre dernière heure d'enregistrement indique un certain type de licence-fichier de restauration.
Ces wont stop à l'utilisateur de régler l'horloge de certains, mais il sera assez difficile pour lui de le faire de manière organisée.
Il est pratiquement impossible de faire quelque chose. Un utilisateur de "restaurer" l'ensemble de son ordinateur pour que le logiciel pense de son exécution à une date donnée.
Vous pourrait rendre plus difficile en laissant le programme de poser quelques temps-serveur pour le moment. (Encore que, si quelqu'un voulait vraiment utiliser une vieille licence, il pourrait rediriger tout le trafic vers un serveur de temps local.)
Liés à des questions /réponses:
@Aioobe dit, les applications n'ont aucun contrôle sur l'environnement dans lequel ils sont en cours d'exécution.
Ce que vous pouvez faire (si votre programme tient également à jour les données importantes de vos utilisateurs) est d'enregistrer ce qu'il sait à propos de la date/de l'heure et le temps qui passe. Par exemple, vous pouvez stocker l'heure actuelle, à intervalle régulier, après vérification qu'il n'a pas rollback (lorsqu'une restauration est détectée, la sortie d'un message avec un code crypté à vous transmettre pour le rétablissement du permis de conduire de sorte que vous savez que cela m'est arrivé).
Vous pouvez également conserver une "contre" qui est incrémenté à chaque heure de votre programme s'exécute en vous donnant une estimation de l'utilisation de votre licence.
En utilisant tous les trois de votre licence après un an, un rollback ou x heures d'autonomie.
Vous avez un couple de scénarios de combat:
Il y a plusieurs niveaux de sécurité que vous pouvez appliquer, et si ce est une grande préoccupation, alors vous pouvez les utiliser toutes.
Le plus sûr est de vérifier le temps contre une référence externe par exemple votre serveur. Si il n'y a pas d'accès au réseau, vous pouvez alors utiliser le local méthodes décrites ci-dessus, de l'aide locale (caché) des fichiers pour garder une trace du temps sur le système, de sorte que vous pouvez détecter la restauration. En utilisant plus d'un fichier dans plus d'un endroit, et de les faire vérifier par recoupement les uns les autres, vous pouvez faire cela de manière arbitraire dur de faire des rollback sans détection (et vous pouvez toujours garder régulièrement en essayant de se connecter au serveur externe).
Code de votre application pour vous envoyer des e-mails avec la session de l'utilisateur d'utiliser et de vérifier les heures d'arrivée. Automatiser la surveillance de courriel! Sinon, vous yill devenir un esclave de votre succès.
Jorge