OpenSSL 3.1.0 ya fue liberado y estas son sus novedades
Después de un año y medio de desarrollo y diversas versiones correctivas en la versión anterior, se dio a conocer el lanzamiento de la nueva versión de la biblioteca “OpenSSL 3.1.0” con la implementación de los protocolos SSL/TLS y varios algoritmos de encriptación.
El soporte para esta nueva versión de OpenSSL 3.1 continuará hasta marzo de 2025, mientras que la compatibilidad con las versiones heredadas de OpenSSL 3.0 y 1.1.1 continuará hasta septiembre de 2026 y septiembre de 2023, respectivamente.
Para quienes desconocen de OpenSSL deben saber que este es un proyecto de software libre basado en SSLeay, el cual consiste en un robusto paquete de herramientas de administración y bibliotecas relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS).
Estas herramientas ayudan al sistema a implementar el Secure Sockets Layer (SSL), así como otros protocolos relacionados con la seguridad, como el Transport Layer Security (TLS). OpenSSL también permite crear certificados digitales que pueden aplicarse a un servidor, por ejemplo Apache.
OpenSSL se emplea en la validación cifrada de clientes de correo, transacciones basadas en web para pagos con tarjetas de crédito y en muchos casos en sistemas que requieran seguridad para la información que se expondrá en la red “datos confidenciales”.
Principales novedades de OpenSSL 3.1.0
En esta nueva versión que se presenta de OpenSSL 3.1.0, se destaca que el módulo FIPS implementa soporte para algoritmos criptográficos que cumplen con el estándar de seguridad FIPS 140-3, ademas de que se ha iniciado el proceso de certificación de módulos para obtener la certificación de cumplimiento FIPS 140-3.
Se menciona que hasta que se complete la certificación después de actualizar OpenSSL a la rama 3.1, los usuarios pueden continuar usando un módulo FIPS certificado para FIPS 140-2. De los cambios en la nueva versión del módulo, se destaca la inclusión de los algoritmos Triple DES ECB, Triple DES CBC y EdDSA, que aún no han sido probados para el cumplimiento de los requisitos de FIPS. También en la nueva versión, se han realizado optimizaciones para mejorar el rendimiento y se ha hecho una transición para ejecutar pruebas internas con cada carga de módulo, y no solo después de la instalación.
Otro de los cambios que se destaca, es que se realizo un cambio en la longitud salt predeterminada para las firmas PKCS#1 RSASSA-PSS al tamaño máximo que es más pequeño o igual a la longitud del resumen para cumplir con
FIPS 186-4. Esto se implementa mediante una nueva opción `OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX` («auto-digestmax») para el parámetro `rsa_pss_saltlen`, que ahora es el predeterminado.
Ademas de ello, el código OSSL_LIB_CTX se reelaborado, la nueva opción está libre de bloqueos innecesarios y permite lograr un mayor rendimiento.
Tambien se destaca el rendimiento mejorado de los marcos de codificador y decodificador, asi como tambien una optimización de rendimiento realizada relacionada con el uso de estructuras internas (tablas hash) y almacenamiento en caché y tambien una velocidad mejorada de generación de claves RSA en modo FIPS.
Los algoritmos AES-GCM, ChaCha20, SM3, SM4 y SM4-GCM tienen optimizaciones de ensamblador específicas para diferentes arquitecturas de procesador. Por ejemplo, el código AES-GCM se acelera mediante las instrucciones AVX512 vAES y vPCLMULQDQ.
Se ha agregado soporte para el algoritmo KMAC (Código de autenticación de mensajes KECCAK) a KBKDF (Función de derivación de clave basada en clave), ademas de que sé han adaptado varias funciones «OBJ_*» para su uso en código de subprocesos múltiples.
Se agregó la capacidad de usar la instrucción RNDR y los registros RNDRRS disponibles en los procesadores basados en la arquitectura AArch64 para generar números pseudoaleatorios.
Por otra parte, se menciona que la macro `DEFINE_LHASH_OF` ahora está obsoleta en favor de la macro `DEFINE_LHASH_OF_EX`, que omite la función específica del tipo correspondiente para definiciones de estas funciones, independientemente de si se define `OPENSSL_NO_DEPRECATED_3_1`. Es por ello que los usuarios de `DEFINE_LHASH_OF` pueden comenzar a recibir advertencias de obsolescencia para estos funciones independientemente de si las están utilizando. Se recomienda que los usuarios hacen la transición a la nueva macro, `DEFINE_LHASH_OF_EX`.
Finalmente, si estás interesado en poder conocer más al respecto sobre este nuevo lanzamiento, puedes consultar los detalles en el siguiente enlace.