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.wolfSSL - Embedded Communications Products
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.
Plataformas 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.
Historia 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.OpenSSL: Source, License Alternativamente, yaSSL fue desarrollada y matriculada tanto bajo una licencia comercial como una Licencia General Pública (GPL).wolfSSL - License 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.
Protocolos
La biblioteca liviana SSL de wolfSSL implementa los siguientes protocolos:wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features) SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 DTLS 1.0, DTLS 1.2
Notas de Protocolo: SSL 2.0 - SSL 2.0 fue rechazado (prohibido) en el 2011 por el RFC 6176. wolfSSL no es compatible. SSL 3.0 - SSL 3.0 fue rechazado (prohibido) en el 2015 por el RFC 7568. Como respuesta al ataque POODLE, SSL 3.0 ha sido deshabilitado por defecto desde wolfSSL 3.6.6, pero aún puede ser habilitado a través de una opción de tiempo de compilación."wolfSSL 3.6.6 is Now Available".
Algoritmos wolfSSL usa los siguientes archivos de criptografía:
wolfCrypt Por defecto, wolfSSL usa los servicios criptográficos provistos por wolfCrypt.wolfSSL - Docs | wolfSSL Manual - Chapter 10 (wolfCrypt Usage Reference) 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 KerberosKerberos: The Network Authentication Protocol (el cual se puede activar usando una opción de personalización).
NTRU 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.
SGX wolfSSL es compatible con Intel SGX (Software Guard Extensions.Intel SGX 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.
Plataformas de Aceleración de Hardware Compatibles Intel AES-NI (Familias de procesadores Xeon y Core)
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 AVX1/AVX2 (Intel y AMD x86) SHA-256 SHA-384 SHA-512 RDRAND (Arquitecturas Intel 64, IA-32) SHA-256 SHA-512 RDSEED (Intel Broadwell, AMD Zen) SHA-256 SHA-512 Freescale Coldfire SEC (NXP MCF547X y MCF548X) DES-CBC 64 bit 3DES-CBC 192 bit AES-CBC 128, 192, 256 bit Freescale Kinetis MMCAU K50, K60, K70 and K80 (Corteza ARM - Núcleo M4) 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 STMicroelectronics STM32 F1, F2, F4, L1, Serie W (Corteza de ARM - M3/M4) 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
CubeMX y Std Per Lib
Cavium NITROX (Procesadores III/V PX) 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 Microchip PIC32 MX/MZ (Conectividad integrada) 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 Texas Instruments TM4C1294 (Corteza ARM - M4F) 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 Nordic NRF51 (Serie de la familia SoC, corteza 32-bit ARM núcleo procesador M0) AES-ECB 128 bit RNG Microchip/Atmel ATECC508A (compatible con MPU o MCU) ECC 256 bit (NIST-P256) ARMv8 AES-CBC 128, 192, 256 bit AES-CTR 128, 192, 256 bit AES-GCM 128, 192, 256 bit SHA256 Tecnología Intel QuickAssist 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 Freescale NXP LTC 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
Licencias wolfSSL es un código abierto bajo la Licencia Pública General (GNU) GPLv2.GNU License
Véase también
Seguridad de la capa de transporte (TLS) Comparación de implementaciones TLS Comparación de bibliotecas criptográficas GnuTLS Servicios de seguridad de la red OpenSSL MatrixSSL
Referencias
Enlaces externos Página principal wolfSSL/CyaSSL wolfSSL ahora con ChaCha20 y Poly1305
Categoría:Bibliotecas de C Categoría:Software criptográfico Categoría:Implementación de capas de seguridad