wolfSSL es una biblioteca SSL/TLS integrada, pequeña y portátil, diseñada para su uso por parte de 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]
YaSSL, un predecesor de wolfSSL, es una biblioteca SSL basada en C++ para entornos integrados y sistemas operativos en tiempo real con recursos limitados.
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]
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]
La biblioteca SSL ligera wolfSSL implementa los siguientes protocolos: [11]
Notas del protocolo:
wolfSSL utiliza las siguientes bibliotecas de criptografía:
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).
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.
wolfSSL admite los siguientes elementos seguros :
wolfSSL admite las siguientes tecnologías 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
wolfSSL admite las siguientes certificaciones:
wolfSSL tiene doble licencia: