Organizacja ISRG (Internet Security Research Group), która jest założycielem projektu Let’s Encrypt i wspiera rozwój technologii mających na celu zwiększenie bezpieczeństwa w internecie, ogłosiła wydanie warstwy rustls-openssl-compat, umożliwiającej użycie biblioteki Rustls jako przezroczystego zamiennika OpenSSL. Obecnie projekt dostarcza implementację rustls-libssl, zapewniającą kompatybilność z libssl, a w toku jest realizacja libcrypto.
Funkcjonalności dostępne w tej warstwie są wystarczające, aby zapewnić działanie nginx na bazie Rustls. Aby przełączyć nginx na Rustls, wystarczy wymienić biblioteki, bez konieczności ponownej kompilacji lub modyfikacji nginx. Wśród najbliższych planów dotyczących rozwoju Rustls wymienia się optymalizację wydajności w obszarach, w których Rustls obecnie ustępuje OpenSSL, oraz zapewnienie wsparcia dla RFC 8879 dotyczącego kompresji certyfikatów. Ponadto w ogłoszeniu wspomniano o planie przeniesienia elementów infrastruktury centrum certyfikacji Let’s Encrypt z OpenSSL na Rustls.
Projekt Rustls rozwija klientską i serwerową implementację protokołów TLS1.2 i TLS1.3 do użycia w aplikacjach napisanych w języku Rust. Rustls nie dostarcza własnej implementacji funkcji kryptograficznych, lecz korzysta z zewnętrznych dostawców funkcji kryptograficznych (obsługiwane są algorytmy ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM i AES256-GCM). Domyślnym dostawcą kryptograficznym w Rustls jest dostawca oparty na bibliotece aws-lc-rs, która jest rozwijana przez firmę Amazon i bazuje na kodzie C++ BoringSSL, wspieranym przez fork Google OpenSSL. Jako dostawca kryptograficzny może być również używana biblioteka ring, częściowo oparta na BoringSSL i łącząca kod w asemblerze, C++ i Rust.
Ciekawe jest to, że nginx ma wbudowane wsparcie dla kompilacji z BoringSSL, co umożliwia bezpośrednie korzystanie z tej biblioteki bez dodatkowych warstw. Oprócz wbudowanego w Rustls wsparcia dla bibliotek aws-lc-rs i ring, opartych na kodzie BoringSSL, dla Rustls rozwijanych jest również kilka zewnętrznych dostawców kryptograficznych, umożliwiających korzystanie z bibliotek mbedtls (kod w C), BoringSSL (C++) i RustCrypto (Rust).
Źródło: opennet.ru
