Cloud Kee Pass - version « même pas encore alpha »

Posté par . Édité par Jarvis, Ontologia, palm123, jcr83 et Nicolas Casanova. Modéré par Xavier Claude. Licence CC by-sa
Tags :
13
8
fév.
2014
Technologie

Tout le monde a un jour eu quelques difficultés de se souvenir d'un de ses mots de passe. Cloud Kee Pass est un nouveau projet personnel permettant de stocker ceux-ci de manière sécurisée.

NdM : merci à ondex2 pour son journal.

Plop à tous !

Je travaille depuis 2 mois à une petite application web, et je pense qu’il est temps de publier les sources car elle devient utilisable.

Problématique

Comme tous les gens sensés, j’utilise un mot de passe par site Internet/application/clé SSH/… Mais comme j’ai une mémoire de poisson rouge, j’ai besoin d’un « truc » pour se souvenir à ma place de tous ces mots de passe.

Pendant longtemps, j’ai utilisé un logiciel propriétaire bien connu qui était disponible sur mon iOrdinateur et mon iTéléphone (ouais, je sais, çapucépalibre). Ce logiciel exportait une version HTML que je pouvais rsync’er de manière régulière sur mon serveur. Ce logiciel, aussi bien soit il, a deux inconvénients majeurs selon moi : pas possible d’éditer en ligne (application web) et pas de synchronisation automatique entre ordinateur et smartphone sauf à passer par Dropbox ou iNuage (hors de questions pour moi).

Solution

J’ai donc décidé de développer ma petite solution maison.

Pour commencer, j’ai choisi d’utiliser un format de stockage bien connu et largement utilisé : KeePass Database (format KeePass 2). Pour ce format de fichier, je peux utiliser le logiciel approprié sur mon iOrdinateur et j’ai trouvé une chouette application pour mon iTéléphone. Tout ça enregistre directement sur un partage Webdav sur mon serveur, donc pour la synchronisation, c’est parfait.

Il reste donc la partie application web à développer.

https://github.com/rledisez/CloudKeePass (TADA !)

État actuel

La lecture du fichier me semble opérationnelle, je n’ai pas rencontré de bug majeur. Il reste quelques fonctionnalités à implémenter (ex: téléchargement des binaires intégrés au fichier), mais pour un usage classique, ça fonctionne déjà très bien.

Le déchiffrement par clé n’est pas possible. Le code existe, mais comme il n’est pas testé, je masque la fonctionnalité dans l’interface.

L’édition n’est pas encore implémentée, même pas un tout petit peu (oui, c’était quand même l’une des raisons pour lesquelles j’ai commencé ce projet).

C’est testé avec Chromium, Firefox et Safari. Quand j’aurai le temps, je monterai une VM Windows pour tester IE 10. IE 9 et antérieur, passez votre chemin (faut pas pousser quand même).

Comment ça marche

L’application web est en pur JavaScript, développée avec le framework SproutCore. J’utilise des bibliothèques JS bien connues en plus de SproutCore : CryptoJS, jDataview/jParser, ZeroClipboard, zlib.js et une implémentation de Salsa20.

J’ai développé le déchiffrement du fichier KDB (KeePass Database) en utilisant ces bibliothèques.

Le déchiffrement se fait dans un WebWorker pour ne pas geler le navigateur pendant l’opération qui peut prendre quelques secondes.

Pour copier un mot de passe il faut cliquer dessus. Cela se fait via ZeroClipboard qui pose un applet Flash invisible au dessus du mot de passe. Je n’aime pas l’idée de passer par Flash, mais c’est infaisable en pur JS.

Comment tester

