2017-01-17 3 views
0

Je souhaite émettre une clé de sécurité de produit qui peut coder les détails des restrictions de licence. Par exemple, une clé peut contenir le nombre maximal d'utilisateurs sous licence et/ou des dates de début/fin pour contrôler l'expiration de la licence.Comment générer une clé de licence de produit qui inclut des informations produit décodables

Je sais qu'un moyen simple de créer une clé est d'utiliser un hachage MD5 - il suffit de concaténer les détails et d'appliquer l'algorithme de hachage MD5. Mais c'est un processus à sens unique, c'est-à-dire que vous ne pouvez pas décoder la clé pour voir les paramètres initiaux.

Ce que je veux faire est d'émettre une clé qui peut être décodée sur le site de l'utilisateur, et leur donne tous les paramètres de licence.

Ainsi, l'utilisateur obtiendrait quelque chose comme ceci:

1234-5678-9012-3456

qui est créée en utilisant une chaîne composée des paramètres suivants, chaînés, puis hachés

utilisateurs Max :

Date de début: 17/01/17

Date de fin:. 17/01/18

Dans le passé, je l'ai installé des produits logiciels qui viennent avec une clé de licence, et la clé est en quelque sorte toutes les informations telles que la date d'expiration construite en quoi est-ce terminé? Le logiciel contacte-t-il un serveur central pour déterminer la date d'expiration en consultant une base de données? Mais je suis sûr que ces clés de licence fonctionnaient lorsque l'application était hors ligne. Est-ce que je me trompe?

+0

Le logiciel contacte-t-il un serveur central pour déterminer la date d'expiration en consultant une base de données? ? si vous voulez qu'il soit sécurisé, les oui. En ce qui concerne le comportement hors ligne - vous pouvez implémenter ce que vous voulez, vous pouvez autoriser les utilisateurs à exécuter le produit gratuitement lorsqu'ils sont hors ligne ou créer un mécanisme de relance qui génère un message d'erreur expliquant à l'utilisateur qu'il doit être en ligne pour lancez votre application Dépend de vous! – alfasin

+0

Merci. Désolé, j'ai oublié de mentionner que certaines installations de notre site n'ont pas de connectivité Internet. –

+0

Et maintenant que vous le mentionnez, qu'attendez-vous que nous disions? c'est beaucoup moins sûr, mais si c'est votre limite, adaptez-le! – alfasin

Répondre

0

En gros ce que vous pouvez faire est de créer une structure de données contenant vos informations, de les encoder en octets, de les faire passer dans une fonction de compression si elles sont trop grandes.

créer une paire de clés pour votre algo de signature préférée comme RSA

signe la structure de données/les octets compressés

tronquer la signature à une taille convenable comme les derniers chiffres hexadécimaux X

navire public clé avec votre produit

plus la partie de la signature, le plus difficile à faire un travail de keygen

il est plus probable que quelqu'un vous remplace la clé ou la logique de vérification dans votre binaire, mais oui ... comment vous pouvez faire cela ...

+0

Une signature RSA tronquée (de plus de quelques octets) ne peut pas être vérifiée, ce qui la rend inutile ici. Un hachage tronqué ou un hachage à clé (comme HMAC) peut être vérifié (à un niveau plus faible) mais peut facilement être falsifié. Je ne vois pas pourquoi vous voulez une courte signature ici, mais voir http://crypto.stackexchange.com/questions/15356/how-do-i-create-a-short-signature-eg-less-than-100- bytes et/ou http://security.stackexchange.com/questions/84040/how-can-i-generate-short-signatures –

+0

right ... ça arrive quand je fais trop de choses en même temps ... le idée était de réduire la longueur de l'ensemble, mais oui ... vous avez besoin de la signature non tracée pour vérifier – DarkSquirrel42