Se ha lanzado la versión 3.0.0 de la biblioteca criptográfica Botan, utilizada en el proyecto NeoPG, un fork de GnuPG 2. La biblioteca proporciona una extensa colección de primitivas preparadas, utilizadas en el protocolo TLS, certificados X.509, cifrados AEAD, módulos TPM, PKCS#11, hash de contraseñas y criptografía postcuántica (firmas basadas en hash y establecimiento de claves basadas en McEliece). La biblioteca está escrita en C++ y se distribuye bajo la licencia BSD.
Entre los cambios en la nueva versión:
- En la base de código se permite el uso del estándar C++20 (anteriormente se usaba C++11), por lo tanto, se han elevado los requisitos para los compiladores: para la compilación se necesitan, como mínimo, GCC 11, Clang 14 o MSVC 2022. Se ha dejado de dar soporte a los compiladores HP y Pathscale, así como a los proyectos Google NaCL e IncludeOS.
- Se han introducido muchos cambios que rompen la compatibilidad hacia atrás. Se han eliminado muchos archivos de encabezado obsoletos, por ejemplo, específicos para ciertos algoritmos (aes.h, etc.). Se han retirado las implementaciones de funciones y algoritmos que previously were declared obsoletos (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). Al generar entropía para el generador de números pseudoaleatorios, se ha dejado de utilizar /proc y /dev/random. Se han eliminado algunas clases (por ejemplo, Data_Store), estructuras y enumeraciones del API. Siempre que sea posible, se ha dejado de devolver y usar punteros en crudo.
- Se ha añadido soporte para el protocolo TLS 1.3. Se ha dejado de dar soporte a TLS 1.0, TLS 1.1 y DTLS 1.0. Se ha retirado del código de TLS el soporte para los conjuntos de cifrado DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK y Camellia CBC, cifrados anónimos y hashes SHA-1.
- Se ha añadido soporte para el algoritmo de criptografía postcuántica Kyber, resistente a la búsqueda en una computadora cuántica.
- Se ha añadido soporte para el algoritmo de criptografía postcuántica Dilithium para trabajar con firmas digitales.
- Se ha añadido soporte para el hash en el formato de un punto en una curva elíptica, utilizando la técnica SSWU (draft-irtf-cfrg-hash-to-curve).
- Se ha añadido soporte para la función hash criptográfica BLAKE2b.
- Se ha propuesto una nueva interfaz de programación T::new_object, que devuelve unique_ptr en lugar de un puntero en crudo "T*".
- Se han añadido nuevas funciones y API: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Se ha añadido un gran conjunto de nuevas funciones para su uso en código en C (C89).
- La implementación del algoritmo Argon2 utiliza instrucciones AVX2.
- Se ha reducido el tamaño de las tablas en las implementaciones de los algoritmos Camellia, ARIA, SEED, DES y Whirlpool.
- Se ha propuesto una nueva implementación de DES/3DES, protegida contra la mayoría de las clases de ataques por canales laterales que evalúan el estado de la caché.
- La implementación de SHACAL2 está optimizada para sistemas basados en arquitecturas ARMv8 y POWER.
- El código para el cálculo de bits de paridad, la conversión bcrypt/base64 y la determinación del tipo de cadena ASN.1 ha sido eliminado de la búsqueda en tablas y ahora no depende de los datos procesados (se ejecuta en tiempo constante).
Fuente: opennet.ru
