Cette API est consommée par l'extension navigateur officielle, dont le code se trouve ici : ➡️ pm-extension
1. Interaction serveur
-
L’utilisateur crée son compte ou se logue avec
username+password. -
Le serveur renvoie :
- Un
JWTpour l’authentification des requêtes futures. - Son coffre chiffré existant (vide la première fois, sinon un tableau de credentials chiffrés).
- Un
2. En local
-
L’utilisateur saisit pour la première fois son
masterPassword. -
On dérive une clé (
deriveKey) depuis lemasterPasswordet unsaltaléatoire. -
On crée un credential de vérification :
domain = "password-manager"ciphertext = encrypt(deriveKey, "valid")(ou un payload simple type"PMv1:<username>")ivetsaltgénérés.
-
Ce credential permet de tester la validité future du masterPassword.
-
On déchiffre tout le coffre reçu du serveur (s’il y en a) avec
deriveKey. -
Les credentials sont stockés en local (ex:
chrome.storage.local), chiffrés avecderiveKey. -
Si l’utilisateur sauvegarde de nouveaux passwords, ils sont chiffrés avec
deriveKeyet envoyés à l’API pour stockage.
1. Interaction serveur
-
L’utilisateur se logue avec
username+password. -
Le serveur renvoie :
- Un
JWTvalide. - Le coffre chiffré.
- Un
2. En local
-
L’utilisateur saisit son
masterPassword. -
On dérive la clé (
deriveKey) Ă nouveau depuis ce masterPassword. -
On tente de déchiffrer le credential spécial
domain = "password-manager":- Si le déchiffrement est correct et que le payload correspond (
"PM:<username>"), le masterPassword est valide. - Sinon, on affiche une alerte
"Mauvais master password".
- Si le déchiffrement est correct et que le payload correspond (
-
Si masterPassword correct :
- On peut déchiffrer l’ensemble du coffre.
- L’utilisateur peut autofill, créer, modifier ou supprimer des credentials.
- Les nouvelles entrées sont chiffrées localement avec
deriveKeyet envoyées au serveur.
- JWT : utilisé uniquement pour authentifier les requêtes côté serveur. Il change régulièrement et n’est pas utilisé pour le chiffrement.
- MasterPassword / deriveKey : jamais envoyé au serveur. Sert uniquement à chiffrer/déchiffrer le coffre.
- Credential de vérification (
password-manager) : permet de tester que le masterPassword est correct sans stocker de données sensibles en clair.