Lançamento da biblioteca criptográfica OpenSSL 3.0.0

Após três anos de desenvolvimento e 19 lançamentos de teste, foi lançado a biblioteca OpenSSL 3.0.0, que implementa os protocolos SSL/TLS e vários algoritmos de criptografia. Esta nova versão inclui mudanças que quebram a compatibilidade retroativa no nível de API e ABI, mas essas mudanças não afetarão a maioria das aplicações, que podem ser recompiladas a partir do OpenSSL 1.1.1. O suporte à versão anterior, OpenSSL 1.1.1, será mantido até setembro de 2023.

A mudança significativa no número da versão está relacionada à adoção da numeração tradicional 'Major.Minor.Patch'. A primeira parte (Major) do número da versão mudará apenas em caso de quebra de compatibilidade no nível API/ABI, enquanto a segunda (Minor) mudará com a adição de funcionalidades sem alteração no API/ABI. Atualizações corretivas serão indicadas pela alteração da terceira parte (Patch). O número 3.0.0, imediatamente após o 1.1.1, foi escolhido para evitar sobreposições com o módulo FIPS do OpenSSL, que está em desenvolvimento e tinha uma numeração 2.x.

Outra mudança importante para o projeto foi a transição de uma licença dupla (OpenSSL e SSLeay) para a licença Apache 2.0. A licença proprietária utilizada anteriormente pelo OpenSSL era baseada no texto da antiga licença Apache 1.0 e exigia menção explícita ao OpenSSL em materiais promocionais ao utilizar as bibliotecas OpenSSL, além de adicionar uma nota especial caso o OpenSSL fosse incluído em um produto. Esses requisitos tornaram a antiga licença incompatível com a GPL, dificultando a utilização do OpenSSL em projetos licenciados sob a GPL. Para contornar essa incompatibilidade, projetos GPL eram obrigados a utilizar acordos de licença específicos, onde o texto principal da GPL era complementado com uma cláusula que explicitamente permitia a ligação do aplicativo à biblioteca OpenSSL e mencionava que os requisitos da GPL não se aplicavam à ligação com o OpenSSL.

