WolfSSL software | |
---|---|
Genere | Sicurezza informatica |
Sviluppatore | Todd Ouska |
Data prima versione | 19 febbraio 2006 |
Ultima versione | 5.7.6 (31 dicembre 2024) |
Sistema operativo | Multipiattaforma |
Linguaggio | C |
Licenza | GNU GPL v2+ e licenza proprietaria (licenza libera) |
Sito web | www.wolfssl.com/products/wolfssl/ |
wolfSSL (precedentemente conosciuto come CyaSSL o yet another SSL) è una libreria snella, trasportabile, integrata nel sistema SSL/TLS rivolta principalmente ad utilizzatori quali gli sviluppatori di sistemi integrati.
È un'implementazione open source del sistema crittografico TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, DTLS 1.0 e 1.2) scritta nel linguaggio C. Include librerie clienti tipo SSL/TLS e server ad implementazione SSL/TLS così come il supporto per multiple interfacce di programmazione di applicazioni (API) includendo quelle definite da SSL e TLS. wolfSSL include anche una interfaccia di compatibilità OpenSSL con le funzioni più comunemente usate.[1][2]
yaSSL, predecessore di wolfSSL è una libreria in linguaggio C++ per sistemi integrati che operano in tempo reale con risorse limitate.
wolfSSL è disponibile per Win32/64, Linux, macOS, Oracle Solaris, Threadx, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWrt, iPhone, Android, Nintendo Wii e Gamecube attraverso il supporto DevKitPro, QNX, MontaVista le varianti Tron, NonStop, OpenCL, Micrium's MicroC/OS-II, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker ed embOS.[3]
L'origine di yaSSL o yet another SSL risale al 2004. OpenSSL era già disponibile all'epoca con doppia licenza OpenSSL e SSLeay.[4] yaSSL è stato sviluppato anch'esso con doppia licenza, sia con licenza commerciale che con GNU General Public License.[5] yaSSL proponeva una interfaccia di programmazione di applicazioni (API) più moderna, con sviluppatore in stile commerciale e completa di interfaccia di compatibilità OpenSSL.[1] La prima applicazione principale a usare wolfSSL/CyaSSL/yaSSL è stata MySQL:[6] grazie all'inclusione in MySql, yaSSL ha raggiunto un volume di distribuzione e vendita estremamente elevato raggiungendo cifre che si aggirano intorno ai milioni.
wolfSSL, libreria ultraleggera implementa i seguenti protocolli:[7]
wolfSSL usa le seguenti librerie crittografiche:
Per impostazione predefinita, wolfSSL utilizza i servizi crittografici forniti da wolfCrypt.[9] wolfCrypt produce 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, generazione di numeri casuali, supporto grandi numeri interi Large Integer e base di codifica/decodifica 16/64. È incluso anche un algoritmo di cifratura sperimentale chiamato Rabbit e un software in pubblico dominio sviluppato dal Progetto Europeo eSTREAM. Rabbit è potenzialmente utile per quei mezzi di trasmissione criptati ad alte prestazioni e con ambienti ad elevata domanda.
wolfCrypt include anche il supporto per i più recenti algoritmi Curve25519 e Ed25519.
wolfCrypt agisce anche come applicazione crittografica “back-end” per diversi pacchetti software popolari e librerie, incluso MIT Kerberos (in cui può essere abilitata usando l'opzione “build").[10]
CyaSSL+ include la chiave pubblica di criptazione NTRU.[11] L'aggiunta di NTRU in CyaSSL+ è stato il risultato ottenuto dalla partnership tra yaSSL e Security Innovation.[11] NTRU funziona bene in sistemi mobili e integrati grazie alla ridotta misura di bit necessaria a fornire la stessa sicurezza degli altri sistemi a chiave pubblica. In aggiunta, non è noto che sia vulnerabile ad attacchi di tipo Quantum. Numerosi sono i cipher suite (insieme di algoritmi crittografici) che utilizzano NTRU e sono disponibili con CyaSSL+ , inclusi AES-256, RC4 e HC-128.
wolfSSL supporta l'uso di Intel SGX (Software Guard Extensions).[12] Intel SGX consente soltanto una ridotta superficie di attacco ed ha dimostrato di poter fornire un maggiore livello di sicurezza nell'esecuzione del codice senza significativi impatti sulle prestazioni.
Intel AES-NI (Xeon e famiglia del processore 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 |
SHA-256 |
SHA-384 |
SHA-512 |
RDRAND (Intel 64, architetture IA-32)
SHA-256 |
SHA-512 |
RDSEED (Intel Broadwell, AMD Zen)
SHA-256 |
SHA-512 |
Freescale Coldfire SEC (NXP MCF547X e MCF548X)
DES-CBC | 64 bit |
3DES-CBC | 192 bit |
AES-CBC | 128, 192, 256 bit |
Freescale Kinetis MMCAU K50, K60, K70 e K80 (ARM Cortex-M4 core)
MD5 | 128 bit digest |
SHA1 | 160 bit digest |
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 (ARM Cortex - M3/M4)
RNG | |
DES-CBC | 64 bit |
DES-ECB | 64 bit Encrypt |
3DES-CBC | 192 bit |
MD5 | 128 bit |
SHA1 | 160 bit |
AES-CBC | 128, 192, 256 bit |
AES-CTR | 128, 192, 256 bit |
CubeMX e Std Per Lib
Cavium NITROX (processori III/V PX)
RNG | |
AES-CBC | 128, 192, 256 bit |
3DES-CBC | 192 bit |
RC4 | 2048 bit maximum |
HMAC | MD5, SHA1, SHA256, SHA3 |
RSA | 512 - 4096 bit |
ECC | NIST Prime 192, 224, 256, 384 and 521 |
Microchip PIC32 MX/MZ (Connettività Integrata)
MD5 | 128 bit digest |
SHA1 | 160 bit digest |
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 (ARM Cortex-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 (Series SoC family, 32-bit ARM Cortex M0 processor core)
AES-ECB | 128 bit |
RNG |
Microchip/Atmel ATECC508A (compatibile 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 |
Intel QuickAssist Technology
RSA | 512 - 4096 bit |
SHA1 | 160 bit digest |
SHA2 | 224, 256, 384 and 512 bit |
AES-CBC | 128, 192, 256 bit |
AES-GCM | 128, 192, 256 bit |
ECC | Qualsiasi curva o livello di forza 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 | 160 bit digest |
SHA256 | |
ECC | 128, 256 bit |
ECC-DHE | 128, 256 bit |
RSA | 512 - 4096 bit |
wolfSSL è distribuito con licenza OpenSource riconosciuta dal sistema GNU General Public License GPLv2.[13]