KeePass[X] est un code applicatif permettant de gérer ses identifiants dans un trousseau unique. Ce trousseau est stocké dans une base de donnée spécifique dont l'accès est protégé par un super-clé.
Ce code applicatif est mis à disposition des utilisatrices sous deux formes : KeePass et KeePassX. L'une et l'autre sont des applications1) dont l'évaluation des mérites respectifs sort du cadre de cette fiche. Une base de données créée par l'une des deux application peut être consultée et modifiée sur l'autre application.
À la date de la rédaction, la base de données existe dans deux formats, nommés “1” et “2”. Les différences entre ces deux formats sont suffisamment importants pour qu'une application ne fonctionne qu'avec l'un ou l'autre des formats. Il existe donc une version de KeePass gérant ses bases de données au format “1” (f1) et une autre version du logiciel gérant les bases au format “2” (f2). Idem pour KeePassX. Cette distinction se retrouve dans l'extension des noms de fichiers contenant ces bases de données : .kbd pour f1, .kbdx pour f2.
Pour des raisons compréhensibles, les version de KeePass[X] utilisant le format “1”, plus ancien, ignorent tout du format “2”. En revanche les versions de KeePass[X] utilisant le format “2” sont plus ou moins capables d'importer ou d'exporter des bases au format “1”. Afin d'alléger l'écriture, les noms des applications seront suffixées par le format lorsque ce sera nécessaire (par exemple : KeePassX_2, KeePass_1).
Le site officiel de Debian permet de consulter la liste des versions de KeePass[X] proposés par cette distribution, en fonction de la version de Debian2).
À la date de rédaction, une utilisatrice de Debian peut retrouver avec les versions suivantes : KeePassX_1, KeePassX_2, KeePass_2. Si l'on partage3) une base entre plusieurs systèmes Debian, il faudra tenir compte des limites du plus anciens.
Cette opération est simple à réaliser si on utilise une version de KeePass[X] travaillant au format “2”. KeePass_2 comme KeePassX_2 permettent d'importer des bases au format “1”. Le format de destination (f2) étant plus riche que le format d'origine (f1), l'import se fait sans perte d'information. L'opération préserve l'organisation de la base, les icônes ainsi que la super-clé protégeant l'accès à la base, une fois transformée.
Le format “2” permettant de conserver un plus grande richesse d'informations que le format “1”, la conversion peut entraîner la perte de certaines informations4). Toutefois, elle préserve la super-clé protégeant l'accès à la base, une fois transformée.
Cette technique est à privilégier car elle conserve le maximum d'information : organisation, icônes, dates, super-clé, etc. Elle ne manipule que des fichiers chiffrés, protégés par la super-clé.
Depuis l'application KeePass_2, la conversion d'une base vers le format “1” est presque5) triviale. L'élément de menu “file > export” ouvre une boîte de dialogue permettant d'exporter la base courante vers plusieurs formats et sous-formats. Dans notre cas, il suffirait6) de choisir l'option “KeePass KBD (1.x)”.
KeePass_2 permet d'exporter une base au format natif vers des sous-formats intermédiaires. Les principaux sont le sous-format CSV du format “1” et les sous-formats XML des formats f1 et f2.
Dans une démarche de conversion de f2 à f1, l'intérêt de ces formats intermédiaires tiendra aux facilités de conversion qui en découleront.
Le tableau suivant indique les possibilités d'import et d'export de différentes applications :
logiciel | exports | imports | vref |
---|---|---|---|
KeePassX_1 | txt8), XML(f1) | XML(f1) | 0.4.3-Debian 8 |
KeePassX_2 | CSV | kbd | 2.0.2-Mint 18.3, 2.0.3-Debian 9, 2.0.3-W$ 7 |
Keepass_2 | CSV, kbd, kbdx, XML(f2) | CSV, kbd, kbdx, XML(f1,f2), kbdx(repair) | 2.28-Debian 8, 2.38-W$ 7 |
Le sous-format CSV paraît séduisant mais il ne préserve que les informations capitales9). Lors de l'export, toute l'organisation interne de la base sera perdue. L'export/import via csv n'est donc qu'une solution dégradée utilisable en dernier recours10)…
Le sous-format XML véhicule plus d'informations que le sous-format CSV. Cet avantage à pour inconvénient d'entraîner la création deux variantes xml, l'une pour f1, l'autre pour f2. Un fichier exporté par KeePass_2 au sous-format XML-f2 sera inexploitable par KeePassX_1 qui ne sait importer que des fichiers XML-f1…
À la différence du sous-format CSV,, le sous-format XML conserve les regroupements en catégories qui sont présents dans la base d'origine. Il permet donc de conserver l'organisation de la base.
Pour compléter le panorama, on peut mentionner l'existence de deux utilitaires qui ont pour seule fonction de convertir un sous-format dans un autre.
L'utilitaire keepass2-to-keepassx prend une base exportée en XML-f2 et la traduit en XML-f1. Bien sûr, on perd les informations du format f2 qui n'ont pas d'équivalent en f1.
Cet utilitaire multiplate-forme fonctionne sous Java 11). Malgré sa dénomination générale, il ne fonctionne qu'à partir d'un export XML. Lors du test export-traduction-import avec la version 1.4, l'organisation initiale a bien été transportée mais quelque peu malmenée (1,2,3,…, se transformant en 1,1.1,1.1.1,…)12).
L'installation et l'utilisation de keepass2-to-keepassx sont décrites dans sa documentation.
L'utilitaire csv2keepass permet de convertir un fichier CSV(f1) en fichier XML-f1. Il permet notamment d'importer dans KeePassX_1 un fichier exporté par KeePassX_2 ; le premier ne sais exporter qu'en CSV alors que le second ne sait importer qu'en XML (pourquoi faire simple quand on peut faire compliqué !).
L'utilitaire csv2keepass un programme python dont l'installation et l'utilisation sont décrites dans sa documentation.
La limitation des capacités d'export de KeePass_2 sous Linux complique l'export de base de données gérées sous KeePass[X]_2 vers KeepPassX_1.
C'est la méthode que j'utilise car elle restitue au mieux l'intégralité des informations compatibles avec le format f1. Afin de limiter les problèmes de sécurité inhérents à W$, j'utilise une VM munie d'une version d'évaluation de W$13). La procédure est la suivante :
Cette méthode permet de préserver à minima l'organisation de la base. Elle fait appel à un utilitaire de conversion nécessitant Java.
C'est la plus mauvaise solution car on perd l'organisation de la base.
Quelques mots, malgré tout, à propos les versions disponibles. Sauf si vous êtes bloquée sur Wheezy14), le choix se pose entre KeePass_2 et KeePassX_2. Les deux applications partageant le même format natif de base de donnée, on peut même alternativement utiliser l'une ou l'autre ! Aucune des deux ne brille par la qualité de son intégration dans l'environnement de bureau. C'est donc plutôt une question de goûts personnels et de contextes d'utilisation.
Comme l'indique le “X”, il s'agit d'une application prévue pour s'intégrer dans le système de fenêtrage X11. Cette application graphique est donc disponible sur un très grand nombre de plates-formes. Cette intégration à un relativement bas niveau se paie par une faible intégration à l'environnement bureau. Elle est disponible sous forme de paquetage dans les dépôts officiels Debian15).
Les fonctionnalités proposées sont minimales en comparaison de KeePass. Pire, KeePassX_2 perd deux fonctionnalités intéressantes16) que l'on trouvait dans KeePassX_1 :
Toutefois, la version 2 apporte une fonctionnalité bien pratique : le remplissage automatique des formulaires d'authentification. Elle ne s'applique malheureusement qu'au navigateur par défaut de l'environnement de bureau.
Par défaut, Jessie installe KeePassX_1. Il faut avoir préalablement ajouté les dépôts backports.
# apt-get -t jessie-backports install keepassx
L'application KeePass n'est guère utilisée qu'en version 2. Dans Debian, elle est dénommée KeePass2. Elle est disponible sous forme de paquetage dans les dépôts officiels Debian.
KeePass est une application Window$. Elle n'est disponible sous Linux qu'au prix d'un portage minimal s'appuyant sur les bibliothèques Mono17). Il en découle une piètre intégration à l’environnement de bureau, aussi bien graphique que fonctionnelle. Comme vu dans une section précédente, certaines fonctionnalités présentes dans les listes déroulantes de commandes sont inopérantes sous Linux… Ça donne une idée de la qualité du portage, tout comme la disparition du défilement à partir de la molette de la souris ; on est bien peu de choses En contrepartie, cette technique de portage permet de disposer rapidement - car simplement - des versions récentes développées pour Window$.
Malgré ces restrictions, KeePass2 propose des fonctionnalités qui méritent d'être explorées. J'apprécie tout particulièrement de retrouver (en mieux) les fonctionnalités abandonnées par KeepPassX_2 : génération de mots de passe et choix du navigateur. Cette dernière fonctionnalité permet non seulement de définir un navigateur par défaut, différent de celui de l’environnement de bureau, mais aussi d'imposer un navigateur spécifique18), fiche par fiche19). On regrettera la syntaxe “à la w$” mais ça fonctionne.
On peut également mentionner KeePassXC qui est une variante20) de KeePassX_2. Ses ambitions : être moins buggué que KeePassX_2 et proposer quelques améliorations dont l'intégration aux navigateurs les plus courants. L'application signe le retour du générateur de mots de passe mais celui, bien plus important, du choix du navigateur.
Les dépôts officiels Debian ne proposent l'application que pour les versions testing et unstable21). Des paquetages non officiels sont proposés pour Wheezy(7), Jessie-8) et Strech(9)22). À vous de voir si, pour un composant logiciel de sécurité, les améliorations proposées par rapport à KeePassX_2 compensent la perte de mise à jour automatique via les dépôts officiels…