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> | ||