LibreSSL 3.8.0 llega con muchos cambios y mejoras
Los desarrolladores del proyecto OpenBSD dieron a conocer hace poco el lanzamiento de la edición portátil del paquete «LibreSSL 3.8.0», versión en la cual se han realizado diversos cambios y mejoras enfocadas en la estabilidad y compatibilidad.
Para quienes desconocen de LibreSSL, deben saber que esta es una implementación de código abierto del protocolo TLS que desarrolla una bifurcación de OpenSSL destinada a proporcionar un mayor nivel de seguridad. LibreSSL se desarrolló inicialmente como un reemplazo previsto para OpenSSL en OpenBSD y se transfirió a otras plataformas una vez que se estabilizó una versión simplificada de la biblioteca.
El proyecto LibreSSL se centra en el soporte de alta calidad para los protocolos SSL/TLS con la eliminación de funciones innecesarias, la adición de funciones de seguridad adicionales y una limpieza y reelaboración significativas del código base.
Principales novedades de LibreSSL 3.8.0
La versión de LibreSSL 3.8.0 se considera una versión experimental que desarrolla funciones que se incluirán con OpenBSD 7.4. Al mismo tiempo, se formaron versiones estables de LibreSSL 3.6.3 y 3.7.3, en las que se corrigieron varios errores.
En esta nueva versión que se presenta de LibreSSL 3.8.0 se destaca que se mejoro la compatibilidad de endian.h con las macros hto* y *toh, ademas de que se agregó el soporte para SHA-2 y SHA-3 truncados y se ha comenzado el proceso de limpieza y reelaboración del código SHA interno.
Otro de los cambios que se destacan son las funciones internas reescritas BN_exp() y BN_copy(), ademas de que se reemplazó la implementación de la función BN_mod_sqrt().
Ademas de ello, tambien se destaca que se agregaron las instrucciones del ensamblador para la arquitectura AMD64 usan las instrucciones endbr64 (Terminate Indirect Branch).
Tambien se destaca que se agregó una solución para un cambio mal pensado en OpenSSL 3 que rompió el soporte de separación de privilegios en libtls, ademas de que fue portado el código de BoringSSL para verificar las reglas definidas en RFC 5280 y que se continúa con la traducción de libcrypto para usar las interfaces CBB (bytebuilder) y CBS (bytestring).
Por otra parte, se destaca que se importó el código de verificación de políticas RFC 5280 de BoringSSL y se usó
para reemplazar el antiguo código de tiempo exponencial, ademas de que se eliminó el soporte para GF2m: BIGNUM ya que no admite la extensión binaria, se eliminaron la mayoría de los símbolos públicos que quedaron obsoletos en OpenSSL 0.9.8.
De los demás cambios que se destacan de esta nueva versión:
- Se eliminó la API pública X9.31 (RSA_X931_PADDING aún está disponible).
- Se eliminó el modo de robo de texto cifrado.
- Se eliminó la compatibilidad con SXNET y NETSCAPE_CERT_SEQUENCE, incluida la
comando openssl(1) nseq. - Compatibilidad con certificado de proxy descartado (RFC 3820).
- Se eliminaron POLICY_TREE y sus estructuras relacionadas y API.
- Corrección de la comprobación de errores de i2d_ECDSA_SIG() en ossl_ecdsa_sign().
- Detección fija de operaciones extendidas (XOP) en hardware AMD.
- Se corrigió el manejo de errores en tls_check_common_name().
- Se añadió la invalidación de puntero faltante en SSL_free().
- Se corrigieron X509err() y X509V3err() y sus versiones internas.
- Cobertura de prueba significativamente mejorada de BN_mod_sqrt() y GCD.
- Como siempre, se agrega nueva cobertura de prueba a medida que se corrigen errores y subsistemas
se limpian.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
¿Como instalar la nueva versión de LibreSSL?
Para los interesados en poder instalar esta nueva versión, deben saber que de momento no ha llegado a la mayoría de las distribuciones de Linux por lo que la instalación en este momento disponible es realizado la compilación del paquete por su cuenta.
Pero no te preocupes, la compilación de LibreSSL es muy sencilla y para ello solo tienes que abrir una terminal y ejecutar los siguientes comandos (debes contar con las siguientes dependencias automake, autoconf, git, libtool, perl y git).
Lo primero es obtener el código fuente, lo cual puedes hacer con este comando:
git clone https://github.com/libressl/portable.git
Hecho esto ahora vamos a preparar el camino para realizar la compilación, para ello entramos la carpeta que contiene el código fuente de LibreSSL y vamos a teclear:
cd portable ./autogen.sh ./dist.sh
Hecho esto procedemos a realizar la compilación con:
./configure make check make install
O si prefieren hacerlo con CMake:
mkdir build cd build cmake .. make make test