Python implementation of the Axolotl ratchet protocol
The Axolotl ratchet is a protocol (similar to OTR) that provides for perfect forward secrecy in (a)synchronous communications. It uses triple Diffie-Hellman for authentication and ECDHE for perfect forward secrecy. The protocol is lighter and more robust than the OTR protocol - providing better forward and future secrecy, as well as deniability.
The protocol was developed by Trevor Perrin and Moxie Marlinspike. Its chief use currently is in the Whisper Systems TextSecure SMS package.
If you use pip, install pyaxo with:
sudo pip install pyaxo
pyaxo will be ready for use!
If you do not use pip, first make sure that you have the following:
sudo apt-get install python-dev
You will have to install the curve25519-donna package manually, since pyaxo requires it for doing the ECDHE calculations. It can be installed by:
git clone https://github.com/agl/curve25519-donna cd curve25519-donna sudo python setup.py install
pyaxo also uses python-gnupg and passlib, and if you have setuptools installed, these packages will be downloaded and installed automatically. You may need some additional python modules as well. Check the imports list.
Finally, from pyaxo’s source folder, install with:
sudo python setup.py install
There are several examples showing usage. There are also encrypt_pipe() and decrypt_pipe() methods for use in certain applications. I haven’t put together an example using them yet, but it should be straightforward.
Bugs, etc. should be reported to the pyaxo github issues page.