---
# System prepended metadata

title: Untitled

---


- szyfr blokowy AES
    - rozmiar bloku 128 bit
    - długość klucza 128/192/256 bit
    - realizacja w rundach
- tryby szyfrów blokowych (wymagane są 3 z 4):
    - ECB → wiadomość dzielimy na bloki, każdy blok szyfrujemy osobno
    - CBC → blok jest szyfrowany zależnie od poprzedniego, wektor inicjujący
    - CFB → wejście bloku jest zależne od poprzedniego wyjścia i wiadomości
    - OFB → wejście bloku jest zależne od poprzedniego wyjścia
    - CFB i OFB muszę mieć rozmiar bloku jako potęgę dwójki
- v użytkownika wybiera długość klucza i tryb szyfru
- v użytkownicy komunikują się za pomocą aplikacji sieć Ethernet
- v/x aplikacja ma udostępniać wysyłanie wiadomości i plików (nawet dużych)
- x użytkownicy muszą wymienić między sobą swoje klucze publiczne (faza inicjalizacji)
- x klucze publiczne będą używane do bezpiecznej wymiany klucza sesji
- x/v symulacja komunikacji powinna odbyć się między virtualboxem i hostem
- v GUI ma zezwolić na wysyłanie plików o dowolnym rozmiarze
- x GUI ma mieć pasek postępu wysyłania plików 
- v użytkownik wybiera w GUI tryb szyfru blokowego


- x podział danych przy wysyłaniu dużych plików 
- v do przesyłania danych musi być wykorzystany protokół TCP
- ? warto numerować pakiety TCP, bo mogą przychodzić w złej kolejności
- x? dla każdej wiadomości musi być nowy klucz symetryczny

- x klucze symetryczne przechowujemy zaszyfrowane kluczem publicznym odbiorcy
- v klucz publiczny i prywatny muszą być przechowywane osobno
- v można używać gotowej implementacji RSA, AES
- v w przypadku odszyfrowania złym kluczem nie ma o tym żadnych powiadomień
- raport powinien zawierać:
    - scenariusze testowe
    - czas szyfrowania plików
    - tutorial dla aplikacji
    - jak wygląda wymiana kluczy
    - jak wygląda transmisja danych, jaki protokół
    - konfiguracja środowiska (maszyny wirtualne)
    - opis technologii, frameworków
    - opis interfejsu użytkownika
    - opis algorytmiczny działania aplikacji
