Projet:Gestionnaire de mots de passe distribué

De Wiki Seb35
Aller à la navigation Aller à la recherche

Le gestionnaire de mots de passe distribué (nom temporaire) est un projet de gestionnaire de mots de passe, libre, portable, partagé, décentralisé, sécurisé et facile d’utilisation.

Plus en détails :

  • gestionnaire de mots de passe : permet de stocker des mots de passe (ou d’autres secrets), personnels ou communs à plusieurs personnes, l’accès se faisant avec un mot de passe central
  • libre : logiciel libre (probablement sous licence WTFPL)
  • portable : utilisable sur ordinateur et tablettes (Windows, Mac, Linux, autres) et smartphone (Android, Firefox OS, iOS, autres) par l’utilisation de la technologie HTML5
  • partagé : permet le partage (ou pas) des mots de passe entre plusieurs personnes
  • décentralisé : possibilité de stocker les mots de passe sur son ordinateur/smartphone, ou sur un serveur à distance (personnel ou nuage, fortement recommandé pour les mots de passe partagés)
  • sécurisé : utilisant le chiffrement et signature OpenPGP (standard) et le protocole Git pour la traçabilité (standard de facto)
  • facile d’utilisation : (autant que possible) interface épurée et personnalisable, traduit dans plusieurs langues, accessible, avec une documentation simple (et plus complète), idéalement ce logiciel remplirait automatiquement les champs "mots de passe" sur les sites

Technologies utilisées

  • HTML5 + JavaScript : pour la portabilité
  • Git : pour la traçabilité / évolution
  • OpenPGP : pour la sécurité
  • AngularJS : pour l’interface
  • YAML : pour le format de stockage
  • packaging : propre à chaque plate-forme, node.js pour les serveurs

Architecture

En trois blocs logiciels principaux (architecture SOA) :

  • interface utilisateur
  • serveur de point de contact
  • infrastructure de stockage

Les trois blocs logiciels sont implémentés en JavaScript et peuvent être répartis sur plusieurs machines ou être entièrement locaux sur une machine. Les scénarios possibles sont :

  • interface utilisateur sur un ordinateur/smartphone, discutant avec un serveur distant propre à la société, stockant les informations dans un nuage ou en local sur le serveur
  • entièrement local sur un ordinateur/smartphone
  • interface utilisateur disponible sur un site web sécurisé (privé ou public), dont le serveur sert de fait de point de contact, avec un stockage sur ce même serveur ou dans un nuage

Sécurité

Modèle de menace

Le protocole de chiffrement et signature OpenPGP ainsi que les méthodes cryptographiques, sous-jacentes ou annexes, sont supposés sûrs (par définition : pas de logiciel espion, code source non-falsifié, pas de bugs mettant en péril la sécurité). Les implémentations des logiciels tiers sont supposées sûrs. Le logiciel est supposé être à jour. L’utilisateur ne doit pas passer outre les alertes de sécurité indiquées.

La machine cliente et celle comportant l’interface utilisateur sont supposées sûres. Le serveur de point de contact et l’infrastructure de stockage peuvent ne pas être complètement sûrs, mais leur défaillance (opérationnelle ou liée à la sécurité) empêcheront le partage des mots de passe.

L’accès au logiciel se fait au moyen d’un mot de passe ou de toute autre méthode, et son accès non-autorisé est supposé hors du périmètre du logiciel. Lors du partage de mots de passe, il est supposé que l’utilisateur, identifié par une clé OpenPGP, a confiance en les clés OpenPGP des autres utilisateurs de façon à pouvoir les identifier de façon certaine, et il lui appartient donc de régler comme il l’entend les paramètres de profondeur de sa toile de confiance OpenPGP ; la non-confiance de l’utilisateur en sa toile de confiance OpenPGP est hors du périmètre du logiciel. La reconstruction du graphe social des utilisateurs d’un point de contact est supposé hors du périmètre du logiciel.

Compléments au modèle de menace

La sûreté affirmée dans le modèle de menace permet de s’affranchir des problèmes non-liés directement au logiciel, mais il est bien sûr entendu qu’il sera fait au mieux pour assurer la meilleure sécurité globale au logiciel, notamment par :

  • le suivi de la sécurité des méthodes de cryptographie,
  • le suivi des mises à jour des logiciels tiers directement utilisés,
  • l’utilisation de méthodes verouillant l’accès au logiciel pour prévenir son utilisation non-autorisée,
  • la minimisation du nombre d’alertes de sécurité à celles d’une grande importance et la meilleure explication des alertes en question.

Si un groupe d’utilisateurs partageant un ensemble de mots de passe ne veut pas voir son graphe social devenir public, il leur appartient de prendre les mesures appropriées, notamment :

  • l’utilisation d’un réseau d’anonymisation permettant à un attaquant passif écoutant le réseau de collecter les adresses IP se connectant au point de contact,
  • la création d’une toile de confiance locale par la mise en place d’un serveur de clés OpenPGP privé,
  • la publication ou non de leurs signatures des clés des pairs.

La création d’une toile de confiance locale (par la mise en place d’un serveur de clés OpenPGP privé) peut également servir à une installation autonome, solutionant des débats sur la publication ou non du graphe social, et facilitant l’intégration avec un système d’authentification déjà en place. Par ailleurs, par simplification pour les utilisateurs, il peut être créé, au sein d’un point de contact ou pas, une clé OpenPGP centrale (détenue par un administrateur de confiance) qui authentifierait et signerait l’ensemble des clés du point de contact ou d’une communauté et dont les utilisateurs seraient supposés avoir confiance ; cela faciliterait la création d’une communauté de confiance.