Meilleure solution pour crypter un mot de passe ?

Meilleure solution pour crypter un mot de passe ? - PHP - Programmation

Marsh Posté le 17-11-2003 à 15:06:57    

Salut à tous,
Voilà je fais un petit site qui à un petit caractère communautaire.
Quelle est la meilleure façon de crypter un mot de passe.
J'utilise le connu MD5 mais cette fonction de hachage ne permet pas de "dé-hacher" le pass, or je voudrais quand même pouvoir voir le pass en clair...
 
Merci d'avance.

Reply

Marsh Posté le 17-11-2003 à 15:06:57   

Reply

Marsh Posté le 17-11-2003 à 15:16:18    

GRMLRMLML!!! Je vais le redire encore une fois pour ceux qui ne l'aurait pas lu:
 
LE HASHAGE N'EST PAS DU CRYPTAGE. HACHER SES MOT DES PASSE, C'EST SE CREER VOLONTAIREMENT UNE FAILLE DE SECURITE!!!!

Reply

Marsh Posté le 17-11-2003 à 15:17:32    

Je sais, c'est justement pour ca que je souhaite utiliser autre chose

Reply

Marsh Posté le 17-11-2003 à 15:24:49    

http://www.dwam.net/docs/php_fr/manuel_ref.mcrypt.html
 
apparemment bijective. saches que c'est idiot :jap:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 17-11-2003 à 15:31:33    

"apparemment bijective. saches que c'est idiot "
Lol je doit être idiot moi aussi mais j'ai pas compris ^^

Reply

Marsh Posté le 17-11-2003 à 15:56:45    

simogeo a écrit :

http://www.dwam.net/docs/php_fr/manuel_ref.mcrypt.html
 
apparemment bijective. saches que c'est idiot :jap:


 
Idiot? Pourquoi? :??:
C'est ce que j'utilise, je ne trouve pas ça idiot...

Reply

Marsh Posté le 17-11-2003 à 15:59:41    

C'est bien beau d'utiliser crypt() mais si t'as besoin de ton pass en clair a un moment ou un autre t'as l'air fin avec cette fonction. :D

Reply

Marsh Posté le 17-11-2003 à 16:03:55    

impulse a écrit :

C'est bien beau d'utiliser crypt() mais si t'as besoin de ton pass en clair a un moment ou un autre t'as l'air fin avec cette fonction. :D


Un algo de cryptage est TOUJOURS réversible. Autrement tu ne peux pas garantir que le produit de ton cryptage est unique et donc tu introduis une faille.

Reply

Marsh Posté le 17-11-2003 à 16:07:01    

gizmo a écrit :


Un algo de cryptage est TOUJOURS réversible. Autrement tu ne peux pas garantir que le produit de ton cryptage est unique et donc tu introduis une faille.


 
Tu peux m'expliquer comment decrypter une chaine de caracteres cryptée avec crypt()?

Reply

Marsh Posté le 17-11-2003 à 16:42:14    

ouais tu dois en avoir pour quelques années c'est vrai .....
 
> pour les autres : c'est idiot car a priori tu peux très bien te passer d'avoir besoin de ton password en clair et ca cosntitue une faille


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 17-11-2003 à 16:42:14   

Reply

Marsh Posté le 17-11-2003 à 17:34:37    

Donc je garde md5 ? :D

Reply

Marsh Posté le 17-11-2003 à 20:23:47    

impulse a écrit :


 
Tu peux m'expliquer comment decrypter une chaine de caracteres cryptée avec crypt()?


 
il faudrait que je regarde comment fonctionne l'algo, mais ce ne doit pas être très compliqué.

Reply

Marsh Posté le 17-11-2003 à 20:25:17    

simogeo a écrit :

ouais tu dois en avoir pour quelques années c'est vrai .....
 
> pour les autres : c'est idiot car a priori tu peux très bien te passer d'avoir besoin de ton password en clair et ca cosntitue une faille


 
on est plus au temps des 8088. Trouver un mot qui aura la même clefs md5 qu'un autre ne mettra, au plus, que quelques jours.

Reply

