# KeePass

KeePass Password Safe est un gestionnaire de mots de passe publié sous la licence libre GPL-2.0-or-later (que l'on pourrait traduire par licence publique générale GNU version 2.0 ou ultérieure), permettant de sauvegarder un ensemble de mots de passe dans une base de données chiffrée sous la forme d'un seul fichier dont l'extension est *.kdb ou *.kdbx selon la version. Ce fichier de base de données s’ouvre avec un mot de passe maître ou avec d'autres méthodes d’authentification comme un fichier clé.
KeePass existe sous deux versions différentes. La première, destinée au grand public, utilise deux algorithmes de cryptographie : AES (avec une clé de 256 bits) et Twofish (avec des blocs de 128 bits et une clé de 256 bits). La seconde, destinée aux professionnels, utilise également deux algorithmes : AES (avec une clé de 256 bits) et ChaCha20 (RFC7539 avec une clé de 256 bits). D'autres algorithmes peuvent être ajoutés sur la version 2.x par l'intermédiaire de greffons : notamment Twofish, Serpent, GOST, et encore d'autres.

## Histoire

« Kee » vient de « Key » (qui signifie « clé » en anglais), et « Pass » vient de « Password » (qui signifie « mot de passe » en anglais).
Il existe deux versions du logiciel, KeePass 1.x et KeePass 2.x. La première est écrite en C++ pour une utilisation uniquement sous Windows tandis que la seconde est écrite en C# à partir de zéro. La version 2.x propose plus de fonctionnalités et peut être utilisée également sous d'autres systèmes d'exploitation. Des fonctions écrites en langage C sont également incorporées au logiciel en version 1.x.
En France, KeePass 2.x est intégré depuis 2013 à la liste du socle interministériel de logiciels libres préconisés par l’État et la version 2.10 est certifiée par l'Agence nationale de la sécurité des systèmes d'information en 2010.
En Allemagne, l'Office fédéral de la sécurité des technologies de l'information recommande le logiciel dans une note de 2018 destinée aux petites entreprises.
En 2016, la Commission européenne soumet KeePass à un audit de sécurité lors du premier EU-FOSSA, puis en 2019 dans le cadre d'un bug bounty organisé lors de la troisième édition$^,$. KeePass est arrivé premier logiciel libre demandé à être audité par les utilisateurs de logiciels libres devant respectivement le serveur Web Apache, VLC et VeraCrypt.

## Fonctionnalités

Chaque mot de passe est représenté par une entrée dans la base de données qui prend la forme d'un fichier chiffré dont le suffixe est .kdb en version 1 et .kdbx en version 2. Une entrée contient plusieurs champs : un titre, un nom d'utilisateur, un mot de passe, une adresse (URL), des remarques, une pièce jointe pour la 1.x et plusieurs pièces jointes pour la 2.x (utiles pour chiffrer des informations secrètes). Un mécanisme permet également pour chaque entrée de rappeler au propriétaire de la base de données quand il doit changer un mot de passe. De plus, chaque entrée possède une information sur la date et l'heure de création, du dernier accès et de sa dernière modification.
KeePass s'installe nativement sous Windows, et – avec la plateforme Mono – sous macOS, Linux, FreeBSD et autres systèmes d'exploitation. La seconde version du logiciel ajoute plusieurs fonctionnalités : la première fonctionnalité offre la possibilité de lier un compte utilisateur Windows à une base de données (avec toujours la saisie du mot de passe maître et éventuellement l'ajout d'une clé sous forme de fichier), la deuxième permet d'incorporer plusieurs pièces jointes dans les entrées tandis que la première version n'en accepte qu'une seule, la troisième gère des déclencheurs, la quatrième c'est l'utilisation de paramètres substituables dans les champs d'une entrée, etc. D'autres clés d'authentification peuvent être ajoutées à sa clé principale intrinsèque d'ouverture de base de données de mots de passe par l'intermédiaire de greffons.
Des options permettent de chiffrer les mots de passe en mémoire vive de l'ordinateur, ou de masquer à l'écran le mot de passe par des astérisques. La principale faille concerne le presse-papiers où le mot de passe réside en clair lors d'un « copier/coller » car aucune application ne sait y lire une donnée chiffrée. Afin d'atténuer ce problème, le mot de passe n'est conservé que temporairement dans le presse-papiers avant d'être automatiquement supprimé ; par défaut, respectivement après 10 secondes et 12 secondes en version 1.x et 2.x.
L'autre danger de KeePass, comme pour tout autre gestionnaire de mot de passe, c'est que la saisie du mot de passe maître de la base de données est susceptible d'être interceptée par un logiciel espion tel qu'un enregistreur de frappe. Un enregistreur de frappe peut intercepter les mots de passe entrés au clavier, voire chaque clic de souris sur un clavier virtuel en faisant des captures d'écran à chaque clic de souris.
De manière plus avancée, KeePass offre également la possibilité d'ouvrir le fichier *.kdb ou *.kdbx à l'aide d'un fichier de référence appelée « fichier clé » dont le contenu est utilisé tel un très long mot de passe. Enfin dans la version 2 de KeePass, l'utilisation du système d'authentification de Microsoft Windows est également prise en charge pour l'ouverture du fichier *.kdbx.
En version 2.x, ces trois méthodes d'accès peuvent s'utiliser de manière indépendante ou s'associer afin de renforcer la sécurité d'accès au fichier de base de données.

### Synchronisation

Sur la version 2.x, la base de données peut être synchronisée sur un site distant par FTP, HTTP ou entre machine avec des montages disque. Ce qui permet d'avoir sa base de données à jour sur n'importe quelle installation du logiciel. La base de données peut être synchronisée avec un smartphone (BlackBerry, iPhone, Windows Phone 7 ou Android) à condition que l'application KeePass soit installée sur le smartphone. Le fichier peut alors être ouvert pour retrouver un mot de passe. Une application pour Pocket PC a également été développée.

### Glisser et déposer

Il est possible de sélectionner avec la souris une information d'une entrée dans le nom d'une colonne et la faire glisser pour la recopier dans une fenêtre cible (par exemple : pour copier dans un premier temps le nom d'utilisateur et dans un second temps le mot de passe associé). Chaque information d'une entrée peut être glissée et déposée.

### Saisie automatique

Un système de saisie automatique de l'identifiant et du mot de passe vers un site d'identification (URL) ou une application standard de Windows a été développé. On l'exécute par un raccourci clavier global (par défaut la suite de touches pressées simultanément Ctrl+Alt+A) ou en sélectionnant l'entrée dans la base de données, dont on ouvre le menu contextuel en cliquant droit sur l'entrée et l'on sélectionne « Accomplir la saisie automatique ». KeePass saisira alors automatiquement l'identifiant et le mot de passe dans la fenêtre de l'application ou du navigateur. La saisie automatique globale effectue une corrélation entre les titres des entrées et les titres des fenêtres de navigateur ou applications. Si plusieurs titres d'entrées sont similaires pour une application ciblée alors une boîte de dialogue s'affiche pour permettre à l'utilisateur de sélectionner l'entrée adéquate parmi la liste proposée. Il n'est pas nécessaire d'ajouter de greffon à KeePass pour l'utiliser avec les navigateurs internet, la saisie automatique permet d'être adaptée à tous les sites. En ouvrant une entrée (en double cliquant dessus), dans son onglet « Saisie automatique », on peut cocher la case d'« Obfuscation de saisie automatique à deux canaux» afin de parer tout enregistreur de frappe.

### Historique des entrées

Sur KeePass 2.x, un historique des entrées est sauvegardé et accessible depuis l'entrée concernée ; cela permet de retrouver tous les mots de passe antérieurs. Le nombre d'entrées des historiques est paramétrable dans KeePass 2.x (en taille et en nombre). En revanche pour KeePass 1.x, les mots de passe des anciennes entrées sont sauvegardés dans le groupe Backup si cette option a été choisie à la création de la base de données sinon ils sont perdus.

### Greffons

Des greffons ont été développés autour de KeePass :
* pour enregistrer une sauvegarde de la base de données à chacune de ses modifications ;
* pour interfacer les trois principaux navigateurs du marché (Internet Explorer, Google Chrome, Mozilla Firefox) avec KeePass ;
* pour exporter et importer entre gestionnaires de mots de passe différents du marché ;
* pour synchroniser sa base de données sur du nuage pour par exemple interfacer KeePass entre des smartphones, tablettes et des ordinateurs ;
* pour ajouter les protocoles SCP (Secure CoPy), SFTP (SSH File Transfer Protocol) et FTPS (FTP SSL/TLS) si l'on souhaite mettre la base de données sur un serveur et l'utiliser en multi-utilisateurs ;
* pour éviter de partager un secret entre plusieurs personnes, il est possible d'utiliser l'extension CertKeyProvider qui offre une protection par certificat au lieu d'un mot de passe.
Le code source des modules externes n'est pas garanti par le développeur de KeePass et n'est pas contrôlé lors des audits de sécurité qui portent uniquement sur KeePass ; ce qui représente un risque puisque ces greffons ont accès à la base de données.

### Générateur de mots de passe

Chaque nouvelle saisie d'un mot de passe pour une entrée quelconque peut être générée (sur une longueur définie par l'utilisateur) par un générateur de mots de passe aléatoires qui combine tous les caractères ANSI (U+0080 à U+00FF) à l'exception des caractères de contrôle et non imprimables.

### Portable

Les deux versions de KeePass existent en version portable, c'est-à-dire qu'elles peuvent être utilisées sur une clé USB (ou autre support de stockage amovible) sans nécessiter d'installation du logiciel sur un système d'exploitation. En revanche, KeePass 1.x nécessite GDI+ sur des systèmes Windows plus anciens que Windows XP et KeePass 2.x nécessite l'installation du Microsoft .NET Framework 2.0.

### Importer

Les mots de passe peuvent être importés d'une multitude d'autres gestionnaires de mots de passe depuis un format TXT ou CSV en version 1.x et, TXT, CSV ou XML en version 2.x, de KeePass 1.x vers KeePass 2.x et réciproquement. Des greffons ont été développés pour importer automatiquement les entrées de mots de passe d'autres gestionnaires de mots de passe.

### Exporter

Une base de données de KeePass 1.x peut être exportée au format HTML, CSV, XML ou TXT. Une base de données de KeePass 2.x peut être exportée au format HTML, CSV, XML ou au format de la base de données de KeePass 1.x (mais dans ce cas, les pièces jointes ne peuvent être exportées).
La liste des URL de chacune des entrées peut être exportée dans les favoris de Windows.

### Usages multi-utilisateurs

Le programme possède également des fonctions qui lui permettent d'être utilisé entre plusieurs utilisateurs avec la gestion des accès multiples en combinant à la fois les modifications saisies simultanément par deux utilisateurs sur la même base de données ouverte dans un répertoire partagé sur le réseau informatique. La version 1.x fait un verrouillage style Office et ne possède pas de synchronisation possible contrairement à la version 2.x qui en possède une qui dit au moment de la fusion que s'il y a un conflit (c'est-à-dire que si plusieurs utilisateurs ont modifié la même entrée), alors KeePass 2.x utilise la dernière version basée sur le temps de dernière modification. Sur KeePass 2.x, une stratégie d'utilisation de l'application peut être élaborée, à l'aide premièrement de fichiers XML comportant les paramètres de configuration (locale, globale ou imposée) du logiciel pour les utilisateurs et secundo la configuration des droits d'accès en lecture seule ou lecture/écriture à ces fichiers du système de fichier (par exemple : NTFS). La configuration locale est propre à chaque utilisateur, la globale est partagée, et celle imposée ne peut être modifiée que par son administrateur.

### Les possibilités du champ d'adresse (URL)

Le champ d'adresse prend bien sûr en charge les URL. Il prend réellement en charge de nombreux protocoles différents (pas seulement HTTP) et prend en charge l'exécution de lignes de commande Windows par le protocole virtuel cmd://. Le champ comporte également un puissant moteur de substitution, remplaçant les codes par d'autres champs (nom d'utilisateur, mot de passe, etc.) d'une entrée.

### Les possibilités de la ligne de commande

KeePass 2.x permet d'ouvrir des fichiers .kdbx en transmettant le nom de fichier au fichier exécutable de KeePass. Il peut également envoyer le mot de passe de la base de données et l'emplacement du fichier clé par une ligne de commande. On peut également utiliser la ligne de commande pour présélectionner un fichier clé et n'avoir à saisir que le mot de passe maître.

### Scénariser

Il existe trois façons d'automatiser KeePass 2.x : les opérations de commande unique, les fichiers de script KPS et les scripts PowerShell. Tout ce qui peut être réalisé avec l'interface graphique du logiciel peut également l'être avec des scripts.

## Compilation

Le code source de KeePass se compile avec Visual Studio 2008 tandis que le fichier .msi d'installation depuis la version 2.55 est réalisé avec Visual Studio Community 2022 alors qu'auparavant il se faisait avec Visual Studio Community 2017. La version de KeePass 2.58 se compile désormais avec Visual Studio 2022 (Community). Pour la version 1.x, il est plutôt recommandé d'utiliser Visual Studio 2022 (Community). les instructions de compilation pour les librairies Boost peuvent être trouvées dans le fichier BuildBoost.txt dans le dossier Docs du paquetage du code source de KeePass 1.x. Après avoir compilé les librairies Boost, il faut spécifier les répertoires de Boost (fichiers include/header et librairies) dans les propriétés du projet. Vous pouvez également utiliser Visual Studio 2008, mais alors vous devrez utiliser l'ancienne version de Boost 1.81.0 (Boost a abandonné la mise en œuvre de Visual Studio 2008 après cette version). Pour compiler KeePass 1.43 avec Visual Studio 2022, il faut préalablement installer la MFC dans Visual Studio 2022.

## Certification

La version 2.10 est reconnue par une Certification de Sécurité de Premier Niveau par l'autorité française l'ANSSI$^,$. Cependant, des vulnérabilités ont depuis été découvertes puis corrigées dans les versions suivantes (2.13 et 2.33).

## Traduction

KeePass est publié par défaut avec une interface en anglais. On peut ensuite ajouter une langue ou plusieurs langues en téléchargeant les fichiers de langue depuis le site officiel. Le fichier d'aide en local du logiciel (fichier KeePass.chm) a également été traduit en français que ce soit pour sa version 1.x comme pour sa version 2.x.
L'interface a été traduite dans une cinquantaine de langues. Les traducteurs bénévoles sont en relation avec l'auteur du logiciel. Les fichiers de traductions sont disponibles sur la page des traductions du site officiel. Les fichiers ont le suffixe .lng (non compressé) en 1.x et .lngx (compressé avec 7-Zip) en 2.x.

## Recommandations

Vérifier que l'on n'ait pas d'enregistreur de frappe installé sur son poste de travail qui pourrait intercepter un mot de passe dans le presse-papiers ou entré au clavier notamment quand on utilise un ordinateur au travail, dans un cybercafé ou un taxiphone.
Il existe des logiciels pour déchiffrer le contenu d'une base de données KeePass : KeeCracker, Keepass-Self-Bruteforce et keepass2john, mais leur efficacité dépend pour beaucoup des informations que l'utilisateur peut leur transmettre.
Windows 10 v1809 a introduit une fonction de partage de l'historique du presse-papiers vers le nuage permettant une plus grande exposition des mots copier/coller lors de l'usage de KeePass.

## Applications dérivées et alternatives à KeePass

Il existe de nombreuses implémentations multi-plates-formes de KeePass et dont les bases de données sont généralement compatibles.
* KeePassXC est un fork communautaire sous licence GPL et qui reprend le projet KeePassX (dont le développement était très peu actif depuis 2016). Il peut être installé sous Linux, macOS et Windows.
* WinPass, portage pour Windows 8/10 Mobile.
* KeePassBB pour BlackBerry.
* KeePassDroid et Keepass2Android, portages pour Android.
* KyPass pour iPhone/iPad, un fork de MyKeePass avec support de Dropbox.
* MacPass pour macOS.
* KeeWeb, une application web pour accéder à une base de données KeePass depuis n'importe quel appareil et permettant la synchronisation avec Dropbox$^,$.