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
.

Documents pareils