A organização ISRG (Internet Security Research Group), que é a fundadora do projeto Let's Encrypt e promove o desenvolvimento de tecnologias para fortalecer a segurança da internet, anunciou a publicação da camada rustls-openssl-compat, que permite usar a biblioteca Rustls como uma substituição transparente ao OpenSSL. Atualmente, o projeto fornece a implementação rustls-libssl, que garante compatibilidade com libssl, e está desenvolvendo a implementação libcrypto.
A funcionalidade presente na camada é suficiente para garantir o funcionamento do nginx baseado em Rustls. Para migrar o nginx para Rustls, basta substituir as bibliotecas, sem necessidade de recompilação ou modificação do nginx. Entre os planos futuros de desenvolvimento do Rustls, destaca-se a otimização de desempenho nas áreas em que o Rustls ainda está atrás do OpenSSL e a garantia de suporte ao RFC 8879 para compressão de certificados. Além disso, o anúncio mencionou o plano de migrar os elementos da infraestrutura da autoridade certificadora Let's Encrypt do OpenSSL para o Rustls.
O projeto Rustls desenvolve implementações cliente e servidor dos protocolos TLS 1.2 e TLS 1.3 para uso em aplicações na linguagem Rust. Rustls não fornece uma implementação própria de primitivos criptográficos, mas utiliza provedores plugáveis de funções criptográficas (os algoritmos ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM e AES256-GCM são suportados). Por padrão, o Rustls usa um provedor criptográfico baseado na biblioteca aws-lc-rs, que está em desenvolvimento pela Amazon e se baseia no código C++ do BoringSSL, mantido pelo fork do OpenSSL do Google. A biblioteca ring, que é parcialmente baseada no BoringSSL e combina código em assembler, C++ e Rust, também pode ser usada como provedor criptográfico.
É notável que o nginx tem suporte embutido para compilação com BoringSSL, o que permite usar esta biblioteca diretamente sem camadas adicionais. Além disso, além do suporte embutido nas bibliotecas aws-lc-rs e ring, que são baseadas no código BoringSSL, vários provedores criptográficos de terceiros também estão sendo desenvolvidos para o Rustls, permitindo o uso das bibliotecas mbedtls (código em C), BoringSSL (C++) e RustCrypto (Rust).
Fonte: opennet.ru
