Algo de création d'une clé de validation

Résolu
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009 - 21 avril 2009 à 10:13
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009 - 23 avril 2009 à 10:14
Bonjour à tous !

Je suis apprenti au département informatique d'une boite qui gère pas mal d'entrées et de sorties de matos info. Mon projet principal jusqu'à présent a été de mettre au point un moyen rapide et gratuit pour restaurer (comprenez "réinstaller") des machines avant qu'elles ne partent en clientèle.

J'ai donc bossé sous Clonezilla et sa partie Live CD afin de créer des DVD bootables contenant l'image à restaurer. Comme les DVD seraient, dans certains cas, envoyés par courrier à certains clients, et que les images en questions contiennent un Windows XP VLK (clé validable à l'infini), il a fallu que j'implémente un système pour empêcher quelqu'un de réinstaller son PC perso quand bon lui semble. J'ai donc fait un script en Shell qui génère pseudo-aléatoirement un entier sur 10 caractères, l'affiche à l'écran. Le client nous appelle alors, nous communique l'entier donné, nous le rentrons dans un programme en tant que variable "a" et on retourne au client f(a). Le soucis c'est que la fonction f(x) est vraiment pas très résistante (polynôme du second degré) et qu'il faudrait que je trouve un moyen soit de la renforcer, soit d'utiliser un autre algo.

L'idée est donc de renforcer mon code, qui est par la suite encodé par "shc". J'ai bien conscience que mon "système" n'est pas super sécurisé, c'est pas le but ; il s'agit simplement de décourager un peu les petits malins qui voudraient récupérer XP gratos.

Avez-vous des idées pour améliorer la protection ?

Merci d'avance pour vos tuyaux.

Hub

PS : si vous avez besoin du code actuel, demandez-le moi, je le posterai.

8 réponses

cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
22 avril 2009 à 14:19
Salut,
effectivement il est possible d'effectuer ce que tu viens de proposer !
Ton client  génère son nombre aléatoire au boot ( tu t'en es chargé déjà avec ton script si je m'en rappel bien ), utilise la fonction de hachage et garde en mémoire le résultat obtenu.
Le client t'envoie donc le nombre aléatoire généré, tu utilises la même fonction de hachage ( tu es donc censé trouver le même résultat que le client).
Tu lui envoies le résultat que tu as obtenu, et chez le client, il n'y a plus qu'à vérifier si les deux résultats sont identiques.
Cela te convient il ?
3
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 avril 2009 à 16:28
Salut hubchau,
t'es tu penché sur la piste de la cryptographie ? plus précisément les fonctions de hachage par exemple, simple à utiliser mais très difficile à décrypter.
Je pense que sa peut t'être utile si tu arrives à l'adapter à ta convenance.
Voici quelques fonctions de hachages, la méthode du SHA1 est courante et est considérée comme safe, en à toi d'en juger ici.
En espérant t'avoir été utile...
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
21 avril 2009 à 19:03
Y'a aussi SHA2, Whirlpool et RIPEMD-160.
Et un hash ne se décrypte pas.
0
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
21 avril 2009 à 20:39
Oups, je ne pensais pas à "décrypter" en plus :S
Faute!!! autant pour moi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009
22 avril 2009 à 09:49
Merci pour vos réponses. On m'a conseillé aussi md5. Bref, j'ai compris qu'il fallait que je me tourne vers l'une de ces solutions. Mais pourront-elles fonctionner de la manière suivante :

1) Le  PC du client génère un entier aléatoire (et ce à chaque fois que l'on boot sur le DVD), la chiffre (via md5, SHA-x, etc.)
2) Le client me donne cette clé (clé publique donc). J'ai de mon côté une clé privée (fixe ?). Je les "mélange" (<- je ne connais pas l'opération qui intervient ici).
3) J'obtiens un résultat que je retourne à mon client
4) Il la rentre dans son PC. Le programme confirme que la clé publique ET la clé privée étaient valides, et continue l'installation.

Comme j'y connais vraiment rien en sécu pour l'instant (mes cours commencent plus tard), j'ai besoin d'un coup de main pour éclaircir le fonctionnement d'une telle opération. Comment mélanger la clé privée et la clé publique ? J'imagine que ça dépend de la méthode de cryptage ? Comment le PC client pourra vérifier que les clés données n'étaient pas des fausses (d'un point de vue algo) ?

Merci encore pour votre aide :)

Hub
0
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009
22 avril 2009 à 14:47
Ça me semble parfait et plus simple que je ne pensais. Comme mon code est compilé, ça devrait ajouter une légère couche pour décourager quelqu'un. Mais de toute façon, je rappelle que je vise pas la sécu absolue :)

Merci beaucoup de m'avoir éclairci les idées. J'implémente ça rapidement !

Hub
0
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009
23 avril 2009 à 09:32
J'ai implémenté mon code sans trop de problème mais j'en rencontre un nouveau. Le hash donné par la fonction sha1sum sous Unix n'est pas le même que celui donné par les générateurs que l'on peut trouver sur Internet ou par SHA1.dll que je voulais utiliser (via AutoIt).

Exemple :

root@VM-Ubuntu:/# echo -e fzujzihwiy | sha1sum
eb0b0de50652f85eb17f7cce23816129506d608c  -

Mais sur le net, quels que soient les sites sur lesquels j'essaie, j'obtiens toujours le hash suivant :
b83924b4eb4f293fb59c864ba6e225254a405113

Idem sous AutoIt.

Donc j'en conclus que soit ma fonction sha1sum a un soucis, soit je m'en sers pas bien.

Une idée ?
0
hubchau Messages postés 5 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 9 juin 2009
23 avril 2009 à 10:14
J'ai trouvé !

il fallait faire un echo -n  et non un echo -e qui rajoutait un retour à la ligne :)
0
Rejoignez-nous