clipperz : online password manager

Posté le Samedi 28 avril 2007 à 9 h 56, Read it in english with Google

J’ai longtemps cherch√© un outils come celui-ci, et j’ai m√™me entreprie d’en cr√©√© un, que je n’ai pas finalis√© …

Clipperz est un gestionnaire de mot de passe en ligne, pour une utilisation sur le web.

Il vous permet de stocker vos mots de passes de tout vos compte sur le net. Qui n’a jamais r√®vez de ne plus jamais entrer de mot de passe ?

Le système est simple :

  • creez votre compte clipperz (je vous conseille un mot de passe tr√®s compliqu√©, √ßa assurera la s√©curit√© de tout les autres)
  • allez dans l’onglet bookmarklet, et vous faites glisser le lien Add to Clipperz dans la barre personnel de firefox (Affichage > barres d’outils > barre personnelle) ou n’importe o√Ļ avec Opera
  • allez sur la page d’authentification que vous souhaitez retenir
  • entrez votre login et votre mot de passe sans valider
  • clickez sur le bouton Add to Clipperz que vous avez ajouter
  • copiez le contenu
  • allez dans votre espace clipperz et dans la setion Cards et clickez sur add new card
  • enfin, saissez le titre de votre Card et coller le contenu, puis clickez sur create
  • Les informations de login sont enregistr√©s, il ne vous reste plus qu’a clickez sur save

Maintenant vous n’aurez plus qu’a clicker sur le lien de cette page dans le cadre Direct Login de Clipperz.

Je vous l’accorde, ce n’est pas encore si ais√© que √ßa, Mais √ßa permet une s√©curit√© maximum.

Explications techniques

le système ne stocke aucun de vos mot de passe, ni même votre mots de passe de votre compte, tout est encrypter coté client et stockez dans leur base de données.
La clef de codage est votre propre mot de passe. La fonction de hashage pour le protocol SRP est SHA-2, une extension que de SHA-256 : H = SHA-256 (SHA-256 (m)). L’encryptage utilis√© pour stock√© les information est du AES 256 utilisant votre propre mot de passe (ou un d√©riv√© hasher) pour crypter les donn√©es. Ajout√© √† cela, le protocole HTTPS sur SSL (TLS) pour crypter les donn√©es transmises qui lui utilise un certificat et les fonctions de cryptage du navigateur. L’utilisation de SSL est une s√©curit√© suppl√©mentaire qui, th√©oriquement, n’est pas utilie sauf en cas de corruption de l’adresse IP associ√© au nom de domaine (DNS spoofing). Et n’oublions pas une petite technique avanc√©e pour g√©n√©rer les nombres pseudo-al√©atoires : Fortuna PRNG.

Autant vous dire que l√† c’est du lourd. Le cryptage AES-256 est le standard de chiffrement des informations class√©es top secr√®tes par le gourvenement US. Par-contre j’aurais ajout√© un clavier virtuelle √† la mani√®re des banques au cas o√Ļ l’on se connecte √† partir d’un poste pas tr√®s fiable, mais apparement une fonction de mot de passe jetable est en developpement.

Les cr√©ateurs ont mis le code source en ligne et il est distribuer sous licence BSD, une tr√®s bonne chose ! On peut √©galement t√©l√©charger notre base de donn√©es crypt√©es avec une adaptation locale de Clipperz. Et oui il n’y a pas de besoin d’un SGBD pour g√©rer √ßa puisque toutes les donn√©es de la DB sont crypt√©, mais je pense que lorsqu’on commence √† atteindre une centaine de Cards, on a int√©ret d’avoir de la m√©moire vive.

Il manque peut-√™tre encore la possibilit√© de cr√©er simplement de triplais info-user-password car tout nos mots de passes ne s’utilisent pas forc√©ment sur une page web (ex: ftp, ssh).

Je salut les developpeurs qui ont eut le courage de mettre ça en place, chapeau bas.