Comparado à versão OpenSSL 1.1.1, o OpenSSL 3.0.0 inclui mais de 7500 mudanças, desenvolvidas por 350 desenvolvedores. As principais novidades do OpenSSL 3.0.0:

  • Um novo módulo FIPS foi proposto, incluindo a implementação de algoritmos criptográficos que atendem ao padrão de segurança FIPS 140-2 (o processo de certificação do módulo está programado para começar este mês, e a obtenção do certificado FIPS 140-2 é esperada para o próximo ano). O novo módulo é significativamente mais fácil de usar e a sua integração a muitos aplicativos não será mais difícil do que modificar um arquivo de configuração. O módulo FIPS está desativado por padrão e requer a opção enable-fips para ativação.
  • A libcrypto implementou o conceito de provedores plugáveis, que substituiu a ideia de motores (a API ENGINE foi considerada obsoleta). Com os provedores, é possível adicionar implementações próprias de algoritmos para operações como criptografia, descriptografia, geração de chaves, cálculo de MAC e criação e verificação de assinaturas digitais. É possível tanto conectar novos provedores quanto criar implementações alternativas de algoritmos já suportados (por padrão, agora cada algoritmo usa o provedor embutido no OpenSSL).
  • Adicionada a suporte ao protocolo de gerenciamento de certificados CMP (Certificate Management Protocol, RFC 4210), que pode ser usado para solicitar certificados de servidor uma autoridade certificadora, atualizar certificados e revogar certificados. O trabalho com CMP é feito através da nova ferramenta openssl-cmp, que também oferece suporte ao formato CRMF (RFC 4211) e transmissão de solicitações via HTTP/HTTPS (RFC 6712).
  • Um cliente completo para os protocolos HTTP e HTTPS foi implementado, suportando os métodos GET e POST, redirecionamento de solicitações, operação através de proxy, codificação ASN.1 e gerenciamento de tempo limite.
  • Adicionado uma nova API EVP_MAC (Message Authentication Code API), que simplifica a adição de novas implementações de códigos de autenticação.
  • Uma nova interface de programação para geração de chaves foi proposta — EVP_KDF (Key Derivation Function API), que facilita a adição de novas implementações KDF e PRF. A antiga API EVP_PKEY, pela qual estavam disponíveis os algoritmos scrypt, TLS1 PRF e HKDF, foi reestruturada como uma camada, implementada sobre as APIs EVP_KDF e EVP_MAC.
  • Na implementação do protocolo TLS, foi adicionada a possibilidade de usar a implementação TLS integrada no núcleo do Linux para acelerar as operações. Para ativar a implementação TLS fornecida pelo núcleo Linux, é necessária a ativação da opção "SSL_OP_ENABLE_KTLS" ou a configuração "enable-ktls".
  • Suporte a novos algoritmos adicionado:
    • Algoritmos de geração de chaves (KDF) — «SINGLE STEP» e «SSH».
    • Algoritmos de autenticação (MAC) — «GMAC» e «KMAC».
    • Algoritmo de encapsulamento de chaves RSA (KEM) «RSASVE».
    • Algoritmo de criptografia «AES-SIV» (RFC-8452).
    • Na API EVP foram adicionadas chamadas com suporte para cifras inversas, que utilizam o algoritmo AES para criptografia de chaves (Key Wrap): «AES-128-WRAP-INV», «AES-192-WRAP-INV», «AES-256-WRAP-INV», «AES-128-WRAP-PAD-INV», «AES-192-WRAP-PAD-INV» e «AES-256-WRAP-PAD-INV».
    • Na API EVP foi adicionada suporte para algoritmos de ofuscação de texto cifrado (CTS): «AES-128-CBC-CTS», «AES-192-CBC-CTS», «AES-256-CBC-CTS», «CAMELLIA-128-CBC-CTS», «CAMELLIA-192-CBC-CTS» e «CAMELLIA-256-CBC-CTS».
    • Adicionada suporte para assinaturas digitais CAdES-BES (RFC 5126).
    • No AES_GCM foi implementado o parâmetro AuthEnvelopedData (RFC 5083), permitindo criptografar e descriptografar mensagens que são autenticadas e criptografadas utilizando o modo AES GCM.
  • As funções PKCS7_get_octet_string e PKCS7_type_is_other foram expostas na API pública.
  • Na API PKCS#12, os algoritmos usados por padrão na função PKCS12_create() foram substituídos por PBKDF2 e AES, e para o cálculo do MAC foi utilizado o algoritmo SHA-256. Para restaurar o comportamento anterior, uma opção «-legacy» foi prevista. Um grande número de novas chamadas expandidas PKCS12_*_ex, PKCS5_*_ex e PKCS8_*_ex foram adicionadas, como PKCS12_add_key_ex(), PKCS12_create_ex() e PKCS12_decrypt_skey_ex().
  • Para a plataforma Windows, foi adicionada suporte para sincronização de threads usando o mecanismo SRWLock.
  • Adicionada uma nova API para rastreamento, ativada através do parâmetro enable-trace.
  • Ampliado o conjunto de chaves suportadas nas funções EVP_PKEY_public_check() e EVP_PKEY_param_check(): RSA, DSA, ED25519, X25519, ED448 e X448.
  • O subsistema RAND_DRBG foi removido e substituído pela API EVP_RAND. As funções FIPS_mode() e FIPS_mode_set() foram removidas.
  • Uma parte significativa da API foi declarada obsoleta — a utilização de chamadas obsoletas no código dos projetos resultará em avisos durante a compilação. Entre essas, as APIs de baixo nível ligadas a implementações específicas de algoritmos (por exemplo, AES_set_encrypt_key e AES_encrypt) foram oficialmente descontinuadas. O suporte oficial no OpenSSL 3.0.0 agora é fornecido apenas para as APIs de alto nível EVP, que são abstraídas dos tipos específicos de algoritmos (as funções EVP_EncryptInit_ex, EVP_EncryptUpdate e EVP_EncryptFinal pertencem a essa API). Em uma das próximas versões significativas, as APIs obsoletas serão removidas. As implementações de algoritmos obsoletos, como MD2 e DES, disponíveis através da API EVP, foram movidas para um módulo separado chamado 'legacy', que está desativado por padrão.
  • A documentação e o conjunto de testes foram significativamente expandidos. Em comparação com a ramificação 1.1.1, a quantidade de documentação aumentou em 94%, enquanto o tamanho do código do conjunto de testes subiu 54%.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster