Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
sio:bloc3:passwords [2023/02/22 20:36] – créée jcheron | sio:bloc3:passwords [2023/02/22 23:19] (Version actuelle) – [Références :] jcheron | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
Ce stockage doit être réalisé de manière sécurisée. En effet, en cas de compromission de cette base (si elle a été récupérée ou rendue publique par un attaquant), les mots de passe seront directement révélés s’ils sont stockés en clair, ou s'il sont insuffisamment protégés. | Ce stockage doit être réalisé de manière sécurisée. En effet, en cas de compromission de cette base (si elle a été récupérée ou rendue publique par un attaquant), les mots de passe seront directement révélés s’ils sont stockés en clair, ou s'il sont insuffisamment protégés. | ||
- | ===== Défense en profondeur ===== | + | ====== Défense en profondeur |
- | ==== 1. Sécurisation du système de stockage ==== | + | ===== 1. Sécurisation du système de stockage |
L' | L' | ||
Ligne 13: | Ligne 13: | ||
* Chiffrement des données échangées ; | * Chiffrement des données échangées ; | ||
* Mise en place d'une authentification avec droits (pour réduire la surface d' | * Mise en place d'une authentification avec droits (pour réduire la surface d' | ||
+ | <WRAP important> | ||
Cette sécurisation est insuffisante et peut ne pas empêcher l' | Cette sécurisation est insuffisante et peut ne pas empêcher l' | ||
Ligne 20: | Ligne 21: | ||
* Injections noSQL | * Injections noSQL | ||
* Injections LDAP | * Injections LDAP | ||
- | La sécurisation du système de stockage doit donc s' | ||
- | ==== 2. Méthodes de protection des mots de passe ==== | + | </ |
- | === 2.1 Chiffrement ou cryptage === | + | <WRAP tip> |
+ | La sécurisation du système de stockage doit donc s' | ||
+ | </ | ||
+ | ===== 2. Méthodes de protection des mots de passe ===== | ||
+ | ==== 2.1 Chiffrement ou cryptage | ||
Principe : | Principe : | ||
Ligne 35: | Ligne 39: | ||
Pour déchiffrer, | Pour déchiffrer, | ||
+ | <WRAP important> | ||
Le chiffrement de mots de passe n'est pas sécurisé, dans la mesure où : | Le chiffrement de mots de passe n'est pas sécurisé, dans la mesure où : | ||
- | toute la protection repose sur la non divulgation de la clé, | + | * toute la protection repose sur la non divulgation de la clé, |
- | la clé peut être découverte à partir d'un mot de passe en clair et sa version chiffrée. | + | |
+ | |||
+ | </ | ||
+ | <WRAP tip> | ||
Pour les autres données (autres que le mot de passe) qui nécessite une sécurisation, | Pour les autres données (autres que le mot de passe) qui nécessite une sécurisation, | ||
+ | </ | ||
- | Algorithmes | + | === Algorithmes |
- | DES : Data Encryption Standard (dep) | + | |
- | AES : Advanced Encryption Standard (128, 192, 256) | + | |
- | MARS | + | |
- | RSA (clés asymétriques) | + | |
- | === 2.2 Hachage === | + | |
+ | |||
+ | ==== 2.2 Hachage | ||
Le hachage est un procédé qui utilise un algorithme pour convertir du texte en clair en valeurs numériques : | Le hachage est un procédé qui utilise un algorithme pour convertir du texte en clair en valeurs numériques : | ||
Ligne 59: | Ligne 70: | ||
Comparaison avec l' | Comparaison avec l' | ||
Si les 2 mots de passe sont identiques sous leur forme hachée, le mot de passe est bon. | Si les 2 mots de passe sont identiques sous leur forme hachée, le mot de passe est bon. | ||
- | 2.2.1 Algorithmes | + | === 2.2.1 Algorithmes |
MD5 : Message-Digest Algorithm 5 | MD5 : Message-Digest Algorithm 5 | ||
SHA : Secure Hash Algorithm (sha1 (déprécié), | SHA : Secure Hash Algorithm (sha1 (déprécié), | ||
Argon2 (memory hard) | Argon2 (memory hard) | ||
bcrypt (avec sel, basé sur Blowfish) | bcrypt (avec sel, basé sur Blowfish) | ||
- | ==== 2.2.2 Failles | + | |
+ | === 2.2.2 Failles === | ||
Vétusté de certains algorithmes : | Vétusté de certains algorithmes : | ||
Ligne 73: | Ligne 86: | ||
Rainbow tables : Tables de correspondance entre mots et empreintes (consultables sur internet) | Rainbow tables : Tables de correspondance entre mots et empreintes (consultables sur internet) | ||
Comparaison possible des hashs et déduction si toute la base est accédée | Comparaison possible des hashs et déduction si toute la base est accédée | ||
- | 2.3 Salage | + | |
+ | ==== 2.3 Salage | ||
Pour contrer les deux failles précédentes, | Pour contrer les deux failles précédentes, | ||
Le même mot de passe ne produit plus jamais la même empreinte, mais comme la chaîne utilisée comme sel est accessible au programme, on peut toujours hacher un mot de passe fourni pour le comparer au mot de passe stocké. | Le même mot de passe ne produit plus jamais la même empreinte, mais comme la chaîne utilisée comme sel est accessible au programme, on peut toujours hacher un mot de passe fourni pour le comparer au mot de passe stocké. | ||
+ | <WRAP tip dark> | ||
Il est recommandé d’utiliser un sel choisi aléatoirement pour chaque compte et d’une longueur d’au moins 128 bits. | Il est recommandé d’utiliser un sel choisi aléatoirement pour chaque compte et d’une longueur d’au moins 128 bits. | ||
Utiliser une fonction de dérivation de mots de passe memory-hard pour pénaliser les attaques par force brute. | Utiliser une fonction de dérivation de mots de passe memory-hard pour pénaliser les attaques par force brute. | ||
- | Références : | + | </ |
- | [[Guide ANSSI authentification et mots de passe]] | + | ==== Références : ==== |
+ | |||
+ | {{: |