Marsh Posté le 17-11-2003 à 20:42:35    

je demande a voir pour des chaines avec plusieurs caracteres ( au moins 5-6 ) ...

Reply

Marsh Posté le 17-11-2003 à 22:31:43    

karamilo a écrit :

je demande a voir pour des chaines avec plusieurs caracteres ( au moins 5-6 ) ...


Mais on s'en fout du nombre de caractère! un algo de hashage te donnera TOUJOURS un résultat codé sur un nombre de bits IDENTIQUE. Avec cela, tu pourras donc trouver une infinité de chaines qui donneront ce même résultat. Peu importe que le mot de passe originel fasse 1 ou 100 caractères, ce qui compte, c'est le premier que tu trouvera qui donnera le même résultat.

Reply

Marsh Posté le 17-11-2003 à 23:19:22    

gizmo a écrit :


Mais on s'en fout du nombre de caractère! un algo de hashage te donnera TOUJOURS un résultat codé sur un nombre de bits IDENTIQUE. Avec cela, tu pourras donc trouver une infinité de chaines qui donneront ce même résultat. Peu importe que le mot de passe originel fasse 1 ou 100 caractères, ce qui compte, c'est le premier que tu trouvera qui donnera le même résultat.


Tu connais la taille de l'espace d'arrivée ?
C'est égal à 2 ^ 128 soit environ 3 * 10 ^ 38   !!!
 
Je sais pas si tu réalises bien à quoi cela correspond (l'âge de l'univers vaut environ 3 * 10 ^ 17 secondes).


Message édité par ratibus le 17-11-2003 à 23:28:28
Reply

Marsh Posté le 18-11-2003 à 08:50:41    

gizmo a écrit :


 
il faudrait que je regarde comment fonctionne l'algo, mais ce ne doit pas être très compliqué.


 
Tu crois pas que tu exageres un tout petit peu? :D
 

Citation :

on est plus au temps des 8088. Trouver un mot qui aura la même clefs md5 qu'un autre ne mettra, au plus, que quelques jours.


 
A moins d'avoir un sacré paquet de machines dispo chez toi je crois que tu reves vraiment. ;)
 
EDIT : md5 je sais pas. Je parlais de la fonction crypt(). On peut utiliser DES ou Blowfish avec cette fonction.


Message édité par impulse le 18-11-2003 à 08:54:53
Reply

Marsh Posté le 18-11-2003 à 13:18:26    

gizmo a écrit :


 
on est plus au temps des 8088. Trouver un mot qui aura la même clefs md5 qu'un autre ne mettra, au plus, que quelques jours.


 
Pour éviter en partie cela, et vu que je suis limite parano quand même, moi je fais un truc qui détecte les brute force (nb de tentative par x secondes par exemple) sur mes pages d'authentification

Reply

Marsh Posté le 18-11-2003 à 16:17:10    

Xam_Orpheus a écrit :


 
Pour éviter en partie cela, et vu que je suis limite parano quand même, moi je fais un truc qui détecte les brute force (nb de tentative par x secondes par exemple) sur mes pages d'authentification


Pour éviter le brute force on peut aussi faire un système d'image aléatoire avec un code indiqué sur l'image qu'il faut retaper.

Reply

Marsh Posté le 18-11-2003 à 16:32:51    

c vrai ke c une solution plutôt radicale :)

Reply

Marsh Posté le 18-11-2003 à 16:50:11    

ratibus a écrit :


Pour éviter le brute force on peut aussi faire un système d'image aléatoire avec un code indiqué sur l'image qu'il faut retaper.


pas vraiment adapté à un module d'authentification quand même [:wam]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 18-11-2003 à 19:59:19    

simogeo a écrit :


pas vraiment adapté à un module d'authentification quand même [:wam]


 
Ouais c'est clair, un p'tit peu lourd quand même ;)

Reply

Marsh Posté le 18-11-2003 à 22:55:51    

Pourquoi ? Je veux des arguments valables :D

Reply

Marsh Posté le 19-11-2003 à 00:51:22    

