Un peu de "Salts" avec vos mots de passe ?
lundi 3 mars 2008 à 09:41
Un nouveau tutoriel sur les mots de passe vient de sortir sur www.apprendre-php.com. Il traite de comment sécuriser les mots de passe adéquatement. Tout le monde connait et utilise bien sur le hashshage à l'aide de md5 ou sha1. Ce qui a piqué m'a curiosité dans ce tutoriel ce sont les salts.
Qu'est ce que les salts ? Les salts ne sont en fait que des sortes de clés, gardé secrètes du côté de votre application PHP et qui combinés à vos mots de passe renforce la sécurité de ceux ci. Mais pourquoi utiliser les salts alors que les hashs ne sont pas réversibles ? À cause des Tables Arc-en-ciel. Comment ça les table arc-en-ciel me direz-vous ? Vous devez pensez que je débloque complètement là non ?
Ces tables sont en fait des dictionnaires qui nous permettent rapidement de savoir un mot de passe à partir d'un hash. Vous comprennez donc qu'il s'agit d'un jeu d'enfant d'essayer de retrouver le bon mot de passe à partir d'un hash. Voyons donc un exemple:
Créons les salts dans votre fichier de configuration.
// config.inc.php
$salt1 = 'Windor!';
$salt2 = 'NosCompliments!';
Comment les utilisons nous:
// index.php
// On inclut notre fichier de configuration.
require_once('conf/config.inc.php');
// On obtient le hash dans la base de données.
$hashDb = getHashDb();
// On construit le hash du mot de passe fournit par l'utilisateur.
$hashMdp = md5 ( $salt1 . $mdp . $salt2 );
// On compare les hashs.
if( $hashMdp === $hashDb )
{
echo 'Mot de passe valide !';
}
else
{
echo 'Mot de passe invalide !';
}
Voilà ! Aussi simple que ça !
Rien ne vous empêche d'ajouter plus de salts ou de combiner plusieurs méthodes de hash dans votre vérification.
par exemple:
$monHash = sha1( md5( $salts1 ) . sha1( $mdp ) . md5( md5( $salts2 ) . md5( $salts3) ) );





Commentaires
Aucun commentaire pour le moment.
Trackbacks
Aucun trackback.
Les trackbacks pour ce billet sont fermés.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.