Langages du Web – PHP (M2 CCI) Stockage des mots de passe
Transcription
Langages du Web – PHP (M2 CCI) Stockage des mots de passe
Utilisation du contexte Stockage des mots de passe Stockage des mots de passe Langages du Web – PHP (M2 CCI) Problématique : Bertrand Estellon Aix-Marseille Université Département Informatique et Intéractions ▶ Menace : vol des données de la table contenant les mots de passe ▶ Un mot de passe est souvent utilisé sur plusieurs sites ▶ Le vol de mot de passe en clair est une attaque sérieuse ▶ Donc ne jamais conserver les mots de passe en clair 17 janvier 2017 . Bertrand Estellon (AMU) . . . . . . . . . . . . . . . . . . . . . Langages du Web – PHP (M2 CCI) Utilisation du contexte . . . . . . . . . . . . 17 janvier 2017 . . . . . . . 1 / 179 Bertrand Estellon (AMU) Stockage des mots de passe Utilisation du contexte . . . . . . . . . . . . . Langages du Web – PHP (M2 CCI) Une bonne fonction de hachage pour notre problème : La fonctions de PHP pour “hacher” un mot de passe : ▶ minimise si possible les collisions ▶ doit s’évaluer rapidement ▶ doit être difficilement inversible attaque par dictionnaire ▶ attaque par brut force ▶ attaque par “Rainbow table” . . . . . . 162 / 179 La fonctions de PHP pour vérifier un mot de passe : $password_is_correct = password_verify($password, $hash); Exemple de mot de passe haché par la fonction de PHP : <?=password_hash("zadiahdaajzd", PASSWORD_DEFAULT) ?> Le résultat de l’exécution de la ligne précédente : $2y$10$OCJuVTJ/XiwEMyGLvAc.ze2b0eq2oK7VQMdg01iQBPiBdQZB4qlQe Idée pour contrer les attaques par dictionnaire : ajouter un “sel”, c’est-à-dire, une partie aléatoire au mot de passe avant d’appliquer la fonction de hachage afin de rendre difficile l’inversion de la fonction. . Bertrand Estellon (AMU) . . $hash = password_hash($password, PASSWORD_DEFAULT); Les attaques possibles pour essayer d’inverser la fonction : ▶ . . Stockage des mots de passe Stockage des mots de passe va d’un ensemble possiblement infini vers un ensemble fini . . . . . . . . 17 janvier 2017 Stockage des mots de passe ▶ . . . . . . . . Langages du Web – PHP (M2 CCI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 janvier 2017 . . . . . . . . . 163 / 179 . L’algorithme utilisé (2y), les paramètres de l’algorithme (10), le sel et le résultat du hachage sont stockés dans la chaîne. . Bertrand Estellon (AMU) Langages du Web – PHP (M2 CCI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 janvier 2017 . . . . . . . . . 164 / 179 . Utilisation du contexte Stockage des mots de passe Le modèle Sessions_model class Sessions_model extends Model { public function __construct() { session_start(); } public function login($user) { $_SESSION['logged_user'] = $user; } public function logged_user() { if (session_id() === "") return null; if (!isset($_SESSION['logged_user'])) return null; return $_SESSION['logged_user']; } public function logout() { session_destroy(); } } . Bertrand Estellon (AMU) Langages du Web – PHP (M2 CCI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 janvier 2017 . . . . . . . . . 165 / 179 .