Hachage ou crypographie?

Mammouth du PHP | 843 Messages

20 mars 2006, 00:36

salut à tous :)

j'ai besoin de securiser des mots de pass stocker en db et je voulai en savoir un peu plus avant de commencer :roll:
c'est pour protège encore plus l'acces à un site mais il n'y aura pas autre chose à crypter que le mot de pass de l'utilisateur

j'ai deja lu l'interessant tutorial de RIPAT sur phpfrance ainsi que les liens sur le hachage et la crypographie...

si je comprend bien, le hachage sans clé est un condensé irreversible (MD5 ou SHA1)

la crypographie quand à elle est un hachage avec clé et/ou clé publique (blowfish, CAST, rijndael, SERPENT, ...)

pour mon utilisation, je voulait avoir l'avis de personnes sensibilisées et habituer à ces méthodes :wink:

1) si j'utilise le hachage, mes pass seront hachées en db et il me foudra donc, lors de la connection de l'utilisateur, hacher le pass entrer et le comparer à celui en db?

2) Pour des raisons évidentes de sécurité, je suppose qu'il faudra mettre hors racine www la fonction de hachage et l'appeler par include?

3) penser vous que la crypographie soit plus facile à mettre en place et à utiliser dans mon cas?

Merci d'avance :pouce:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 1967 Messages

20 mars 2006, 01:52

salut à tous :)
si je comprend bien, le hachage sans clé est un condensé irreversible (MD5 ou SHA1)
oui bien qu'il soit possible de revenir en arrière, le tout est une question de temps, de nombre de caractères et des caractères spéciaux contenu
1) si j'utilise le hachage, mes pass seront hachées en db et il me foudra donc, lors de la connection de l'utilisateur, hacher le pass entrer et le comparer à celui en db?
c'est tou à fait ca oui
2) Pour des raisons évidentes de sécurité, je suppose qu'il faudra mettre hors racine www la fonction de hachage et l'appeler par include?
c'est impératif
3) penser vous que la crypographie soit plus facile à mettre en place et à utiliser dans mon cas?
mettre en place un cryptage "mcrypt" (voir tutoriel tutoriel mcrypt) n'est pas difficile du tout, je le pensais avant d'avoir essayer

Reste le point de vue éthique : il n'y a pas de raison que tu puisse connaitre les mot de passe des utilisateur de ton site, beaucoup utilise toujours le meme.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 254 Messages

20 mars 2006, 12:23

md5 est une des solutions les + sures, je n'ai vu aucun systeme sur les sites de hacking qui permettent de faire un vraie inverse d'un MD5 :D

donc le hackeur devra faire un script de brut force pour trouver un des mot de passe et ceci peut tres fcilement etre detecte ... sans compter qu'en utilisant des mots de passe d'une longueur > 6 caracteres et surtout avec autre chose que des nombres il est tres tres long d'en trouver un de cette maniere !

evite la crypto car elle peut etre inversé .... c'est pas tout le monde qui peut y arriver mais un tres bon hacker avec du matos peut le faire ....

ViPHP
ViPHP | 1380 Messages

20 mars 2006, 15:47

La première question à se poser est celle-ci: est-il indispensable de pouvoir regénérer un mot de passe ou texte crypté?

Si oui -> mcrypt

Sinon -> md5() ou sha1() beaucoup plus rapides et un peu plus sécurisés.

Ce sont deux outils différents, apportant une solution à des besoins différents.
ripat

Eléphant du PHP | 312 Messages

20 mars 2006, 16:27

le md5 t'empêche de mettre en place la fonctionnalité "me rappeler mon mot de passe par mail".
Tu es obligé de regénérer un mot de passe et ne peux pas envoyer l'ancien.

Mammouth du PHP | 843 Messages

20 mars 2006, 16:54

merci pour toutes ces précisions :wink:

pour la cryptographie, on peut avoir jusqu'à 32 clé et 32 IV mais pourquoi en avoir autant?

j'ai mal compris aussi pour la notion de clé publique et clé priver. enfin niveau principe de fonctionnement si mais pas niveau devellopement :?

donc si quelqu'un veut s'étendre sur le sujet, sa fera un sujet interresant pour tous ceux qui se poseront la question par la suite ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 312 Messages

20 mars 2006, 17:15

Je suppose que si on veut s'étendre sur l'aspect développement, il faut savoir quel algo de crypto tu comptes utiliser (je sais pas trop ce qui est fourni de base avec php).

Il faut savoir que la cryptographie asymétrique (avec un système de clef publique et privé) est plus long qu'avec une cryptographie symétrique (avec une clef qui crypte et la même clef qui décrypte).

L'idéal, pour gagner du temps, est donc de crypter de façon symétrique les données et de crypter en asymétrique la clef de cryptage. Bien sur, ça n'a aucun intérêt si la clef est plus longue que la donnée à crypter.

C'est le système employé par PGP, si je me trompe pas.

