This is an old revision of the document!
In this lab you will implement a simplified version of The Signal Protocol, which is the basis for WhatsApp's end-to-end encryption.
The first versions of Whatsapp protocol were described here. A more recent document is available here. WhatsApp's security is based on the Signal protocol, which was first used by TextSecure. The Signal protocol is described in detail in this paper.
For the Elliptic Curves, you can use this library.
For installation, follow these steps (NOTE: on ARM machines, you will have to resort to using an emulated x86 VM or an x86 instance):
sudo apt-get install build-essential setuptools python3-dev
sudo apt-get install python3-pip
pip install donna25519
Find the required zip here - lab07.zip.
Create a common master_secret for two clients which communicate through a server. (TODO 1.1 & TODO 1.2) Print it on both clients and make sure they both have the same secret.
Open three different terminals.
First terminal (start the server):
python main_server.py
Second terminal (start the first client and enter RECV
mode:
python main_client.py RECV
Third terminal (start the second client and send a message):
python main_client.py MSG <id_other_client> Hello!