Master Password (algorithme)

Master Password est un algorithme créé par Maarten Billemont pour créer des mots de passe de manière reproductible. Il est différent du gestionnaire de mots de passe car les mots de passe ne sont pas stockés sur le disque dur ou sur un serveur, mais ils sont recréés à chaque fois que l'utilisateur entre les mêmes informations ; principalement, leur nom complet, un mot de passe maître et un nom unique pour chaque site internet pour lequel il est destiné.

Par le fait de ne stocker aucun mot de passe, cette approche essaye de rendre plus difficile les attaques sur les bases de données ou les interceptions de mots de passe. Elle permet aussi de ne plus avoir besoin de synchronisation entre les appareils ou de sauvegardes de la potentielle base de données. Elle permet aussi d'éliminer le risque d'une fuite de mot de passe depuis la base de données.

L'algorithme

L'algorithme implique les paramètres suivants[1] :

  • Le nom : Le nom complet de l'utilisateur, utilisé comme un sel.
  • Le mot de passe maître : Le mot de passe utilisé pour générer la clé maîtresse
  • Le nom du site internet : Un nom unique pour chaque service auquel le mot de passe est associé. Souvent le nom de domaine est utilisé comme nom du site.
  • Le compteur : Un nombre entier qui peut être incrémenté quand il faut modifier le mot de passe. Par défaut, sa valeur est 0.
  • Le type de mot de passe : Le type de mot de passe défini la longueur et la constitution du mot de passe finale, voir ci-dessous.

Génération de la clé maîtresse

La clé maîtresse est une chaine de caractères de 64 octets généré à partir du mot de passe maître et salé en utilisant le nom complet de l'utilisateur. Le sel est utilisé pour éviter les attaques par Rainbow table. L'algorithme scrypt, intentionnellement lent, est utilisé pour générer la clé pour rendre une attaque par brute-force impossible.

salt = "com.lyndir.masterpassword" + length(name) + name
master_key = scrypt(master_password, salt, 32768, 8, 2, 64)

Générations de modèles de départ

Le modèle de départ (ou template seed) est un mot-de-passe secret unique à chaque site internet, généré à partir de la clé maîtresse, du nom du site et du compteur en utilisant l'algorithme HMAC-SHA256. Il est ensuite converti en une suite de caractères en utilisant les modèles de mots de passes. Le modèle de départ fait en sorte que chaque site aie un mot de passe unique pour l'utilisateur.

seed = hmac_sha256(clé maîtresse, "com.lyndir.masterpassword" + length(nom_du_site) + nom_du_site + compteur)

Implémentations

Maarten Billemont a créé plusieurs logiciels libres implémentant cet algorithme, sa license est GPLv3[2] :

Références

  1. Maarten Billemont, « The Master Password Algorithm » [archive du ] (consulté le )
  2. « License file of the MasterPassword repository » (consulté le )
  3. Maarten Billemont, « Release 1.0.0 » (consulté le )
  4. Masterpassword's Firefox add-on
  5. Masterpassword's Chrome plugin
  6. Maarten Billemont, « Master Password Homepage » (consulté le )

Liens externes

Site officiel