Note : cet article présente le résultat de mes recherches et n’a en aucun cas été sponsorisé par qui que ce soit. C’est une lecture plutôt longue, mais cette longueur est nécessaire afin de pouvoir clarifier certains points et expliquer mon raisonnement. Le choix d’un gestionnaire de mots de passe ne se fait pas à la légère, étant donné la sensibilité des données qui y sont stockées.
Afin de maximiser la sécurité de vos comptes, il est essentiel d’utiliser des mots de passe uniques et complexes, couplés à de la validation en deux étapes (ou 2FA, pour two-factor authentication) où c’est possible. Cette dernière consiste à devoir entrer un code éphémère à chaque fois que vous vous connectez depuis un nouvel appareil. Le code en question est généré le plus souvent à l’aide d’une application telle que Google Authenticator ou Authy, mais il est parfois envoyé par SMS. Cette dernière option est à éviter, les SMS n’étant pas un canal sécurisé. La validation en deux étapes ajoute une couche de sécurité supplémentaire à votre compte, en vous demandant quelque chose que vous détenez (votre code 2FA) en plus de quelque chose que vous connaissez (votre mot de passe) afin de vous authentifier. En ce qui concerne la nécessité d’avoir des mots de passe uniques et complexes, il n’y a pas de secret : il vous faut un gestionnaire de mots de passe. En plus de gérer vos mots de passe, un gestionnaire de mots de passe vous permet également de gérer vos codes de validation en deux étapes, facilitant grandement la sécurisation de vos comptes.
Afin de maximiser la sécurité de vos comptes, il est essentiel d'utiliser des mots de passe uniques et complexes, couplés à de la validation en deux étapes. Tweeter
Ça fait un peu plus de deux ans que j’utilise 1Password, donc je me suis dit qu’il était temps de refaire un comparatif afin de voir si ce dernier est toujours la meilleure option sur le marché. Pour cet article, j’ai donc comparé les quatre grands acteurs : 1Password, Dashlane, LastPass et KeePass.
Dashlane, LastPass et 1Password proposent tous les trois un service de synchronisation via leurs serveurs. Si cela peut faire peur au premier abord, notez que votre Master Password — qui est ce qui chiffre vos mots de passe — n’est jamais envoyé vers leurs serveurs ; la seule chose qui s’y trouve, c’est votre base de données de mots de passe chiffrée. Elle est à chaque fois téléchargée et déchiffrée localement à l’aide de votre Master Password et éventuellement d’une clé supplémentaire, dépendant du gestionnaire.
Pour rentrer brièvement dans les détails techniques, la clé utilisée pour déchiffrer votre base de données de mots de passe n’est pas votre Master Password, mais une clé dérivée de celui-ci à l’aide d’une fonction de dérivation de clé. Les fonctions choisies par tous les gestionnaires présentés dans cet article sont conçues pour être lentes, afin de ralentir toute tentative de forçage de votre Master Password.
Voici sans plus attendre un comparatif des fonctionnalités de 1Password, Dashlane, LastPass et KeyPass. Pour les lignes ne contenant que du texte (sans croix ni coche), les possibilités en gras sont les meilleures. Si aucune d’entre elles n’est en gras, cela signifie que les options se valent. Une croix verte signifie que l’absence de la fonctionnalité en question est une bonne chose. J’ai omis les fonctionnalités supportées nativement par chacun d’entre eux, dont le remplissage de formulaires, la génération de mots de passe, la validation en deux étapes, etc.
1Password | Dashlane | LastPass | KeePass | |
---|---|---|---|---|
Sortie | 2006 | 2009 | 2008 | 2003 |
Chiffrement | AES-256-GCM à l’aide du Master Password et d’une clé secrète | AES-256-CBC à l’aide du Master Password | AES-256-CBC à l’aide du Master Password | AES-256-CBC à l’aide du Master Password et/ou d’un fichier clé |
Fonctions de dérivation de clé | PBKDF2 | PBKDF2 | Argon2d PBKDF2 |
Argon2 AES-KDF |
Raccourci global d’ouverture | Pas vraiment | |||
Raccourci global de remplissage | ||||
Longueur max. des mots de passe générés | 64 | 40 | 100 | 64 |
Génération de codes 2FA | via un plugin |
|||
Détection de comptes compromis | par service1 |
via un plugin |
||
Changement de mot de passe automatisé | via leurs serveurs (!) |
localement |
||
Bug bounty | ||||
Open source | ||||
Synchronisation automatique | (version payante) |
|||
Réinitialisation du Master Password sans perte de données | uniquement pour les coffres partagés |
sous certaines conditions |
||
Verrouillage automatique en cas d’inactivité | désactivé par défaut |
désactivé par défaut |
||
Prix | 35,88 $/an ou 3,99 $/mois pour un utilisateur 59,88 $/an ou 4,99 $/mois pour 5 utilisateurs |
Gratuit (un appareil) 39,99 €/an pour un utilisateur (avec synchronisation) |
Gratuit (avec synchronisation) Premium à 24 $/an pour un utilisateur Premium à 48 $/an pour 6 utilisateurs |
Gratuit |
Payable par mois | +1 $/mois pour un utilisateur +2 $/mois pour 5 utilisateurs |
N/A | ||
Autres | 30 premiers jours gratuits | 30 jours premium gratuits | 30 jours premium gratuits | N/A |
Site web | 1Password.com | Dashlane.com | LastPass.com | KeePass.info KeePassXC.org KeePassX.org |
1Password et KeePass utilisent une clé secrète en plus du Master Password pour chiffrer vos données. Concrètement, une seconde clé est dérivée de cette clé secrète et combinée avec la clé dérivée du Master Password pour obtenir la clé de chiffrement. En version simplifiée, voici du pseudo-code représentant la méthode de 1Password avec une clé secrète et une autre version sans clé secrète, où HKDF
et PBKDF2
sont deux fonctions de dérivation de clé :
# Avec une clé secrète (version de 1Password)
clé_dérivée_master_password = PBKDF2(master_password,
HKDF(salt, version, email, 32),
100000)
clé_dérivée_clé_secrète = HKDF(clé_secrète,
account_id,
version,
norme(clé_dérivée_master_password))
clé_de_chiffrement = XOR(clé_dérivée_master_password, clé_dérivée_clé_secrète)
# Sans clé secrète
clé_de_chiffrement = PBKDF2(master_password,
HKDF(salt, version, email, 32),
100000)
Comme vous pouvez le voir, la version avec une clé secrète supplémentaire génère une clé de chiffrement plus longue et permet donc une sécurité accrue, cette clé secrète ne quittant jamais votre machine. Cela veut dire que dans l’absolu, même avec un Master Password faible, vos données sont en sécurité dans le cloud grâce à la clé secrète. Ceci dit, il faut également sécuriser vos données sur votre machine, donc ce n’est pas une raison de négliger son Master Password. Pour résumer, la clé secrète sert à protéger les données des attaques distantes, tandis que le Master Password les protège des attaques locales.
Au niveau de la présence de raccourcis globaux, Dashlane ne propose pas de raccourci global sous Windows, et sous macOS il faut activer Dashlane dans les préférences d’accessibilité pour avoir droit à un merveilleux ⇧ + ^ + ⌥ + ⌘ + D qui ne peut pas être réassigné, ce qui n’est tellement pas pratique que je vais simplement considérer que ce raccourci n’existe pas. KeePass possède uniquement un raccourci global pour remplir les formulaires, tandis que 1Password possède à la fois un raccourci global pour ouvrir 1Password Mini et un raccourci global qui permet soit de remplir un formulaire, soit d’ouvrir 1Password Mini s’il ne trouve rien à remplir.
Tous s’en sortent bien au niveau de la longueur maximale des mots de passe générés et intègrent la génération de codes 2FA, bien que pour KeePass un plugin soit nécessaire pour ces derniers. Là où ça devient intéressant, c’est au niveau de la détection de comptes compromis. Dashlane et LastPass vous notifient uniquement qu’un service sur lequel vous possédez un compte a été compromis, tandis que 1Password et KeePass utilisent les API de HaveIBeenPwned afin de vérifier si vos mots de passe ont été compromis (pour KeePass, cela nécessite de passer par un plugin).
Dashlane et LastPass sont les seuls à proposer un changement de mot de passe automatisé, mais ils ne le font pas de la même manière. La seule manière acceptable est celle de LastPass, qui le fait localement sur la machine de l’utilisateur. L’implémentation de Dashlane, quant à elle, représente une énorme faille de sécurité en faisant transiter vos mots de passe par leurs serveurs, où ils se retrouvent nécessairement en clair à un moment donné. Je vous invite à lire mon article sur le sujet si vous souhaitez aller plus loin. Pour citer mon article :
Le meilleur moyen pour un service de garder des données secrètes est d'assurer qu'il n'y ait jamais accès de quelque manière que ce soit. Tweeter
C’est dommage, car tout allait bien pour Dashlane jusqu’à ce que, en me demandant pourquoi 1Password n’avait pas de fonctionnalité permettant d’automatiser le changement de mots de passe, je suis tombé sur cette réponse sur leurs forums, qui m’a mis la puce à l’oreille. J’ai donc été vérifier leurs affirmations ; le résultat de mes recherches se trouve dans l’article mentionné ci-dessus, avec quelques autres inepties découvertes au passage. Bref, ce qui devait être présenté comme une alternative viable à 1Password est finalement un gestionnaire de mots de passe que je déconseille vivement. En effet, les problèmes énoncés dans mon article démontrent clairement qu’ils préfèrent un « wow-effect » au fait d’assurer à 120 % la sécurité des données de leurs utilisateurs, chose inacceptable pour un gestionnaire de mots de passe. J’espère vraiment que Dashlane réglera ces problèmes à l’avenir afin que je puisse les recommander.
Ceci étant dit, je vous vois venir : « quid de la détection de mots de passe compromis de 1Password/LastPass/KeePass alors ? ». Eh bien, celle-ci respecte les principes du security by design en n’envoyant jamais votre mot de passe ou quoi que ce soit permettant de l’identifier aux serveurs de HaveIBeenPwned, qui est le service utilisé pour la vérification. En effet, un hash du mot de passe est créé localement (voir ci-dessous), puis les 5 premiers caractères de ce hash sont envoyés à HaveIBeenPwned, qui répond avec tous les hash de mots de passe connus commençant par la partie de hash envoyée. Le gestionnaire de mots de passe vérifie ensuite localement s’il retrouve le hash complet dans la liste reçue, auquel cas cela signifie que le mot de passe a été obtenu au cours d’un hack ou d’une fuite à un moment donné. La conception de cette API est juste splendide, car c’est simple et sécurisé en même temps, mais je n’en aurais pas attendu moins de la part de Troy Hunt.
Qu’est-ce qu’un hash ?¶
Un hash est une empreinte obtenue en passant une donnée dans une fonction de hachage. La fonction de hachage en question effectue des calculs mathématiques sur la donnée afin d’obtenir son empreinte — ou hash —, souvent de longueur fixe, de manière à ce qu’une même donnée donne toujours le même hash et que le moindre changement de cette donnée entraîne un changement du hash. Retrouver une donnée à partir de son hash sécurisé2 est infaisable ; le seul moyen pour « retrouver » une donnée à partir d’un hash est de calculer des hash de données au hasard jusqu’à tomber sur le bon. À titre d’exemple, voici les hash SHA1 de « test », « Test » et « anticonstitutionnellement » :
sha1('test') # a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
sha1('Test') # 640ab2bae07bedc4c163f679a746f7ab7fb5d1fa
sha1('anticonstitutionnellement') # 702f48d73e3b179ae40b7e54589c55222a07ce3d
KeePass est le seul gestionnaire open source, mais les trois autres sont régulièrement audités par des entités indépendantes afin de vérifier que leur implémentation reflète bien ce qui est décrit dans leurs whitepapers respectifs3. Ceci dit, il est indéniable que le fait d’être open source reste un avantage pour KeePass, car n’importe qui peut auditer son code, ce qui garantit en théorie sa sécurité. C’est aussi une des raisons pour lesquelles il n’est pas grave que KeePass n’ait pas de bug bounty4, qui est un système qui propose une compensation monétaire pour la divulgation de vulnérabilités.
Malheureusement, KeePass souffre de la maladie de pas mal de produits open source, qui est le manque d’ergonomie de son interface. En plus de ça, il faut jongler entre différentes applications dépendant des plateformes que vous utilisez et gérer la synchronisation vous-même, ce que je trouve peu pratique. Toutes ces raisons font que je ne me vois vraiment pas utiliser KeePass pour l’instant, ce dernier nécessitant trop de configuration alors que les autres proposent tout de base, dans des interfaces claires. Cela dit, je comprends tout à fait l’attirance de certaines personnes pour ce type de solution ; je pense juste que ça ne convient pas à tout le monde.
Arrive donc la question de ce qu’il se passe si vous oubliez votre Master Password. Au niveau de 1Password, celui-ci permet uniquement de restaurer l’accès à des vaults partagés, à condition que les personnes avec qui vous l’ayez partagé n’aient pas oublié leurs propres Master Passwords. C’est un peu comme si vous perdez la clé de votre maison : si une autre personne a encore la clé, elle pourra venir vous ouvrir, sinon il faudra passer par un serrurier. La différence est qu’ici, le serrurier est incapable de vous aider.
Le seul gestionnaire permettant réellement de récupérer vos données en cas d’oubli est LastPass. Ceci dit, détrompez-vous : c’est une mauvaise chose. Concrètement, il y a une seconde clé de chiffrement, elle-même chiffrée via une clé de récupération qui est uniquement stockée sur votre machine. Cette clé chiffrée est ensuite envoyée sur leurs serveurs. Lorsque vous demandez une réinitialisation de votre Master Password, vous recevez un code unique par email ou SMS pour activer la récupération. Une fois activée, LastPass récupère la seconde clé de chiffrement chiffrée sur leurs serveurs, la déchiffre localement à l’aide de la clé de récupération, l’utilise pour déchiffrer votre base de données et vous demande enfin de choisir un nouveau Master Password. Étant donné que la clé de récupération ne quitte jamais votre machine, ça ne fonctionne que sur une machine où vous avez déjà utilisé LastPass, et uniquement via l’extension de navigateur.
Bien qu’a priori, il ne me semble pas que ça permette à LastPass d’accéder à vos données, cela pose tout de même quelques soucis de sécurité. En effet, si une personne obtient un accès à votre ordinateur déverrouillé, elle a fort probablement également accès à vos mails (et peut-être votre téléphone si vous l’avez également laissé sur votre bureau), ce qui signifie qu’elle peut lancer la procédure de réinitialisation sans votre accord. Une fois la procédure lancée, elle n’est pas obligée d’aller jusqu’au bout de celle-ci. En effet, une fois que LastPass a tout déchiffré, il n’y a pas d’obligation d’entrer un nouveau Master Password, donc cette étape peut simplement être sautée afin de se balader librement dans votre LastPass déverrouillé. Il ne reste plus qu’à supprimer les mails et vous n’y verrez que du feu. Notons qu’il est possible de désactiver cette fonctionnalité, mais le fait qu’elle soit activée par défaut représente tout de même une faille de sécurité. Notez également que si la validation en deux étapes est activée sur votre compte, il n’est pas possible de restaurer l’accès sans un code 2FA. Le risque est mineur, mais ça reste dangereux d’avoir une configuration par défaut qui n’est pas sécurisée à 100 %.
Pour ce qui est du verrouillage automatique en cas d’inactivité, celui-ci est désactivé par défaut pour Dashlane et LastPass, y compris si vous quittez l’application, ce qui est une configuration par défaut vraiment absurde. Ça veut dire qu’une fois déverrouillés, ils le restent jusqu’à ce que vous les verrouilliez à la main, y compris si vous fermez l’application.
Même indépendamment des problèmes énoncés ci-dessus, je trouve que 1Password l’emporte clairement sur Dashlane et LastPass sur beaucoup de points :
- Chiffrement plus sécurisé à l’aide d’une combinaison du Master Password avec une clé secrète ;
- Détection de comptes compromis1 ;
- Présence d’un raccourci global de remplissage ;
- Payable par mois pour 1 $ supplémentaire ;
- Présence d’un raccourci global d’ouverture (uniquement par rapport à Dashlane) ;
- Bonne longueur maximale des mots de passe générés (uniquement par rapport à Dashlane) ;
- Le prix (uniquement par rapport à Dashlane).
Le premier gros point est le chiffrement. Comme expliqué ci-dessus, pour un Master Password identique, 1Password sera toujours plus difficile à hacker étant donné la clé secrète de 34 caractères qui s’y ajoute, ce qui rend le stockage sur leurs serveurs plus sécurisé, la sécurité n’étant plus directement liée à la qualité du Master Password. La détection de comptes compromis est extrêmement pratique ; bien plus que le changement de mots de passe automatisé qui est la seule fonctionnalité « manquante ». En effet, à condition qu’un mot de passe soit sécurisé, la seule et unique raison de le changer est une suspicion qu’il ait été découvert par quelqu’un ou quelque chose qui n’aurait pas dû, et les seuls qui permettent de vérifier ça facilement sont 1Password et KeePass.
Il manque également un raccourci global de remplissage pour LastPass et Dashlane ; ce n’est pas essentiel, mais j’utilise tellement celui de 1Password que je ne pourrais plus m’en passer. Dashlane manque d’un vrai raccourci global d’ouverture, ce qui est vraiment dommage. La longueur des mots de passe générés par ce dernier laisse également à désirer, comme mentionné plus haut.
Reste la question du prix, au niveau duquel Dashlane est 24 % plus cher que 1Password. LastPass, quant à lui, est dur à battre avec son offre gratuite. Ceci étant dit, je préfère largement payer moins que le prix d’un sandwich par mois pour avoir l’esprit tranquille et un gestionnaire de mots de passe qui correspond à 200 % à mes attentes. 1Password est d’ailleurs le seul gestionnaire qui permette de payer par mois, ce qui peut arranger certaines personnes, malgré le coût supplémentaire de 33 %.
Comme vous l’aurez deviné, ma recommandation finale est donc 1Password pour ceux qui veulent quelque chose qui fonctionne en sortie d’usine avec une excellente ergonomie et KeePass pour ceux qui tiennent absolument à avoir un gestionnaire open source, quitte à devoir gérer plus de choses manuellement. Il ne vous reste donc plus qu’à créer un bon Master Password !
Créer un bon Master Password¶
Le choix idéal pour un Master Password est une phrase de passe composée de plusieurs mots séparés par des espaces, en insérant un mot de passe que vous inventez quelque part dedans, comme « chien table KJ3L9!NGoWB; serveur jacuzzi nébuleuse ». C’est long, sécurisé et beaucoup plus facile à retenir. Une excellente méthode pour trouver les mots est d’utiliser Diceware. C’est une liste de 7.776 mots numérotés qui vous permet de choisir chaque mot en un jet de 5 dés — ou 5 jets d’un dé —, ce qui rend la chose totalement aléatoire et donc sécurisée. Il est important d’utiliser de vrais dés et non un dé électronique afin d’assurer le côté aléatoire. Si j’obtiens par exemple 3—5—4—5—1 avec mon premier jet de dés, le premier mot sera « knob », comme on peut le voir dans l’extrait de la liste ci-dessous :
35446 knit
35451 knob
35452 knock
35453 knoll
Il suffit ensuite de répéter le processus pour obtenir les 4 mots restants. Il reste ensuite à jeter un unique dé pour déterminer où placer le mot de passe inventé : un 1 mettrait le mot de passe au début, tandis qu’un 6 le mettrait tout à la fin, un 3 après le second mot, etc. Notez qu’il existe également une version francophone de la liste créée par Matthieu Weber.
-
La détection de Dashlane ne se fait pas au niveau du compte en lui-même, mais détecte juste quand un service sur lequel vous possédez un compte est victime d’un hack ou d’une fuite. ↩↩
-
SHA1 et MD5 ne sont pas des fonctions de hachage sécurisées. Les meilleurs options pour du hashing sécurisé sont des fonctions spécialisées dans le hachage de mots de passe, comme bcrypt, PBKDF2, etc. ↩
-
Je note tout de même que j’ai dû passer par Google pour trouver celui de LastPass, chose assez décevante car je m’attendrais à ce qu’il soit disponible directement sur leur page d’accueil. ↩
-
L’Union européenne a alloué un bug bounty de 71.000 € à KeePass du 15 janvier au 31 juillet 2019. D’autres bug bounty ont également été alloués à 14 autres projets open source. ↩