Polybios, gestion de trousseau PGP dans le navigateur

Publié le par /

Polybios est un prototype d’application Web permettant de gérer un trousseau de clés PGP : créer une paire de clés, importer les clés de ses contacts, signer et vérifier la signature d’un message, chiffrer et déchiffrer un texte. Le tout depuis votre navigateur, en stockant vos clés soit dans le navigateur, soit sur un serveur. Vous pouvez la tester sur Github.

Polybios est essentiellement une interface graphique et donc laide à l’excellente bibliothèque OpenPGP.js. Attention, si OpenPGP.js est une implémentation d’OpenPGP de grande qualité, dont le code a été contrôlé par des gens sérieux, je n’ai pour ma part que de très vagues rudiments en cryptologie, et j’utilise sans doute la bibliothèque en dépit du bon sens. La bibliothèque fournit des méthodes de haut niveau, à priori fiables, pour les quatre fonctions de base (signer/vérifier/chiffrer/déchiffrer), mais pour le reste je tâtonne entre la spec et le code. Bref, Polybios peut probablement vous aider à vous protéger contre la curiosité de néophytes, mais préférez des solutions plus sûres pour comploter contre le Parti de l’Ordre.

L’application propose trois méthodes de stockage du trousseau. Tout d’abord en local dans le navigateur (dans une base indexedDB, c’est le connecteur fourni par défaut par la bibliothèque). Dans ce cas, votre trousseau est stocké en clair dans un fichier sur votre ordinateur, donc quiconque accède à l’ordinateur peut accéder au trousseau. La sécurité est la même qu’avec d’autres clients PGP, qui stockent le trousseau dans des fichiers locaux). C’est utile si vous avez toujours votre ordinateur avec vous, ou si vous installez l’application sur un ordiphone.

Mais l’utilité d’une application Web est aussi de pouvoir être utilisée de n’importe où. Je propose donc deux méthodes de stockage en ligne. Dans les deux cas, avant de déposer le trousseau sur un serveur distant, l’application le chiffrera en vous demandant une phrase de passe. Quelqu’un qui accèderait à votre trousseau sur le serveur aurait donc besoin de cette phrase de passe pour le lire (sachant que vos clés secrètes sont de toutes façons protégées par leur propre phrase de passe). Les deux stockages distants sont :

  • un stockage spécifique à l’application, simple petit serveur node.js qui répond aux requêtes GET et POST et lit/écrit un bête fichier texte sur le disque. Cela implique donc de disposer d’un serveur où faire tourner ce petit bout de code. Le serveur ne gère aucune authentification, à vous de gérer les droits d’accès en amont (ce mode était initialement prévu pour installer l’application sur une instance CozyCloud) ;
  • remoteStorage ;

Écrire un connecteur n’est pas très compliqué, donc si vous avez des idées d’autres systèmes de stockage distant, n’hésitez pas à les suggérer.

Polybios est également un fournisseur de prestations de cryptographie pour d’autres applications Web, au travers de l’API Web Activities de Mozilla, via ma prothèse Acthesis. Ses quatre fonctions de base sont exposées via des activités Web auxquelles n’importe quelle autre application Web peut faire appel. Ce code était initialement prévu pour permettre l’utilisation de PGP dans l’application de messagerie de CozyCloud, mais ça n’est plus à l’ordre du jour, Cozy ne supportant pas les Web Activities.

Polybios devrait pouvoir fonctionner sur un téléphone Firefox OS, comme fournisseur de chiffrement. Une application ayant besoin de chiffrement peut communiquer avec Polybios via des Web Activities. Ça permettrait probablement de chiffrer et déchiffrer des messages dans le client Mail de Firefox OS. Si certains y voient une utilité, je peux proposer l’application dans l’épicerie applicative de Mozilla.

J’avoue douter de plus en plus de l’intérêt de ces weberies, au-delà du plaisir de les coder. De feu Couac à Àlir, mes applications n’ont jamais eu d’autre utilisateur que moi, et je suis persuadé que le Web n’arrivera jamais à être aussi ergonomique, simple et léger que la console. Polybios ne répond à aucun de mes besoins, et je ne pense donc pas y ajouter de nouvelles fonctionnalités, à moins que « des gens » n’en expriment le besoin. Donc, si vous pensez que cette application peut vous être utile, n’hésitez pas à vous manifester.

(Merci à Goofy pour les corrections de fôtes).

Pour réagir, n'hésitez-pas à m'écrire : clochix chez clochix.net ou à soumettre l'url de votre commentaire :
(Je traite les mentions à la main, elles peuvent mettre plusieurs jours avant d'apparaître)

Si vous avez un compte Github, vous pouvez me proposer des corrections en éditant ce billet

Fork me on GitHub