Pour autant que je sache, les versions actuelles de Mozilla Firefox stockent les mots de passe enregistrés (cryptés avec 3DES ) au logins.json
fichier pendant ce temps les clés sont stockées dans key4.db
(ou key3.db
dans les anciennes versions).
Si l'on n'a pas configuré Master Key pour les mots de passe, le fichier de base de données de clés est alors accessible. Dans la base de données, j'ai rencontré une entrée qui ressemble en effet aux clés.
------------------------------
| id | item1 | item2 |
------------------------------
| password | ... | ... |
------------------------------
Alors, pourquoi y a-t-il peut-être deux clés 3DES dans la base de données? S'agit-il vraiment de clés de chiffrement? Comment puis-je les utiliser pour décrypter le logins.json
Les données? Quelle option de saisie est utilisée?
Le commentaire de @ jnylen a donné source de l'algorithme .
Dans la structure de données, item1
est le sel global, et item2
contient (dans l'encodage DER) le sel d'entrée et la clé chiffrée. Cette clé est utilisée pour crypter le reste des données (par nom d'utilisateur et mot de passe).
Le cryptage de la clé principale se fait avec 3DES-CBC, avec une clé (et IV) dérivée du mot de passe principal, un sel global et un sel "par entrée". Par défaut, le mot de passe principal est la chaîne vide. L'entropie du mot de passe est limitée à 160 bits par sha1, qui est en outre limitée à 112 bits par 3DES. Le mot de passe n'est pas renforcé en utilisant plusieurs itérations d'un hachage.
Le cryptage des éléments (noms d'utilisateur et mots de passe) se fait à l'aide de 3DES-CBC, avec une IV incluse dans les métadonnées de chaque élément. La façon dont IV est généré ne peut pas être devinée à partir de cette source de l'algorithme.
À moins que les IV ne soient mal générés, la petite quantité de données cryptées signifie que la meilleure attaque contre 3DES est le forçage brutal de la clé principale ou du mot de passe de l'utilisateur. La limite supérieure de 112 bits signifie que cet algorithme est considéré comme faible par les normes d'aujourd'hui: une grande organisation avec des ressources énormes pourrait être capable de forcer la clé en force dans quelques décennies. Les ordinateurs quantiques pourraient les casser plus rapidement.
En pratique, cela signifie qu'une bonne phrase de passe longue doit être utilisée comme mot de passe principal. Cet algorithme a besoin d'une bonne refactorisation, passant aux meilleures pratiques actuelles: Argon2id avec au moins 128 Mo et 3 itérations, et un chiffrement AEAD (comme ceux utilisés dans TLS 1.3).