This shows you the differences between two versions of the page.
ac:laboratoare:07 [2024/11/14 02:25] dimitrie.valu |
ac:laboratoare:07 [2024/11/14 13:05] (current) dimitrie.valu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Lab 07 - Whatsapp End-to-end Encryption ===== | ===== Lab 07 - Whatsapp End-to-end Encryption ===== | ||
- | In this lab you will implement a simplified version of The Signal Protocol, which is the basis for WhatsApp's end-to-end encryption. | + | 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 [[https://cryptome.org/2016/04/whatsapp-crypto.pdf|here]]. A more recent document is available [[https://www.whatsapp.com/security/WhatsApp-Security-Whitepaper.pdf|here]]. | The first versions of Whatsapp protocol were described [[https://cryptome.org/2016/04/whatsapp-crypto.pdf|here]]. A more recent document is available [[https://www.whatsapp.com/security/WhatsApp-Security-Whitepaper.pdf|here]]. | ||
Line 9: | Line 9: | ||
For the Elliptic Curves, you can use [[https://github.com/Muterra/donna25519|this]] library. | For the Elliptic Curves, you can use [[https://github.com/Muterra/donna25519|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**): | + | For installation, follow these steps (NOTE: **you can use your ''%%fep%%'' instance via Python3 environments**): |
- | * Install the necessary tools: ''%%sudo apt install build-essential python3-dev%%'' | + | * Install the necessary tools (not necessary on ''%%fep%%''): |
- | * Install pip: ''%%sudo apt install python3-pip%%'' | + | <code> |
- | * Install donna via pip: ''%%pip install cryptography donna25519%%'' | + | sudo apt install build-essential python3-dev |
+ | sudo apt install python3-pip | ||
+ | </code> | ||
+ | * Use ''%%wget%%'' to download the required zip (find it below) | ||
+ | * Create a Python3 environment, make sure PyPI is up to date and install the required packages: | ||
+ | <code> | ||
+ | python3 -m venv create env | ||
+ | source ./env/bin/activate | ||
+ | pip install --upgrade pip | ||
+ | pip install cryptography donna25519 | ||
+ | </code> | ||
+ | **If local installation does not work, use your ''%%fep%%'' instance.** | ||
=== Task === | === Task === | ||
Find the required zip here - {{:ac:laboratoare:lab07.zip|}}. | Find the required zip here - {{:ac:laboratoare:lab07.zip|}}. | ||
- | Create a common master_secret for two clients which communicate through a server. (TODO 1.1 & TODO 1.2) | + | 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. | Print it on both clients and make sure they both have the same secret. | ||