Mammouth du PHP | 843 Messages

24 mars 2006, 12:53

en faite je voulait savoir si 32 etait la taille des clé et IV ou si c'était aussi leur nombre maxi (32 clé et 32 IV par exemple)

merci d'avance :pouce:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 312 Messages

24 mars 2006, 13:00

Non ça doit être leur taille maxi.
La législation (elle diffère selon les pays) fait que tu ne peux pas utiliser une clef trop grande pour crypter tes données, pour que l'état ait à tout moment la possibilité de casser ton code.

La taille maximale des clefs dépend de la complexité de l'aglorithme à casser.

Donc je pense que ça concerne la taille maximale des clefs et pas leur nombre maximal...

Mammouth du PHP | 843 Messages

24 mars 2006, 16:25

donc il n'y a pas de limitation du nombre de clé ou de IV utilisés ;)
bien que l'utilisation d'un trop grand nombre n'est pas vraiment judicieux, je me demande encore une chose:

si on utilise des clés publiques, combien de clé publiques faut il pour une clé privé? (un maximum ou au contraire tres peu)

merci d'avance pour vos conseils :pouce:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 312 Messages

24 mars 2006, 17:05

Il n'y a qu'une clef publique par clef privée, et vice versa.
Un logiciel te fournissant un système de clef publiques/privées te filera à chaque fois un couple de 2 clefs, c'est tout.

Mammouth du PHP | 843 Messages

24 mars 2006, 18:59

ok merci :wink:

je pense avoir fait le tour de la question (ou presque)
je met résolu au sujet, mais si certains veulent donnés un point de vue ou un conseil, lacher vous :D

ça fera un topic interessant pour qui decouvre le cryptage :wink:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 312 Messages

27 mars 2006, 09:15

Sans entrer trop en détail dans les algorithmes (enfin certains apprécient de comprendre jusqu'au bout), la crypto est très intéressante, surtout quand on regarde comment elle a évolué au fil des siècles.

Dans le cadre d'un exposé sur le cryptographie quantique, j'avais lu un bouquin qui racontait l'histoire de la crypto, faudrait que je retrouve le titre.

Eléphant du PHP | 383 Messages

29 mars 2006, 21:32

je suppose que c'etait "histoire des codes secrets", de Simon Singh ( qui a aussi ecrit "le dernier theoreme de fermat" )... en effet, c'est passionnant, haletant, surtout le passage Alan Turing VS la machine a crypter des allemands ( enigma) pendant la seconde guerre... mathematiques, espionnage, courses contre la montre, un vrai thriller et une part inconstestable de la victoire des allies..

sinon, on a deja eu un debat sur ce sujet ya pas tres longtemps..., fais une petite recherche ! mais en gros, la regle d'or a mon sens en cryptographie, c'est que toute fonction qui n'est pas indispensable est a proscrire. le fait de pouvoir rendre son mot de passe a un utilisateur en cas d'oubli est a mon avis accessoire ( suffit d'en generer un au hasard et de lui envoyer ) : s'il l'a oublie, c'est qu'il ne lui manquera pas, et si vraiment il veut le choisisr, prevoir une fnction qui lui permet de le changer, c'est un effort minime pour l'usager, et cela t'evite d'utiliser un cryptage symetrique... en effet :

- si tu utilise un cryptage symetrique, c'est qu'il y a une cle quelque part. meme si elle est bien planquee, sa simple existence est un danger potentiel et inutile : si un pirate met la main dessus ( c'est tout a fait possible ), il sera en mesure de decoder tous les mots de passe.
- en plus, un cryptage symetrique est plus couteux en temps de calcul, plus complexe a rendre sûr ( cf juste au dessus ). sans parler du fait qu'un mdp hasché a une taille fixe -> bon pour la BDD

donc a mon avis, il n'y a pas a hesiter : c'est haschage point barre. c'est une question de bon sens ( et d'ethique, comme l'a dit qqn plus haut ). a priori, PHP permet de hascher en SHA-1, voire en SHA-256 pour les paranos. ( mais MD5 est encore tres secure et trs loin d'etre cassé, contrairement a ce qu'on entends ici ou la, on a trouve des collisions sur des cas particulier, c'est tout.)

accessoirement, la fonction de hascahge ( contrairement a une fonction de cryptage ) n'as pas du tout a etre planque, vu qu'elle fait toujours la meme chose, mais que ce qqchose est irreversible.

si tu as d'autre question...



:D

Eléphant du PHP | 383 Messages

29 mars 2006, 22:13

ah, et j'oubliasi : le principe du cryptage assymetrique ( cle publique / prive ) ne s'applique pas du tout dans le cadre de protection de mot de passe.. par contre, si tes utilisateurs possedent PGP ou tnunderbird avec le plugin enigmail, tu peux leur proposer de stocker leur cle publique pour leur envoyer leur(s) mot(s) de passe via un mail cryptés..