Lourd pour l'utilisateur, devoir taper login, mot de passe + le truc aléatoire à chaque fois qu'il se connecte, c'est vite saoulant. ;)

Reply

Marsh Posté le 19-11-2003 à 01:37:17    

gizmo minifestement tu ne sais pas de quoi tu parles...  Le hashage n'est pas du cryptage certes, mais pour un site web c'est la seule solution sûre, justement parce qu'il est difficile (beaucoup plus que tu ne le laisse entendre) de trouver un pass qui donne un hashage donné. Si tu utilises un algo de chiffrage a clée comme tu sembles le suggérer, alors la clée en question est forcément aussi facile à récupérer que le mot de passe chiffré lui même (sinon un soft ne serait pas capable seul de dechiffrer le passe chiffré). Cherche l'erreur...
 
Et quant a cracker du md5 en quelques jours sur un PC, je crois que tu n'a pas la notion de l'immensité de l'espace de recherche.

Reply

Marsh Posté le 19-11-2003 à 09:28:59    

Matafan a écrit :

gizmo minifestement tu ne sais pas de quoi tu parles...  Le hashage n'est pas du cryptage certes, mais pour un site web c'est la seule solution sûre, justement parce qu'il est difficile (beaucoup plus que tu ne le laisse entendre) de trouver un pass qui donne un hashage donné. Si tu utilises un algo de chiffrage a clée comme tu sembles le suggérer, alors la clée en question est forcément aussi facile à récupérer que le mot de passe chiffré lui même (sinon un soft ne serait pas capable seul de dechiffrer le passe chiffré). Cherche l'erreur...
 
Et quant a cracker du md5 en quelques jours sur un PC, je crois que tu n'a pas la notion de l'immensité de l'espace de recherche.


n'importe quoi! le md5 ne donne des clefs uniques, au maximum, que pour des pass d'au plus 16 caractères. En comptant les pass de moins de 16 caractères, on diminue encore ce nombre.
 
Et quand tu utilises une protection avec clefn non seulement tu utilise un principe de clef public/clef privée, ce qui permet de ne pas faire voyager n'importe quoi sur le réseau, mais en outre tu le fais via un canal sécurisé, https par exemple.
 
Si tu ne fais pas cela, mis à part pour éviter les attaques sur le serveurs et que tu ne veux pas que le hackeur choppe les mots de pass originels, le hashage n'est pas une sécurité en soi.

Reply

Marsh Posté le 19-11-2003 à 10:54:24    

gizmo a écrit :


n'importe quoi! le md5 ne donne des clefs uniques, au maximum, que pour des pass d'au plus 16 caractères. En comptant les pass de moins de 16 caractères, on diminue encore ce nombre.
 


 
j'ai rien compris à ce que tu dis mais toi je crois que tu n'as rien compris au md5...dans le même genre on peut aussi utiliser comme hash SHA-1
 
md5("a" ) = "0cc175b9c0f1b6a831c399e269772661"
sha("a" ) = "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"

Reply

Marsh Posté le 19-11-2003 à 14:17:28    

