Rustls, uma biblioteca TLS supera OpenSSL

Rustls-logo-web

Joseph Birr Pixton, desenvolvedor da biblioteca TLS Rustls, realizou uma série de testes em seu desenvolvimento y notou que o desempenho deste último superou o do OpenSSL em vários níveis. Rustls é uma biblioteca de código aberto, TLS, escrita em Rust e disponível sob as licenças Apache 2.0, MIT e ISC, mas OpenSSL é uma biblioteca bem conhecida e o padrão da indústria em quase todas as categorias principais.

De acordo com sua documentação, Rustls é uma biblioteca TLS moderna que visa fornecer um bom nível de segurança criptográfica. Ele não requer nenhuma configuração para obter essa segurança e não fornece nenhuma funcionalidade insegura ou criptografia desatualizada.

Tem muitos recursos, como a autenticação de cliente de servidor ECDSA ou RSA e a autenticação de servidor de servidor ECDSA ou RSA, ao mesmo tempo que oferece suporte à verificação de certificado de servidor.

Isso significa que você não precisa fornecer nada além de um conjunto de certificados raiz. A verificação do certificado não pode ser desativada na API principal.

Por outro lado, o OpenSSL é um kit de ferramentas robusto, de nível comercial e repleto de recursos para os protocolos Transport Layer Security (TLS) e Secure Sockets Layer (SSL). Também é uma biblioteca de criptografia versátil.

Sobre os testes Rustls

Em sua série de testes de desempenho, Joseph Birr Pixton diz que considerou vários pontos para avaliar como o desempenho pode variar entre as bibliotecas TLS, ou seja, desempenho de intercâmbio e desempenho geral.

O desempenho do handshake cobre a velocidade com que novas sessões TLS podem ser configuradas. Em termos de desempenho geral, eles cobrem a velocidade com que os dados do aplicativo podem ser transferidos para uma sessão já configurada.

Os resultados dos vários testes mostraram que o Rustls foi 10% mais rápido ao configurar e fazer uma nova conexão com o servidor e 20-40% mais rápido ao configurar uma conexão de cliente.

Mas se as velocidades para novas conexões TLS forem altas, a maior parte do tráfego TLS depende da retomada das conexões já estabelecidas.

Aqui tambem, Rustls superou a biblioteca OpenSSL, levando uma conexão do lado do servidor de 10-20% e 30-70% mais rápido para retomar uma conexão do cliente.

Além disso, o Rustls teve um desempenho melhor em termos de desempenho geral ou velocidade de transferência de dados na conexão TLS.

Birr Pixton disse que Rustls pode enviar dados 15% mais rápido que OpenSSL e receba 5% mais rápido. Finalmente, diz ele, a biblioteca Rustls usava apenas metade da memória necessária para executar o OpenSSL, o que é uma grande vantagem. Ele lembrou que, neste lado, o OpenSSL tem sido criticado muitas vezes por sua grande quantidade de memória e o grande número de problemas de segurança encontrados em seu código.

Para resumir os resultados, podemos dizer aproximadamente:

  • Rustls é 15% mais rápido para enviar dados
  • Rustls é 5% mais rápido para receber dados
  • Rustls é 20 a 40% mais rápido para configurar uma conexão de cliente
  • Rustls é 10% mais rápido para configurar uma conexão de servidor
  • Rustls é 30 a 70% mais rápido para retomar uma conexão de cliente
  • Rustls é 10-20% mais rápido para retomar a conexão com o servidor
  • Rustls usa menos da metade da memória OpenSSL

Birr Pixton explicou que, como Rustls é codificado em Rust, os problemas de falha de segurança foram resolvidos principalmente com o design da linguagem Rust. A linguagem foi projetada desde o início para evitar bugs de segurança relacionados à memória.

A maneira como os programas escritos na linguagem de programação Rust interagem com a memória é uma das interpretações linguísticas mais proeminentes. Se as grandes empresas reconhecerem a utilidade da linguagem criada pela Mozilla Research, seu crescimento pode explodir nos próximos anos.

Também se acredita que navegadores como Firefox e Brave atualmente usam componentes Rust, mas grandes empresas como Cloudflare, Dropbox e Yelp também adotaram sistemas de produção.

fonte: https://jbp.io