This shows you the differences between two versions of the page.
ac:laboratoare:08 [2024/11/14 13:00] dimitrie.valu |
ac:laboratoare:08 [2024/11/14 13:05] (current) dimitrie.valu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Lab 08 - Whatsapp End-to-end Encryption (part 2) ===== | ===== Lab 08 - Whatsapp End-to-end Encryption (part 2) ===== | ||
- | In this lab you will continue the implementation of the Signal protocol, which is the basis for WhatsApp's end-to-end encryption. | + | In this lab you will continue the implementation of the Signal Protocol, which is the basis for WhatsApp's end-to-end encryption. |
The protocol is described [[https://cryptome.org/2016/04/whatsapp-crypto.pdf|here]]. | The protocol is described [[https://cryptome.org/2016/04/whatsapp-crypto.pdf|here]]. | ||
Line 8: | Line 8: | ||
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: **you can use your ''%%fep%%'' instance via Python3 environments**): | + | If you solved the previous lab, use your previous setup (replace the files with the ones from the ''%%.zip%%'' below to prevent any issues). If you are starting out with these labs, follow the steps below (NOTE: **you can use your ''%%fep%%'' instance via Python3 environments**): |
- | * Install the necessary tools (not necessary on ''%%fep%%'': | + | * Install the necessary tools (not necessary on ''%%fep%%''): |
<code> | <code> | ||
sudo apt install build-essential python3-dev | sudo apt install build-essential python3-dev | ||
Line 24: | Line 24: | ||
**If local installation does not work, use your ''%%fep%%'' instance.** | **If local installation does not work, use your ''%%fep%%'' instance.** | ||
- | |||
- | === Task === | ||
- | 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**) | ||
- | Print it on both clients and make sure they both have the same secret. | ||
- | |||
- | == How to run == | ||
- | Open three different terminals. | ||
- | |||
- | First terminal (start the server): | ||
- | <code>python main_server.py</code> | ||
- | |||
- | Second terminal (start the first client and enter ''%%RECV%%'' mode: | ||
- | <code> | ||
- | python main_client.py | ||
- | RECV | ||
- | </code> | ||
- | |||
- | Third terminal (start the second client and send a message): | ||
- | <code> | ||
- | python main_client.py | ||
- | MSG <id_other_client> Hello! | ||
- | </code> | ||
Line 76: | Line 52: | ||
while chain_key_r can be left as 'None' for now. | while chain_key_r can be left as 'None' for now. | ||
</note> | </note> | ||
+ | |||
+ | == How to run == | ||
+ | Open three different terminals. | ||
+ | |||
+ | First terminal (start the server): | ||
+ | <code>python main_server.py</code> | ||
+ | |||
+ | Second terminal (start the first client and enter ''%%RECV%%'' mode: | ||
+ | <code> | ||
+ | python main_client.py | ||
+ | RECV | ||
+ | </code> | ||
+ | |||
+ | Third terminal (start the second client and send a message): | ||
+ | <code> | ||
+ | python main_client.py | ||
+ | MSG <id_other_client> Hello! | ||
+ | </code> |