WolfSSL

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.[2]

wolfSSL
Información general
Tipo de programa Biblioteca de seguridad
Autor Todd Ouska
Lanzamiento inicial 19 de febrero de 2016[1]
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.5.128 de septiembre de 2022
Enlaces

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.[3] Alternativamente, yaSSL fue desarrollada y matriculada tanto bajo una licencia comercial como una Licencia General Pública (GPL).[4] 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.[2]MySQL fue el primer usuario principal de wolfSSL/CyaSSL/yaSSL.[5] 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:[6]

  • 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.[7]

Algoritmos

wolfSSL usa los siguientes archivos de criptografía:

wolfCrypt

Por defecto, wolfSSL usa los servicios criptográficos provistos por wolfCrypt.[8] 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[9] (el cual se puede activar usando una opción de personalización).

NTRU

CyaSSL+ incluye la encriptación de clave pública NTRU.[10] La adición de NTRU a CyaSSL+ fue el resultado de la asociación entre yaSSL y Security Innovation.[10] 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.[11] 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-GCM128, 192, 256 bit
AES-CCM128, 192, 256 bit
AES-CBC128, 192, 256 bit
AES-ECB128, 192, 256 bit
AES-CTR128, 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 Archivado el 16 de marzo de 2017 en Wayback Machine. (NXP MCF547X y MCF548X)
DES-CBC64 bit
3DES-CBC192 bit
AES-CBC128, 192, 256 bit
Freescale Kinetis MMCAU Archivado el 16 de marzo de 2017 en Wayback Machine. K50, K60, K70 and K80 (Corteza ARM - Núcleo M4)
MD5Compendio de 128 bits
SHA1Compendio de 160 bits
SHA256
DES-CBC64 bit
3DES-CBC192 bit
AES-CBC128, 192, 256 bit
AES-CCM128, 192, 256 bit
AES-GCM128, 192, 256 bit
AES-ECB128, 192, 256 bit
STMicroelectronics STM32 F1, F2, F4, L1, Serie W (Corteza de ARM - M3/M4)
RNG
DES-CBC64 bit
DES-ECBEncriptación de 64 bits
3DES-CBC192 bit
MD5128 bit
SHA1160 bit
AES-CBC128, 192, 256 bit
AES-CTR128, 192, 256 bit
CubeMX y Std Per Lib
Cavium NITROX (Procesadores III/V PX)
RNG
AES-CBC128, 192, 256 bit
3DES-CBC192 bit
RC4Máximo de 2048 bits
HMACMD5, SHA1, SHA256, SHA3
RSA512 - 4096 bit
ECCNIST Prime 192, 224, 256, 384 y 521
Microchip PIC32 MX/MZ (Conectividad integrada)
MD5Compendio de 128 bits
SHA1Compendio de 160 bits
SHA256
HMACMD5, SHA1, SHA256
DES-CBC64 bit
3DES-CBC192 bit
AES-CBC128, 192, 256 bit
AES-CTR128, 192, 256 bit
AES-GCM128, 192, 256 bit
Texas Instruments TM4C1294 (Corteza ARM - M4F)
DES-CBC64 bit
3DES-CBC192 bit
AES-CCM128, 192, 256 bit
AES-GCM128, 192, 256 bit
AES-ECB128, 192, 256 bit
AES-CTR128, 192, 256 bit
AES-CBC128, 192, 256 bit
Nordic NRF51 (Serie de la familia SoC, corteza 32-bit ARM núcleo procesador M0)
AES-ECB128 bit
RNG
Microchip/Atmel ATECC508A (compatible con MPU o MCU)
ECC256 bit (NIST-P256)
ARMv8
AES-CBC128, 192, 256 bit
AES-CTR128, 192, 256 bit
AES-GCM128, 192, 256 bit
SHA256
Tecnología Intel QuickAssist
RSA512 - 4096 bit
SHA1Compendio de 160 bits
SHA2224, 256, 384 y 512 bit
AES-CBC128, 192, 256 bit
AES-GCM128, 192, 256 bit
ECCCualquier curva o fortaleza de bit
HMACSHA1, SHA2
MD5
Freescale NXP LTC
Curve25519256 bit
Ed25519256 bit
AES-CCM128, 192, 256 bit
AES-ECB128, 192, 256 bit
AES-CBC128, 192, 256 bit
AES-CTR128, 192, 256 bit
AES-GCM128, 192, 256 bit
SHA1Compendio de 160 bits
SHA256
ECC128, 256 bit
ECC-DHE128, 256 bit
RSA512 - 4096 bit

Licencias

wolfSSL es un código abierto bajo la Licencia Pública General (GNU) GPLv2.[12]

Véase también

Referencias

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.