diff --git a/content/crypto/pgp-problemes.rst b/content/crypto/pgp-problemes.rst new file mode 100644 index 0000000..524eec5 --- /dev/null +++ b/content/crypto/pgp-problemes.rst @@ -0,0 +1,75 @@ +Les problèmes de PGP +#################### + +:date: 2015-05-25 +:headline: Quels sont les soucis liés à PGP, que faire ? + +.. epigraph:: + + Flip a bit in the communication between sender and recipient and they will + experience decryption or verification errors. How high are the chances they + will start to exchange the data in the clear rather than trying to hunt down + the man in the middle? + + -- http://secushare.org/PGP + +Une fois passé l'euphorie du "il faut utiliser PGP pour l'ensemble de nos +communications", j'ai réalisé lors de discussions que PGP avait plusieurs +problèmes, parmi ceux-ci: + +- Les *meta données* (y compris le champ "sujet" de la conversation) sont quand + même échangées en clair (il est possible de savoir qu'un message à été échangé + entre telle et telle personne, a telle date); +- PGP se base sur un protocole de communication qui est lui non chiffré, et il + est donc facile de soit se tromper, soit dégrader le mode de conversation vers + une méthode non chiffrée; +- Il est facile de connaître votre réseau social avec PGP, puisque tout le + principe est de signer les clés des personnes dont vous validez l'identité; +- En cas de fuite de votre clé privée, tous les messages que vous avez chiffrés + avec elle sont compromis. On dit que PGP ne fournit pas de *forward secrecy*; +- La découverte de la clé de pairs se passe souvent *en clair*, sans utiliser une + connexion "sécurisée" (HTTPS). Tout le monde peut donc voir ces échanges et + savoir de qui vous cherchez la clé; +- Les discussions de groupes sont très difficiles: il faut chiffrer pour chacun + des destinataires (ou que ceux-ci partagent une paire de clés). + +Je suis en train de creuser à propos les alternatives à PGP, par exemple `Pond +`_, qui lui ne construit pas par dessus un +standard déjà établi, et donc n'hérite pas de ses défauts (mais pas non plus de +son réseau déjà établi). + +En attendant, quelques bonnes pratiques sur PGP ;) + +Bonnes pratiques +================ + +Il est en fait assez facile d'utiliser PGP de travers. Riseup à fait `un +excellent guide +`_ +qui explique comment configurer son installation correctement. + +- J'en ai déjà parlé, mais il faut absolument choisir des phrases de passes + suffisamment longues. Pas facile de les retenir, mais indispensable. Vous + pouvez aussi avoir un document chiffré avec une clé que vous ne mettez jamais + en ligne, qui contiens ces phrases de passe, au cas ou vous les oubliez. +- Générez des clés RSA de 4096 bits, en utilisant sha512; +- Il faut utiliser une date d'expiration de nos clés suffisamment proche (2 + ans). Il est possible de repousser cette date si nécessaire, par la suite. + +Parmi les choses les plus frappantes que j'ai rencontrées: + +- Utiliser le *flag* `–hidden-recipient` avec PGP pour ne pas dévoiler qui est + le destinataire du message; +- Ne pas envoyer les messages de brouillons sur votre serveur, ils le seraient + en clair !; +- Utilisez HPKS pour communiquer avec les serveurs de clés, sinon tout le + trafic est en clair. + +Le `projet Bitmask `_ vise lui à rendre les outils de +chiffrement d'échanges de messages et de VPN simples à utiliser, encore quelque +chose à regarder. + +Enfin bref, y'a du taf. + +.. image:: {filename}/static/porte.jpg + :alt: Un peu d'ombre. diff --git a/content/crypto/webcrypto-distribution-signing.rst b/content/crypto/webcrypto-distribution-signing.rst new file mode 100644 index 0000000..8e9bdfa --- /dev/null +++ b/content/crypto/webcrypto-distribution-signing.rst @@ -0,0 +1,107 @@ +Web distribution signing +######################## + +:lang: en +:date: 2015-06-29 +:headline: Bringing trust back between software authors and user agents. + +.. note:: I'm not a crypto expert, nor pretend to be one. These are thoughts + I want to share with the crypto community to actually see if any + solution exists to solve this particular problem. + +One `often pointed `_ +flaw in web-based cryptographic applications is the fact that there is no way +to trust online software distributions. Put differently, you don't actually +trust the software authors but are rather trusting the software distributors +and certificate authorities (CAs). + +Attack vectors +============== + +Let's try to describe a few potential attacks: + +*Application Authors* just released a new version of their open source web +crypto messaging application. *Indie Hoster* installs it on their servers so +that a wide audience can actually use it. + +Someone alters the files on *Indie Hoster* servers, effectively replacing them with +other *altered files* with less security properties / a backdoor. This someone could either be +*Evil Attacker* or *Indie Hoster* which can already alter these files because +they're distributing them. + +Trusted *Certificate Authorities* (read "governments") can also trick to +User Agents (i.e. Firefox) into thinking they're talking to *Indie Hoster* even +if they're actually talking to a different party. + +**Altered files** are being served to the User Agents, and *Evil Attacker* now +has a way to actually attack the end users. + +Problem Mitigation +================== + +I hope it's clear by now that we miss a way to create trust between +*Application Authors* and *User Agents*. The User-Agent has to trust +*Certificate Authorities* and *Indie Hoster*. + +I believe this specific problem had been solved, at least partially, for +desktop software distribution: *Crypto Experts* audit the software, sign it +somehow and then this signature can be checked locally during installation or +runtime. + +For web applications, we don't have such a mechanism, but it should be +possible. Consider the following: + +- *App Authors* publish a new version of their software; They provide a hash of + each of their distributed files; +- *Crypto Experts* audit these files and sign the hashes with their private + key; +- *User Agents* have a way to add the certificate for *Crypto Experts*; +- When a *User Agent* downloads files, it checks if they're signed. + +Chosing who you trust +===================== + +.. note:: And now is the time I start talking about things I don't know. But + maybe you trust me? + +In terms of user experience, handling certificates is hard, and that's where +the community matters. Distributions such as `Tails `_ +could chose who they trust to verify the files, and issue warnings / refuse to +run the application in case files aren't verified. + +But, as highligted earlier, CAs are hard to trust. A new instance of the same +CA system wouldn't make that much differences, expect the fact that +distributions could ship with a set of trusted authorities (for which +revocation would still need to be taken care of). + +.. epigraph:: + + [...] users are vulnerable to MitM attacks by the authority, which can vouch + for, or be coerced to vouch for, false keys. This weakness has been + highlighted by recent CA scandals. Both schemes can also be attacked if the + authority does not verify keys before vouching for them. + + -- `SoK : Secure Messaging `_; + +It seems that some other systems could allow for something more reliable: + +.. epigraph:: + + Melara et al proposed CONIKS, using a series of chained commitments to Merkle + prefix trees to build a key directory [...] for which individual users can + efficiently verify the consistency of their own entry in the directory + without relying on a third party. + + This “self- auditing log” approach makes the system partially have no + auditing required (as general auditing of non-equivocation is still required) + and also enables the system to be privacy preserving as the entries in the + directory need not be made public. This comes at a mild bandwidth cost not + reflected in our table, estimated to be about 10 kilobytes per client per day + for self-auditing. + + -- `SoK : Secure Messaging `_; + +Now, I honestly have no idea if this thing is practicable, and I'm pretty sure +this design has many security problems attached to it. But that's a problem +I would really like to see solved one day, so here the start of the discussion, +don't hesitate to `get in touch `_! diff --git a/content/pages/about.rst b/content/pages/about.rst index 5d80bbd..21dd5cf 100644 --- a/content/pages/about.rst +++ b/content/pages/about.rst @@ -3,7 +3,7 @@ Bonjour, je suis Alexis :slug: about -(english version below) +.. note:: There is an english version of this page below. Je suis un développeur logiciel intéressé par l'écologie, l'éducation (populaire !), la thématique agricole et le *Do It Yourself* (DIY). @@ -50,7 +50,7 @@ english. You can find most of the computer related projects I am involved with `on my github page `_, on `the Mozilla services github page `_ or on `the Spiral project -page `_ +page `_. Don't hesitate to contact me at `alexis at notmyidea org`. The associated public key is `0x078805D867F56F12 `_. diff --git a/content/pages/projets.rst b/content/pages/projets.rst index 19b9124..fc4bb9b 100644 --- a/content/pages/projets.rst +++ b/content/pages/projets.rst @@ -5,6 +5,9 @@ Je pense que l'informatique est un fabuleux moyen de répondre à des besoins existants, en terme de collaboration notamment. Voici quelques logiciels dont je suis l'auteur ou un des contributeurs. +Projets personnels +================== + Pelican `Pelican `_ est un générateur de site statique. Son objectif est de permettre de trasformer des fichiers sur votre disque en blog @@ -45,5 +48,41 @@ Formbuilder libre et gratuit à Google forms. +Projets professionnels +====================== + +Kinto et Cliquet + `Kinto `_ et `Cliquet + `_ sont les successeurs + spirituels de Daybed. L'idée est toujours la même: stocker des données en + ligne, les partager et les synchroniser. + + Rémy, Mathieu, Nicolas et moi travaillons en ce moment sur ce projet pour + Mozilla. + +Firefox Hello + `Firefox Hello `_ est un moyen d'établir des + communications pair à pair en utilisant Firefox. Contrairement à d'autres + solutions, les communications ne passent par un tiers que lorsque cela est + absolument necessaire. + + J'ai écrit avec Rémy `le serveur de mise en relation + `_. + +Circus + `Circus `_ est un gestionnaire de + processus. C'est un logiciel *coté serveur* dont l'objectif est de veiller + sur les programmes qui s'executent afin de les relancer en cas d'échec. + + J'ai rejoint Tarek et Benoit sur le projet après qu'ils aient entammé le plus + gros du travail. + +Cornice + `Cornice `_ tente de rendre plus + simple la création de services web en mutualisant les bonnes pratiques. + + Tarek à écrit la première version du logiciel que j'ai ensuite retravaillé + pour rendre les évolutions plus simples. + Je n'indique ici que certains des projets auquels je contribue, vous pouvez en trouver d'autres sur `mon profil GitHub `_. diff --git a/content/static/soupasoups.jpg b/content/static/soupasoups.jpg new file mode 100644 index 0000000..3ddcfea Binary files /dev/null and b/content/static/soupasoups.jpg differ