Un colaborador importante de este artículo parece tener una estrecha conexión con su tema. ( Noviembre de 2020 ) ( Obtenga información sobre cómo y cuándo eliminar este mensaje de plantilla ) |
Es posible que el uso de enlaces externos en este artículo no siga las políticas o pautas de Wikipedia . ( Julio de 2017 ) ( Obtenga información sobre cómo y cuándo eliminar este mensaje de plantilla ) |
Desarrollador (es) | Todd Ouska |
---|---|
Versión inicial | 19 de febrero de 2006 [1] |
Lanzamiento estable | 4.7.0 (16 de febrero de 2021 [2] ) [±] |
Repositorio | github |
Escrito en | C |
Sistema operativo | Multiplataforma |
Tipo | Biblioteca de criptografía |
Licencia | GPLv2 o propietario |
Sitio web | www |
wolfSSL es una biblioteca SSL / TLS pequeña, portátil e integrada destinada a los desarrolladores de sistemas integrados. Se trata de un código abierto aplicación de TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 y 1.0 DTLS, 1.2, y 1.3) escrito en el lenguaje de programación C . Incluye bibliotecas de 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 OpenSSL con las funciones OpenSSL más utilizadas. [3] [4]
Un predecesor de wolfSSL, yaSSL es una biblioteca SSL basada en C ++ para entornos embebidos y sistemas operativos en tiempo real con recursos limitados.
Plataformas [ editar ]
wolfSSL está disponible actualmente para Win32 / 64 , Linux , macOS , Solaris , Threadx , VxWorks , FreeBSD , NetBSD , OpenBSD , Linux integrado , Yocto Project , OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Nintendo Wii y Gamecube a través del soporte de DevKitPro. , QNX , MontaVista , Tronvariantes, 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 , HELADO, Green Hills INTEGRITY , Keil RTX, TOPPERS, PetaLinux, Apache Mynewt y PikeOS . [5]
Historia [ editar ]
La génesis de yaSSL, u otro SSL más, se remonta a 2004. OpenSSL estaba disponible en ese momento y tenía una licencia doble de OpenSSL License y SSLeay . [6] yaSSL, alternativamente, fue desarrollado y con doble licencia bajo una licencia comercial y la GPL. [7] yaSSL ofrecía una API más moderna, soporte para desarrolladores de estilo comercial y se completaba con una capa de compatibilidad con OpenSSL. [3] El primer usuario importante de wolfSSL / CyaSSL / yaSSL fue MySQL . [8] A través del paquete con MySQL, yaSSL ha logrado volúmenes de distribución extremadamente altos en millones.
En febrero de 2019, Daniel Stenberg , el creador de cURL , se unió al proyecto wolfSSL. [9]
Protocolos [ editar ]
La biblioteca SSL liviana wolfSSL implementa los siguientes protocolos: [10]
- SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
- DTLS 1.0, DTLS 1.2, DTLS 1.3
Notas de protocolo:
- SSL 2.0 : SSL 2.0 quedó obsoleto (prohibido) en 2011 por RFC 6176. wolfSSL no lo admite.
- SSL 3.0 : SSL 3.0 fue obsoleto (prohibido) en 2015 por RFC 7568. En respuesta al ataque POODLE , SSL 3.0 se ha deshabilitado de forma predeterminada desde wolfSSL 3.6.6, pero se puede habilitar con una opción de tiempo de compilación. [11]
Algoritmos [ editar ]
wolfSSL utiliza las siguientes bibliotecas de criptografía:
wolfCrypt [ editar ]
De forma predeterminada, wolfSSL utiliza los servicios criptográficos proporcionados por wolfCrypt. [12] 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. También se incluye un cifrado experimental llamado Rabbit , un cifrado de flujo de software de dominio público del proyecto eSTREAM de la UE. Rabbit es potencialmente útil para aquellos que cifran medios de transmisión en entornos de alto rendimiento y alta demanda.
wolfCrypt también incluye soporte para los algoritmos recientes Curve25519 y Ed25519 .
wolfCrypt actúa como una implementación de cifrado de back-end para varios paquetes de software y bibliotecas populares, incluido MIT Kerberos [13] (donde se puede habilitar mediante una opción de compilación).
NTRU [ editar ]
CyaSSL + incluye cifrado de clave pública NTRU [14] . La incorporación de NTRU en CyaSSL + fue el resultado de la asociación entre yaSSL y Security Innovation. [14] NTRU funciona bien en entornos móviles e integrados debido al tamaño de bit reducido necesario para proporcionar la misma seguridad que otros sistemas de clave pública. Además, no se sabe que sea vulnerable a los ataques cuánticos. Varios conjuntos de cifrado que utilizan NTRU están disponibles con CyaSSL +, incluidos AES-256, RC4 y HC-128.
SGX [ editar ]
wolfSSL admite el uso de Intel SGX ( Extensiones de protección de software ). [15] Intel SGX permite un área de superficie de ataque más pequeña y se ha demostrado que proporciona un mayor nivel de seguridad para ejecutar código sin un impacto negativo significativo en el rendimiento.
Plataformas de aceleración de hardware compatibles [ editar ]
Elementos de confianza admitidos [ editar ]
Actualmente, wolfSSL tiene los siguientes elementos de confianza admitidos:
- STSAFE
- ATECC508A
Soporte de cifrado de hardware [ editar ]
Las siguientes tablas enumeran el soporte de wolfSSL para usar el cifrado de hardware de varios dispositivos con varios algoritmos.
Dispositivo | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI (Familias de procesadores Xeon y Core) | Todas | Todas | Todas | Todas | Todas |
Freescale Módulo de garantía y aceleración criptográfica (CAAM) | Todas | Todas | Todas | Todas | |
Freescale Coldfire SEC (NXP MCF547X y MCF548X) | Todas | ||||
Freescale Kinetis MMCAU K50, K60, K70 y K80 (núcleo ARM Cortex-M4) | Todas | Todas | Todas | Todas | |
STMicroelectronics STM32 Serie F1, F2, F4, L1, W (ARM Cortex - M3 / M4) | Todas | Todas | |||
Cavium NITROX (Procesadores III / V PX) | Todas | ||||
Microchip PIC32 MX / MZ (Conectividad integrada) | Todas | Todas | Todas | ||
Texas Instruments TM4C1294 (BRAZO Cortex-M4F) | Todas | Todas | Todas | Todas | Todas |
Nordic NRF51 Archivado el 19 de junio de 2018 en la Wayback Machine. (Familia de SoC de la serie, núcleo de procesador ARM Cortex M0 de 32 bits) | 128 bits | ||||
ARMv8 | Todas | Todas | Todas | ||
Tecnología Intel QuickAssist | Todas | Todas | |||
Freescale NXP LTC | Todas | Todas | Todas | Todas | Todas |
Xilinx Zynq UltraScale + | 256 bits |
- "Todos" indica tamaños de bloque admitidos de 128, 192 y 256 bits
Dispositivo | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC (NXP MCF547X y MCF548X) | 64 bits | 192 bits | |
Freescale Kinetis MMCAU K50, K60, K70 y K80 (núcleo ARM Cortex-M4) | 64 bits | 192 bits | |
STMicroelectronics STM32 Serie F1, F2, F4, L1, W (ARM Cortex - M3 / M4) | 64 bits | 64 bits (cifrar) | 192 bits |
Cavium NITROX (Procesadores III / V PX) | 192 bits | ||
Microchip PIC32 MX / MZ (Conectividad integrada) | 64 bits | 192 bits | |
Texas Instruments TM4C1294 (BRAZO Cortex-M4F) | 64 bits | 192 bits |
Dispositivo | RC4 | ChaCha20 |
---|---|---|
AVX1 / AVX2 (Intel y AMD x86) | Soportado | |
Cavium NITROX (Procesadores III / V PX) | 2048 bits máx. |
Dispositivo | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1 / AVX2 (Intel y AMD x86) | Soportado | Soportado | Soportado | |||
Freescale Kinetis MMCAU K50, K60, K70 y K80 (núcleo ARM Cortex-M4) | Soportado | Soportado | Soportado | |||
STMicroelectronics STM32 Serie F1, F2, F4, L1, W (ARM Cortex - M3 / M4) | Soportado | Soportado | ||||
Microchip PIC32 MX / MZ (Conectividad integrada) | Soportado | Soportado | Soportado | |||
ARMv8 | Soportado | |||||
Tecnología Intel QuickAssist | Soportado | Soportado | Soportado | |||
Freescale NXP LTC | Soportado | Soportado | ||||
Xilinx Zynq UltraScale + | Soportado |
Dispositivo | RSA | ECC | ECC-DHE | Curva25519 | Ed25519 |
---|---|---|---|---|---|
Cavium NITROX (Procesadores III / V PX) | 512 - 4096 bits | NIST Prime 192, 224, 256, 384, 521 | |||
Microchip / Atmel ATECC508A (compatible con cualquier MPU o MCU, incluidos: MCU Atmel SMART y AVR) | 256 bits (NIST-P256) | ||||
Tecnología Intel QuickAssist | 512 - 4096 bits | 128, 256 bits | |||
Freescale NXP LTC | 512 - 4096 bits | 128, 256 bits | 128, 256 bits | 256 bits | 256 bits |
Xilinx Zynq UltraScale + | 2048 - 4096 bits |
Dispositivo | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poli1305 |
---|---|---|---|---|---|---|
AVX1 / AVX2 (Intel y AMD x86) | Soportado | |||||
Cavium NITROX (Procesadores III / V PX) | Soportado | Soportado | Soportado | Soportado | ||
Microchip PIC32 MX / MZ (Conectividad integrada) | Soportado | Soportado | Soportado | |||
Tecnología Intel QuickAssist | Soportado | Soportado |
Dispositivo | RNG |
---|---|
STMicroelectronics STM32 Serie F1, F2, F4, L1, W (ARM Cortex - M3 / M4) | Soportado |
Cavium NITROX (Procesadores III / V PX) | Soportado |
Nordic NRF51 Archivado el 19 de junio de 2018 en la Wayback Machine. (Familia de SoC de la serie, núcleo de procesador ARM Cortex M0 de 32 bits) | Soportado |
Licencias [ editar ]
wolfSSL es software libre, con licencia GNU General Public License GPLv2. [dieciséis]
Ver también [ editar ]
- Transport Layer Security
- Comparación de implementaciones de TLS
- Comparación de bibliotecas de criptografía
- GnuTLS
- Servicios de seguridad de red
- OpenSSL
Referencias [ editar ]
- ^ "WolfSSL ChangeLog" .
- ^ "WolfSSL ChangeLog" . 2021-02-16 . Consultado el 16 de febrero de 2021 .
- ^ a b wolfSSL - Productos de comunicaciones integrados
- ^ "Lo que necesita saber sobre el protocolo TLS 1.3 y las bibliotecas SSL / TLS de wolfSSL" . www.allaboutcircuits.com . Consultado el 28 de diciembre de 2018 .
- ^ "WolfSSL Embedded SSL / TLS Library | Productos wolfSSL" . Consultado el 31 de enero de 2019 .
- ^ OpenSSL: fuente, licencia
- ^ wolfSSL - Licencia
- ^ "MySQL, construcción de MySQL con soporte para conexiones seguras" . Archivado desde el 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 - Documentos | Manual CyaSSL - Capítulo 4 (Funciones)
- ^ "wolfSSL 3.6.6 ya está disponible" .
- ^ wolfSSL - Documentos | Manual de wolfSSL - Capítulo 10 (Referencia de uso de wolfCrypt)
- ^ Kerberos: el protocolo de autenticación de red
- ^ a b NTRU CryptoLabs Archivado el 2 de febrero de 2013 en archive.today
- ^ wolfSSL - wolfSSL con Intel® SGX
- ^ Licencia GNU
Enlaces externos [ editar ]
- Página de inicio de wolfSSL / CyaSSL
- wolfSSL ahora con ChaCha20 y Poly1305