Table des matières

KeePass[X] sous Debian

Panorama

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é.

Le choix entre deux applications

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.

Deux générations de bases de données

À 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).

Disponibilité sous Debian

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.

Convertir des bases d'un format à l'autre

Convertir de f1 vers f2

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.

Convertir de f2 vers f1

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.

Conversion directe

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)”.

En pratique, seules les utilisatrices de la version Window$ de KeePass_2 bénéficient de cette fonctionnalité ! L'option qui nous intéresse figure bien dans la version Linux mais elle est inopérante :-(
Vous pouvez utilisez une VM motorisée par une version d'évaluation de Window$

Formats intermédiaires

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.

Ces sous-formats partagent l'inconvénient de stocker les identifiants en clair, c'est-à-dire sans aucun chiffrement. Ils doivent donc être manipulés avec d'extrêmes précautions7).

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
CSV

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)

XML

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.

Utilitaires de conversion

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.

XML-f2 vers XML-f1

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.

CSV-f1 vers XML-f1

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.

Conversion kbdx vers kbd sous Linux

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.

Passer par Window$

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 :

  1. copier la base sur une clé USB
  2. lancer la VM
  3. réaliser d'éventuelles mises à jour et installations
  4. faire un snapshot de la VM
  5. couper l'accès réseau de la VM
  6. monter la clé USB sous W$
  7. lancer KeePass_2
  8. ouvrir la base à convertir
  9. l'exporter en kbd (clé USB)
  10. quitter W$
  11. restaurer le snapshot
  12. lancer KeepassX_1
  13. ouvrir la base exportée (kbd)

Utiliser KeePass_2 Linux et KeePass2 to KeePassX

Cette méthode permet de préserver à minima l'organisation de la base. Elle fait appel à un utilitaire de conversion nécessitant Java.

  1. lancer KeePass_2
  2. ouvrir la base à convertir
  3. l'exporter en XML_f2
  4. convertir le fichier de XML_f2 vers XML_f1 à l'aide de KeePass2 to KeePassX (sous JRE Linux)
  5. lancer KeePassX_1
  6. importer le fichier XML_f1
  7. corriger l'organisation

Utiliser KeePassX_2 Linux et csv2keepass

C'est la plus mauvaise solution car on perd l'organisation de la base.

  1. lancer KeePassX_2
  2. ouvrir la base à convertir
  3. exporter en CSV
  4. convertir le csv en XML_f1 à l'aide de csv2keepass
  5. importer le fichier XML dans KeePassX_1

Quelle version choisir

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.

KeePassX

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.

Installer KeePassX_2 sous Jessie

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

KeePass_2

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.

KeePassXC

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…

1)
Des logiciels proposant une interface graphique.
2)
oldoldstable, oldstable, stable, testing, unstable.
3)
La manière de “partager” donne lieu à d'âpres débats mais dépasse le cadre de cette fiche.
4)
Les informations similaires figurant dans les 2 formats sont préservées.
5) , 6)
Voir la limite plus loin…
7)
Utilisation temporaire, suppression destructive des fichiers, contrôle des accès réseau pendant l'utilisation, sécurisation du système d'exploitation, etc.
8)
Ce format est conçu pour être facilement exploitable en tant que fichier texte et/ou être imprimé.
9)
“Account”,“Login Name”,“Password”,“Web Site”,“Comments”.
10)
Par exemple, mieux vaut un import dégradé que la perte pure et simple de centaines ou milliers d'identifiants !
11)
Testé avec succès sous java version “1.7.0_151”, OpenJDK Runtime Environment (IcedTea 2.6.11) (7u151-2.6.11-2~deb8u1), OpenJDK 64-Bit Server VM (build 24.151-b01, mixed mode).
12)
Quelques glisser-déposer suffiront si vous n'avez pas trop de regroupements…
14)
oldoldstable au moment de la rédaction.
15)
En version 1 pour Wheezy, 1 et 2 pour Jessie, 2 pour les suivantes
16)
Personnellement, j'utilisais les deux, intensément !
17)
Implémentation open source du framework .NET.
18)
Cette possibilité permet d'adosser chaque site à un profil de navigation adapté : extensions, cookies, géolocalisation, sécurité…
20)
Un fork.
21)
À la date de la rédaction.
22)
Respectivement oldoldstable, oldstable et stable à la date de la rédaction.