hubchau
Messages postés5Date d'inscriptionmardi 21 avril 2009StatutMembreDernière intervention 9 juin 2009
-
21 avril 2009 à 10:13
hubchau
Messages postés5Date d'inscriptionmardi 21 avril 2009StatutMembreDerniè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.
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 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 ?
cs_MoH008
Messages postés238Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention29 septembre 20111 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...
hubchau
Messages postés5Date d'inscriptionmardi 21 avril 2009StatutMembreDerniè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) ?
hubchau
Messages postés5Date d'inscriptionmardi 21 avril 2009StatutMembreDerniè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 !
hubchau
Messages postés5Date d'inscriptionmardi 21 avril 2009StatutMembreDerniè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).