blog.notmyidea.org/feeds/crypto.atom.xml
2019-07-02 22:54:50 +00:00

809 lines
No EOL
62 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Carnets Web - crypto</title><link href="https://blog.notmyidea.org/" rel="alternate"></link><link href="https://blog.notmyidea.org/feeds/crypto.atom.xml" rel="self"></link><id>https://blog.notmyidea.org/</id><updated>2016-03-25T00:00:00+01:00</updated><entry><title>Avez vous confiance en SSL?</title><link href="https://blog.notmyidea.org/avez-vous-confiance-en-ssl.html" rel="alternate"></link><published>2016-03-25T00:00:00+01:00</published><updated>2016-03-25T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2016-03-25:/avez-vous-confiance-en-ssl.html</id><summary type="html">&lt;p&gt;Dans le cadre &lt;a href="http://autodefense-numerique.readthedocs.org/en/latest/"&gt;des ateliers d'autodéfense numérique&lt;/a&gt;,
j'ai passé un peu de temps à creuser sur l'utilisation de SSL puisque
contrairement à ce que la plupart des personnes ont encore tendance à croire,
le petit cadenas (qui prouve qu'une connexion SSL est en cours) n'est
&lt;strong&gt;absolument&lt;/strong&gt; pas suffisant.&lt;/p&gt;
&lt;p&gt;Allez hop …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Dans le cadre &lt;a href="http://autodefense-numerique.readthedocs.org/en/latest/"&gt;des ateliers d'autodéfense numérique&lt;/a&gt;,
j'ai passé un peu de temps à creuser sur l'utilisation de SSL puisque
contrairement à ce que la plupart des personnes ont encore tendance à croire,
le petit cadenas (qui prouve qu'une connexion SSL est en cours) n'est
&lt;strong&gt;absolument&lt;/strong&gt; pas suffisant.&lt;/p&gt;
&lt;p&gt;Allez hop, c'est parti pour:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un tour d'horizon du fonctionnement de SSl&lt;/li&gt;
&lt;li&gt;quelques moyens contourner cette "protection" en faisant une attaque en pratique&lt;/li&gt;
&lt;li&gt;un tour des solutions existantes actuellement et de pourquoi je ne les trouve
pas vraiment satisfaisantes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Comment fonctionne SSL?&lt;/h2&gt;
&lt;p&gt;Pour expliquer les problèmes de SSL, j'ai d'abord besoin d'expliquer comment
tout ça fonctionne.&lt;/p&gt;
&lt;p&gt;SSL repose sur l'utilisation de certificats, qui sont générés par des autorités
de certification (&lt;em&gt;Certificate Authority&lt;/em&gt; que je nomme &lt;em&gt;CA&lt;/em&gt; dans la suite de
l'article).&lt;/p&gt;
&lt;p&gt;Les certificats SSL permettent deux choses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;De garantir que les communications entre les navigateurs (vous) et les sites
Web ne sont connues que du détenteur du certificat du site et de vous même.&lt;/li&gt;
&lt;li&gt;De garantir que le site sur lequel vous vous connectez est bien celui que
vous imaginez.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le navigateur, lors d'une visite d'un site, va télécharger le certificat
associé puis vérifier que le certificat en question a bien été généré par un
des &lt;em&gt;CA&lt;/em&gt; en qui il a confiance.&lt;/p&gt;
&lt;p&gt;Imaginons maintenant qu'une des &lt;em&gt;CA&lt;/em&gt; essaye de savoir ce qui s'échange entre
mon navigateur et le site de ma banque (protégé par SSL). Comment cela se
passerait il ?&lt;/p&gt;
&lt;p&gt;N'importe quel &lt;em&gt;CA&lt;/em&gt; peut donc générer des certificats pour n'importe quel site,
et le navigateur vérifierait, lui, que le certificat a bien été généré par une
&lt;em&gt;CA&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tout cela ne poserait pas de soucis si les &lt;em&gt;CA&lt;/em&gt; étaient gérés de manière fiable,
mais il s'agit d'un travail compliqué, et certains &lt;em&gt;CA&lt;/em&gt; ont par le passé montré
des faiblesses.&lt;/p&gt;
&lt;p&gt;Par exemple, &lt;a href="https://en.wikipedia.org/wiki/DigiNotar"&gt;DigiNotar&lt;/a&gt; (un &lt;em&gt;CA&lt;/em&gt; des Pays-Bas)
a été compromise et les attaquant.e.s ont pu générer des certificats SSL
frauduleux, ce qui leur a permis d'attaquer des sites tels que Facebook ou GMail.&lt;/p&gt;
&lt;p&gt;Vous pouvez retrouver une liste des risques et menaces autour des &lt;em&gt;CA&lt;/em&gt; &lt;a href="http://wiki.cacert.org/Risk/History"&gt;sur le
wiki de CACert&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Attaque de l'homme du milieu avec SSL&lt;/h2&gt;
&lt;p&gt;A force de dire que c'était très facile à faire, j'ai eu envie d'essayer
d'espionner des connections protégées par SSL, et effectivement c'est
carrément flippant tellement c'est simple.&lt;/p&gt;
&lt;p&gt;En l'espace de quelques minutes, il est possible de faire une &lt;em&gt;attaque de
l'homme du milieu&lt;/em&gt; en utilisant par exemple un outil nommé &lt;a href="http://docs.mitmproxy.org/en/stable"&gt;mitm-proxy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour déchiffrer l'ensemble du trafic SSL, j'ai simplement eu à lancer quelques
commandes et avoir un &lt;em&gt;CA&lt;/em&gt; dans lequel le navigateur de la victime a confiance.
Je l'ai ajouté dans le navigateur cible pour simuler que je l'avais déjà
(c'est le cas si un des 1200 CA se fait pirater, ce qui me semble une surface
d'attaque assez large).&lt;/p&gt;
&lt;p&gt;Je les colle ici si ça vous intéresse:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo aptitude install mitmproxy
$ mitm-proxy -T --host
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut faire croire à votre victime que vous êtes la passerelle vers
l'extérieur et à la passerelle que vous êtes la victime:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;arpspoof -i wlan0 -t victime gateway
arpspoof -i wlan0 -t gateway victime
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis dire à notre fausse passerelle de rediriger le trafic des ports 80 et 443
vers notre proxy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo sysctl -w net.ipv4.ip_forward&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport &lt;span class="m"&gt;443&lt;/span&gt; -j REDIRECT --to-port &lt;span class="m"&gt;4443&lt;/span&gt;
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport &lt;span class="m"&gt;80&lt;/span&gt; -j REDIRECT --to-port &lt;span class="m"&gt;4443&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et paf, &lt;strong&gt;on voit tout ce qui passe entre la machine et le serveur SSL&lt;/strong&gt;. On peut
d'ailleurs même imaginer faire tourner ces quelques commandes sur un
raspberry pi, pour aller encore plus vite…&lt;/p&gt;
&lt;h3&gt;Key-pinning dans les navigateurs&lt;/h3&gt;
&lt;p&gt;Actuellement, n'importe quel &lt;em&gt;CA&lt;/em&gt; peut générer des certificats pour
n'importe quel site, et c'est en grande partie ce qui pose souci. Une des
manières de faire évoluer la situation est d'épingler les certificats de
certains sites directement dans les navigateurs.&lt;/p&gt;
&lt;p&gt;Cette approche a le mérite de fonctionner très bien &lt;a href="https://dxr.mozilla.org/mozilla-central/source/security/manager/ssl/StaticHPKPins.h?from=StaticHPKPins.h"&gt;pour un petit nombre de
sites critiques (Google, Facebook, etc)&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;HTTP Public Key Pinning (HPKP)&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en/docs/Web/Security/Public_Key_Pinning"&gt;&lt;em&gt;HTTP Public Key Pinning&lt;/em&gt;&lt;/a&gt;
est également une solution de &lt;em&gt;pinning&lt;/em&gt; qui permet d'établir une confiance lors
de la première connexion avec le site. C'est ce qu'on appelle du &lt;em&gt;Trust on First
Use&lt;/em&gt; ou &lt;em&gt;TOFU&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Le navigateur va alors mettre ces informations dans un cache et vérifiera que
les certificats correspondent bien lors des prochaines visites.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;HPKP&lt;/em&gt; est disponible dans Firefox depuis Janvier 2015 et dans Chrome
depuis Octobre 2015.&lt;/p&gt;
&lt;h3&gt;Certificate transparency: des journaux auditables&lt;/h3&gt;
&lt;p&gt;Une autre approche est celle proposée par &lt;em&gt;certificate transparency&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Certificate Transparency aims to remedy these certificate-based threats by
making the issuance and existence of SSL certificates open to scrutiny by
domain owners, CAs, and domain users.&lt;/p&gt;
&lt;p&gt;-- &lt;a href="https://www.certificate-transparency.org/what-is-ct"&gt;Certificate Transparency&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Autrement dit, avec ce système les &lt;em&gt;CA&lt;/em&gt; doivent rendre public le fait qu'ils
aient signé de nouveaux certificats intermédiaires. La signature est ajoutée à
un journal sur lequel il n'est possible que d'écrire.&lt;/p&gt;
&lt;p&gt;Les navigateurs vont alors vérifier que les certificats utilisés sont bien des
certificats qui ont été ajoutés au journal.&lt;/p&gt;
&lt;p&gt;Ici, toute l'intelligence est dans la vérification de ces journaux, qui
permettent donc de valider/invalider des certificats racines ou intermédiaires.&lt;/p&gt;
&lt;p&gt;Il me semble donc qu'il serait possible d'ajouter un certificat frauduleux le
temps d'une attaque (et celui ci serait détecté et supprimé ensuite).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Certificate-Transparency&lt;/em&gt; n'est donc pas une solution contre une écoute
globale mise en place par les gouvernements par exemple.&lt;/p&gt;
&lt;p&gt;Si vous lisez bien l'anglais, je vous invite à aller lire
&lt;a href="http://security.stackexchange.com/a/52838"&gt;cette description du problème et de la solution&lt;/a&gt;
que je trouve très bien écrite.&lt;/p&gt;
&lt;h3&gt;DANE + DNSSEC&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The DANE working group has developed a framework for securely
retrieving keying information from the DNS [RFC6698]. This
framework allows secure storing and looking up server public key
information in the DNS. This provides a binding between a domain
name providing a particular service and the key that can be used
to establish encrypted connection to that service.&lt;/p&gt;
&lt;p&gt;-- &lt;a href="https://datatracker.ietf.org/wg/dane/charter/"&gt;Dane WG&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une autre solution est appelée "DANE" et repose par dessus le protocole
&lt;em&gt;DNSSEC&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Je connais assez mal &lt;em&gt;DNSSEC&lt;/em&gt; donc j'ai passé un peu de temps à lire des
documents. L'impression finale que ça me laisse est que le problème est
exactement le même que pour SSL: un certain nombre de personnes détiennent les
clés et toute la sécurité repose sur cette confiance. Or il est possible que
ces clés soient détenues par des personnes non dignes de confiance.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Secure DNS (DNSSEC) uses cryptographic digital signatures signed with a
trusted public key certificate to determine the authenticity of data.
-- https://en.wikipedia.org/wiki/DNS_spoofing&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et aussi:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is widely believed[1] that securing the DNS is critically important for
securing the Internet as a whole, but deployment of DNSSEC specifically has
been hampered (As of 22 January 2010) by several difficulties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The need to design a backward-compatible standard that can scale to the
size of the Internet&lt;/li&gt;
&lt;li&gt;Prevention of "zone enumeration" (see below) where desired&lt;/li&gt;
&lt;li&gt;Deployment of DNSSEC implementations across a wide variety of DNS servers
and resolvers (clients)&lt;/li&gt;
&lt;li&gt;Disagreement among implementers over who should own the top-level domain
root keys Overcoming the perceived complexity of DNSSEC and DNSSEC
deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Solutions basées sur la blockchain&lt;/h2&gt;
&lt;p&gt;Une dernière piste semble être l'utilisation de la &lt;em&gt;blockchain&lt;/em&gt; pour distribuer
des clés par site.&lt;/p&gt;
&lt;p&gt;La solution &lt;em&gt;DNSChain&lt;/em&gt; me paraissait tout d'abord un bon point de départ mais
la lecture de &lt;a href="https://www.indolering.com/okturtles-dnschain-unblock-us"&gt;quelques critiques&lt;/a&gt;
et interventions du développeur du projet m'ont fait changer d'avis.&lt;/p&gt;
&lt;p&gt;Reste encore la piste de &lt;em&gt;Namecoin Control&lt;/em&gt; que je n'ai pas encore creusée.
Peut-être pour un prochain billet. Toute piste de réflexion est bien sur la
bienvenue sur ces sujets!&lt;/p&gt;</content></entry><entry><title>Retours sur un atelier ZeroNet</title><link href="https://blog.notmyidea.org/retours-sur-un-atelier-zeronet.html" rel="alternate"></link><published>2016-03-17T00:00:00+01:00</published><updated>2016-03-17T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2016-03-17:/retours-sur-un-atelier-zeronet.html</id><summary type="html">&lt;p&gt;Mardi dernier se tenait &lt;a href="http://biblio.insa-rennes.fr/crypto"&gt;une &lt;em&gt;cryptoparty&lt;/em&gt;&lt;/a&gt;
dans les locaux de l'INSA de Rennes.&lt;/p&gt;
&lt;p&gt;L'évènement s'étant rempli au delà de toutes les espérances, on m'a proposé de
venir y tenir un atelier, que j'ai proposé sur &lt;a href="https://zeronet.io"&gt;ZeroNet&lt;/a&gt;, un
petit projet fort sympathique qui pourrait devenir une nouvelle manière de
distribuer le …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Mardi dernier se tenait &lt;a href="http://biblio.insa-rennes.fr/crypto"&gt;une &lt;em&gt;cryptoparty&lt;/em&gt;&lt;/a&gt;
dans les locaux de l'INSA de Rennes.&lt;/p&gt;
&lt;p&gt;L'évènement s'étant rempli au delà de toutes les espérances, on m'a proposé de
venir y tenir un atelier, que j'ai proposé sur &lt;a href="https://zeronet.io"&gt;ZeroNet&lt;/a&gt;, un
petit projet fort sympathique qui pourrait devenir une nouvelle manière de
distribuer le Web, permettant notamment d'éviter la censure.&lt;/p&gt;
&lt;p&gt;Avant toute autre chose, merci énormément à l'équipe de la bibliothèque de
l'INSA pour l'organisation de cet évènement qui à une réelle portée politique.&lt;/p&gt;
&lt;h2&gt;Un peu d'histoire&lt;/h2&gt;
&lt;p&gt;Il me semble que Tim Bernes Lee (l'inventeur du Web) avait prévu le Web comme un
protocole décentralisé. Chacun hébergerait ses données et les servirait aux
autres, qui pourraient alors y accéder.&lt;/p&gt;
&lt;p&gt;Avec ce fonctionnement, impossible alors d'accéder à des sites si leur auteur
n'est pas en ligne. Qu'à cela ne tienne, on s'est mis à avoir des machines qui
restent connectées au réseau 24 heures par jour. Et puis une machine ne
suffisant plus, on a eu des fermes de machines dans des &lt;em&gt;data centers&lt;/em&gt; etc afin
de supporter les milliers d'utilisateurs des sites.&lt;/p&gt;
&lt;h2&gt;Un Web décentralisé&lt;/h2&gt;
&lt;p&gt;ZeroNet permet (entre autres) de répondre à ce problème en proposant une manière
alternative de &lt;strong&gt;distribuer le Web&lt;/strong&gt;, en pair à pair. Lors d'une visite d'un
site:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vous contactez un &lt;em&gt;tracker&lt;/em&gt; BitTorrent pour connaitre la liste des autres
visiteurs du site (les &lt;em&gt;pairs&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Vous demandez aux &lt;em&gt;pairs&lt;/em&gt; de vous donner les fichiers du site.&lt;/li&gt;
&lt;li&gt;Vous validez que les fichiers servis sont bien les bons (en vérifiant la
signature attachée).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;N'importe quel visiteur devient alors un &lt;em&gt;pair&lt;/em&gt;, qui sert le site aux autres
visiteurs.&lt;/p&gt;
&lt;p&gt;Parmi les nombreux avantages de cette approche, je note particulièrement que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il est très difficile de censurer un site — Il est sur l'ensemble des machines
des visiteurs.&lt;/li&gt;
&lt;li&gt;Les attaques par &lt;em&gt;fingerprinting&lt;/em&gt; sont impossibles: le navigateur Web se
connecte à un serveur &lt;em&gt;proxy&lt;/em&gt; local.&lt;/li&gt;
&lt;li&gt;Vous détenez directement vos données et (par design) ne les donnez pas à des
silos (Facebook, Google, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vous êtes interessés par une démonstration rapide, j'ai enregistré une vidéo
de 10 minutes où je parle en anglais avec une voix très grave.&lt;/p&gt;
&lt;video controls="" src="http://alexis.notmyidea.org/zeronet.webm" width=800&gt;&lt;/video&gt;
&lt;h2&gt;Atelier&lt;/h2&gt;
&lt;p&gt;Pour l'atelier, j'ai choisi de faire une présentation rapide du projet (&lt;a href="{filename}/static/zeronet-presentation-fr.pdf"&gt;j'ai
traduit les slides&lt;/a&gt; anglais
pour l'occasion — &lt;a href="https://docs.google.com/presentation/d/158C_-V1ueNaaKHMBMBgGOVhunb9xrXzB3hC_g1N53c0/edit?usp=sharing"&gt;accès aux sources&lt;/a&gt;)
avant d'installer ZeroNet sur les machines et de l'utiliser pour publier un
site.&lt;/p&gt;
&lt;h3&gt;Partager sur le réseau local&lt;/h3&gt;
&lt;p&gt;Nous avons eu des soucis à cause du réseau (un peu congestionné) sur lequel
les ports utilisés pour la discussion entre &lt;em&gt;pairs&lt;/em&gt; étaient fermés. Il est bien
sur possible de faire tourner le tout de manière indépendante du reste du réseau,
mais je n'avais pas prévu le coup.&lt;/p&gt;
&lt;p&gt;Voici donc comment faire pour contourner le souci:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Installer et lancer un &lt;em&gt;tracker&lt;/em&gt; BitTorrent (De manière surprenante,
&lt;a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685575"&gt;rien n'est packagé pour debian pour l'instant&lt;/a&gt;)
J'ai choisi d'installer &lt;a href="http://erdgeist.org/arts/software/opentracker/#build-instructions"&gt;OpenTracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensuite lancer ZeroNet avec des options spécifiques.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ python zeronet.py --trackers udp://localhost:6969 --ip_external &lt;span class="m"&gt;192&lt;/span&gt;.168.43.207
$ python zeronet.py --trackers udp://192.168.43.207:6969 --ip_external &lt;span class="m"&gt;192&lt;/span&gt;.168.43.172
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est nécessaire de spécifier l'adresse IP externe que chaque nœud expose pour
éviter qu'elle n'essaye d'aller la trouver par elle même: nous voulons l'adresse
du réseau local, et non pas l'adresse internet.&lt;/p&gt;
&lt;p&gt;La prochaine fois je tenterais de venir avec un HotSpot Wifi et un tracker
BitTorrent dans la poche!&lt;/p&gt;
&lt;h2&gt;Questions / Réponses&lt;/h2&gt;
&lt;p&gt;Il y avait quelques questions intéressantes auxquelles je n'ai pas toujours su
répondre sur le moment. Après quelques recherches, je rajoute des détails ici.&lt;/p&gt;
&lt;h3&gt;Torrent + Tor = brèche de sécu ?&lt;/h3&gt;
&lt;p&gt;Il me semblait avoir entendu parler de problèmes de &lt;em&gt;dé-anonymisation&lt;/em&gt;
&lt;a href="https://hal.inria.fr/file/index/docid/471556/filename/TorBT.pdf"&gt;lors de l'utilisation de BitTorrent par dessus Tor&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dans certains cas, certains clients torrents (uTorrent, BitSpirit, etc)
écrivent directement votre adresse IP dans l'information qui est envoyée
au tracker et/ou aux autres pairs.
— https://blog.torproject.org/blog/bittorrent-over-tor-isnt-good-idea&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/HelloZeroNet/ZeroNet/issues/274"&gt;Ce n'est pas le cas de ZeroNet&lt;/a&gt;, ce qui évacue le souci.&lt;/p&gt;
&lt;h3&gt;ZeroMail, c'est lent non ?&lt;/h3&gt;
&lt;p&gt;Une des applications de démo, &lt;em&gt;ZeroMail&lt;/em&gt;, propose un mécanisme qui permet de
s'envoyer des messages chiffrés sur un réseau pair à pair. L'approche choisie
est de chiffrer les messages avec la clé du destinataire et de le mettre dans
un &lt;em&gt;pot commun&lt;/em&gt;. Tout le monde essaye de déchiffrer tous les messages, mais ne
peut déchiffrer que les siens.&lt;/p&gt;
&lt;p&gt;Cela permet de ne &lt;strong&gt;pas&lt;/strong&gt; fuiter de méta-données, &lt;a href="{filename}../crypto/2015.05.pgp-problemes.rst"&gt;à l'inverse de PGP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je n'ai en fait pas de réponse claire à donner à cette question: l'auteur de
ZeroNet me disait que 10MB (la limite de taille d'un site, par défaut)
correspondait à beaucoup de place pour stocker des messages, et qu'il était
possible de supprimer les anciens messages une fois qu'ils sont lus par exemple.&lt;/p&gt;
&lt;p&gt;Une autre solution à laquelle je pensait était de créer un &lt;em&gt;ZeroSite&lt;/em&gt; pour
chaque récipient, mais on connait à ce moment là le nombre de messages qu'un
utilisateur peut recevoir.&lt;/p&gt;
&lt;p&gt;Je vois plusieurs problèmes avec le design actuel de ZeroMail (il me semble
assez facile d'y faire un déni de service par exemple). A creuser.&lt;/p&gt;
&lt;h3&gt;Comment héberger des très gros sites ?&lt;/h3&gt;
&lt;p&gt;Par exemple, comment faire pour héberger Wikipedia ?&lt;/p&gt;
&lt;p&gt;Il semble que la meilleure manière de faire serait de séparer Wikipedia en
un tas de petites ressources (par catégorie par ex.). Les gros médias pourraient
être considérés optionnels (et donc téléchargés uniquement à la demande)&lt;/p&gt;
&lt;h3&gt;Est-ce qu'on à vraiment besoin d'un tracker ?&lt;/h3&gt;
&lt;p&gt;Le support d'une DHT &lt;a href="https://github.com/HelloZeroNet/ZeroNet/issues/57"&gt;est souhaité&lt;/a&gt;,
mais pour l'instant pas encore implémenté. L'utilisation de la DHT BitTorrent
n'est pas une option puisque &lt;a href="https://github.com/HelloZeroNet/ZeroNet/issues/57"&gt;Tor ne supporte pas UDP&lt;/a&gt;.&lt;/p&gt;</content></entry><entry><title>Let's Encrypt + HAProxy</title><link href="https://blog.notmyidea.org/lets-encrypt-haproxy.html" rel="alternate"></link><published>2016-02-11T00:00:00+01:00</published><updated>2016-02-11T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2016-02-11:/lets-encrypt-haproxy.html</id><summary type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Its time for the Web to take a big step forward in terms of security and
privacy. We want to see HTTPS become the default. Lets Encrypt was built
to enable that by making it as easy as possible to get and manage
certificates.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="https://letsencrypt.org/"&gt;Let's Encrypt&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Depuis début …&lt;/p&gt;</summary><content type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Its time for the Web to take a big step forward in terms of security and
privacy. We want to see HTTPS become the default. Lets Encrypt was built
to enable that by making it as easy as possible to get and manage
certificates.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="https://letsencrypt.org/"&gt;Let's Encrypt&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Depuis début Décembre, la nouvelle &lt;em&gt;autorité de certification&lt;/em&gt; Let's Encrypt
est passée en version &lt;em&gt;Beta&lt;/em&gt;. Les certificats SSL sont un moyen de 1. chiffrer la
communication entre votre navigateur et le serveur et 2. un moyen d'être sur
que le site Web auquel vous accédez est celui auquel vous pensez vous connecter
(pour éviter des &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Attaque_de_l'homme_du_milieu"&gt;attaques de l'homme du milieu&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Jusqu'à maintenant, il était nécessaire de payer une entreprise pour faire en
sorte d'avoir des certificats qui évitent d'avoir ce genre d'erreurs dans vos
navigateurs:&lt;/p&gt;
&lt;img alt="Message de firefox lorsque une connexion n'est pas sécurisée." src="{filename}/static/unsecure-connection.png" /&gt;
&lt;p&gt;Maintenant, grâce à Let's Encrypt il est possible d'avoir des certificats SSL
&lt;strong&gt;gratuits&lt;/strong&gt;, ce qui représente un grand pas en avant pour la sécurité de nos
communications.&lt;/p&gt;
&lt;p&gt;Je viens de mettre en place un procédé (assez simple) qui permet de configurer
votre serveur pour générer des certificats SSL valides avec Let's Encrypt et
le répartiteur de charge &lt;a class="reference external" href="http://www.haproxy.org/"&gt;HAProxy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je me suis basé pour cet article sur d'&lt;a class="reference external" href="https://blog.infomee.fr/p/letsencrypt-haproxy"&gt;autres&lt;/a&gt; &lt;a class="reference external" href="http://blog.victor-hery.com/article22/utiliser-let-s-encrypt-avec-haproxy"&gt;articles&lt;/a&gt;, dont je
vous recommande la lecture pour un complément d'information.&lt;/p&gt;
&lt;div class="section" id="validation-des-domaines-par-let-s-encrypt"&gt;
&lt;h2&gt;Validation des domaines par Let's Encrypt&lt;/h2&gt;
&lt;p&gt;Je vous passe les détails d'installation du client de Let's Encrypt, qui sont
&lt;a class="reference external" href="https://github.com/letsencrypt/letsencrypt#installation"&gt;très bien expliqués sur leur documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une fois installé, vous allez taper une commande qui va ressembler à:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
letsencrypt-auto certonly --renew-by-default
--webroot -w /home/www/letsencrypt-requests/ \
-d hurl.kinto-storage.org \
-d forums.kinto-storage.org
&lt;/pre&gt;
&lt;p&gt;Le &lt;em&gt;webroot&lt;/em&gt; est l'endroit ou les preuves de détention du domaine vont être
déposées.&lt;/p&gt;
&lt;p&gt;Lorsque les serveurs de Let's Encrypt vont vouloir vérifier que vous êtes bien
à l'origine des demandes de certificats, ils vont envoyer une requête HTTP sur
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;http://domaine.org/.well-known/acme-challenge&lt;/span&gt;&lt;/tt&gt;, ou il voudra trouver des
informations qu'il aura généré via la commande &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;letsencrypt-auto&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;J'ai choisi de faire une règle dans haproxy pour diriger toutes les requêtes
avec le chemin &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;.well-known/acme-challenge&lt;/span&gt;&lt;/tt&gt; vers un &lt;em&gt;backend&lt;/em&gt; nginx qui sert
des fichiers statiques (ceux contenus dans
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;/home/www/letsencrypt-requests/&lt;/span&gt;&lt;/tt&gt;).&lt;/p&gt;
&lt;p&gt;Voici la section de la configuration de HAProxy (et &lt;a class="reference external" href="https://github.com/almet/infra/blob/master/haproxy/haproxy.cfg#L63-L72"&gt;la configuration
complete&lt;/a&gt;
si ça peut être utile):&lt;/p&gt;
&lt;pre class="literal-block"&gt;
frontend http
bind 0.0.0.0:80
mode http
default_backend nginx_server
acl letsencrypt_check path_beg /.well-known/acme-challenge
use_backend letsencrypt_backend if letsencrypt_check
redirect scheme https code 301 if !{ ssl_fc } !letsencrypt_check
backend letsencrypt_backend
http-request set-header Host letsencrypt.requests
dispatch 127.0.0.1:8000
&lt;/pre&gt;
&lt;p&gt;Et celle de NGINX:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
server {
listen 8000;
server_name letsencrypt.requests;
root /home/www/letsencrypt-requests;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="installation-des-certificats-dans-haproxy"&gt;
&lt;h2&gt;Installation des certificats dans HAProxy&lt;/h2&gt;
&lt;p&gt;Vos certificats SSL devraient être générés dans &lt;tt class="docutils literal"&gt;/etc/letsencrypt/live&lt;/tt&gt;, mais
ils ne sont pas au format attendu par haproxy. Rien de grave, la commande
suivant convertit l'ensemble des certificats en une version compatible avec
HAProxy:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
cat /etc/letsencrypt/live/domaine.org/privkey.pem /etc/letsencrypt/live/domaine.org/fullchain.pem &amp;gt; /etc/ssl/letsencrypt/domaine.org.pem
&lt;/pre&gt;
&lt;p&gt;Et ensuite dans la configuration de haproxy, pour le (nouveau) &lt;em&gt;frontend&lt;/em&gt; https:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
bind 0.0.0.0:443 ssl no-sslv3 crt /etc/ssl/letsencrypt
&lt;/pre&gt;
&lt;p&gt;Faites bien attention à avoir un &lt;em&gt;frontend&lt;/em&gt; &lt;cite&gt;https&lt;/cite&gt; pour tous vos sites en HTTPS.
&lt;a class="reference external" href="https://github.com/almet/infra/blob/master/haproxy/haproxy.cfg#L38-L60"&gt;Pour moi cela ressemble à ça&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une fois tout ceci fait, redémarrez votre service haproxy et zou !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="automatisation"&gt;
&lt;h2&gt;Automatisation&lt;/h2&gt;
&lt;p&gt;Pour automatiser un peu tout ça, j'ai choisi de faire ça comme suit:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Un fichier domaine dans &lt;tt class="docutils literal"&gt;letsencrypt/domains/domain.org&lt;/tt&gt; qui contient le script &lt;tt class="docutils literal"&gt;letsencrypt&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Un fichier d'installation de certificats dans
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;letsencrypt/install-certs.sh&lt;/span&gt;&lt;/tt&gt; qui s'occupe d'installer les certificats
déjà générés.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et voila ! &lt;a class="reference external" href="https://github.com/almet/infra/"&gt;Le tout est dans un dépot github&lt;/a&gt;, si jamais ça peut vous servir, tant mieux !&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Ateliers d'autodéfense numérique</title><link href="https://blog.notmyidea.org/ateliers-dautodefense-numerique.html" rel="alternate"></link><published>2016-01-14T00:00:00+01:00</published><updated>2016-01-14T00:00:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2016-01-14:/ateliers-dautodefense-numerique.html</id><summary type="html">&lt;p&gt;Il y a huit mois, je me rendais compte de l'importance du choix des outils pour
faire face à la surveillance généralisée, et notamment en rapport au
chiffrement des données. Une de mes envies de l'époque était l'animation
d'ateliers.&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Je compte donc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Organiser des ateliers de sensibilisation aux outils de …&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;p&gt;Il y a huit mois, je me rendais compte de l'importance du choix des outils pour
faire face à la surveillance généralisée, et notamment en rapport au
chiffrement des données. Une de mes envies de l'époque était l'animation
d'ateliers.&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Je compte donc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Organiser des ateliers de sensibilisation aux outils de communication,
envers mes proches;&lt;/li&gt;
&lt;li&gt;Utiliser la communication chiffrée le plus souvent possible, au moins
pour rendre le déchiffrement des messages plus longue, &amp;quot;noyer le
poisson&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://blog.notmyidea.org/chiffrement.html"&gt;Chiffrement&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J'ai mis un peu de temps à mettre le pied à l'étrier, mais je ressors
finalement du premier atelier que j'ai co-animé avec geb, auprès d'un public de
journalistes.&lt;/p&gt;
&lt;p&gt;Pour cette première édition l'idée était à la fois d'aller à la rencontre d'un
public que je connais mal, de leur donner des outils pour solutionner les
problèmes auxquels ils font parfois face, et de me faire une idée de ce que
pouvait être un atelier sur l'autodéfense numérique.&lt;/p&gt;
&lt;p&gt;L'objectif pour ce premier atelier était de:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Échanger autour des besoins et &lt;strong&gt;faire ressortir des histoires&lt;/strong&gt; ou le manque
d'outillage / connaissances à posé problème, dans des situations concrètes;&lt;/li&gt;
&lt;li&gt;Se rendre compte des &amp;quot;conduites à risque&amp;quot;, &lt;strong&gt;faire peur&lt;/strong&gt; aux personnes formées
pour qu'elles se rendent compte de l'état actuel des choses;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proposer des solutions concrètes&lt;/strong&gt; aux problèmes soulevés, ainsi que le
minimum de connaissance théorique pour les appréhender.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="section" id="faire-ressortir-les-problemes"&gt;
&lt;h2&gt;1. Faire ressortir les problèmes&lt;/h2&gt;
&lt;p&gt;Afin de faire ressortir les problèmes, nous avons choisi de constituer des
petits groupes de discussion, afin de faire des &amp;quot;Groupes d'Interview Mutuels&amp;quot;,
ou &amp;quot;GIM&amp;quot;:&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;lanimateur invite les participants à se regrouper par trois, avec des
personnes quon connaît moins puis invite chacun à livrer une expérience vécue
en lien avec le thème de la réunion et les deux autres à poser des questions
leur permettant de bien saisir ce qui a été vécu.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;«&lt;a class="reference external" href="http://www.scoplepave.org/pour-s-ecouter"&gt;Pour s'écouter&lt;/a&gt;», SCOP Le Pavé.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De ces &lt;em&gt;GIMs&lt;/em&gt; nous avons pu ressortir quelques histoires, gravitant autour de:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;strong&gt;La protection des sources (d'information)&lt;/strong&gt;: Comment faire pour aider
quelqu'un à faire &amp;quot;fuiter&amp;quot; des données depuis l'intérieur d'une entreprise ?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le chiffrement de ses données&lt;/strong&gt;: Comment éviter de faire &amp;quot;fuiter&amp;quot; des données
importantes lors d'une perquisition de matériel ?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="faire-peur"&gt;
&lt;h2&gt;2. Faire peur&lt;/h2&gt;
&lt;p&gt;Un des premiers objectifs est de faire peur, afin que tout le monde se rende
compte à quel point il est facile d'accéder à certaines données. &lt;a class="reference external" href="http://blog.barbayellow.com/"&gt;Grégoire&lt;/a&gt; m'avait conseillé quelques petites accroches
qui ont ma foi bien marché:&lt;/p&gt;
&lt;p&gt;J'ai demandé aux présent.e.s de:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;donner leur mot de passe à voix haute devant les autres: a priori personne ne
le fera;&lt;/li&gt;
&lt;li&gt;venir se connecter à leur compte email depuis mon ordinateur. J'ai piégé une
personne, qui est venu pour taper son mot de passe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cela à été un bon moyen de parler de l'importance des traces que l'on peut
laisser sur un ordinateur, et de la confiance qu'il faut avoir dans le matériel
que l'on utilise, à fortiori si ce ne sont pas les vôtres.&lt;/p&gt;
&lt;p&gt;Pour continuer à leur faire peur, après une brève explication de ce qu'est SSL
nous avons montré comment il était facile de scruter le réseau à la recherche
de mots de passe en clair.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="proposer-des-solutions-concretes"&gt;
&lt;h2&gt;3. Proposer des solutions concrêtes&lt;/h2&gt;
&lt;p&gt;Une fois que tout le monde avait pleinement pris sonscience des problématiques
et n'osait plus utiliser son ordinateur ou son téléphone, on à commencé
à parler de quelques solutions.
Plusieurs approches étaient possibles ici, nous avons choisi de présenter
quelques outils qui nous semblaient répondre aux attentes:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;On a expliqué ce qu'était &lt;a class="reference external" href="https://tails.boum.org"&gt;Tails&lt;/a&gt;, et comment
l'utiliser et le dupliquer.&lt;/li&gt;
&lt;li&gt;On a pu faire un tour des outils existants sur Tails, notamment autour de
l'&lt;em&gt;anonymisation&lt;/em&gt; de fichiers et la suppression effective de contenus.&lt;/li&gt;
&lt;li&gt;Certaines personnes ont pu créer une clé tails avec la persistance de
configurée.&lt;/li&gt;
&lt;li&gt;Nous nous sommes connectés au réseau &lt;a class="reference external" href="https://www.torproject.org"&gt;Tor&lt;/a&gt; et testé
que nos adresses IP changeaient bien à la demande.&lt;/li&gt;
&lt;li&gt;Nous avons utilisé &lt;a class="reference external" href="https://crypto.cat"&gt;CryptoCat&lt;/a&gt; par dessus Tor, afin de
voir comment avoir une conversation confidentielle dans laquelle il est
possible d'échanger des fichiers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="retours"&gt;
&lt;h2&gt;Retours&lt;/h2&gt;
&lt;p&gt;D'une manière générale, pour une formation de trois heures et demi, je suis
assez content de l'exercice, et de l'ensemble des sujets que nous avons pu
couvrir. Il y a beaucoup de place pour l'amélioration, notamment en amont (j'avais
par exemple oublié d'amener avec moi suffisamment de clés USB pour utiliser
Tails).&lt;/p&gt;
&lt;p&gt;La plupart des retours qu'on a pu avoir jusqu'à maintenant sont positifs, et il
y a l'envie d'aller plus loin sur l'ensemble de ces sujets.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="la-suite"&gt;
&lt;h2&gt;La suite&lt;/h2&gt;
&lt;p&gt;Il y a beaucoup de sujets que nous n'avons pas abordés, ou uniquement survolés,
à cause du manque de temps disponible. Idéalement, il faudrait au moins une
journée entière pour couvrir quelques sujets plus en détail (on peut imaginer
avoir une partie théorique le matin et une partie pratique l'après-midi par
exemple).&lt;/p&gt;
&lt;p&gt;J'ai choisi volontairement de ne pas aborder le chiffrement des messages via
PGP parce que &lt;a class="reference external" href="https://blog.notmyidea.org/les-problemes-de-pgp.html"&gt;je pense que la protection que ce média propose n'est pas
suffisante&lt;/a&gt;, mais je suis en train de
revenir sur ma décision: il pourrait être utile de présenter l'outil, à minima,
en insistant sur certaines de ses faiblesses.&lt;/p&gt;
&lt;p&gt;Un compte twitter à été créé recemment autour des crypto-party à Rennes, si
vous êtes interessés, &lt;a class="reference external" href="https://twitter.com/CryptoPartyRNS"&gt;allez jeter un coup d'œil&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Je n'ai pas trouvé de ressources disponibles par rapport à des plans de
formation sur le sujet, j'ai donc décidé de publier les nôtres, afin de
co-construire avec d'autres des plans de formation.&lt;/p&gt;
&lt;p&gt;Ils sont pour l'instant disponibles &lt;a class="reference external" href="http://autodefense-numerique.readthedocs.org/en/latest/"&gt;sur Read The Docs&lt;/a&gt;. Tous les retours
sont évidemment les bienvenus !&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Web distribution signing</title><link href="https://blog.notmyidea.org/web-distribution-signing.html" rel="alternate"></link><published>2015-10-12T00:00:00+02:00</published><updated>2015-10-12T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2015-10-12:/web-distribution-signing.html</id><summary type="html">&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;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.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;One &lt;a class="reference external" href="http://www.tonyarcieri.com/whats-wrong-with-webcrypto"&gt;often pointed&lt;/a&gt;
flaw in web-based cryptographic applications is the fact that there is no way …&lt;/p&gt;</summary><content type="html">&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;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.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;One &lt;a class="reference external" href="http://www.tonyarcieri.com/whats-wrong-with-webcrypto"&gt;often pointed&lt;/a&gt;
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).&lt;/p&gt;
&lt;p&gt;I've been talking with a few folks in the past months about that and they
suggested me to publish something to discuss the matter. So here I come!&lt;/p&gt;
&lt;div class="section" id="the-problem-attack-vectors"&gt;
&lt;h2&gt;The problem (Attack vectors)&lt;/h2&gt;
&lt;p&gt;Let's try to describe a few potential attacks:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Application Authors&lt;/em&gt; just released a new version of their open source web
crypto messaging application. An &lt;em&gt;Indie Hoster&lt;/em&gt; installs it on their servers so
a wide audience can actually use it.&lt;/p&gt;
&lt;p&gt;Someone alters the files on &lt;em&gt;Indie Hoster&lt;/em&gt; servers, effectively replacing them with
other &lt;em&gt;altered files&lt;/em&gt; with less security properties / a backdoor. This someone could either be
an &lt;em&gt;Evil Attacker&lt;/em&gt; which found its way trough, the &lt;em&gt;Indie Hoster&lt;/em&gt; or a CDN
which delivers the files,&lt;/p&gt;
&lt;p&gt;Trusted &lt;em&gt;Certificate Authorities&lt;/em&gt; (&amp;quot;governments&amp;quot; or &amp;quot;hacking team&amp;quot;) can also
trick the User Agents (i.e. Firefox) into thinking they're talking to &lt;em&gt;Indie
Hoster&lt;/em&gt; even though they're actually talking to a different server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Altered files&lt;/strong&gt; are then being served to the User Agents, and &lt;em&gt;Evil Attacker&lt;/em&gt;
now has a way to actually attack the end users.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="problem-mitigation"&gt;
&lt;h2&gt;Problem Mitigation&lt;/h2&gt;
&lt;p&gt;Part of the problem is solved by the recently introduced &lt;a class="reference external" href="https://w3c.github.io/webappsec/specs/subresourceintegrity/"&gt;Sub Resource
Integrity&lt;/a&gt;
(SRI). To quote them: &amp;quot;[it] defines a mechanism by which user agents may verify
that a fetched resource has been delivered without unexpected manipulation.&amp;quot;.&lt;/p&gt;
&lt;p&gt;SRI is a good start, but isn't enough: it ensures the assets (JavaScript files,
mainly) loaded from a specific HTML page are the ones the author of the HTML
page intends. However, SRI doesn't allow the User Agent to ensure the HTML page
is the one he wants.&lt;/p&gt;
&lt;p&gt;In other words, we miss a way to create trust between &lt;em&gt;Application Authors&lt;/em&gt; and
&lt;em&gt;User Agents&lt;/em&gt;. The User-Agent currently has to trust the &lt;em&gt;Certificate
Authorities&lt;/em&gt; and the delivery (&lt;em&gt;Indie Hoster&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;For desktop software distribution: &lt;em&gt;Crypto Experts&lt;/em&gt; audit the software, sign it
somehow and then this signature can be checked locally during installation or
runtime. It's not automated, but at least it's possible.&lt;/p&gt;
&lt;p&gt;For web applications, we don't have such a mechanism, but it should be
possible. Consider the following:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;em&gt;App Authors&lt;/em&gt; publish a new version of their software; They provide a hash of
each of their distributed files (including the HTML files);&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Crypto Experts&lt;/em&gt; audit these files and sign the hashes somehow;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;User Agents&lt;/em&gt; can chose to trust some specific &lt;em&gt;Crypto Experts&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;When a &lt;em&gt;User Agent&lt;/em&gt; downloads files, it checks if they're signed by a trusted
party.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="chosing-who-you-trust"&gt;
&lt;h2&gt;Chosing who you trust&lt;/h2&gt;
&lt;p&gt;In terms of user experience, handling certificates is hard, and that's where
the community matters. Distributions such as &lt;a class="reference external" href="https://tails.boom.org"&gt;Tails&lt;/a&gt;
could chose who they trust to verify the files, and issue warnings / refuse to
run the application in case files aren't verified.&lt;/p&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;[...] 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.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf"&gt;SoK : Secure Messaging&lt;/a&gt;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems that some other systems could allow for something more reliable:&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf"&gt;SoK : Secure Messaging&lt;/a&gt;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, I honestly have no idea if this thing solves the whole problem, and I'm pretty sure
this design has many security problems attached to it.&lt;/p&gt;
&lt;p&gt;However, that's a problem I would really like to see solved one day, so here
the start of the discussion, don't hesitate to &lt;a class="reference external" href="/pages/about.html"&gt;get in touch&lt;/a&gt;!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="addendum"&gt;
&lt;h2&gt;Addendum&lt;/h2&gt;
&lt;p&gt;It seems possible to increase the level a user has in a Web Application by
adding indicators in the User-Agent. For instance, when using an application
that's actually signed by someone considered trustful by the User-Agent (or the
distributor of the User-Agent), a little green icon could be presented to the
User, so they know that they can be confident about this.&lt;/p&gt;
&lt;p&gt;A bit like User-Agents do for SSL, but for the actual signature of the files
being viewed.&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Les problèmes de PGP</title><link href="https://blog.notmyidea.org/les-problemes-de-pgp.html" rel="alternate"></link><published>2015-05-25T00:00:00+02:00</published><updated>2015-05-25T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2015-05-25:/les-problemes-de-pgp.html</id><summary type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://secushare.org/PGP"&gt;http://secushare.org/PGP&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une fois …&lt;/p&gt;</summary><content type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;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?&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://secushare.org/PGP"&gt;http://secushare.org/PGP&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une fois passé l'euphorie du &amp;quot;il faut utiliser PGP pour l'ensemble de nos
communications&amp;quot;, j'ai réalisé lors de discussions que PGP avait plusieurs
problèmes, parmi ceux-ci:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Les &lt;em&gt;meta données&lt;/em&gt; (y compris le champ &amp;quot;sujet&amp;quot; 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);&lt;/li&gt;
&lt;li&gt;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;&lt;/li&gt;
&lt;li&gt;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é;&lt;/li&gt;
&lt;li&gt;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 &lt;em&gt;forward secrecy&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;La découverte de la clé de pairs se passe souvent &lt;em&gt;en clair&lt;/em&gt;, sans utiliser une
connexion &amp;quot;sécurisée&amp;quot; (HTTPS). Tout le monde peut donc voir ces échanges et
savoir de qui vous cherchez la clé;&lt;/li&gt;
&lt;li&gt;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).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je suis en train de creuser à propos les alternatives à PGP, par exemple &lt;a class="reference external" href="https://pond.imperialviolet.org/"&gt;Pond&lt;/a&gt;, 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).&lt;/p&gt;
&lt;p&gt;En attendant, quelques bonnes pratiques sur PGP ;)&lt;/p&gt;
&lt;div class="section" id="bonnes-pratiques"&gt;
&lt;h2&gt;Bonnes pratiques&lt;/h2&gt;
&lt;p&gt;Il est en fait assez facile d'utiliser PGP de travers. Riseup à fait &lt;a class="reference external" href="https://help.riseup.net/en/security/message-security/openpgp/best-practices"&gt;un
excellent guide&lt;/a&gt;
qui explique comment configurer son installation correctement.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Générez des clés RSA de 4096 bits, en utilisant sha512;&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Parmi les choses les plus frappantes que j'ai rencontrées:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Utiliser le &lt;em&gt;flag&lt;/em&gt; &lt;cite&gt;hidden-recipient&lt;/cite&gt; avec PGP pour ne pas dévoiler qui est
le destinataire du message;&lt;/li&gt;
&lt;li&gt;Ne pas envoyer les messages de brouillons sur votre serveur, ils le seraient
en clair !;&lt;/li&gt;
&lt;li&gt;Utilisez HPKS pour communiquer avec les serveurs de clés, sinon tout le
trafic est en clair.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le &lt;a class="reference external" href="https://bitmask.net/"&gt;projet Bitmask&lt;/a&gt; vise lui à rendre les outils de
chiffrement d'échanges de messages et de VPN simples à utiliser, encore quelque
chose à regarder.&lt;/p&gt;
&lt;p&gt;Enfin bref, y'a du taf.&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Simplifier les preuves d'identités</title><link href="https://blog.notmyidea.org/simplifier-les-preuves-didentites.html" rel="alternate"></link><published>2015-05-11T00:00:00+02:00</published><updated>2015-05-11T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2015-05-11:/simplifier-les-preuves-didentites.html</id><summary type="html">&lt;p&gt;L'un des problèmes non réellement résolu actuellement quant au chiffrement des
échanges est lié à l'authenticité des clés. Si quelqu'un décide de publier une
clé en mon nom, et en utilisant mon adresse email, cela lui est assez facile.&lt;/p&gt;
&lt;p&gt;Il est donc nécessaire d'avoir des moyens de prouver que la …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L'un des problèmes non réellement résolu actuellement quant au chiffrement des
échanges est lié à l'authenticité des clés. Si quelqu'un décide de publier une
clé en mon nom, et en utilisant mon adresse email, cela lui est assez facile.&lt;/p&gt;
&lt;p&gt;Il est donc nécessaire d'avoir des moyens de prouver que la clé publique que
j'utilise est réellement la mienne.&lt;/p&gt;
&lt;p&gt;Traditionnellement, il est nécessaire de faire signer ma clé publique par
d'autres personnes, via une rencontre en personne ou des échanges hors du
réseau. C'est par exemple ce qui est réalisé lors des &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Key_signing_party"&gt;Key Signing parties&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une manière simple d'effectuer ces vérifications serait, en plus de donner son
adresse email, sa signature de clé, ou a minima de donner un mot clé pour
valider que les échanges proviennent bien de la bonne personne.&lt;/p&gt;
&lt;p&gt;PGP propose un mécanisme de signature des clés d'autrui, une fois celles ci
validées, ce qui permet de placer sa confiance dans les signataires de la clé.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://keybase.io"&gt;Keybase.io&lt;/a&gt; est un service qui vise à rendre la création
de ces preuves plus facile, en partant du principe qu'il est possible
d'utiliser différents moyens afin de prouver l'identité des personnes. Par
exemple, leurs comptes Twitter, GitHub ou leurs noms de domaines. De la même
manière qu'il est possible de signer (valider) les clés de nos amis, il est
possible de les &amp;quot;tracker&amp;quot; selon le jargon de keybase.&lt;/p&gt;
&lt;p&gt;Donc, en somme, &lt;em&gt;Keybase.io&lt;/em&gt; est un annuaire, qui tente de rendre plus facile la
création de preuves. Bien.&lt;/p&gt;
&lt;div class="section" id="quelques-points-d-ombre"&gt;
&lt;h2&gt;Quelques points d'ombre&lt;/h2&gt;
&lt;p&gt;Il s'agit d'une &lt;em&gt;startup&lt;/em&gt; américaine, domiciliée dans le Delaware, qui se trouve être
un des paradis fiscaux qui &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Delaware"&gt;est connu pour être un paradis fiscal au coeur
même des États-Unis&lt;/a&gt;. Je ne veux pas
faire de raccourcis trop rapides, bien évidemment, alors &lt;a class="reference external" href="https://github.com/keybase/keybase-issues/issues/1569"&gt;j'ai ouvert un ticket
sur GitHub pour en savoir plus&lt;/a&gt; (après tout, le fait
d'être un paradis fiscal permet peut-être d'échapper à certaines lois sur la
requêtes de données). D'autant plus étonnant, la startup n'a pour l'instant &lt;a class="reference external" href="https://github.com/keybase/keybase-issues/issues/788"&gt;pas
de *business model*&lt;/a&gt;
(ce qui en un sens est assez rassurant, même si on peut se poser la question de
pourquoi faire une startup dans ces cas là).&lt;/p&gt;
&lt;p&gt;Le service (bien qu'en Alpha), n'est pas mis à disposition sous licence libre,
ce qui pour l'instant empêche quiconque de créer son propre serveur Keybase.
&lt;a class="reference external" href="https://github.com/keybase/"&gt;Une partie des composants, cependant, le sont (open source)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J'ai du mal à croire en des initiatives qui veulent sauver le monde, mais dans
leur coin, je ne comprends pas pourquoi il n'y à pas de documentation sur
comment monter son propre serveur, ou comment les aider à travailler sur la
fédération. Mais bon, c'est pour l'instant une initiative encore fraîche, et je
lui laisse le bénéfice du doute.&lt;/p&gt;
&lt;p&gt;Sur le long terme, une infrastructure comme &lt;em&gt;Keybase.io&lt;/em&gt;, devra évidemment être
&lt;a class="reference external" href="https://github.com/keybase/keybase-issues/issues/162"&gt;distribuée&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;We've been talking about a total decentralization, but we have to solve
a couple things, synchronization in particular. Right now someone can
mirror us and a client can trust a mirror just as easily as the server at
keybase.io, but there needs to be a way of announcing proofs to any server
and having them cooperate with each other. We'd be so happy to get this
right.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="http://chris.beams.io/posts/keybase/"&gt;Chris Coyne, co-founder of Keybase&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Afin de se &amp;quot;passer&amp;quot; de leur service centralisé, les preuves générées (qui sont
la force du système qu'ils mettent en place) pourraient être exportées sur des
serveurs de clés existants. C'est quelque chose &lt;a class="reference external" href="https://github.com/keybase/keybase-issues/issues/890"&gt;qu'ils souhaitent réaliser .&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bref, une initiative quand même importante et utile, même si elle soulève des
questions qui méritent qu'on s'y attarde un brin.&lt;/p&gt;
&lt;p&gt;Par ailleurs, &lt;a class="reference external" href="https://leap.se/nicknym"&gt;d'autres projets qui visent des objectifs similaires&lt;/a&gt; existent, via le projet LEAP, mais je n'ai pas
encore creusé.&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Phrases de passe et bonnes pratiques</title><link href="https://blog.notmyidea.org/phrases-de-passe-et-bonnes-pratiques.html" rel="alternate"></link><published>2015-05-09T00:00:00+02:00</published><updated>2015-05-09T00:00:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:blog.notmyidea.org,2015-05-09:/phrases-de-passe-et-bonnes-pratiques.html</id><summary type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Au contraire des autres mots de passe, les mots de passe cryptographiques
ont specifiquement besoin d'être longs et extremement difficiles à deviner.
La raison est qu'un ordinateur (ou un cluster de plusieurs ordinateurs)
peut être programmé pour faire des trillions d'essais de manière
automatique. Si le mot de passe choisi …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Au contraire des autres mots de passe, les mots de passe cryptographiques
ont specifiquement besoin d'être longs et extremement difficiles à deviner.
La raison est qu'un ordinateur (ou un cluster de plusieurs ordinateurs)
peut être programmé pour faire des trillions d'essais de manière
automatique. Si le mot de passe choisi est trop faible ou construit d'une
manière trop prédictible, cette attaque par la force pourrait se revéler
fructueuse en essayant toutes les possibilités.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;&lt;a class="reference external" href="https://www.eff.org/wp/defending-privacy-us-border-guide-travelers-carrying-digital-devices"&gt;The Electronic Frontier Foundation&lt;/a&gt; (traduction de mon fait)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Comprendre les concepts et l'écosystème qui permettent d'avoir une vie
numérique chiffrée n'est pas quelque chose d'aisé. &lt;a class="reference external" href="https://emailselfdefense.fsf.org/fr/"&gt;Plusieurs&lt;/a&gt; &lt;a class="reference external" href="http://www.controle-tes-donnees.net/outils/GnuPG.html"&gt;guides&lt;/a&gt; ont été écrits à ce
propos, et pour autant je me rends compte que naïvement il est possible de
mal utiliser les outils existants.&lt;/p&gt;
&lt;blockquote class="epigraph"&gt;
&lt;p&gt;Utilisez un &lt;em&gt;bon&lt;/em&gt; mot de passe pour votre session utilisateur et une
&lt;em&gt;bonne&lt;/em&gt; phrase de passe pour proteger votre clé privée. Cette phrase de
passe est la partie la plus fragile de tout le système.&lt;/p&gt;
&lt;p class="attribution"&gt;&amp;mdash;La page de manuel de GPG.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une phrase de passe devrait:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Être suffisamment longue pour être difficile à deviner;&lt;/li&gt;
&lt;li&gt;Ne pas être une citation connue (littérature, livres sacrés etc);&lt;/li&gt;
&lt;li&gt;Difficile à deviner même pour vos proches;&lt;/li&gt;
&lt;li&gt;Facile à se souvenir et à taper;&lt;/li&gt;
&lt;li&gt;être unique et non partagée entre différents sites / applications etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une des techniques consiste à utiliser des mots du dictionnaire, sélectionnés de
manière aléatoire, puis modifiés.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="XKCD sur la force des mots de passe." src="https://imgs.xkcd.com/comics/password_strength.png" /&gt;
&lt;/div&gt;
&lt;p&gt;Micah Lee &lt;a class="reference external" href="https://github.com/micahflee/passphrases"&gt;travaille également sur un outil&lt;/a&gt; qui vise à rendre la mémorisation
des phrases de passe plus aisée, de par leur répétition avec des pauses de plus
en plus longues.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="Capture d'écran du logiciel de génération et de mémorisation des phrases de passe." src="{filename}/static/passphrases.png" /&gt;
&lt;/div&gt;
&lt;p&gt;Oui, ce n'est pas aussi simple que ce qu'il y parait. Pour ma part, j'ai une
copie en local de mes clés, dans un fichier chiffré avec une autre clé que j'ai
généré pour l'occasion et que je ne partagerait pas. J'ai par ailleurs
&lt;a class="reference external" href="https://github.com/jamessan/vim-gnupg"&gt;configuré&lt;/a&gt; mon éditeur de texte pour
pouvoir chiffrer les documents textes par défaut.&lt;/p&gt;
&lt;p&gt;J'ai donc regénéré une nouvelle fois mes clés de travail et personnelles, en
utilisant des phrases de passe plus complexes.&lt;/p&gt;
&lt;p&gt;Reste encore la question de la sauvegarde de ces clés privées de manière
chiffrée, que je n'ai pas encore résolue. Bref, tout cela me semble bien
compliqué pour réussir à l'expliquer à des novices, qui pour certains ne sont
même pas sur de l'intérêt de la chose.&lt;/p&gt;
</content></entry></feed>