Está disponível a versão da biblioteca de criptografia Botan 3.0.0, usada no projeto NeoPG, um fork do GnuPG 2. A biblioteca oferece uma grande coleção de primitivas prontas, utilizadas no protocolo TLS, certificados X.509, cifras AEAD, módulos TPM, PKCS#11, hash de senhas e criptografia pós-quântica (assinaturas baseadas em hash e acordo de chaves com base em McEliece). A biblioteca é escrita em C++ e é fornecida sob a licença BSD.
Entre as mudanças na nova versão:
- Na base de código, é permitida a utilização do padrão C++20 (anteriormente usava-se C++11); assim, os requisitos para compiladores foram elevados — agora, são necessários pelo menos GCC 11, Clang 14 ou MSVC 2022 para a compilação. O suporte para compiladores HP e Pathscale, assim como para os projetos Google NaCL e IncludeOS, foi interrompido.
- Uma grande quantidade de alterações que quebram a compatibilidade retroativa foi introduzida. Muitos arquivos de cabeçalho obsoletos foram removidos, como aqueles específicos para certos algoritmos (aes.h, etc.). Implementações de funções e algoritmos anteriormente declarados obsoletos foram removidas (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). O uso de /proc e /dev/random para formar a entropia do gerador de números pseudo-aleatórios foi interrompido. Algumas classes (como Data_Store), estruturas e enumerações foram removidas da API. O retorno e o uso de ponteiros brutos foram, sempre que possível, terminados.
- O suporte para o protocolo TLS 1.3 foi adicionado. O suporte para TLS 1.0, TLS 1.1 e DTLS 1.0 foi encerrado. A implementação do TLS removeu o suporte para os conjuntos de cifras DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK e Camellia CBC, cifras anônimas e hashes SHA-1.
- O suporte para o algoritmo de criptografia pós-quântica Kyber foi adicionado, que é resistente a ataques de computadores quânticos.
- O suporte para o algoritmo de criptografia pós-quântica Dilithium para trabalhar com assinaturas digitais foi adicionado.
- Foi adicionada a funcionalidade de hashing em formato de ponto em uma curva elíptica, utilizando a técnica SSWU (draft-irtf-cfrg-hash-to-curve).
- Foi adicionada o suporte para a função de hash criptográfico BLAKE2b.
- Uma nova interface de programação T::new_object foi proposta, retornando unique_ptr em vez de um ponteiro bruto "T*".
- Novas funções e APIs foram adicionadas: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Um grande conjunto de novas funções para uso em código C (C89) foi adicionado.
- Instruções AVX2 foram integradas na implementação do algoritmo Argon2.
- Reduzido o tamanho das tabelas nas implementações dos algoritmos Camellia, ARIA, SEED, DES e Whirlpool.
- Uma nova implementação do DES/3DES foi proposta, protegida contra a maioria das classes de ataques por canais laterais que avaliam o estado do cache.
- A implementação do SHACAL2 foi otimizada para sistemas baseados nas arquiteturas ARMv8 e POWER.
- O código para calcular bits de paridade, conversões bcrypt/base64 e para determinar o tipo de string ASN.1 foi desvinculado da busca em tabelas e agora não depende dos dados processados (executado em tempo constante).
Fonte: opennet.ru
