Организация ISRG (Internet Security Research Group), която е учредител на проекта Let’s Encrypt и допринася за развитието на технологии за повишаване на сигурността на интернет, обяви за публикуването на прослойката rustls-openssl-compat, позволяваща използването на библиотеката Rustls като прозрачна замяна на OpenSSL. В момента проектът предлага реализация на rustls-libssl, осигуряваща съвместимост с libssl, а в разработка е реализиране на libcrypto.
Предоставената в прослойката функционалност е достатъчна, за да осигури работата на nginx на база Rustls. За прехвърляне на nginx на Rustls е необходимо просто да се заменят библиотеките, без нужда от повторно компилиране или промени в nginx. В близките планове за развитие на Rustls е предвидена оптимизация на производителността в области, в които Rustls все още изостава от OpenSSL, и осигуряване на поддръжка на RFC 8879 за компресиране на сертификати. Освен това, в анонса се споменава план за прехвърляне на елементи от инфраструктурата на удостоверяващия център Let’s Encrypt от OpenSSL на Rustls.
Проектът Rustls развива клиентска и сървърна реализация на протоколите TLS1.2 и TLS1.3 за използване в приложения на езика Rust. Rustls не предоставя собствена имплементация на криптографски примитиви, а използва свързваеми доставчици на криптографски функции (поддържат се алгоритми ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM и AES256-GCM). По подразбиране в Rustls се използва криптопровайдер на база библиотеката aws-lc-rs, която се развива от компанията Amazon и се основава на C++ кода на BoringSSL, съпровождан от Google fork на OpenSSL. Като криптопровайдер също може да се използва библиотеката ring, частично основана на BoringSSL и комбинираща код на асемблер, C++ и Rust.
Забележително е, че nginx има вградена поддръжка за компилация с BoringSSL, което позволява използването на тази библиотека директно без излишни прослойки. При това, освен вградената в Rustls поддръжка на библиотеките aws-lc-rs и ring, базирани на кода на BoringSSL, за Rustls също се развиват няколко странични криптопровайдера, позволяващи използването на библиотеките mbedtls (код на C), BoringSSL (C++) и RustCrypto (Rust).
Източник: opennet.ru
