Recientemente ha sido anunciada OpenSSL 3.0, la nueva versión mayor de la popular biblioteca criptográfica que además es uno de los componentes más esenciales de Internet. Se trata de un trabajo que ha ocupado a los desarrolladores durante tres años en los que ha habido 17 lanzamientos alfa, 2 betas y 7.500 commits, todo eso procedente de 350 autores diferentes.
OpenSSL 3 llega con muchos cambios de calado que no solo abarcan el propio software en sí, sino también otros aspectos como la documentación y las licencias utilizadas. Según explica Matt Caswell en el anuncio oficial, “ha habido un aumento del 94% en la cantidad de documentación que tenemos desde OpenSSL 1.1.1 y un aumento (ajustado) en las ‘líneas de código’ en nuestras pruebas del 54%”.
Caswell también ha destacado el entusiasmo y el nivel de actividad de la comunidad a la hora de realizar contribuciones. La nueva versión de la biblioteca criptográfica ha podido contar con algunos ingenieros dedicados, los cuales han podido ser pagados gracias a que el proyecto ha logrado financiación a través de distintas vías.
En lo que respecta a los cambios y novedades, empezamos por el cambio de licencia. Las versiones anteriores de OpenSSL usaron a la vez su propia licencia y la SSLeay (las cuales se mantendrán), pero OpenSSL 3 empleará la Apache License 2.0, la cual es una licencia Open Source y software libre de naturaleza laxa compatible con la versión 3 de la GPL, pero no con la 2.
Abarcando ahora lo que es el software en sí, OpenSSL suministra dos tipos de API para invocar los algoritmos criptográficos: las de alto nivel, que generalmente están diseñadas para funcionar en todo tipo de algoritmos, y las de bajo nivel, que está dirigidas a una implementación específica de un algoritmo. Durante muchos años el empleo de las API de bajo nivel estuvo desaconsejado por parte de los desarrolladores de OpenSSL, así que han aprovechado la ocasión para tomar la decisión de marcarlas oficialmente como obsoletas.
Algunos algoritmos criptográficos de la API de Envelope (EVP) han sido marcados como soporte legado y su uso se desaconseja a partir de OpenSSL 3, por lo que no están disponibles por defecto y tendrán que ser habilitados manualmente.
La versión 1.1.1 de OpenSSL introdujo el concepto de proveedores, los cuales recopilan y ponen a disposición implementaciones de algoritmos. Ahora, en su versión 3, la biblioteca criptográfica soporta la posibilidad de especificar mediante programación o fichero de configuración qué proveedores emplear para una aplicación, habiendo cinco diferentes como estándar. Uno de los proveedores estándares disponibles es FIPS, por lo que los algoritmos criptográficos validados para este módulo están disponibles de manera predeterminada.
El esquema de versiones es otro punto que ha cambiado en OpenSSL 3. Hasta el lanzamiento 1.1.1, los diferentes de niveles de parches fueron indicados con una letra al final del número de versión, pero a partir de la tercera versión mayor esto quedará cambiado por el siguiente esquema: MAYOR.MENOR.PARCHE. Esto quiere decir que ahora la tercera cifra indicará el parche, la segunda la posibilidad de que se hayan introducido nuevas características y la primera, en caso de cambiar, que no se garantiza la compatibilidad a nivel de API y ABI.
Otras mejoras y novedades son la implementación del Protocolo de Gestión de Certificados (CMP), que también cubre CRMF y la transferencia de HTTP; un cliente de HTTP y HTTPS adecuado en ‘libcrypto’ que soporta GET y POST, redireccionamiento, contenido simple y codificado en ASN.1, proxies y tiempos de espera; además de soporte para el TLS del kernel Linux.
Todos los detalles de OpenSSL 3 pueden ser consultados a través del anuncio oficial y la wiki del proyecto, mientras que la biblioteca criptográfica puede ser descargada desde la correspondiente sección en la web del proyecto. Si bien la actualización desde la versión 1.1.1, que es LTS, debería de ser sencilla, se recomienda proceder con precaución.
Imagen: Pixabay