Lorsque l'on demande à Firefox de mémoriser des mots de passe, il est connu que ceux-ci sont stockés dans le fichier signons.sqlite, chiffrés via 3DES avec une clé située dans key3.db [1]. Mais se posent alors plusieurs questions. Par exemple, comment cette clé est-elle dérivée du 'mot de passe principal' ? Une recherche par force brute est elle possible? Cet article propose justement de décrire les formats de données et algorithmes utilisés afin de protéger vos mots de passe dans Firefox et Thunderbird.
Le gestionnaire de mots de passe de Firefox
Le Password Manager [1] de Firefox permet de stocker les mots de passe et identifiants (login) associés à un site web. Il s'agit par exemple des valeurs saisies dans les champs userid et pass de la page de connexion https://signin.ebay.fr. Au moment où l'on retourne sur une page dont le mot de passe est sauvegardé, Firefox préremplit les valeurs de ces champs. On suppose que dans un formulaire HTTP POST, lorsque le nom d'un premier champ contient user ou login, suivi par un deuxième champ nommé pass ou password (et de type password), Firefox les identifie alors comme paire login/mot de passe.
Le même site officiel [1] explique que ces mots de passe sont stockés dans les fichiers key3.db et signons.sqlite du profil utilisateur Firefox. Il est également recommandé d'utiliser un Master Password afin de protéger ces mots de passe.
Structure et contenu de Signons.sqlite
Intéressons-nous d'abord à ce dernier fichier,...
