| wolfSSL | ||
|---|---|---|
| Información general | ||
| Tipo de programa | Biblioteca de seguridad | |
| Autor | Todd Ouska | |
| Lanzamiento inicial | 19 de febrero de 2016 | |
| Licencia | Licencia Pública General GNU o Licencia Comercial de Distribución | |
| Estado actual | Activo | |
| Información técnica | ||
| Programado en | Lenguaje C | |
| Versiones | ||
| Última versión estable | 5.9.427 de septiembre de 2026 | |
| Enlaces | ||
wolfSSL (antes conocido como CyaSSL o yet another SSL) es una pequeña y portable biblioteca SSL/TLS integrada, con el fin de ser utilizada por diseñadores de sistemas embebidos. Es una implementación a código abierto de TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, and DTLS 1.0 and 1.2) escrita en el lenguaje de programación C. Este incluye catálogos para cliente SSL/TLS e implementación de servidor SSL/TLS, así como también apoyo para múltiples API (interfaz para programas de aplicación) incluyendo aquellas definidas por SSL y TLS. wolfSSL también incluye una interfaz de compatibilidad OpenSSL con las funciones OpenSSL más comúnmente usadas.
El antecesor de wolfSSL, yaSSL, es una biblioteca SSL basada en C++ creada para entornos integrados y sistemas operativos de tiempo real con recursos limitados.
wofSSL esta actualmente disponible en Win32/64, Linux, macOS, Solaris, Threadx, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWrt, iPhone, Android, Nintendo Wii y Gamecube por medio de la compatibilidad con DevKitPro, QNX, MontaVista, variantes deTron, NonStop, OpenCL, MicroC/OS-II de Micrium, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker, y embOS.
El origen de yaSSL, o algún otro SSL, data del 2004. OpenSSL estaba disponible en aquel tiempo y estaba doblemente matriculado bajo la Licencia OpenSSL y la licencia SSLeay. Alternativamente, yaSSL fue desarrollada y matriculada tanto bajo una licencia comercial como una Licencia General Pública (GPL). yaSSL ofrecía una interfaz para programas de aplicación (API) más moderna, un soporte de diseño comercial y una capa de compatibilidad OpenSSL completa.MySQL fue el primer usuario principal de wolfSSL/CyaSSL/yaSSL. Debido a la asociación con MySQL, yaSSL ha logrado alcanzar volúmenes de distribución extremadamente altos—en los millones.
La biblioteca liviana SSL de wolfSSL implementa los siguientes protocolos:
Notas de Protocolo:
wolfSSL usa los siguientes archivos de criptografía:
Por defecto, wolfSSL usa los servicios criptográficos provistos por wolfCrypt. wolfCrypt provee 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, BLAKE2, RIPEMD-160, Poly1305, generación aleatoria de números, soporte de enteros mayores, y base de codificación/decodificación 16/64. Un código experimental llamado Rabbit, el cual es un software de transmisión de códigos de dominio público del Proyecto eSTREAM de la UE, también está incluido. Rabbit es potencialmente beneficioso para aquellos que encripten transmisiones de medios de comunicación en entornos de alto rendimiento y demanda.
wolfCrypt también incluye soporte para los recientes algoritmos Curve25519 y Ed25519.
wolfCrypt actúa como motor de cripto-implementación para varios paquetes de programas y bibliotecas populares, incluyendo MIT Kerberos (el cual se puede activar usando una opción de personalización).
CyaSSL+ incluye la encriptación de clave pública NTRU. La adición de NTRU a CyaSSL+ fue el resultado de la asociación entre yaSSL y Security Innovation. NTRU funciona bien en dispositivos móviles y embebidos ya que utiliza la mínima cantidad de bits necesaria para proveer la misma seguridad que otros sistemas de código públicos que necesitan más. Adicionalmente, no se le conoce por ser vulnerable a ataques cuánticos. Varias suites de clave que utilizan NTRU están disponibles con CyaSSL+, incluyendo AES-256, RC4 y HC-128.
wolfSSL es compatible con Intel SGX (Software Guard Extensions. Intel SGX permite un área de superficie de ataque más pequeña y ha demostrado que provee un nivel de seguridad más alto al ejecutar códigos sin mostrar un impacto negativo significativo en su rendimiento.
| AES-GCM | 128, 192, 256 bit | |
| AES-CCM | 128, 192, 256 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-ECB | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit |
| SHA-256 | |
| SHA-384 | |
| SHA-512 |
| SHA-256 | |
| SHA-512 |
| SHA-256 | |
| SHA-512 |
| DES-CBC | 64 bit | |
| 3DES-CBC | 192 bit | |
| AES-CBC | 128, 192, 256 bit |
| MD5 | Compendio de 128 bits | |
| SHA1 | Compendio de 160 bits | |
| SHA256 | ||
| DES-CBC | 64 bit | |
| 3DES-CBC | 192 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-CCM | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit | |
| AES-ECB | 128, 192, 256 bit |
| RNG | ||
| DES-CBC | 64 bit | |
| DES-ECB | Encriptación de 64 bits | |
| 3DES-CBC | 192 bit | |
| MD5 | 128 bit | |
| SHA1 | 160 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit |
| RNG | ||
| AES-CBC | 128, 192, 256 bit | |
| 3DES-CBC | 192 bit | |
| RC4 | Máximo de 2048 bits | |
| HMAC | MD5, SHA1, SHA256, SHA3 | |
| RSA | 512 - 4096 bit | |
| ECC | NIST Prime 192, 224, 256, 384 y 521 |
| MD5 | Compendio de 128 bits | |
| SHA1 | Compendio de 160 bits | |
| SHA256 | ||
| HMAC | MD5, SHA1, SHA256 | |
| DES-CBC | 64 bit | |
| 3DES-CBC | 192 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit |
| DES-CBC | 64 bit | |
| 3DES-CBC | 192 bit | |
| AES-CCM | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit | |
| AES-ECB | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit | |
| AES-CBC | 128, 192, 256 bit |
| AES-ECB | 128 bit | |
| RNG |
| ECC | 256 bit (NIST-P256) |
| AES-CBC | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit | |
| SHA256 |
| RSA | 512 - 4096 bit | |
| SHA1 | Compendio de 160 bits | |
| SHA2 | 224, 256, 384 y 512 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit | |
| ECC | Cualquier curva o fortaleza de bit | |
| HMAC | SHA1, SHA2 | |
| MD5 |
| Curve25519 | 256 bit | |
| Ed25519 | 256 bit | |
| AES-CCM | 128, 192, 256 bit | |
| AES-ECB | 128, 192, 256 bit | |
| AES-CBC | 128, 192, 256 bit | |
| AES-CTR | 128, 192, 256 bit | |
| AES-GCM | 128, 192, 256 bit | |
| SHA1 | Compendio de 160 bits | |
| SHA256 | ||
| ECC | 128, 256 bit | |
| ECC-DHE | 128, 256 bit | |
| RSA | 512 - 4096 bit |
wolfSSL es un código abierto bajo la Licencia Pública General (GNU) GPLv2.