OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU

OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU

O OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU. Portanto, esta é a versão mais recente de recursos importantes para esta biblioteca SSL amplamente usada.

O OpenSSL 3.3 traz muitas melhorias para o suporte ao protocolo de transporte QUIC, aproveitando o suporte à conexão QUIC introduzido no OpenSSL 3.2. OpenSSL 3.2 focado no suporte ao cliente QUIC, enquanto para OpenSSL 3.3 há mais trabalho no lado do servidor QUIC. Detalhes sobre o suporte atual a QUIC HTTP/3 no OpenSSL podem ser encontrados nesta página de documentação.

Entre as mudanças para encontrar com OpenSSL 3.3 estão:

  • Suporte para qlogc para rastreamento de conexões QUIC.
  • Muitas novas APIs em torno de conexões QUIC e trabalhando no suporte a servidores QUIC multi-stream.
  • Otimização AES-GCM unroll8 para o Microsoft Azure Cobalt 100.
  • Otimizado AES-CTR para processadores ARM Neoverse V1 e V2.
  • Otimizações AES e SHA3 para o Apple Silicon M3.
  • Implementação de montagem para MD5 em LoongArch64.

Principais mudanças entre OpenSSL 3.2 e OpenSSL 3.3.0 [9 Abr 2024]

O OpenSSL 3.3.0 é uma versão de recursos que adiciona novas funcionalidades significativas ao OpenSSL.

OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU. Esta versão adiciona os seguintes novos recursos:

  • Foi adicionado suporte para qlog para rastrear conexões QUIC
  • APIs adicionadas para permitir a configuração do tempo limite ocioso negociado para QUIC e para permitir a determinação do número de fluxos adicionais que atualmente pode ser criado para uma conexão QUIC.
  • APIs adicionadas para permitir a desativação do processamento implícito de eventos QUIC para QUIC SSL Objetos
  • APIs adicionadas para permitir a consulta do tamanho e da utilização de um fluxo QUIC buffer de gravação
  • Nova API , que pode ser usada para enviar um fim de fluxo (FIN) condição de forma otimizada ao usar o QUIC.SSL_write_ex2
  • Suporte limitado para sondagem de conexão QUIC e objetos de fluxo em um forma de não bloqueio.
  • Adicionada uma nova API EVP_DigestSqueeze(). Isso permite que o SHAKE aperte vários vezes com diferentes tamanhos de saída.
  • Adicionado exportador para CMake em Unix e Windows, juntamente com o pkg-config exportador.
  • O algoritmo de hash BLAKE2s corresponde ao suporte de BLAKE2b para configurável comprimento de saída.
  • A função EVP_PKEY_fromdata foi aumentada para permitir o derivação de parâmetros CRT (Teorema do Restante Chinês) quando solicitado
  • Funções de API adicionadas SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() usando time_t que é seguro Y2038 em sistemas de 32 bits quando 64 bits de tempo está habilitado
  • Entradas desconhecidas em TLS SignatureAlgorithms, ClientSignatureAlgorithms opções de configuração e as respectivas chamadas para SSL[_CTX]_set1_sigalgs() e SSL[_CTX]_set1_client_sigalgs() que começam com caractere são ignorado e a configuração ainda será usada.?
  • Adicionado e opções para substitua o Emissor e a Entidade ao criar um certificado. A opção agora é um alias para .-set_issuer-set_subjectopenssl x509-subj-set_subject
  • Adicionados vários novos recursos do CMPv3 definidos em RFC 9480 e RFC 9483
  • Nova opção , que permite configurar um TLS1.3 servidor para preferir a retomada da sessão usando a troca de chaves somente PSK sobre PSK com DHE, se ambos estiverem disponíveis.SSL_OP_PREFER_NO_DHE_KEX
  • Nova opção de configuração atexit, que controla se o OPENSSL_cleanup é registrado quando libcrypto é descarregado.
  • Adicionado X509_STORE_get1_objects para evitar problemas com o existente X509_STORE_get0_objects API em aplicativos multi-thread.

Esta versão incorpora o seguinte: potencialmente significativo ou incompatível: Alterações:

  • Otimização de unroll8 AES-GCM aplicada ao Microsoft Azure Cobalt 100
  • AES-CTR otimizado para ARM Neoverse V1 e V2
  • Habilite as otimizações AES e SHA3 em sistemas MacOS baseados no Applie Silicon M3 semelhante a M1/M2.
  • Várias otimizações para rotinas criptográficas usando criptografia vetorial RISC-V Extensões
  • Adicionada implementação de assembly para md5 em loongarch64
  • Aceitar contexto mais longo para exportadores TLS 1.2
  • As definições de configuração de ativação e soft_load para provedores em openssl.cnf foram atualizados para exigir um valor de [1|yes|true|on] (em letras minúsculas ou ALTAS) para ativar a configuração. Por outro lado, um valor de [0|no|false|off] desativará a configuração.
  • No , alterou a função de hash padrão usada com de para .openssl speedhmacmd5sha256
  • A opção para o e fará o saída do programa com 1 na falha.-verifyopenssl crlopenssl req
  • Os d2i_ASN1_GENERALIZEDTIME(), d2i_ASN1_UTCTIME(), ASN1_TIME_check() e As funções relacionadas foram aumentadas para verificar um comprimento mínimo de a cadeia de entrada, de acordo com ITU-T X.690 seção 11.7 e 11.8.
  • As funções OPENSSL_sk_push() e sk__push() agora retornam 0 em vez de -1 se chamado com um argumento de pilha NULL.
  • Novo limite em cabeçalhos de resposta HTTP é introduzido no cliente HTTP. O O limite padrão é definido como 256 linhas de cabeçalho.

Esta versão incorpora as seguintes correções de bugs e mitigações:

  • A função BIO_get_new_index() só pode ser chamada 127 vezes antes dela atinge seu limite superior de BIO_TYPE_MASK e agora retornará -1 uma vez que seu exausto.

Uma lista mais detalhada de alterações nesta versão pode ser encontrada no arquivo CHANGES.md.

Os usuários interessados em usar a nova funcionalidade QUIC são incentivados a ler o arquivo LEIA-ME para QUIC, que fornece links para relevantes documentação e código de exemplo.

Como sempre, relatórios de bugs e problemas relacionados ao OpenSSL podem ser arquivados em nosso problema rastreador.

Downloads e mais detalhes sobre a versão 3.3 do OpenSSL via GitHub.