Se han publicado varias nuevas versiones de bibliotecas criptográficas:
Lanzamiento de la biblioteca OpenSSL 3.4.0 con implementaciones de los protocolos SSL/TLS y varios algoritmos de cifrado. El soporte para OpenSSL 3.4 se proporcionará hasta octubre de 2025. El soporte para versiones anteriores de OpenSSL 3.3, 3.2, 3.1 y 3.0 LTS continuará hasta abril de 2026, noviembre de 2025, marzo de 2025 y septiembre de 2026, respectivamente. El código del proyecto se distribuye bajo la licencia Apache 2.0. Principales novedades:
- Se ha añadido soporte para un conjunto de cifrados para TLSv1.3, limitado por características de verificación de integridad de datos (RFC 9150) e incluyendo algoritmos TLS_SHA256_SHA256 y TLS_SHA384_SHA384.
- Se ha añadido la opción de utilizar una fuente adicional de entropía en el generador de números pseudoaleatorios basada en jitter, implementada con la biblioteca jitterentropy. La formación de entropía se realiza mediante la medición de las diferencias en el tiempo de ejecución repetido de un conjunto específico de instrucciones en la CPU, dependiente de múltiples factores internos y predecible sin control físico sobre la CPU.
- Se ha añadido soporte inicial para certificados de autorización (AC - Attribute Certificate, RFC 5755), que incluyen información sobre derechos de acceso, facultades y atributos del titular del certificado, que acreditan la capacidad para realizar ciertas acciones. Por ejemplo, un certificado AC puede definir el derecho a conectarse a un servicio determinado.
- Se ha añadido soporte para extensiones X.509v3 relacionadas con certificados de autorización.
- El proveedor FIPS ha implementado el soporte para la API FIPS 140-3 Indicator, que permite determinar si una operación específica se realizó en un servicio aprobado o no.
- En la API BIO (Entrada/Salida Básica) se ha mejorado el manejo de la entrada en formato Base64.
- Se ha añadido soporte para compilar la utilidad openssl en modo PIE (Position Independent Executable), que permite utilizar la aleatorización del espacio de direcciones (ASLR).
- Se ha añadido soporte para algoritmos de firma digital combinados que se pueden extraer directamente, como RSA-SHA2-256.
- Se ha añadido soporte para PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579) en PKCS#12.
- Se han agregado las opciones ‘-not_before’ y ‘-not_after’ a la utilidad openssl para especificar explícitamente la hora de inicio y fin de la validez del certificado.
- Se ha habilitado el uso de valores precalculados al inicializar algoritmos criptográficos basados en curvas elípticas P-256.
- Se han declarado obsoletas las funciones TS_VERIFY_CTX_set_*, las cuales han sido reemplazadas por funciones TS_VERIFY_CTX_set0_* con una semántica mejorada.
- Se han declarado obsoletas las funciones SSL_SESSION_get_time(), SSL_SESSION_set_time() y SSL_CTX_flush_sessions(), y ahora se deben usar SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() y SSL_CTX_flush_sessions_ex(), que han resuelto el problema del año 2038.
- El soporte esperado para el protocolo QIUC en OpenSSL 3.4 servidores se ha pospuesto para la próxima versión.
La versión del proyecto LibreSSL 4.0.0, una bifurcación de OpenSSL, está enfocada en proporcionar un mayor nivel de seguridad y un soporte de calidad para los protocolos SSL/TLS, eliminando funcionalidades innecesarias, añadiendo medidas de protección adicionales y realizando una limpieza y reestructuración significativa de la base de código. Este cambio de versión notable se debe al uso de una numeración decimal (después de 3.9, sigue la versión 4.0). Los cambios más destacados son:
- Se ha añadido soporte inicial para la compilación utilizando Emscripten, un compilador de C/C++ a WebAssembly.
- Se ha añadido la opción CRLfile al comando "openssl cms" para especificar listas adicionales de certificados revocados (CRL) que se utilizarán en la verificación.
- Se ha finalizado el soporte para la plataforma mips32.
- Se ha eliminado el acceso a funciones escritas en ensamblador a través de la API pública (esas funciones ahora solo se proporcionan a través de envoltorios en C). Se han eliminado las implementaciones en ensamblador de cifrados obsoletos para arquitecturas antiguas.
- Se ha eliminado el código para almacenar en caché la validez de los certificados, que se volvió sin sentido después de la optimización del rendimiento.
- Se ha mejorado la implementación de extensiones X.509v3, unificando métodos de X.509v3 y limpiando el API relacionado con X.509v3.
- Se ha reescrito completamente la implementación del tipo CRYPTO_EX_DATA.
- En libcrypto, las funciones atoi() y strtol() han sido reemplazadas por strtonum().
- Se ha añadido el archivo de encabezado crypto_arch.h, que contiene código específico para arquitecturas de hardware.
- Se ha reestructurado y optimizado la implementación del algoritmo DES.
- Se han eliminado los archivos de encabezado pem2.h, ssl2.h, ssl23.h y ui_compat.h.
- Se ha eliminado el soporte para el algoritmo de hash Whirlpool.
- Se han eliminado las funciones HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust().
- Se han eliminado los tipos PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD y SSL_AEAD_CTX.
- Se han añadido las funciones SSL_CTX_set1_cert_store() y SSL_CIPHER_get_handshake_digest() en libssl.
Está disponible la versión 3.6.0 de la biblioteca criptográfica Botan, utilizada en el proyecto NeoPG, un fork de GnuPG 2. La biblioteca proporciona una gran colección de primitivas listas utilizadas en el protocolo TLS, certificados X.509, cifrados AEAD, módulos TPM, PKCS#11, hashing de contraseñas y criptografía post-cuántica (firmas basadas en hash y acuerdos de claves basados en McEliece). La biblioteca está escrita en C++ y se distribuye bajo la licencia BSD. En la nueva versión:
- Se ha integrado una nueva biblioteca con algoritmos criptográficos basados en curvas elípticas, donde las operaciones con curvas estándar se realizan de 2 a 3 veces más rápido. También se ha propuesto una nueva API para el trabajo de bajo nivel con curvas elípticas.
- Se ha añadido soporte para los algoritmos de cifrado post-cuántico recientemente estandarizados en NIST: FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) y FIPS 205 SLH-DSA (SPHINCS+).
- Se ha añadido soporte para chips TPM2.
- Se ha ampliado el uso de cálculos con tiempos de ejecución constantes para protegerse contra ataques de canal lateral.
- Se ha añadido la generación de entropía adicional utilizando la biblioteca jitterentropy.
- Se ha mejorado el rendimiento del procesamiento de datos en formato hexadecimal y codificación base64.
- Se ha añadido soporte para las extensiones del procesador AVX2-VAES y GFNI-AVX2.
- Se ha añadido la detección de capacidades de CPU armv7, aarch64 y ppc64 en la plataforma OpenBSD.
- Se ha añadido una opción de compilación para deshabilitar todas las inserciones inline de ensamblador.
Lanzamiento del proyecto Rustls 0.23.15, que desarrolla la implementación del cliente y servidor de los protocolos TLS1.2 y TLS1.3 para proyectos en Rust. Rustls no proporciona su propia implementación de primitivas criptográficas, sino que utiliza proveedores de funciones criptográficas de terceros (se admiten algoritmos ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM y AES256-GCM). Por defecto, Rustls utiliza un proveedor criptográfico basado en la biblioteca aws-lc-rs, que es desarrollado por Amazon y se basa en el código C++ de AWS-LC, un fork de BoringSSL (mantenido por Google como un fork de OpenSSL). También puede utilizarse la biblioteca ring como proveedor criptográfico, parcialmente basada en BoringSSL y que combina código en ensamblador, C++ y Rust.
La nueva versión se destaca por importantes optimizaciones en el rendimiento. Se afirma que, al utilizar los criptoprimitivos, la biblioteca aws-lc-rs de Rustls ahora supera a las bibliotecas OpenSSL y BoringSSL en pruebas que miden el ancho de banda y la velocidad de negociación/reanudación de la conexión.

Fuente: opennet.ru
