# Inicjalizacja 1. Stwórz wirtualne środowisko: `python -m venv .venv` 2. Aktywuj: `. .venv/bin/activate` 3. Pobierz zależności: `pip install -r requirements.txt' 4. Uruchom np. test wewnętrzny: `python ot.py` Aby wyjść ze środowiska uruchom komendę `deactivate`. ## Testowanie działania 1. Na komputerze A uruchom program `alice.py` podając jako argumenty nazwy dwóch plików 2. Na komputerze B uruchom program `bob.py` podając jako argument który z plików wskazanych przez program `alice.py` ma uruchomić (`0` lub `1`) oraz adres IP komputera A przez flagę `--ip`. W razie wątpliwości zapoznaj się z pomocą programów `alice.py` i `bob.py` lub zobacz przykładowy test w `test.sh`. ## Dodawanie paczek W środowisku wirtualnym: 1. Zainstaluj paczkę: `pip install ` 2. Zaktualizuj listę zależności: `pip freeze > requirements.txt` # Rekomendowane parametry/komponenty ## Punkt _a_ w dokumencie projektu Parametry krzywych eliptycznych znajdują się [tutaj](https://safecurves.cr.yp.to/field.html). W projekcie wykorzystano krzywą eliptyczną NIST P-224, która zdefiniowana jest przy pomocy następujących parametrów: - $p = 2^224 - 2^96 + 1$ ## Punkt _b_ w dokumencie projektu KDF który proponuję to scrypt, ponieważ jest kosztowy obliczeniowo ORAZ pamięciowo. [Tutaj](https://datatracker.ietf.org/doc/html/rfc7914#section-2) można znaleźć rekomendowane parametry, ze względu na ilość wykonywnych operacji proponuję parametry: ``` N = 2 ** 14 r = 8 p = 1 ``` poparte [tą prezentacją](https://www.tarsnap.com/scrypt/scrypt-slides.pdf). ## Punkt _c_ w dokumencie projektu Tutaj proponuję AES256 w trybie CouTeR, opisane np. [tutaj](https://www.pycryptodome.org/src/cipher/classic#ctr-mode). Do wygenerowania noncji może zostać użyty scrypt.