Crée un systeme pour crypter les mdp - PHP - Programmation
Marsh Posté le 12-11-2012 à 10:22:28
T'as fait comment?
Ca pourrait servir à d'autres
Marsh Posté le 23-11-2012 à 14:02:42
Bonjour,
Si tu veux crypter au mieux tes mots de passe le meilleur moyen est l'utilisation d'un salt fixe et d'un salt variable.
Le salt fixe sera un texte en dur ( ex : '1234azer') et le salt variable sera une donnée dynamique ( ex : un id client ou un time() )
Exemple : sha1($saltFixe.'monMotDePasse'.$saltVariable) ;
Marsh Posté le 23-11-2012 à 14:22:04
Quel est l'intérêt de mettre un salt fixe s'il met un salt variable suffisamment complexe
Marsh Posté le 23-11-2012 à 14:27:28
Imaginons que nous avons un hacker en herbe qui arrive devant un mot de passe hashé avec un time() en salt variable. Si il comprend que son salt variable est une date Unix, il pourra donc trouver une partie du mot de passe.
Le salt fixe est comme un deuxième verrou à une porte d'entrée.
Marsh Posté le 23-11-2012 à 15:16:27
Pour les mots de passe à hasher en base, oubliez toutes vos conneries. Bcrypt. Et une fois php 5.5 dispo, password_hash().
http://codahale.com/how-to-safely-store-a-password/
http://blog.ircmaxell.com/2012/04/ [...] rdlib.html
Marsh Posté le 23-11-2012 à 15:37:16
Le blowfish c'est bien ... Mais lent.
Comme précisé dans l'article que tu as donné : How much slower is bcrypt than, say, MD5? Depends on the work factor. Using a work factor of 12, bcrypt hashes the password yaaa in about 0.3 seconds on my laptop. MD5, on the other hand, takes less than a microsecond.
De plus BCrypt (si je ne me trompe pas) est une bibliothèque à rajouter.
Je n'utilise dans ma méthode que des fonctions implémentées de base dans PHP.
Pour ce qui est de password_hash, comme tu le dis, il faut une 5.5, si tu es sur un serveur mutualisé (ou un dédié pas à jour) .... Tu oublies ^^'
De plus, si tu arrives à trouver un mot de passe crypté avec une méthode qui contient un salt fixe et un salt variable, je te tire mon chapeau.
Marsh Posté le 23-11-2012 à 15:54:50
C'est justement ce qui fait son intérêt ici... Ça rend les attaques par force brute beaucoup plus difficiles.
Marsh Posté le 23-11-2012 à 16:52:20
Bcrypt est dispo de base dans php depuis la version 5.3. Et le but est bien d'avoir quelque chose de lent pour limiter les possibilité de la personne qui attaque ta base.
Le fait de hasher les mots de passe dans une base de donnée sert à bloquer un type d'attaque : celle où on a pompé ta base de données. Donc tout ce qui est salt peut être considéré comme connu par ceux qui cherchent à casser du mot de passe.
Et pour casser les mots de passe, ils vont utiliser du dictionnaire (ceux-ci ont bien progressé ces dernières années grâce à toutes les grosses bases qui sont devenues publiques) voire du bruteforce.
Le but étant de se faire une liste de mdp associé à des logins ou adresses e-mail car la plupart des gens utilisent les mêmes pour plein de site.
Penser que sa base de données ne sera jamais leakée, c'est oublier qu'il suffit d'une personne ayant accès à l'un des serveurs ou des backups de ton site motivées pour se faire plaisir. Cela va du personnel faisant l'entretien dans tes bureaux au patron de la boîte qui héberge tes serveurs.
Au final, si tu n'es pas capable d'être à jour en ce qui concerne la sécurité de ce genre de données, tu ne les stockes pas (un peu comme pour les données de CB qui demandent des certifications particulières). De nombreux systèmes d'authentification déportée existent pour cela : OAuth, facebook connect etc.).
Marsh Posté le 10-11-2012 à 12:43:06
Bonjour ,
j'aimerais crée un système pour crypter les mots de passe voulu sur mon site .
Comme celui si par exemple : http://www.siteduzero.com/uploads/ [...] passwd.php