6 réponses à “clipperz : online password manager”

  1. Giulio Cesare Solaroli

    Sorry for writing in English, and thank you very much for your kind review.

    But I would like to correct you about the AES implementation we are using.

    We want to keep the 128-bit security level through the whole service, and this is achieved only by AES-256.
    I don’t know where did you find the information about Clipprez using AES-128, but we are definitely using AES-256.

    About ECC, they are under development, but not to replace SSL, but in order to implement record sharing between Clipperz’s users. We have tried to implement RSA, but it was to expensive to use (at the 128-bit security level) and so we have moved to ECC, hoping to be able to achieve acceptable performances.

    Thanks for using Clipperz

    Giulio Cesare Solaroli
    Clipperz co-Founder and CTO

  2. XoraX

    Thanks you for this repport and really congratulation for Clipperz.

    I have corrected my post about AES. I had badly read the informations.

    I did not really understand how you will implement record sharing, so I will understand how you will use the ECC when this functionality will be ready.

    I would really love that you propose a simple notepad-like or a simple password manager for save the sensibles informations which does not use a web authentification inevitably.

    Thanks again and sorry for writing with my bad english :)

  3. pkoipas69

    Bonsoir,
    Je post au mauvais endrait je le sais mais je n’ai trop le temps de chercher tant mon probl√®me me pose :
    Je travaille en Javascript OOP notation JSON.
    Je n’ai jusque ici eu aucun pb : une prog de r√™ve ! (hormis W3C vs IE et m√™me Opera lol)
    Jusque qu’√† travailler sur les √©v√®nements !
    L√† non plus plus aucun pb, sauf que je perds le scope (this) puisque chaque addeventlistener ou attachevent s’approprient le ‘this’ en tant qu’instance de l’objet sur lequel est pos√© l’√©v√®nement (ce qui me semble loqique).
    Mais comment r√©cup√©rer le ‘this’ de mon instance sans l’affecter √† une variable globale ou l’affecter √† une variable locale avant l’appel √† une fonction ?
    En fait ma question ne concerne pas trop une fa√ßon de proc√©der mais plus une syntaxe que je n’aurais comprise.
    Je lis le site du W3C √† chaque fois que j’en ai besoin mais je n’ai nullement apper√ßu une fa√ßon de passer une instance de l’objet appelant √† un « event listener » en plus de l’instance de l’objet que le listener se doit de surveiller.
    Alors JSON et addEventListener/attachEvent incompatibles ?

  4. XoraX

    Bonsoir,
    En se qui concerne ton probl√®me, tu est oblig√© de cr√©er une variable locale avant l’affectation de la fonction du addeventlistener (ou attachevent).

    Pour éviter de faire ça à chaque fois, le framework prototype à créé une méthode très utile :

    Function.prototype.bind = function() {
      var __method = this, args = $A(arguments), object = args.shift();
      return function() {
        return __method.apply(object, args.concat($A(arguments)));
      }
    }

    ce qui donne, sans utiliser le framework en entier :

    Function.prototype.bind = function() {
      var __method = this, args = arguments, object = args.shift();
      return function() {
        return __method.apply(object, args.concat(arguments));
      }
    }

    ainsi apr√®s avoir d√©clarer cette m√©thode, il suffit de mettre simplement, √† l’int√©rieur d’un objet :

    element.attachEvent('onclick',(
      function(){
        this.unefonction();
        this.ouunevar = 'sekejveu';
      }
    ).bind(this));

    J’√©sp√®re que j’ai bien r√©pondu √† ton probl√®me ?

  5. pkoipas69

    Bonsoir,
    D√©sol√©, d’avoir tard√© √† te r√©pondre.
    Oui tu as bien répondu à mon problème.
    Quelques agencements √† r√©aliser n√©anmoins pour mettre la fonction en oeuvre dans le cadre de gestion des √©v√®nements car les arguments dans notre cas ne sont des ‘array’ (donc pas de propri√©t√©s ‘slice’ et ‘concat’) mais un ‘object’.

    // La fonction de 'binding'
    Function.prototype.bind = function() {
      var __method = this, __parent = arguments[0];
      return function() {
        return __method.apply(__parent, arguments);
      }
    }

    // La function d'ajout d'évènements en notation JSON puisque je la définis dans un objet JS.
    // --> Non compatible NS4 ou IE5Mac : J'ai 'écourté' la fonction pour les browsers courants
    addEvent: function(obj, evType, fn)
    {
        if (obj.addEventListener){
            obj.addEventListener(evType, fn, false);
        }
        else if (obj.attachEvent) {
            obj.attachEvent("on" + evType, fn);
        }
        obj = null; // Evite les 'fuites' de m√©moire surtout pour IE
    }

    // L'appel
    // Exemple d'ajout d'un événement 'click' associé à la fonction 'test' pour l'élément DOM
    // 'MyElt'
    // Ajout de la fonction nommée 'test'
    elt = document.getElementById("MyElt");
    this.addEvent (elt, "click", test=(function()
        {
            this.Event();
        }).bind(this)); // Propage le scope

    // Et pour la suppression d'évènement :
    removeEvent: function(obj, evType, fn)
    {
        if (obj.removeEventListener){
            obj.removeEventListener(evType, fn, false);
        } else if (obj.detachEvent) {
            obj.detachEvent("on" + evType, fn);
        }
    }

    // L'appel
    // Exemple de suppression d'un événement 'click' associé à la fonction 'test' pour l'élément
    // DOM 'MyElt'
    // Suppression de la fonction nommée 'test'
    elt = document.getElementById("MyElt");
    this.removeEvent (elt, "click", test);

    Cela fonctionne sour FF 2.0 et IE7. Je m’en vais tester tout cela dans les versions inf√©rieures ;)

    Encore merci pour ton aide,
    Flo

  6. Tuto: installer Clipperz Community Edition sur votre propre serveur | www.php-geek.fr contient sur le sujet :

    [...] que c’est une tr√®s bonne initiative car m√™me si Clipperz est d√©j√† tr√®s s√©curis√© (cf http://www.xorax.info/blog/news/173-clipperz-online-password-manager.html pour plus de d√©tails.) certains n’ont pas tr√®s envie de mettre tous leurs mots de passe sur [...]

    le Dimanche 13 novembre 2011 @ 19 h 41

Laissez un commentaire :