wolfSSL es una pequeña biblioteca SSL/TLS portátil e integrada, diseñada para desarrolladores de sistemas embebidos. 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 lenguaje de programación C. Incluye bibliotecas cliente SSL/TLS y una implementación de servidor SSL/TLS, así como soporte para múltiples API, incluidas las definidas por SSL y TLS . wolfSSL también incluye una interfaz de compatibilidad con OpenSSL y las funciones OpenSSL más utilizadas. [ 4 ] [ 5 ]
Plataformas
wolfSSL está disponible actualmente para Microsoft Windows , Linux , macOS , Solaris , ESP32 , ESP8266 , ThreadX , VxWorks , FreeBSD , NetBSD , OpenBSD , Linux embebido , Yocto Project , OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Wii y GameCube a través del soporte de 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 ] Deos, Azure Sphere OS, Zephyr, AIX y Cesium.
Historia
El origen de wolfSSL se remonta a 2004. OpenSSL estaba disponible en ese momento y tenía una doble licencia: la Licencia OpenSSL y la Licencia SSLeay . [ 7 ] Por otro lado, yaSSL se desarrolló y tenía una doble licencia: una licencia comercial y la GPL. [ 8 ] yaSSL ofrecía una API más moderna, soporte para desarrolladores de estilo comercial y una capa de compatibilidad con OpenSSL. [ 4 ] El primer usuario importante de wolfSSL/CyaSSL/yaSSL fue MySQL . [ 9 ] Gracias a su integración con MySQL, yaSSL ha alcanzado volúmenes de distribución extremadamente altos, de millones de descargas.
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, curvas elípticas compatibles
- Conjuntos de cifrado: Contraseña remota segura TLS , clave precompartida TLS
- Criptografía post-cuántica : ML-DSA añadido a sigAlgs, ML-KEM añadido a Supported Groups, QSH (obsoleto y eliminado), certificado de algoritmo dual y compatibilidad con autenticación de algoritmo dual TLS 1.3.
- Esquemas de establecimiento de claves TLS híbridas:
- ECDHE P-256 con Kyber Nivel 1
- ECDHE P-384 con Kyber Nivel 3
- ECDHE P-521 con Kyber Nivel 5
- Estándares de criptografía de clave pública :
- PKCS #1 - Criptografía RSA
- PKCS n.° 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 la 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 certificados e información personal
- Soporte QUIC
- OCSP, grapado OCSP, CRL
- HPKE (Cifrado de clave pública híbrido)
- ECH (Encryption Client Hello)
- Certificados x.509v3
- Autenticación mutua
Notas del protocolo:
- SSL 2.0 – SSL 2.0 fue declarado obsoleto (prohibido) en 2011 por la RFC 6176. wolfSSL no lo admite.
- SSL 3.0 – SSL 3.0 fue declarado obsoleto (prohibido) en 2015 por RFC 7568. En respuesta al ataque POODLE , SSL 3.0 ha sido deshabilitado por defecto desde wolfSSL 3.6.6, pero puede habilitarse con una opción de compilación. [ 12 ]
Algoritmos
wolfSSL utiliza las siguientes bibliotecas de criptografía:
wolfCrypt
Por defecto, wolfSSL utiliza los servicios criptográficos proporcionados por wolfCrypt. [ 13 ] wolfCrypt Proporciona RSA , DSA , ECC , DSS , Diffie-Hellman , EDH , ECDH-ECDSA, ECDHE-ECDSA, ECDH-RSA, ECDHE-RSA, NTRU (obsoleto y eliminado), DES , Triple DES , AES (CBC, CTR, CCM, GCM, OFB, XTS, GMAC, CMAC), Camellia , IDEA , ARC4 , HC-128 , ChaCha20 , MD2 , MD4 , MD5 , SHA-1 , SHA-2 , SHA-3 , BLAKE2 , RIPEMD-160 , Poly1305 , SM2, SM3 , SM4 Generación de números aleatorios, soporte para enteros grandes, codificación/decodificación en base 16/64, HMAC , PBKDF2 y algoritmos criptográficos post-cuánticos: ML-KEM (certificado según FIPS 203) y ML-DSA (certificado según FIPS 204).
- Tipos de curvas ECC: SECP, SECPR2, SECPR3, BRAINPOOL, KOBLITZ
- Longitudes de clave ECC: 112, 128, 160, 192, 224, 239, 256, 320, 384, 512, 521
wolfCrypt también incluye soporte para los algoritmos X25519 y Ed25519 , así como para los algoritmos X448 y Ed448 .
wolfCrypt actúa como una implementación criptográfica de back-end para varios paquetes y bibliotecas de software populares, incluido MIT Kerberos [ 14 ] (donde se puede habilitar mediante una opción de compilación).
wolfCrypt está validado por FIPS y posee dos certificados FIPS 140-2 (#2425 [ 15 ] y #3389 [ 16 ] ) y dos certificados FIPS 140-3 (#4718 [ 17 ] y #5041 [ 18 ] ).
NTRU
CyaSSL+ incluye el cifrado de clave pública NTRU [ 19 ] . La incorporación de NTRU en CyaSSL+ fue resultado de la colaboración entre yaSSL y Security Innovation. [ 19 ] 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 conoce que sea vulnerable a ataques cuánticos. CyaSSL+ ofrece varios conjuntos de cifrado que utilizan NTRU, incluidos AES-256, RC4 y HC-128.
Post-cuántico
wolfSSL ofrece soporte para una variedad de algoritmos criptográficos post-cuánticos, incluido el Mecanismo de Encapsulación de Clave Kyber (KEM), hibridado con curvas ECC recomendadas por NIST para mantener el cumplimiento de FIPS. Los niveles ML-KEM compatibles incluyen el Nivel 1 (ML-KEM-512), el Nivel 3 (ML-KEM-768) y el Nivel 5 (ML-KEM-1024). Para firmas digitales, wolfSSL implementa ML-DSA en los Niveles 2, 3 y 5; FALCON en los Niveles 1 y 5; y SLH-DSA, LMS/HSS y XMSS/XMSS^MT. La biblioteca también admite esquemas híbridos de intercambio de claves TLS, combinando ECDHE con ML-KEM en los niveles de seguridad correspondientes, así como certificados de doble algoritmo y autenticación de doble algoritmo TLS 1.3.
Integración de hardware
Compatibilidad con elementos seguros
wolfSSL admite los siguientes elementos seguros :
- STMicroelectronics STSAFE
- Microchip CryptoAutentication ATECC508A
- Microchip TA100
- Elemento seguro NXP EdgeLock SE050
Soporte técnico
wolfSSL es compatible con las siguientes tecnologías de hardware:
- Intel SGX ( Software Guard Extensions ) [ 20 ] : Intel SGX permite una superficie de ataque más pequeña y se ha demostrado que proporciona un mayor nivel de seguridad para la ejecución de código sin un impacto significativo en el rendimiento.
- NXP CAAM (Módulo de Aceleración y Garantía Criptográfica) en i.MX6 (QNX), i.MX8 (QNX/Linux), RT1170 FreeRTOS
- ARM TrustZone CryptoCell 310
- Generador de números aleatorios MAXQ1065/1080
- Unidad de protección de confianza (TPU) MAX32665 y MAX32666
Licencias
wolfSSL tiene doble licencia: bajo la licencia GPL-3.0 o posterior y bajo una licencia comercial.
Véase también
Referencias
- ↑ "wolfSSL ChangeLog" . 10 de agosto de 2017.
- ↑ "Versión 5.9.2" . 25 de junio de 2026. Consultado el 26 de junio de 2026 .
- ↑ "LICENCIAS" . GitHub .
- 1 2 wolfSSL – Productos de comunicaciones integradas
- ↑ "Lo que necesitas 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 wolfSSL" . 4 de agosto de 2017. Consultado el 31 de enero de 2019 .
- ↑ OpenSSL: Código fuente, Licencia
- ↑ wolfSSL – Licencia
- ↑ "MySQL, Construyendo MySQL con soporte para conexiones seguras" . Archivado del 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
- ↑ {{[title=Certificado n.º 2425|url= https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/2425 }}
- ↑ {{[title=Certificado n.º 3389|url= https://csrc.nist.gov/Projects/cryptographic-module-validation-program/Certificate/3389 }}
- ↑ {{[title=Certificado n.º 4718|url= https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4718 }}
- ↑ {{[title=Certificado n.º 5041|url= https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5041 }}
- 1 2 NTRU CryptoLabs Enlace obsoleto archivado el 2 de febrero de 2013 en archive.today
- ↑ wolfSSL – wolfSSL con Intel® SGX
Enlaces externos
- Página principal de wolfSSL/CyaSSL
- wolfSSL ahora con ChaCha20 y Poly1305
- Bibliotecas de C (lenguaje de programación)
- Software criptográfico
- Implementación de la seguridad de la capa de transporte