shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014
-
20 mars 2013 à 17:27
aspkiddy
Messages postés38Date d'inscriptionjeudi 9 juin 2011StatutMembreDernière intervention15 janvier 2014
-
15 avril 2013 à 14:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Rectification quant à la longueur de base 2 du hash: Étant donné que ce n'est pas le cas pour sha1 par exemple, je dirais plutôt que la longueur est exotique et aléatoire dans le cas présent.
- Les instructions lignes 36-37 n'ont aucune utilité.
- La "chaine" finale n'a pas une longueur de base 2 + on a les séparateurs et sels en clair, ce qui les rends aisément identifiables.
- Pourquoi mélanger rand() et mt_rand() ?
Bref, si je vole une table avec les passwords, je lis 3-4 lignes à la recherche d'un motif répétitif, je fais un sed pour les virer et je lance un bruteforce (ici, ce sera compliqué vu que c'est du sha512)
Non, chiffrer un hash n'a aucune utilité, surtout de cette manière.
Une façon simple de rendre un hash théoriquement incassable et sans aucun sel, c'est de hasher plusieurs fois consécutives la chaîne (2 suffira largement). On a une information en moins à stocker (le sel) et ça rends le hash théoriquement incassable.
Et parler de hash unique, c'est pareil que de dire que personne d'autre n'a le même "Prénom NOM" que moi: c'est absolument faux par nature.
Optitech
Messages postés134Date d'inscriptionsamedi 19 octobre 2002StatutMembreDernière intervention 3 janvier 2009 29 mars 2013 à 11:48
@shenron666
Pour ce qui concerne la différence entre "chiffrement" et "cryptage", je vous conseil de lire ceci : http://www.ssi.gouv.fr/IMG/pdf/RGS_B_1.pdf En page 29 de ce document il est écrit : "D'un point de vue vocabulaire, il faut noter que le seul terme admis en français est celui de chiffrement. On entend cependant souvent parler de « cryptage » qui est un anglicisme popularisé par les télécommunications, voire de « chiffrage », mais ces mots sont incorrects. L'opération inverse du chiffrement est le déchiffrement. On désigne par « décryptage », ou « décryptement », l'opération qui consiste à retrouver le clair correspondant à un chiffré donné sans connaître la clé secrète, après avoir trouvé une faille dans l'algorithme de chiffrement."
Donc par abus de langage, pour beaucoup de personne, chiffrement <=> cryptage ... donc mieux vaut parler de chiffrement.
Un hash est l'équivalent d'une empreinte digitale, d'une donnée (chaine de caractère, fichier, etc...) à partir d'un hash il n'est pas possible de reconstituer la donnée initial. On dit qu'une fonction de hash est une fonction à sens unique. Une fonction de hash sert principalement à vérifier que 2 données sont identique ou l'intégrité d'une données.
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 26 mars 2013 à 16:28
Merci pour cette petite définition, ça ne fait jamais de mal :)
Je vais jeter un coup d'oeil.
Une idée est effectivement d'utiliser les données des utilisateurs comme sels. Cela permettrait d'avoir des sels unique.
Une autre idée serait de fixer la position du sel du milieu et ainsi ne plus avoir de séparateur. Donc le seul moyen de trouver le sel du milieu serait de connaitre cette position. Ici, effectivement, si on (un pirate) a accès à toute la base de donnée, il pourrait arriver à trouver les 2 séparateurs.
Oui en effet rayman223, je n'avais pas vu que tu hachais avec. Dans ce cas, c'est mieux. Regarde comme même Bcrypt, je pense que cela devrait t'interesser.
le cryptage n'existe pas.
Le chiffrement est l'action de transformer un texte en clair en texte chiffré
Le déchiffrement est l'action inverse
Le décryptage est l'action de casser un code chiffré et donc de déchiffrer sans la clé de chiffrement.
Le hashage est l'action de rendre un code incompréhensible et de façon irréversible (théoriquement).
shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014 26 mars 2013 à 12:11
Niveau sécurité, c'est toujours mieux que Sony :D
Plus sérieusement, l'intérêt du script de mon point de vue, c'est de monter ce qu'il est possible de faire facilement.
Ca m'a donné des idées, et utiliser des informations liées à l'utilisateur pour générer les sels serait un bon point de départ.
@era120, tu peux me donner la différence entre cryptage et chiffrement ?
pour moi :
- le hashage est une techniquement de chiffrement
- le chiffrement est irréversible (on ne peux pas faire l'opération inverse)
- le cryptage est réversible
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 25 mars 2013 à 20:12
Bah justement, le sel de gauche et droite je suis d'accord mais le sel du milieu est tout a fait aléatoire du point de vue de la longueur ET de la position !
Et je crypte un hash puisque je sais le décrypter pour pouvoir le comparer avec un mot de passe entrée par l'utilisateur.
Maintenant, On pourrait rajouter les sel de gauche et droite avant de hasher, je vais essayer ;)
Je vais regarder ce que tu me proposes.
Je ne comprends pas trop l'interêt de ton script. Niveau sécurité, ce n'est pas terrible, il suffit que l'attaquant ait plusieurs message pour qu'il devine que les sels sont fixes. De plus, sauf erreur de ma part, l'interêt du sel est de le hasher avec le password.
Je te conseille vivement de regarder bcrypt en php. Il utilise un peu ce que tu veux utiliser je pense.
Au fait, c'est 'length' et puis on dit pas cryptage mais chiffrement, d'ailleurs c'est plus hashage ici.
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 25 mars 2013 à 11:30
Oui, mais c'est très bizarre. peut-être un problème de cache. Il est apparu après que j'ai posté le dernier.
shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014 25 mars 2013 à 10:43
tu parles de ton message du 20/03/2013 18:30:09
celui juste au dessus du miens ? ;)
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 25 mars 2013 à 08:46
Bizarre, mon message s'est effacé.
Pour l'exemple, j'ai remplacé le hash par du texte compréhensible. L'unique but est de montrer la structure du cryptage.
C'est plus facile a voir qu'avec un véritable hash ;)
alfrai
Messages postés69Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention23 juillet 2013 21 mars 2013 à 03:48
bonjour !
je débute en crypto. Merci pour le code.
shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014 20 mars 2013 à 23:49
Ok je comprend mieux, merci pour tes explications.
De plus ton code est assez clair et un minimum commenté, ça aide.
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 20 mars 2013 à 18:30
C'est juste un exemple.
Cela te permet de visualiser la structure du cryptage plus facilement qu'avec un vrai hash.
Tu dois voir cette exemple comme si "Mon super mot de passe" était un hash.
shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014 20 mars 2013 à 18:26
je me demande s'il n'y a pas un problème avec l'exemple est visible sur http://www.blizer.net/exemple.php vu que le hash crypté affiché est le mot de passe décoré :
SEL_DEBUTMon_super_mot_de_pasSEPARATEUR_DEBUTnwxmqSEPARATEUR_FINse_08SEL_FIN
ce qui ne semble pas être le cas dans ton code
rayman223
Messages postés24Date d'inscriptiondimanche 9 décembre 2007StatutMembreDernière intervention 7 avril 2013 20 mars 2013 à 17:58
Le hash crypté. Comme ça, si la table est piratée, le pirate ne pourra pas trouver une chaine qui correspond au hash puisque celui-ci est modifié.
shenron666
Messages postés229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 août 2014 20 mars 2013 à 17:27
J'ai du mal à comprendre, si tu avais à stocker en BDD un mot de passe, tu stockerais le hash ou le hash crypté ?
15 avril 2013 à 14:50
merci
7 avril 2013 à 19:49
Alors, je devrais faire le hash à la fin et non au début.
7 avril 2013 à 19:44
7 avril 2013 à 19:40
- La "chaine" finale n'a pas une longueur de base 2 + on a les séparateurs et sels en clair, ce qui les rends aisément identifiables.
- Pourquoi mélanger rand() et mt_rand() ?
Bref, si je vole une table avec les passwords, je lis 3-4 lignes à la recherche d'un motif répétitif, je fais un sed pour les virer et je lance un bruteforce (ici, ce sera compliqué vu que c'est du sha512)
Non, chiffrer un hash n'a aucune utilité, surtout de cette manière.
Une façon simple de rendre un hash théoriquement incassable et sans aucun sel, c'est de hasher plusieurs fois consécutives la chaîne (2 suffira largement). On a une information en moins à stocker (le sel) et ça rends le hash théoriquement incassable.
Et parler de hash unique, c'est pareil que de dire que personne d'autre n'a le même "Prénom NOM" que moi: c'est absolument faux par nature.
29 mars 2013 à 11:48
Pour ce qui concerne la différence entre "chiffrement" et "cryptage", je vous conseil de lire ceci : http://www.ssi.gouv.fr/IMG/pdf/RGS_B_1.pdf En page 29 de ce document il est écrit : "D'un point de vue vocabulaire, il faut noter que le seul terme admis en français est celui de chiffrement. On entend cependant souvent parler de « cryptage » qui est un anglicisme popularisé par les télécommunications, voire de « chiffrage », mais ces mots sont incorrects. L'opération inverse du chiffrement est le déchiffrement. On désigne par « décryptage », ou « décryptement », l'opération qui consiste à retrouver le clair correspondant à un chiffré donné sans connaître la clé secrète, après avoir trouvé une faille dans l'algorithme de chiffrement."
Donc par abus de langage, pour beaucoup de personne, chiffrement <=> cryptage ... donc mieux vaut parler de chiffrement.
Un hash est l'équivalent d'une empreinte digitale, d'une donnée (chaine de caractère, fichier, etc...) à partir d'un hash il n'est pas possible de reconstituer la donnée initial. On dit qu'une fonction de hash est une fonction à sens unique. Une fonction de hash sert principalement à vérifier que 2 données sont identique ou l'intégrité d'une données.
26 mars 2013 à 16:28
Je vais jeter un coup d'oeil.
Une idée est effectivement d'utiliser les données des utilisateurs comme sels. Cela permettrait d'avoir des sels unique.
Une autre idée serait de fixer la position du sel du milieu et ainsi ne plus avoir de séparateur. Donc le seul moyen de trouver le sel du milieu serait de connaitre cette position. Ici, effectivement, si on (un pirate) a accès à toute la base de donnée, il pourrait arriver à trouver les 2 séparateurs.
Je vais effectuer les modifications sous peu.
26 mars 2013 à 16:14
le cryptage n'existe pas.
Le chiffrement est l'action de transformer un texte en clair en texte chiffré
Le déchiffrement est l'action inverse
Le décryptage est l'action de casser un code chiffré et donc de déchiffrer sans la clé de chiffrement.
Le hashage est l'action de rendre un code incompréhensible et de façon irréversible (théoriquement).
26 mars 2013 à 12:11
Plus sérieusement, l'intérêt du script de mon point de vue, c'est de monter ce qu'il est possible de faire facilement.
Ca m'a donné des idées, et utiliser des informations liées à l'utilisateur pour générer les sels serait un bon point de départ.
@era120, tu peux me donner la différence entre cryptage et chiffrement ?
pour moi :
- le hashage est une techniquement de chiffrement
- le chiffrement est irréversible (on ne peux pas faire l'opération inverse)
- le cryptage est réversible
25 mars 2013 à 20:12
Et je crypte un hash puisque je sais le décrypter pour pouvoir le comparer avec un mot de passe entrée par l'utilisateur.
Maintenant, On pourrait rajouter les sel de gauche et droite avant de hasher, je vais essayer ;)
Je vais regarder ce que tu me proposes.
25 mars 2013 à 17:57
Je ne comprends pas trop l'interêt de ton script. Niveau sécurité, ce n'est pas terrible, il suffit que l'attaquant ait plusieurs message pour qu'il devine que les sels sont fixes. De plus, sauf erreur de ma part, l'interêt du sel est de le hasher avec le password.
Je te conseille vivement de regarder bcrypt en php. Il utilise un peu ce que tu veux utiliser je pense.
Au fait, c'est 'length' et puis on dit pas cryptage mais chiffrement, d'ailleurs c'est plus hashage ici.
25 mars 2013 à 11:30
25 mars 2013 à 10:43
celui juste au dessus du miens ? ;)
25 mars 2013 à 08:46
Pour l'exemple, j'ai remplacé le hash par du texte compréhensible. L'unique but est de montrer la structure du cryptage.
C'est plus facile a voir qu'avec un véritable hash ;)
21 mars 2013 à 03:48
je débute en crypto. Merci pour le code.
20 mars 2013 à 23:49
De plus ton code est assez clair et un minimum commenté, ça aide.
20 mars 2013 à 18:30
Cela te permet de visualiser la structure du cryptage plus facilement qu'avec un vrai hash.
Tu dois voir cette exemple comme si "Mon super mot de passe" était un hash.
20 mars 2013 à 18:26
vu que le hash crypté affiché est le mot de passe décoré :
SEL_DEBUTMon_super_mot_de_pasSEPARATEUR_DEBUTnwxmqSEPARATEUR_FINse_08SEL_FIN
ce qui ne semble pas être le cas dans ton code
20 mars 2013 à 17:58
20 mars 2013 à 17:27