wolfSSL es una biblioteca SSL/TLS pequeña, portátil e integrada destinada a desarrolladores de sistemas integrados. Es una implementación de código abierto de TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 y DTLS 1.0, 1.2 y 1.3) escrita en el lenguaje de programación C. Incluye bibliotecas de cliente SSL/TLS y una implementación de servidor SSL/TLS, así como compatibilidad con múltiples API, incluidas las definidas por SSL y TLS . wolfSSL también incluye una interfaz de compatibilidad con OpenSSL con las funciones OpenSSL más utilizadas. [4] [5]
Un predecesor de wolfSSL, yaSSL es una biblioteca SSL basada en C++ para entornos integrados y sistemas operativos en tiempo real con recursos limitados.
Plataformas
wolfSSL está actualmente disponible para Microsoft Windows , Linux , macOS , Solaris , ESP32 , ESP8266 , Threadx , VxWorks , FreeBSD , NetBSD , OpenBSD , Linux integrado , Yocto Project , OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Wii y GameCube a través de soporte para DevKitPro, QNX , MontaVista , variantes de Tron , NonStop OS , OpenCL , MicroC/OS-II de Micrium , FreeRTOS , SafeRTOS , Freescale MQX , Nucleus , TinyOS , TI-RTOS , HP-UX , uTasker, uT-kernel, embOS, INtime , mbed , RIOT , CMSIS-RTOS, FROSTED, Green Hills INTEGRITY , Keil RTX, TOPPERS, PetaLinux, Apache Mynewt y PikeOS . [6]
Historia
El origen de yaSSL, u otro SSL más, data de 2004. OpenSSL estaba disponible en ese momento y tenía licencia dual bajo la Licencia OpenSSL y la licencia SSLeay . [7] yaSSL, alternativamente, fue desarrollado y licenciado dualmente bajo una licencia comercial y la GPL. [8] yaSSL ofrecía una API más moderna, soporte para desarrolladores de estilo comercial y estaba completo con una capa de compatibilidad con OpenSSL. [4] El primer usuario importante de wolfSSL/CyaSSL/yaSSL fue MySQL . [9] A través de la combinación con MySQL, yaSSL ha logrado volúmenes de distribución extremadamente altos en los millones.
En febrero de 2019, Daniel Stenberg , el creador de cURL , fue contratado por el proyecto wolfSSL para trabajar en cURL. [10]
Protocolos
La biblioteca SSL ligera wolfSSL implementa los siguientes protocolos: [11]
- SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
- DTLS 1.0, DTLS 1.2, DTLS 1.3
- Extensiones: Indicación de nombre de servidor (SNI), Longitud máxima de fragmento, HMAC truncado , Negociación de protocolo de capa de aplicación (ALPN), Secreto maestro extendido
- Conjuntos de cifrados: contraseña remota segura TLS , clave precompartida TLS
- Criptografía post-cuántica : QSH (apretón de manos cuántico seguro)
- Estándares de criptografía de clave pública :
- PKCS #1 - Criptografía RSA
- PKCS #3 - Acuerdo de clave Diffie-Hellman
- PKCS #5 - Cifrado basado en contraseña
- PKCS #7 - Sintaxis de mensajes criptográficos (CMS)
- PKCS #8 - Sintaxis de información de clave privada
- PKCS #9 - Tipos de atributos seleccionados
- PKCS #10 - Solicitud de firma de certificado (CSR)
- PKCS #11 - Interfaz de token criptográfico
- PKCS #12 - Estándar de sintaxis para el intercambio de información personal y certificados
Notas del protocolo:
- SSL 2.0 – SSL 2.0 quedó obsoleto (prohibido) en 2011 por RFC 6176. wolfSSL no lo admite.
- SSL 3.0 – SSL 3.0 quedó obsoleto (prohibido) en 2015 por RFC 7568. En respuesta al ataque POODLE , SSL 3.0 ha sido deshabilitado de manera predeterminada desde wolfSSL 3.6.6, pero se puede habilitar con una opción de tiempo de compilación. [12]
Algoritmos
wolfSSL utiliza las siguientes bibliotecas de criptografía:
Cripta del lobo
De forma predeterminada, wolfSSL utiliza los servicios criptográficos proporcionados por wolfCrypt. [13] wolfCrypt proporciona RSA , ECC , DSS , Diffie–Hellman , EDH , NTRU , DES , Triple DES , AES (CBC, CTR, CCM, GCM), Camellia , IDEA , ARC4 , HC-128 , ChaCha20 , MD2 , MD4 , MD5 , SHA-1 , SHA-2 , SHA-3 , BLAKE2 , RIPEMD-160 , Poly1305 , generación de números aleatorios, compatibilidad con números enteros grandes y codificación/decodificación base 16/64.
wolfCrypt también incluye soporte para los recientes algoritmos X25519 y Ed25519 .
wolfCrypt actúa como una implementación criptográfica de back-end para varios paquetes de software y bibliotecas populares, incluido MIT Kerberos [14] (donde se puede habilitar mediante una opción de compilación).
NTRU
CyaSSL+ incluye cifrado de clave pública NTRU [15] . La incorporación de NTRU en CyaSSL+ fue el resultado de la asociación entre yaSSL y Security Innovation. [15] NTRU funciona bien en entornos móviles e integrados debido al tamaño de bits reducido necesario para proporcionar la misma seguridad que otros sistemas de clave pública. Además, no se sabe que sea vulnerable a ataques cuánticos. Varias suites de cifrado que utilizan NTRU están disponibles con CyaSSL+, incluidas AES-256, RC4 y HC-128.
Integración de hardware
Compatibilidad con elementos seguros
wolfSSL admite los siguientes elementos seguros :
- STMicroelectronics STSAFE
- Autenticación criptográfica de Microchip ATECC508A
- Elemento de seguridad NXP EdgeLock SE050
Soporte tecnológico
wolfSSL admite las siguientes tecnologías de hardware:
- Intel SGX ( Software Guard Extensions ) [16] : Intel SGX permite una superficie de ataque más pequeña y se ha demostrado que proporciona un mayor nivel de seguridad para ejecutar código sin un impacto significativo en el rendimiento.
Soporte de cifrado de hardware
Las siguientes tablas enumeran el soporte de wolfSSL para el uso del cifrado de hardware de varios dispositivos con varios algoritmos.
- "Todos" indica tamaños de bloque admitidos de 128, 192 y 256 bits
Certificaciones
wolfSSL admite las siguientes certificaciones:
- Normas federales de procesamiento de información ( FIPS 140 )
- FIPS 140-2 y FIPS 140-3 [17]
- Módulo FIPS de wolfCrypt: 3.6.0 (certificado NIST n.° 2425) - Histórico
- Módulo FIPS de wolfCrypt: 4.0 (certificado NIST n.° 3389) - Histórico
- Módulo FIPS de wolfCrypt: v5.2.1 (certificado NIST n.° 4718) - Activo
- FIPS 140-2 y FIPS 140-3 [17]
- Comisión Técnica de Radio para Aeronáutica (RTCA)
- DO-178C
- Kit de certificación wolfCrypt COTS DO-178C (DAL A) [18]
- DO-178C
Licencias
wolfSSL tiene doble licencia:
- Licencia GPL-2.0 o posterior . Es válida para proyectos de código abierto y evaluación bajo licencia GPL.
- Se ofrece bajo una licencia comercial que no es GPL. Incluye paquetes de soporte y mantenimiento adicionales y su precio es de 6000 USD por producto o SKU a partir de 2022.
Véase también
- Seguridad de la capa de transporte
- Comparación de implementaciones de TLS
- Comparación de bibliotecas de criptografía
- GnuTLS
- Servicios de seguridad de red
- OpenSSL
Referencias
- ^ "Registro de cambios de wolfSSL".
- ^ "Versión 5.7.2". 8 de julio de 2024. Consultado el 16 de julio de 2024 .
- ^ "LICENCIAS". GitHub .
- ^ ab wolfSSL – Productos de comunicaciones integradas
- ^ "Lo que necesita saber sobre el protocolo TLS 1.3 y las bibliotecas SSL/TLS de wolfSSL". www.allaboutcircuits.com . Consultado el 28 de diciembre de 2018 .
- ^ "Biblioteca SSL/TLS integrada de wolfSSL | Productos de wolfSSL" . Consultado el 31 de enero de 2019 .
- ^ OpenSSL: código fuente, licencia
- ^ wolfSSL – Licencia
- ^ "MySQL, creación de MySQL con soporte para conexiones seguras". Archivado desde el original el 6 de julio de 2017. Consultado el 12 de junio de 2016 .
- ^ Daniel Stenberg, fundador y arquitecto jefe de cURL, se une a wolfSSL
- ^ wolfSSL – Documentación | Manual de CyaSSL – Capítulo 4 (Características)
- ^ "wolfSSL 3.6.6 ya está disponible".
- ^ wolfSSL – Documentación | Manual de wolfSSL – Capítulo 10 (Referencia de uso de wolfCrypt)
- ^ Kerberos: el protocolo de autenticación de red
- ^ de NTRU CryptoLabs Archivado el 2 de febrero de 2013 en archive.today
- ^ wolfSSL – wolfSSL con Intel® SGX
- ^ WOLFCRYPT FIPS 140-2 y FIPS 140-3
- ^ Compatibilidad de wolfSSL con DO-178C DAL A
Enlaces externos
- Página de inicio de wolfSSL/CyaSSL
- wolfSSL ahora con ChaCha20 y Poly1305