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: you can use your fep
instance via Python3 environments):
fep
):sudo apt install build-essential python3-dev sudo apt install python3-pip
wget
to download the required zip (find it below)python3 -m venv create env source ./env/bin/activate pip install --upgrade pip pip install cryptography donna25519
If local installation does not work, use your fep
instance.
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!