Salage de mot de passe : Différence entre versions

Attention : vous consultez actuellement la documentation dédiée aux versions 1.x de Moodle. La documentation pour les versions 2.x de Moodle est consultable ici : Salage de mot de passe et celle pour Moodle 3.x est consultable là : Salage de mot de passe.

(Qu'est-ce que le salage de mot de passe ?)
 
(3 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
 
Dans la base de données de Moodle, les mots de passe sont stockés sous forme cryptée, que l'on appelle '[http://fr.wikipedia.org/wiki/MD5 empreinte md5] du mot de passe'.
 
Dans la base de données de Moodle, les mots de passe sont stockés sous forme cryptée, que l'on appelle '[http://fr.wikipedia.org/wiki/MD5 empreinte md5] du mot de passe'.
  
Le [http://fr.wikipedia.org/wiki/Salage_%28cryptographie%29 salage de mot de passe] est une méthode de rendre l'empreinte des mots de passe plus sûre en ajoutant aux mots de passe une chaîne de caractères aléatoires avant de calculer leur empreinte md5, ce qui rend beaucoup plus complexe l'opération de retrouver le mot de passe à partir de son empreinte. Plus la chaîne aléatoire est longue, et plus cette opération est rendue complexe.
+
Le [http://fr.wikipedia.org/wiki/Salage_%28cryptographie%29 salage de mot de passe] est une méthode pour rendre l'empreinte des mots de passe plus sûre en ajoutant aux mots de passe une chaîne de caractères aléatoires avant de calculer leur empreinte md5, ce qui rend beaucoup plus complexe l'opération de retrouver le mot de passe à partir de son empreinte. Plus la chaîne aléatoire est longue, et plus cette opération est rendue complexe.
  
 
Cette fonctionnalité existe dans toutes les versions de Moodle depuis Moodle 1.6.
 
Cette fonctionnalité existe dans toutes les versions de Moodle depuis Moodle 1.6.
Ligne 16 : Ligne 16 :
  
 
''Remarque'' : pour des raisons de sécurité, la seule façon d'activer le salage de mot de passe est la modification du fichier config.php. Il n'y a intentionnellement aucun moyen de le faire à travers l'interface web de Moodle.
 
''Remarque'' : pour des raisons de sécurité, la seule façon d'activer le salage de mot de passe est la modification du fichier config.php. Il n'y a intentionnellement aucun moyen de le faire à travers l'interface web de Moodle.
 +
 +
'''Astuce''' : Gardez noté votre sel de mot de passe ailleurs que dans le fichier config.php, pour éviter la situation de perte de votre sel de mot de passe, qui entrainerait l'obligation pour tous les utilisateurs du site d'avoir à passer par la récupération de mot de passe pour réinitialiser leur mot de passe.
  
 
==Modifier le sel==
 
==Modifier le sel==
  
Si pour quelque raison vous devez modifier le sel de mot de passe, l'ancien sel doit être conservé dans le fichier config.php en plus du nouveau sel.
+
Si pour quelque raison vous devez modifier le sel de mot de passe, l'ancien sel doit être conservé dans le [[Fichier de configuration|fichier config.php]] en plus du nouveau sel.
  
 
Dans le fichier config.php, la chaîne <code>passwordsaltmain</code> doit être pour cela modifiée en <code>passwordsaltalt1</code> (il doit s'agir exactement de ces textes, lettre pour lettre) pour l'ancien sel, comme indiqué ci-dessous.
 
Dans le fichier config.php, la chaîne <code>passwordsaltmain</code> doit être pour cela modifiée en <code>passwordsaltalt1</code> (il doit s'agir exactement de ces textes, lettre pour lettre) pour l'ancien sel, comme indiqué ci-dessous.
  
 +
$CFG->passwordsaltmain = 'nouvelle très longue chaîne de caractères aléatoires';
 
  $CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';
 
  $CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';
$CFG->passwordsaltmain = 'nouvelle très longue chaîne de caractères aléatoires';
 
  
 
Si plus tard vous modifiez encore le sel de mot de passe, il faudra conserver tous les sels précédents durant [http://www.dailymotion.com/video/x1app0_le-fut-du-canon_fun un certain temps] (jusqu'à ce que chaque utilisateur se soit connecté au moins une fois, et utilise donc le nouveau sel). On peut utiliser $CFG->passwordsaltalt2, $CFG->passwordsaltalt3, etc. pour conserver jusqu'à 20 sels précédents.
 
Si plus tard vous modifiez encore le sel de mot de passe, il faudra conserver tous les sels précédents durant [http://www.dailymotion.com/video/x1app0_le-fut-du-canon_fun un certain temps] (jusqu'à ce que chaque utilisateur se soit connecté au moins une fois, et utilise donc le nouveau sel). On peut utiliser $CFG->passwordsaltalt2, $CFG->passwordsaltalt3, etc. pour conserver jusqu'à 20 sels précédents.
  
''Attention ! Si vous modifiez le sel et ne conservez pas l'ancien dans le fichier config.php, vous ne pourrez plus vous connecter à votre Moodle !''
+
'''Attention :''' ''Si vous modifiez le sel et ne conservez pas l'ancien dans le [[Fichier de configuration|fichier config.php]], vous ne pourrez plus vous connecter à votre Moodle !''
  
 
==Désactiver le salage de mot de passe==
 
==Désactiver le salage de mot de passe==
  
'''Remarque''' : cette  opération n'est pas recommandée ! Une fois activé, le salage de mot de passe ne devrait pas être désactivé.
+
'''Remarque''' : cette  opération n'est pas recommandée ! Une fois activé, le salage de mot de passe ne devrait pas être désactivé !
  
Pour désactiver le salage de mot de passe de Moodle, vous pouvez supprimer, commenter ou définir la passwordsaltmain comme une chaîne vide.
+
Pour désactiver le salage de mot de passe de Moodle, vous pouvez supprimer, commenter ou définir la chaîne passwordsaltmain comme une chaîne vide.
  
 
  // EXEMPLE : définir passwordsaltmain comme une chaîne vide
 
  // EXEMPLE : définir passwordsaltmain comme une chaîne vide
Ligne 47 : Ligne 49 :
 
Attention, ce n'est pas encore terminé ! Vous '''devez aussi conserver l'ancienne valeur''', comme indiqué ci-dessus pour la modification du sel de mot de passe :
 
Attention, ce n'est pas encore terminé ! Vous '''devez aussi conserver l'ancienne valeur''', comme indiqué ci-dessus pour la modification du sel de mot de passe :
  
 +
$CFG->passwordsaltmain = <nowiki>''</nowiki>;
 
  $CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';
 
  $CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';
$CFG->passwordsaltmain = <nowiki>''</nowiki>;
 
  
 
==Importer des utilisateurs d'un autre Moodle==
 
==Importer des utilisateurs d'un autre Moodle==
  
Si vous importez des utilisateurs d'un autre site Moodle qui utilise un sel de mot de passe, vous devez ajouter le sel défini dans l'autre Moodle à votre fichier config.php. Jusqu'à 20 sels supplémentaires peuvent être ajoutés :
+
Si vous importez des utilisateurs d'un autre site Moodle qui utilise un sel de mot de passe, vous devez ajouter le sel défini dans l'autre Moodle à votre [[Fichier de configuration|fichier config.php]]. Jusqu'à 20 sels supplémentaires peuvent être ajoutés :
  
 
  $CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20
 
  $CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20
Ligne 60 : Ligne 62 :
 
Lorsqu'un mot de passe est vérifié par Moodle, le code recherche la variable <code>CFG->passwordsaltmain</code>. Si elle est définie, il concatène le sel et le mot de passe de l'utilisateur avant de calculer son empreinte md5.
 
Lorsqu'un mot de passe est vérifié par Moodle, le code recherche la variable <code>CFG->passwordsaltmain</code>. Si elle est définie, il concatène le sel et le mot de passe de l'utilisateur avant de calculer son empreinte md5.
  
Si une empreinte md5 du mot de passe d'un utilisateur sans sel est validée, le code suppose que le sel a été défini pour la première fois après la dernière connexion de cet utilisateur. L'empreinte du mot de passe est alors modifiée, utilisant le sel. En effet, '''le salage a lieu lors de la première connexion après la mise en place du sel dans config.php.'''
+
Si une empreinte md5 du mot de passe d'un utilisateur sans sel est validée, le code suppose que le sel a été défini pour la première fois après la dernière connexion de cet utilisateur. L'empreinte du mot de passe est alors modifiée, en utilisant le sel. En effet, '''le salage a lieu lors de la première connexion après la mise en place du sel dans config.php.'''
  
 
Si ni l'empreinte md5 sans sel, ni celle avec le sel ne sont valides, le code tente l'opération avec les 20 sels supplémentaires, les uns après les autres.
 
Si ni l'empreinte md5 sans sel, ni celle avec le sel ne sont valides, le code tente l'opération avec les 20 sels supplémentaires, les uns après les autres.
Ligne 70 : Ligne 72 :
 
Dans ce cas, le système mettra à jour l'empreinte md5 du mot de passe avec le sel principal.
 
Dans ce cas, le système mettra à jour l'empreinte md5 du mot de passe avec le sel principal.
  
[[Category:Sécurité]]
+
[[Catégorie:Sécurité]]
  
 
[[en:Password salting]]
 
[[en:Password salting]]
 
[[es:report/security/report_security_check_passwordsaltmain]]
 
[[es:report/security/report_security_check_passwordsaltmain]]

Version actuelle en date du 30 mars 2011 à 08:45

Qu'est-ce que le salage de mot de passe ?

Dans la base de données de Moodle, les mots de passe sont stockés sous forme cryptée, que l'on appelle 'empreinte md5 du mot de passe'.

Le salage de mot de passe est une méthode pour rendre l'empreinte des mots de passe plus sûre en ajoutant aux mots de passe une chaîne de caractères aléatoires avant de calculer leur empreinte md5, ce qui rend beaucoup plus complexe l'opération de retrouver le mot de passe à partir de son empreinte. Plus la chaîne aléatoire est longue, et plus cette opération est rendue complexe.

Cette fonctionnalité existe dans toutes les versions de Moodle depuis Moodle 1.6.

Activer le salage de mot de passe

Pour définir un sel de mot de passe, il suffit d'ajouter la ligne ci-dessous à votre fichier config.php :

$CFG->passwordsaltmain = 'une très longue chaîne de caractères aléatoires';

La chaîne de caractères aléatoires doit être composée d'un mélange de lettres, de chiffres et d'autres caractères. Le générateur de sel Moodle peut être utilisé pour obtenir une telle chaîne suffisamment longue. Une longueur d'au moins 40 caractères est recommandée.

Remarque : pour des raisons de sécurité, la seule façon d'activer le salage de mot de passe est la modification du fichier config.php. Il n'y a intentionnellement aucun moyen de le faire à travers l'interface web de Moodle.

Astuce : Gardez noté votre sel de mot de passe ailleurs que dans le fichier config.php, pour éviter la situation de perte de votre sel de mot de passe, qui entrainerait l'obligation pour tous les utilisateurs du site d'avoir à passer par la récupération de mot de passe pour réinitialiser leur mot de passe.

Modifier le sel

Si pour quelque raison vous devez modifier le sel de mot de passe, l'ancien sel doit être conservé dans le fichier config.php en plus du nouveau sel.

Dans le fichier config.php, la chaîne
passwordsaltmain
doit être pour cela modifiée en
passwordsaltalt1
(il doit s'agir exactement de ces textes, lettre pour lettre) pour l'ancien sel, comme indiqué ci-dessous.
$CFG->passwordsaltmain = 'nouvelle très longue chaîne de caractères aléatoires';
$CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';

Si plus tard vous modifiez encore le sel de mot de passe, il faudra conserver tous les sels précédents durant un certain temps (jusqu'à ce que chaque utilisateur se soit connecté au moins une fois, et utilise donc le nouveau sel). On peut utiliser $CFG->passwordsaltalt2, $CFG->passwordsaltalt3, etc. pour conserver jusqu'à 20 sels précédents.

Attention : Si vous modifiez le sel et ne conservez pas l'ancien dans le fichier config.php, vous ne pourrez plus vous connecter à votre Moodle !

Désactiver le salage de mot de passe

Remarque : cette opération n'est pas recommandée ! Une fois activé, le salage de mot de passe ne devrait pas être désactivé !

Pour désactiver le salage de mot de passe de Moodle, vous pouvez supprimer, commenter ou définir la chaîne passwordsaltmain comme une chaîne vide.

// EXEMPLE : définir passwordsaltmain comme une chaîne vide
$CFG->passwordsaltmain = '';


// EXEMPLE : mise en commentaire
/*
$CFG->passwordsaltmain = '';
*/

Attention, ce n'est pas encore terminé ! Vous devez aussi conserver l'ancienne valeur, comme indiqué ci-dessus pour la modification du sel de mot de passe :

$CFG->passwordsaltmain = '';
$CFG->passwordsaltalt1 = 'ancienne très longue chaîne de caractères aléatoires';

Importer des utilisateurs d'un autre Moodle

Si vous importez des utilisateurs d'un autre site Moodle qui utilise un sel de mot de passe, vous devez ajouter le sel défini dans l'autre Moodle à votre fichier config.php. Jusqu'à 20 sels supplémentaires peuvent être ajoutés :

$CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20

Comment fonctionne le salage de mot de passe ?

Lorsqu'un mot de passe est vérifié par Moodle, le code recherche la variable
CFG->passwordsaltmain
. Si elle est définie, il concatène le sel et le mot de passe de l'utilisateur avant de calculer son empreinte md5.

Si une empreinte md5 du mot de passe d'un utilisateur sans sel est validée, le code suppose que le sel a été défini pour la première fois après la dernière connexion de cet utilisateur. L'empreinte du mot de passe est alors modifiée, en utilisant le sel. En effet, le salage a lieu lors de la première connexion après la mise en place du sel dans config.php.

Si ni l'empreinte md5 sans sel, ni celle avec le sel ne sont valides, le code tente l'opération avec les 20 sels supplémentaires, les uns après les autres.

Si vous modifiez les sels, pour éviter que des mots de passe de comptes existants ne soient plus validés, vous devez les définir dans les sels supplémentaires.

Quand un utilisateur se connecte avec un mot de passe salé avec un ancien sel, la première vérification effectuée avec le sel principal échouera, puis le code essaiera les différents sels supplémentaires jusqu'à ce que l'un d'entre eux permette la validation du mot de passe.

Dans ce cas, le système mettra à jour l'empreinte md5 du mot de passe avec le sel principal.