Category Archives: Cryptography

twister

Voici une alternative intéressante aux réseaux sociaux privateurs centralisés. Les concepteurs de twister vont encore plus loin que des projets comme Diaspora ou StatusNet. La création des comptes est faite par un système à chaîne de blocs publique, le blockchain. Exactement (même code source) comme Bitcoin (où ici le blockchain représente l’ensemble de toutes les transactions). L’unicité est donc assurée par un système cryptographique. Les messages sont stockés dans une DHT mais un système de torrent est utilisé pour le long terme.

Quelques captures. twister est installable sur Debian.

2014 sera réellement l’année de la cryptographie.

Bitmessage

Bitmessage est un système de messagerie publié en novembre 2012 et dont la popularité vient de faire un petit bon suite à l’affaire PRISM. Le système est décentralisé et fonctionne sans autorité de confiance. Une implémentation expérimentale Python est disponible.

Son fonctionnement est assez intéressant, il est possible de voir des analogies avec Bitcoin. Par exemple vos adresses de messagerie (environ 36 caractères) sont générées à partir de votre clé ou d’une passphrase. Vous pouvez donc générer une nouvelle adresse dès que vous le souhaitez au dépend de la réputation, sauf si vous signez vos messages avec votre clé GPG.

De plus Bitmessage cache les méta-données comme l’adresse de l’expéditeur et du destinataire.

Lorsque vous envoyez un message à une personne tous les noeuds du réseau reçoivent le message mais seul le destinataire sera capable de le lire. Il est possible d’envoyer un message à une ou plusieurs personnes. Il est même possible d’envoyer un message broadcast à toutes les personnes abonnées à votre adresse.

Tout comme avec Bitcoin, tout le monde peut voir qui envoie un message à qui. Ceci n’est pas un problème car vous pouvez changer d’adresse e-mail à chaque nouvel envoie. Et sauf si vous le faites de manière explicite, il n’est pas possible d’établir un lien entre deux adresses.

Le projet est très peu documenté mais l’installation sur les différentes plate-formes est vraiment simple. L’utilisation pour une personne initiée aux techniques de cryptographies et de communications pair-à-pair est assez simple mais peu déstabiliser les novices. Un tutoriel avec des images est disponible ici. Vous constaterez que l’interface est déjà plutôt bien faite.

Une intégration dans la suite Kontact sera vraiment la bienvenue!

Mon adresse Bitmessage de prise de contact est: BM-2D91oZfKyoq7NYy5cFrf2YtCcfirmQvjLe

Pure Python RSA implementation compatible OpenSSL

$ sudo aptitude install python-pyasn1
$ hg clone https://bitbucket.org/sybren/python-rsa/
$ cd python-rsa
$ sudo python setup.py install
$ cd ..

# Generation of a private key:
$ openssl genrsa -out myprivatekey.pem 512


# To get a Python-RSA-compatible public key from OpenSSL:
$ pyrsa-priv2pub -i myprivatekey.pem -o mypublickey.pem

# Get a public key with the standard method:
$ openssl rsa -in myprivatekey.pem -out public.pem -outform PEM -pubout
writing RSA key


# Test 1: Python-RSA-compatible public key
$ echo hello there > testfile.txt
$ pyrsa-encrypt -i testfile.txt -o testfile.rsa mypublickey.pem
Reading public key from mypublickey.pem
Reading input from testfile.txt
Encrypting
Writing output to testfile.rsa
$ openssl rsautl -in testfile.rsa -inkey myprivatekey.pem -decrypt
hello there


# Test 2: standard public key
$ openssl rsautl -encrypt -inkey public.pem -pubin -in testfile.txt -out file.ssl
$ pyrsa-decrypt -i file.ssl -o file.txt myprivatekey.pem 
Reading private key from myprivatekey.pem
Reading input from file.ssl
Decrypting
Writing output to file.txt
$ cat file.txt 
hello there

C’est le module Python RSA que j’utilise en général.

Quand le ciel se couvre

Dark clouds over How Tun Woods

Ces derniers temps avec la monté en puissance du cloud computing pour le grand public nos applications tendent à disparaîtres et nos PC se transforment en petit espace de stockage (quelques gigaoctets sur un SSD) connectés. Les serveurs d’avant deviennent intelligents et ne se content plus de stocker. Ils nous fournissent applications et données. Applications propriétaires. Données trop publiques.

Un récent billet de Joanna Rutkowska me fait penser à une vieille idée. Dans ces conditions je serai partant pour utiliser quelque chose comme un Chromebook. Mon problème principal de la perte du contrôle des données est presque résolu. La solution est le chiffrement. Le chiffrement protège nos données de toute une série d’acteurs dont nous sommes forcé d’accorder notre confiance.