Vous pouvez récupérer les sources sur github et les compiler après avoir installé SproutCore (http://sproutcore.com/install/). Il ne vous reste plus qu’à mettre en ligne le résultat de la compilation (http://wiki.sproutcore.com/w/page/12412888/Deployment-Introduction)

Vous pouvez aussi utiliser la version que j’ai généreusement mise en ligne pour vous : http://web.ledisez.net/CloudKeePass/

Une fois l’application chargée dans votre navigateur, entrez l’URL de votre fichier KDB ou glissez-le de votre disque dur vers le champ URL. Tapez votre passphrase et amusez vous. (note : les entêtes CORS peuvent vous jouer des tours… C’est pas ma faute, corrigez la conf de votre serveur)

Une fois l’application chargée dans votre navigateur, AUCUNE requête n’est envoyée vers le serveur hébergeant l’application (bon, des fois une image qui n’était pas encore chargée, mais promis, rien de plus)

Si vous voulez utiliser un fichier de test, utilisez celui ci :
URL : http://web.ledisez.net/Test.kdbx
Passphrase : azerty

Et après ?

Ben finir d’implémenter toutes les fonctions de lecture, bien débugger et sortir la version alpha 0.1. En vrac :

  • s’occuper des TODO et des FIXME
  • téléchargement des fichiers embarqués
  • activer la traduction
  • peaufiner le glisser/déposer sur la page de login
  • optimiser l’ensemble (c’est assez lent je trouve)

Ensuite, travailler sur l’édition du fichier avec deux possibilités :

  1. Le fichier provient d’une URL, alors il faut vérifier si le fichier est sur un partage Webdav et mettre à jour le fichier
  2. Le fichier vient du disque dur par glisser-déposer, alors il faut générer un téléchargement du nouveau fichier

Ca fait beaucoup de boulot encore, et comme toujours, les contributions sont les bienvenues.

Merci de votre attention, vous pouvez éteindre votre ordinateur et reprendre une activité normale.

  • # Application Web hors-ligne

    Posté par . Évalué à 1.

    Est-il prévu d'en faire une application web hors ligne (utilisation de fichiers de type text/cache-manifest), histoire de se passer des applications ?

    Ça peut servir lorsque l'on a besoin d'un mot de passe pour autre chose qu'internet et que l'on n'est pas connecté : code de carte (fidélité, bancaire), interphone…

    • [^] # Re: Application Web hors-ligne

      Posté par . Évalué à 2.

      Pourquoi faire ? Hors ligne, tu peux utiliser KeePass, puisque c’est le même format (si j’ai bien suivi)

      • [^] # Re: Application Web hors-ligne

        Posté par . Évalué à 2.

        C'est exactement ça. Dans ma vision, CloudKeePass est complémentaire à KeePass ou tout autre logiciel sachant lire le format KDBX.

        Néanmoins, ça ne coûterait pas cher d'ajouter quelques entêtes meta, mais il faut que je vérifie la faisabilité dans SproutCore. Je note ça sur ma TODO, j'y jetterai un œil à l'occasion.

  • # En entreprise

    Posté par . Évalué à 0. Dernière modification le 09/02/14 à 15:41.

    On recherche une solution pour gérer plusieurs centaines de mots de passes, avec gestion d'accès en fonction de groupes AD.
    La version web développé ici répondrait à ce genre de besoins (d'ici quelques mois)? Ou d'autres solutions qui existent déjà font mieux le travail?
    Concernant la sécurité, qu'en est-il?

    J'avais fait quelques recherches, il me semble que Kee Pass est la version open source la plus aboutie et semble être la meilleure base pour une application web, quelques éditeurs proposent des solutions avec des tas de fonctionnalités intéressantes. Mais ces solutions sont développées par des sociétés spécialisées, j'ai un peu de mal à confier les identifiants d'une entreprise dans une applications fermée ou on ne sait pas trop ce qui se passe.

    • [^] # Re: En entreprise

      Posté par . Évalué à 2.

      Le format KDBX, c'est un fichier qui contient tout. Donc ce n'est pas trop adapté au travail en équipe, il y aurait des problèmes de concurrence.

      Il suffit que ton collègue enregistre une nouvelle version du fichier et qu'ensuite tu enregistre également sans avoir rechargé entre temps -> tu écrase ces modifications.

      Il te faut une solution client/serveur où c'est le serveur qui gère les données pour pouvoir gérer la concurrence. CloudKeePass est une application qui stockera en WebDAV un fichier, mais le serveur n'a aucune idée de la nature des données.

      • [^] # Re: En entreprise

        Posté par . Évalué à 0.

        Merci pour ces précisions =).

        Pour le coup, ce n'est pas adapté à une utilisation en entreprise.
        Une idée d'application libre basée sur le modèle client/serveur? Ou on est contraint de passer par une application propriétaire?

        • [^] # Re: En entreprise

          Posté par . Évalué à 3.

          Je ne comprend pas bien ton besoin: est ce que c'est n'est pas le role d'un annuaire LDAP?
          OpenDJ, OpenLDAP, voire meme AD (beurk) puisque vous semblez l'utiliser.

          Je suppose que j'ai loupe quelque chose…

          • [^] # Re: En entreprise

            Posté par . Évalué à 0. Dernière modification le 11/02/14 à 19:18.

            Non, le besoin c'est une application qui gère tous les mots de passes de l'entreprise (jusqu'à plusieurs milliers) depuis une interface graphique qui affiche les duos login/mdp, en fonction de recherches ou navigation dans des dossiers. Depuis une interface graphique ou une page web.

            L'application arrive par à intégrer les comptes de l'AD (ou tout autre LDAP), si l'utilisateur est membre du groupe Admin, il a accès à tous les logins/mots de passes d'administration, tandis que le deuxième utilisateur est membre du groupe "Technicien", il a accès aux logins/mots de passes de maintenance.
            Le tout basé sur une base de données avec une fonction permettant qu'un utilisateur puisse ajouter un mot de passe et que son collègue puisse faire la même chose de son coté en même temps.

            Des applications propriétaires le font, je n'en ai pas trouvé pour l'instant dans le libre.

  • # KeePassX

    Posté par (page perso) . Évalué à 2.

    Y a-t-il des incompatibilités (au niveau de la KDB) entre KeePass et KeePassX ?

    Si je pose la question c’est parce qu’on cherche un moyen de synchroniser notre base de mot de passe en interne dans notre boite et qu’on a pas trouvé mieux que de la mettre dans notre filer (en fait on cherche même une application centralisé de gestion de mot de passe type TeamPass).

    • [^] # Re: KeePassX

      Posté par . Évalué à 2.

      Le format de fichier entre KeePass v1 et KeePass v2 a changé. KeePassX lit les fichiers KeePass v1. CloudKeePass lit les fichiers KeePass v2. Donc c'est pas compatible.

      • [^] # Re: KeePassX

        Posté par . Évalué à 0.

        hmm, ils sont en train de porter KeePassX pour gérer le v2 (juste pour info, je n'utilise pas), c'est en version alpha..

  • # Teampass

    Posté par . Évalué à 0.

    Je sais pas si ça vaut vraiment le coup de réinventer la roue, teampass fais le job assez bien !

    • [^] # Re: Teampass

      Posté par . Évalué à 2.

      Sauf que TeamPass est malheureusement dépendant de MySQL. Et de PHP. Enfin bref, c'est plus contraignant à installer qu'une simple ribambelle de fichiers statiques.

      Je sais, c'est déloyal comme critique.

      • [^] # Re: Teampass

        Posté par . Évalué à 0.

        En même temps c'est "cloud". Donc on peut bien avoir un LAMP ou équivalent sous la main facilement…

        Après effectivement il manque la partie mobile, mais il suffisait de faire une interface mobile a teampass, pas besoin de tout refaire.

        Mais sinon c'est cool, y aura du choix la prochaine fois qu'on devra choisir un gestionnaire de password…

  • # Oui mais

    Posté par . Évalué à 1.

    C'est vraiment pas mal mais j'ai du mal a comprendre l'utilité. Je m'explique :

    Si il faut avoir le fichier avec soi pourquoi avoir besoin d'une inteface distante?
    Si tu a le fichier avec toi tu peu aussi avoir keepass le le même emplacement et tu est tranquille.

    Peux-tu m'expliquer quel est le besoin qui t'as pousser a faire celà? parce que je ne comprends pas l'utilité d'avoir un keepas en ligne si les données (ici le fichier KDB) ne sont pas directement dans l'appli.

    • [^] # Re: Oui mais

      Posté par . Évalué à 2.

      Il y a deux méthodes :
      1/ ouvrir un fichier distant, en fournissant l'URL dans l'écran de déverrouillage ;
      2/ ouvrir un fichier local, en le glissant sur l'écran de déverrouillage.

      Dans le premier cas, c'est du total distant (c'est cloud ;-) )

      Le second cas est utile si tu n'as pas de serveur webdav et que tu n'est pas chez toi. Tu n'as pas forcément envie d'installer toute la couche mono chez tes amis/ta famille juste pour lancer KeePass pour récupérer un mot de passe. Alors tu sors ta clé USB, et voilà :-D

      • [^] # Re: Oui mais

        Posté par . Évalué à 2.

        1) ok même si du coup on peu pas modifier le fichier mais bon de tout façon le soft ne le permet pas…
        2) quitte a avoir le fichier sur la clé autant prendre keepass avec parce que du coup si y'a pas le net (ok si y'a pas le net pourquoi t'aurai besoin de ton mot de passes ? )

        Merci pour ces explications même si je ne suis pas totalement convaincu de l'utilité de la chose en tout cas je l'ai testé qq minutes et ça a l'air propre et efficace …

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.