LibreSSL
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 19 de mayo de 2020; las comprobaciones requieren
3 ediciones .
LibreSSL es una librería con implementación de protocolos SSL / TLS . Esta biblioteca es un producto del equipo de OpenBSD , que está desarrollando una bifurcación de OpenSSL destinada a proporcionar un mayor nivel de seguridad. Antes de la bifurcación, se descubrió una vulnerabilidad heartbleed en OpenSSL .
Entre las características de LibreSSL, se puede destacar el enfoque en el soporte de alta calidad para los protocolos SSL / TLS con la eliminación de funcionalidades innecesarias, la participación de herramientas de protección adicionales y una limpieza y reelaboración significativas de la base del código.
El proyecto OpenBSD desarrolla una edición nativa del paquete LibreSSL para OpenBSD y una edición portátil para sistemas tipo Unix y Microsoft Windows . [cuatro]
Historia
Después de que se descubriera la vulnerabilidad Heartbleed en OpenSSL, el equipo de desarrollo de OpenBSD auditó el código y concluyó que era necesario crear y mantener su propia bifurcación de la biblioteca [5] . El 11 de abril de 2014 se registró el dominio libressl.org y el 22 de abril de 2014 se anunció el lanzamiento del proyecto.
Durante la primera semana, los desarrolladores eliminaron más de 90 000 líneas de código C [6] [7] . Se eliminó el código obsoleto o no utilizado, también se eliminó el soporte para sistemas operativos obsoletos y poco utilizados en nuestro tiempo. Inicialmente, se planeó desarrollar la biblioteca LibreSSL como reemplazo de OpenSSL en el sistema operativo OpenBSD 5.6 y, una vez que la biblioteca liviana se vuelva lo suficientemente estable, transferirla a otras plataformas [8] [9] .
El 17 de mayo de 2014, en la conferencia BSDCan 2014, Bob Beck presentó la charla "LibreSSL: Primeros 30 días y lo que viene", en la que se describieron los resultados del primer mes de desarrollo, los cambios realizados y los problemas encontrados. [diez]
El 5 de junio de 2014 se hicieron públicas algunas vulnerabilidades en OpenSSL. Aunque algunos proyectos fueron informados sobre estas vulnerabilidades con anticipación [11] , los desarrolladores de LibreSSL no fueron informados; como resultado, Theo de Raadt acusó a los desarrolladores de OpenSSL de ocultar deliberadamente información de los proyectos OpenBSD y LibreSSL [12] .
El 20 de junio de 2014 , Google creó otra bifurcación de OpenSSL llamada BoringSSL y anunció su intención de compartir parches con el proyecto LibreSSL [13] [14] . A pedido de los desarrolladores de LibreSSL, Google ha vuelto a otorgar licencias de algunos de sus cambios a una licencia ISC [13] [15] . El 21 de junio, Theo de Raadt anunció planes para lanzar una versión portátil de la biblioteca portátil LibreSSL [16] . El 20 de junio comenzó la migración del código a Linux [17] y el 8 de julio a las plataformas OS X y Solaris [18] .
El 11 de julio de 2014 se lanzó la primera versión portátil de LibreSSL 2.0.0 [19] [20] . El primer lanzamiento fue seguido rápidamente por las versiones 2.0.1 [21] (13 de julio), 2.0.2 [22] (16 de julio), 2.0.3 [23] (22 de julio), 2.0.4 [24] (3 de agosto ) y 2.0.5 [25] (5 de agosto), que corrigieron muchas de las deficiencias de la primera versión portátil.
El 28 de septiembre de 2014, Ted Unangst presentó la charla "LibreSSL: más de 30 días después", que describe los logros, problemas y cambios realizados en los meses desde la charla de Bob Beck en la conferencia BSDCan [10] [26] .
A partir de la versión 2.1.0, [27] , lanzada el 12 de octubre de 2014, la velocidad de realizar cambios en LibreSSL ha disminuido significativamente y la biblioteca se ha convertido en una alternativa funcional a OpenSSL. La mayoría de los cambios en las versiones 2.1.x son correcciones para vulnerabilidades encontradas en OpenSSL.
Uso
LibreSSL se utiliza como biblioteca predeterminada para implementar TLS en los siguientes sistemas:
- OpenBSD desde la versión 5.6 [28]
- Void Linux , a partir del 6 de agosto de 2014 [29] (Volvió a OpenSSL [30] el 23 de febrero de 2021 )
- PC-BSD desde la versión 10.1.2 [31]
- como alternativa en OPNsense desde la versión 15.7 [32]
- OpenELEC desde la versión 6.0beta2 [33]
- OS X desde la versión 10.11 El Capitan [34]
Cambios
Trabajando con la memoria
Algunos de los cambios más notables e importantes están relacionados con la sustitución de las funciones de memoria autoescritas por funciones de biblioteca estándar (p. ej., strlcpy, calloc, asprintf, reallocarrayetc.) [35] [36] . Esto le permitirá encontrar errores de desbordamiento de búfer más tarde utilizando herramientas especiales de análisis de fugas de memoria , así como investigar fallas utilizando la tecnología ASLR , el atributo de bit NX , " informantes ", etc.
El registro de control de versiones también muestra correcciones para posibles liberaciones dobles [37] . También hay muchas verificaciones adicionales para hacer coincidir los tamaños de los parámetros, conversiones entre variables sin firmar y firmadas, verificaciones de valores de puntero y valores de retorno.
Medidas preventivas
De acuerdo con las prácticas de programación segura generalmente aceptadas, las opciones y los indicadores del compilador están habilitados de forma predeterminada para detectar posibles problemas en la etapa de compilación (-Wall, -Werror, -Wextra, -Wuninitialized). Mejora de la legibilidad del código, lo que debería facilitar la comprobación del código en el futuro. La corrección o eliminación de macros y contenedores de métodos innecesarios también mejora la legibilidad del código y facilita la auditoría.
El problema del año 2038 se ha solucionado por completo en el código LibreSSL . Además, para evitar que el compilador elimine el código de limpieza de memoria de la compilación optimizada, se agregaron llamadas a funciones explicit_bzeropara bn_clearevitar que un atacante potencial lea valores de la memoria utilizada anteriormente.
Criptografía
La inicialización insegura del generador de números pseudoaleatorios con valores iniciales ha sido reemplazada con las capacidades proporcionadas por el kernel del sistema operativo [38] [39] . Otras innovaciones significativas incluyen soporte para el nuevo cifrado de flujo ChaCha y el código de autenticación de mensajes Poly1305 , así como un conjunto más seguro de curvas elípticas (curvas de brainpool de RFC 5639 , hasta 512 bits).
Características añadidas
Las siguientes funciones se agregaron en la primera versión de LibreSSL: compatibilidad con los algoritmos ChaCha y Poly1305 , curvas elípticas de Brainpool . Archivado el 19 de noviembre de 2015 en Wayback Machine y ANSSI . Archivado el 8 de diciembre de 2015 en Wayback Machine . ChaCha20-Poly1305.
En versiones posteriores, apareció lo siguiente: [40]
- 2.1.0: Teclas efímeras automáticas en curvas elípticas [27]
- 2.1.2: Compatibilidad con arc4random PRNG integrado en OS X y FreeBSD [41]
- 2.1.2: soporte de cifrado GOST rediseñado
- 2.1.3: Compatibilidad con ALPN [42]
- 2.1.3: Compatibilidad con conjuntos de cifrado SHA-256 Camellia
- 2.1.4: Compatibilidad con TLS_FALLBACK_SCSV en el lado del servidor [43]
- 2.1.4: certhash como reemplazo del script c_rehash
- 2.1.4: API X509_STORE_load_mem para cargar certificados desde la memoria (soporte chroot mejorado)
- 2.1.4: Versión experimental para Windows
- 2.1.5: Mejoras en el soporte de Windows, primero en versiones de 32 bits y 64 bits [44]
- 2.1.6: libtls declarado estable y habilitado por defecto [45]
- 2.2.0: Compatibilidad con AIX y Cygwin [46]
- 2.2.1: Se agregaron las curvas elípticas EC_curve_nid2nist y EC_curve_nist2nid [47] de OpenSSL, soporte inicial para Windows XP/2003
- 2.2.2: Se definió la constante LIBRESSL_VERSION_NUMBER [48] , se agregaron métodos TLS_* como reemplazo de los métodos SSLv23_*, se creó compatibilidad con cmake.
Viejas características inseguras
En la versión original de LibreSSL, algunas características estaban deshabilitadas por defecto [28] . Algunas de estas funciones se eliminaron por completo posteriormente, incluida la compatibilidad con Kerberos , el paquete de cifrado de exportación , la compresión TLS, el latido del corazón DTLS y SSL v2.
En versiones posteriores, las siguientes funciones se deshabilitaron adicionalmente:
- 2.1.1: Después del descubrimiento de la vulnerabilidad POODLE en el obsoleto protocolo SSL 3.0, este protocolo está deshabilitado por defecto en LibreSSL [49] .
- 2.1.3: Se eliminó la compatibilidad con la firma digital GOST R 34.10-94 [40] [42]
- 2.2.1: Soporte eliminado para motor dinámico y MDC-2DES [47]
- 2.2.2: Se eliminó la compatibilidad con SSLv3 del binario openssl , se eliminó la compatibilidad con Internet Explorer 6, el motor RSAX. [48]
- 2.3.0: Soporte completamente eliminado para SSLv3, SHA-0 y DTLS 1_BAD_VER
Funciones eliminadas
La primera versión de LibreSSL en OpenBSD 5.6 eliminó una gran cantidad de código que se consideró inseguro, innecesario u obsoleto [28] .
- En respuesta a la vulnerabilidad Heartbleed , una de las primeras funciones eliminadas fue la compatibilidad con los paquetes Heartbeat [50]
- Soporte para plataformas innecesarias ( Mac OS "clásico" , NetWare , OS/2 , VMS , Windows de 16 bits , etc.)
- Compatibilidad con compiladores más antiguos
- Se eliminaron los motores IBM 4758 , Broadcom ubsec , Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla y AEP debido a hardware obsoleto o dependencia de bibliotecas no libres
- Se eliminó el generador de números pseudoaleatorios OpenSSL (y se reemplazó con arc4random)
- Macros de preprocesador de C que se consideraron innecesarias o inseguras y quedaron en desuso en OpenSSL (por ejemplo, des_old.h)
- Archivos basura antiguos en lenguaje ensamblador , C y Perl (por ejemplo, EGD )
- Compatibilidad con MD2 y SEED
- SSLv3, SHA-0, DTLS1_BAD_VER
El algoritmo Dual_EC_DRBG , del que se sospecha que tiene una puerta trasera [51] , también fue destruido. También se eliminaron los protocolos no utilizados y los algoritmos inseguros, incluida la compatibilidad con FIPS 140-2 [52] , MD4 / MD5 [40] J-PAKE , [28] y SRP . [24]
Viejos errores
Una de las razones de las críticas a OpenSSL es la gran cantidad de entradas en el rastreador de errores que permanecen sin corregir durante muchos años. Estos errores antiguos ahora están corregidos en LibreSSL [53] .
Seguridad y vulnerabilidad
LibreSSL resultó ser inmune a muchas de las vulnerabilidades encontradas en OpenSSL después de la bifurcación. Es de destacar que ninguna de las vulnerabilidades de alto nivel encontradas en OpenSSL hasta ahora son aplicables a LibreSSL.
| LibreSSL |
OpenSSL |
LibreSSL |
OpenSSL
|
Clasificación |
1.0.1 |
1.0.2 [54]
|
crítico |
0 |
0 |
0 |
0
|
Alto |
0 |
cuatro |
0 |
2
|
Medio |
catorce |
25 |
12 |
17
|
Bajo |
cuatro |
once |
3 |
6
|
Total |
Dieciocho |
39 |
quince |
23
|
Enlaces
Notas
- ↑ Cook B. LibreSSL 3.6.1 Lanzamiento - 2022 .
- ↑ El proyecto de código abierto libressl en Open Hub: página de idiomas - 2006.
- ↑ 1 2 3 4 5 6 7 Directorio de software libre
- ↑ LibreSSL: Versiones . www.libressl.org. Consultado el 3 de octubre de 2019. Archivado desde el original el 1 de octubre de 2019. (indefinido)
- ↑ Unangst, Ted Orígenes de libressl . fuego antiaéreo (22 de abril de 2014). Consultado el 24 de abril de 2014. Archivado desde el original el 24 de abril de 2014. (indefinido)
- ↑ Seltzer, Larry OpenBSD bifurca, poda, corrige OpenSSL . Día cero . ZDNet (21 de abril de 2014). Consultado el 21 de abril de 2014. Archivado desde el original el 21 de abril de 2014. (indefinido)
- ↑ Brodkin, Jon Código OpenSSL irreparable, afirma ser el creador de la bifurcación "LibreSSL" . Ars Technica (22 de abril de 2014). Consultado el 24 de abril de 2014. Archivado desde el original el 19 de agosto de 2014. (indefinido)
- ↑ McCallion, Jane Heartbleed: LibreSSL borra código OpenSSL "irresponsable" (enlace no disponible) . PC Pro (22 de abril de 2014). Consultado el 23 de abril de 2014. Archivado desde el original el 26 de junio de 2014. (indefinido)
- ↑ Larabel, Michael OpenBSD afirma que LibreSSL será portátil . Phoronix (9 de mayo de 2014). Consultado el 30 de mayo de 2014. Archivado desde el original el 8 de diciembre de 2015. (indefinido)
- ↑ 1 2 Beck, Bob LibreSSL: Los primeros 30 días y lo que depara el futuro Diapositivas (17 de mayo de 2014). Consultado el 17 de mayo de 2014. Archivado desde el original el 24 de septiembre de 2015. (indefinido)
- ↑ Re: OpenSSL siete correcciones de seguridad . Lista de correo (5 de junio de 2014). Fecha de acceso: 9 de junio de 2014. (indefinido)
- ↑ de Raadt, Theo Re: nuevas fallas de OpenSSL . Lista de correo (5 de junio de 2014). Fecha de acceso: 9 de junio de 2014. (indefinido)
- ↑ 12 Langley, Adam BoringSSL (20 de junio de 2014) . Violeta imperial (20 de junio de 2014). Consultado el 21 de junio de 2014. Archivado desde el original el 1 de junio de 2018. (indefinido)
- ↑ Goodin, Dan Google presenta una "bifurcación" independiente de OpenSSL llamada "BoringSSL" . Ars Technica (20 de junio de 2014). Consultado el 21 de junio de 2014. Archivado desde el original el 23 de junio de 2014. (indefinido)
- ↑ Sing, Joel OpenBSD - lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c (enlace descendente) (21 de junio de 2014). Consultado el 21 de junio de 2014. Archivado desde el original el 22 de junio de 2014. (indefinido)
- ↑ de Raadt, Theo Boringssl y tal . Lista de correo (21 de junio de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_linux.c (enlace descendente) (20 de junio de 2014). Fecha de acceso: 28 de noviembre de 2015. Archivado desde el original el 9 de julio de 2014. (indefinido)
- ↑ Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c (enlace descendente) (8 de julio de 2014). Fecha de acceso: 28 de noviembre de 2015. Archivado desde el original el 22 de julio de 2014. (indefinido)
- ↑ Índice de /pub/OpenBSD/LibreSSL (11 de julio de 2014). Consultado el 11 de julio de 2014. Archivado desde el original el 14 de enero de 2016. (indefinido)
- ↑ Beck, Bob La primera versión de LibreSSL portable está disponible . Lista de correo (11 de julio de 2014). Consultado: 11 de julio de 2014. (indefinido)
- ↑ Beck, Bob LibreSSL 2.0.1 publicado . Lista de correo (13 de julio de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Beck, Bob LibreSSL portable 2.0.2 publicado . Lista de correo (16 de julio de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Beck, Bob LibreSSL 2.0.3 publicado . Lista de correo (22 de julio de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ 12 Beck , Bob LibreSSL 2.0.4 publicado . Lista de correo (3 de agosto de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cook, Brent LibreSSL 2.0.5 publicado . Lista de correo (8 de agosto de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Unangst, Ted LibreSSL: más de 30 días después (28 de septiembre de 2014). Consultado el 9 de junio de 2014. Archivado desde el original el 28 de septiembre de 2014. (indefinido)
- ↑ 12 Beck , Bob LibreSSL 2.1.0 publicado . Lista de correo (12 de octubre de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ 1 2 3 4 Jacoutot, Antoine Lanzamiento de OpenBSD 5.6 . Lista de correo (1 de noviembre de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ LibreSSL habilitado por defecto (enlace descendente) . linux nulo. Fecha de acceso: 15 de octubre de 2015. Archivado desde el original el 8 de diciembre de 2015. (indefinido)
- ↑ Volviendo a OpenSSL . voidlinux.org . Consultado el 12 de septiembre de 2021. Archivado desde el original el 16 de octubre de 2021. (indefinido)
- ↑ Mark VonFange. PC-BSD 10.1.2: una entrevista con Kris Moore . Blog oficial de PC-BSD. Consultado el 15 de octubre de 2015. Archivado desde el original el 6 de septiembre de 2015. (indefinido)
- ↑ Lanzamiento de la versión 15.7 de OPNsense . OPNsentido. Consultado el 15 de octubre de 2015. Archivado desde el original el 21 de septiembre de 2015. (indefinido)
- ↑ [Lanzamiento de Beta OpenELEC 6.0 Beta 2] (enlace descendente) . AbiertoELEC. Consultado el 15 de octubre de 2015. Archivado desde el original el 26 de noviembre de 2015. (indefinido)
- ↑ Apple iOS 9: funciones de seguridad y privacidad (enlace no disponible) . medio. - "OS X 10.11 se envía con LibreSSL". Consultado el 24 de octubre de 2015. Archivado desde el original el 25 de noviembre de 2015. (indefinido)
- ↑ Orr, William Un resumen rápido de la última semana . OpenSSL Valhalla Rampage (23 de abril de 2014). Consultado el 30 de abril de 2014. Archivado desde el original el 29 de abril de 2014. (indefinido)
- ↑ OpenBSD LibreSSL CVS Calloc Confirmaciones . Consultado el 28 de noviembre de 2015. Archivado desde el original el 23 de marzo de 2019. (indefinido)
- ↑ OpenBSD LibreSSL CVS Dobles confirmaciones gratuitas . Consultado el 28 de noviembre de 2015. Archivado desde el original el 23 de marzo de 2019. (indefinido)
- ↑ OpenBSD LibreSSL CVS insecure seeding . (indefinido)
- ↑ OpenBSD LibreSSL CVS Kernel Seeding (enlace descendente) . Consultado el 28 de noviembre de 2015. Archivado desde el original el 16 de septiembre de 2014. (indefinido)
- ↑ 1 2 3 Registro de cambios portátil LibreSSL . LibreSSL. Fecha de acceso: 28 de noviembre de 2015. Archivado desde el original el 28 de noviembre de 2015. (indefinido)
- ↑ Beck, Bob LibreSSL 2.1.2 publicado . Lista de correo (9 de diciembre de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ 1 2 Cook, Brent LibreSSL 2.1.3 publicado . Lista de correo (22 de enero de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cook, Brent LibreSSL 2.1.4 publicado . Lista de correo (4 de marzo de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cook, Brent LibreSSL 2.1.5 publicado . Lista de correo (17 de marzo de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cook, Brent LibreSSL 2.1.6 publicado . Lista de correo (19 de marzo de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cook, Brent LibreSSL 2.1.7 y 2.2.0 publicados . Lista de correo (11 de junio de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ 1 2 Cook, Brent LibreSSL 2.2.1 publicado . Lista de correo (9 de julio de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ 1 2 Cook, Brent LibreSSL 2.2.2 publicado . Lista de correo (6 de agosto de 2015). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Beck, Bob LibreSSL 2.1.1 publicado (16 de octubre de 2014). Consultado el 28 de noviembre de 2015. Archivado desde el original el 23 de marzo de 2019. (indefinido)
- ↑ OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS . (indefinido)
- ↑ Perlroth, Nicole . El gobierno anuncia medidas para restablecer la confianza en los estándares de cifrado (10 de septiembre de 2013). Archivado desde el original el 12 de julio de 2014. Consultado el 9 de mayo de 2014.
- ↑ El futuro (o la falta del mismo) del módulo de objetos FIPS de LibreSSL . Consultado el 28 de noviembre de 2015. Archivado desde el original el 8 de diciembre de 2015. (indefinido)
- ↑ Vallat, Miod Re: CVS: cvs.openbsd.org: src . Lista de correo (10 de noviembre de 2014). Consultado: 28 de octubre de 2015. (indefinido)
- ↑ Cantidad desde la versión 1.0.2
OpenBSD |
---|
Sistema operativo |
|
---|
tenedores |
|
---|
Proyectos relacionados |
|
---|
Gente |
|
---|
Organizaciones y otros recursos |
- Fundación OpenBSD
- Diablos de lengua a cuadros
- Diario
|
---|