Le problème: est-ce que les fournisseurs de services seraient prêts à héberger toutes nos données chiffrées (donc inintelligible)? En générant nos clés de chiffrement et en chiffrant côté client les données avant de les envoyer sur le cloud toute cette polémique autour de dropbox n’aurait pas eu lieu. En même temps on pouvait s’y attendre, franchement comment un service comme dropbox ou Google pourrait héberger nos données pour ne rien en faire? Absolument rien, mis à part les stocker. Il n’y aurait donc aucune exploitation possible de ces données, quasiment plus d’intelligences dans ce cloud, juste du stockage. Un service si gentil serait de toute manière sous une licence type AGPL. Sinon où est l’intérêt?
Et cette intelligence sur le cloud, qu’elle est son utilité? Généralement établir notre graphe social (comme le dit Éric Schmidt de manière décomplexée), découvrir nos centres d’intérêts. Ce serait un peu plus compliqué avec un carnet d’adresses chiffré.

Je serai vraiment surpris que dans un avenir plus ou moins proche il soit possible de faire cela avec un Chromebook. Nous avons toutes les technologies et l’expérience requise pour implémenter cette idée, ce n’est que de la cryptographie. Il faudrait adapter un peu quelques applications clientes (pensez au potentiel d’aKonadi). Avec différents couples de clés on pourrait choisir avec qu’elle personne ou groupe(s) de personnes on partage une information Il y a des protocoles cryptographiques spécifiques pour ça. La notion d’espace partagé et surtout public de dropbox est une hérésie. Pour de nombreux types de données (agenda, localisation, numéro de téléphone, etc.) l’utilisateur a un besoin presque naturel de partager à des groupes de différents niveaux de confiance. Confiance relative. Confiance absolue pour le partage public.

Il faut donc garder nos bonnes vieilles applications clientes. Mettre plus de données chiffrées dans ce cloud qui est en train de tous nous baiser. Cela n’exclue pas de garder des applications web-based comme Gmail. Avec la solution de Joanna Rutkowska une application comme Gmail pourrait aussi avoir accès à nos données chiffrées.
De plus conserver les applications clientes ne peut que favoriser les standards et l’interopérabilité. J’aime savoir que Kontact, Evolution et Thunderbird puissent exploiter les mêmes données sur mon cloud, ou alors LibreOffice et KOffice. Avec des applications uniquement en ligne comme Gmail ou Google Docs on risque de perdre en interopérabilité (on sera rattaché à un service) et en qualité. Je trouve surtout ça moins élégant d’un point de vue informatique.
Certaines personnes aiment écrire des logiciels amateurs (par plaisir de comprendre comment fonctionne un ordinateur ou pour un besoin particulier) ou aiment savoir si une mise à jour d’un programme utilisé courrament a changée son comportement. La culture du Do It Yourself a besoin de ça.

Par sécurité (cf. les problèmes d’Amazon, du PSN et bien d’autres) il serait bon de synchroniser par exemple un NAS personnel avec notre petit morceau de cloud. Ce support de stockage devrait disposer (tout comme notre smartphone, tablette et PC portable) des clés appropriées pour garder les données non chiffrées (sécurité oblige, mais si souhaitable à ce niveau on peut utiliser TPM ou TXT). Le PC de bureau peut être connecté localement au NAS. Je pense que sur un PC fixe il est idiot d’utiliser un service cloud alors qu’on a un support de stockage qui peut s’occuper de synchroniser les modifications effectuées depuis ce PC. Si je veux regarder Titanic dans mon salon et qu’il est sur mon NAS non chiffré, pourquoi aller le chercher sur Internet? De même pour un simple fichier (et oui, bientôt avec Google Music vous pourrez écouter dans votre salon de la musique en ligne. La même qui se trouve sur votre disque dur). Par contre si le fichier est modifié, le support de stockage peut s’occuper de faire le chiffrement et la synchronisation. Par la suite on pourra continuer à éditer ce fichier avec un smartphone ou appareil type Chromebook sur le cloud. Pourquoi faire confiance inutilement à toute une flopée de services et gâcher des ressources?
On peut citer la couche d’abstraction d’aKonadi qui est très intéressante pour interagir avec le cloud. aKonadi permet de synchroniser son calendrier ainsi que ces contacts (sur gmail ou serveur personnel de façon transparente). Lorsque j’édite mon calendrier en ligne avec ma tablette mon calendrier KOrganizer est mis à jour sur le PC de bureau. Connexions sécurisées et calendrier sur mon disque dur disponible en mode non connecté (malheureusement le calendrier en ligne est visible pour Google). C’est un peu ce fonctionnement qu’il faudrait généraliser à toutes nos données.

La cryptographie est une arme puissante et incontournable qui nous aidera à conserver notre vie privée.

On pourra lire également ceci.