De toute façon pour pouvoir exploiter la non-unicité des hash md5, il faut justement avoir récupéré le hash md5 du mot de passe. Ce qu'on trouve généralement dans un cookie déposé pour éviter à l'utilisateur de rerentrer son mot de passe (lorsqu'on ne passe pas par un identifiant unique de session).
 
A ma connaissance, le vol de cookies ou d'id de session ne peut se faire que s'il existe déjà d'autres vulnérabilités sur le site ou sur la machine cliente. Donc ça revient à dire "si le site a des failles, le md5 présente un risque". Autant lutter directement contre les problèmes existants, notamment l'injection et le vol d'id de sessions.
 
Pour éviter la force brute, le système utilisé par Yahoo est assez simple : au bout de 5 essais manqués, la saisie d'un texte depuis une image générée est requise. Les erreurs d'innatention ou de frappe de l'utilisateur ne sont pas pénalisantes pour lui, un bot faisant du bruteforce sera systématiquement débouté.
 
Sinon il est toujours possible d'utiliser un cryptage plus complexe sur le mot de passe (en dehors de toute considération de https) et de conserver une clé sur le serveur. A la condition que ni la clé ni les versions cryptées du pass ne soient accessibles, l'attaquant peut toujours essayer de trouver un pass qui marche (il aura plus vite fait de tenter quelques passwords classiques de dictionnaire)


Message édité par KrisCool le 19-11-2003 à 14:17:48

---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 19-11-2003 à 14:52:02    

Dans le cas ou on stocke dans un cookie le mdp de l'utilisateur, hashé en md5 par exemple, j'vaais pensé à le traffiquer un tout petit peu, genre je prends la dernière lettre du truc généré par le md5 et je la fous au début. Comme ca, si quelqu'un essaye de faire un truc à partir de ce md5, il partira dès le départ sur un truc faux. Evidemment après sur le site suffit juste de faire l'opération inverse pour retrouver le "vrai" md5.

Reply

Marsh Posté le 19-11-2003 à 16:03:20    

Je pensais moi à "md5isé" le mot de pass, puis de lui ajouter le sha de ce meme mot de passe, l'insérer dans la base et ainsi la personne qui accède a la base de données, va chercher soit un sha soit un md5...
Bref varianter le résultat ...

Reply

Marsh Posté le 19-11-2003 à 16:44:57    

KrisCool a écrit :

De toute façon pour pouvoir exploiter la non-unicité des hash md5, il faut justement avoir récupéré le hash md5 du mot de passe. Ce qu'on trouve généralement dans un cookie déposé pour éviter à l'utilisateur de rerentrer son mot de passe (lorsqu'on ne passe pas par un identifiant unique de session).
on est bien d'accord
 
A ma connaissance, le vol de cookies ou d'id de session ne peut se faire que s'il existe déjà d'autres vulnérabilités sur le site ou sur la machine cliente. Donc ça revient à dire "si le site a des failles, le md5 présente un risque". Autant lutter directement contre les problèmes existants, notamment l'injection et le vol d'id de sessions.
Tout à fait, sauf que certaines failles ne sont pas spécialement liées au site, mais tout simplement au browser :/
 
Pour éviter la force brute, le système utilisé par Yahoo est assez simple : au bout de 5 essais manqués, la saisie d'un texte depuis une image générée est requise. Les erreurs d'innatention ou de frappe de l'utilisateur ne sont pas pénalisantes pour lui, un bot faisant du bruteforce sera systématiquement débouté.
C'est en effet une bonne possibilité :jap:
 
Sinon il est toujours possible d'utiliser un cryptage plus complexe sur le mot de passe (en dehors de toute considération de https) et de conserver une clé sur le serveur. A la condition que ni la clé ni les versions cryptées du pass ne soient accessibles, l'attaquant peut toujours essayer de trouver un pass qui marche (il aura plus vite fait de tenter quelques passwords classiques de dictionnaire)
yep, et pour éviter les attaques au dictionnaire, forcer l'utilisateur à utiliser un mot de pass généré aléatoirement.

Reply

Marsh Posté le 20-11-2003 à 02:25:55    

Citation :

Et quand tu utilises une protection avec clefn non seulement tu utilise un principe de clef public/clef privée, ce qui permet de ne pas faire voyager n'importe quoi sur le réseau, mais en outre tu le fais via un canal sécurisé, https par exemple.


 
Et si tu lisais ce que j'ai écrit, tu comprendrais que l'utilisation de clée privées et publiques ne change rien au problème. Si tu chiffres les mots de passe, c'est parce que tu as peur que quelqu'un accède aux passwords. Or si ce quelqu'un peut accéder aux passwords (chiffrés), il peut tout aussi bien accéder a la clée privée, puisque cette clée privée est faite pour être lue par le même programme qui lit aussi les pass chiffrés. Physiquement elle sera sur la même machine que les pass, ou pas bien loin. Mais en tout cas accessible.


Message édité par matafan le 20-11-2003 à 02:27:08
Reply

Marsh Posté le 20-11-2003 à 09:02:24    

Sauf que tu supposes que l'attaque se fait sur le serveur, alors qu'il est NETTEMENT plus facile de s'attaque au client.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed