# Prymitywy kryptograficzne Reticulum wykorzystuje prosty zestaw wydajnych, silnych i nowoczesnych prymitywów kryptograficznych, z szeroko dostępnymi implementacjami, które mogą być używane zarówno na procesorach ogólnego przeznaczenia, jak i na mikrokontrolerach. Niezbędne prymitywy to: - Ed25519 dla sygnatur - X22519 dla wymiany kluczy ECDH - HKDF dla wyodrębnienia klucza - AES-128 w trybie CBC - HMAC-SHA256 dla uwierzytelnienia wiadomości - SHA-256 - SHA-512 W domyślnej konfiguracji instalacji, prymitywy `X25519`, `Ed25519` i `AES-128-CBC` są dostarczone przez [OpenSSL](https://www.openssl.org/) (przez pakiet [PyCA/cryptography](https://github.com/pyca/cryptography)). Funkcja hashu `SHA-256` i `SHA-512` są dostarczone przez standard Pythona [hashlib](https://docs.python.org/3/library/hashlib.html). Prymitywy `HKDF`, `HMAC`, `Fernet` i funkcja padding `PKCS7` są zawsze dostarczane przez następujące wewnętrzne implementacje: - [HKDF.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HKDF.py) - [HMAC.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HMAC.py) - [Fernet.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/Fernet.py) - [PKCS7.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/PKCS7.py) Reticulum zawiera również kompletną implementację wszystkich niezbędnych prymitywów w czystym Pythonie. Jeśli OpenSSL i PyCA nie są dostępne w systemie podczas uruchamiania Reticulum, Reticulum użyje wewnętrznych prymitywów w czystym Pythonie. Trywialną konsekwencją tego jest wydajność, backend OpenSSL jest *znacznie* szybszy. Najważniejszą konsekwencją jest jednak potencjalna utrata bezpieczeństwa poprzez użycie prymitywów, które nie zostały poddane takiej samej analizie, testom i przeglądom jak te z OpenSSL. Jeśli chcesz używać wewnętrznych czystych prymitywów pythona, jest **bardzo wskazane**, abyś dobrze rozumiał ryzyko, jakie to stwarza, i podjął świadomą decyzję, czy to ryzyko jest dla ciebie do przyjęcia. Reticulum jest stosunkowo młodym oprogramowaniem i powinno być traktowane jako takie. Chociaż zostało zbudowane z myślą o najlepszych praktykach kryptograficznych, _nie zostało_ poddane zewnętrznemu audytowi bezpieczeństwa i bardzo możliwe, że zawiera błędy naruszające prywatność lub bezpieczeństwo. Jeśli chcesz pomóc lub zasponsorować audyt, skontaktuj się ze mną.