Tag Archives: Cryptography

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.

pySecret

you@debian:~$ hg clone http://bitbucket.org/cedricbonhomme/pysecret
you@debian:~$ ipython
In [1]: from pysecret import permutation
In [2]: permutation.encrypt("Python est un très bon language!", [2,4,0,1,3])
Out[2]: 'toPyhetn snt u \xa8 r\xc3snlbo gaanu!XgeX'
In [3]: print permutation.decrypt(permutation.encrypt("Python est un très bon language!", [2,4,0,1,3]), [2,4,0,1,3])
Python est un très bon language!XX
In [4]: from pysecret import rsa
In [5]: rsa_cipher = rsa.RSA()
In [6]: rsa_cipher.decrypt_text("eJwNjrsRw1AMw3pPksonUqQ+O3gJ9ymyf5VXEzjw8/3hehgloJwwmO0eAxFFbW8oc7MrpyowuWLk\nmZVuzn
AstTCUcppNL1yaQcoQNx1NxbSPq8YUaCzqEO6UVMsk4mSb54lI1kmsn+u9/9cOIaE=")
Out[6]: 'Il reste encore beaucoup de travail!'
In [7]: exit()
Do you really want to exit ([y]/n)? y
you@debian:~$ ls -l pysecret/
total 140
-rwx------ 1 you you  1356 2010-09-26 18:23 afine.py
-rwx------ 1 you you   883 2010-09-26 18:24 autokeycipher.py
-rwx------ 1 you you   774 2010-09-26 18:06 cesar.py
-rwx------ 1 you you 35146 2010-04-29 22:32 COPYING
-rwx------ 1 you you  1921 2010-09-26 18:19 elgamal.py
-rwx------ 1 you you  1299 2010-09-26 18:21 hill.py
-rwx------ 1 you you     2 2010-09-26 18:14 __init__.py
-rwx------ 1 you you  1629 2010-09-26 18:26 permutation.py
-rwx------ 1 you you  1704 2010-09-26 18:26 rabin.py
-rwx------ 1 you you  6402 2010-09-26 18:07 rsa_gui.py
-rwx------ 1 you you  3824 2010-09-26 18:26 rsa.py
-rwx------ 1 you you   908 2010-09-26 18:28 substitution.py
-rwx------ 1 you you 10420 2010-09-26 18:28 utils.py
-rwx------ 1 you you  2234 2009-02-26 22:06 vigenere.py