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 : 

 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 :

 Une application pour iOS. L'implémentation iOS a été créé en 2012.
 Une application pour Mac OS X
 Une application pour Android
 Une application avec interface graphique écrit en Java
 Une application en terminal écrit en C
 Une extension pour le navigateur Firefox et Chrome
 Une application web écrit en JavaScript

Références

Liens externes 

Cryptographie