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 in 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.
yaSSL, predecessore di wolfSSL è una libreria in linguaggio C++ per sistemi integrati che operano in tempo reale con risorse limitate.
Piattaforme 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.
Storia L'origine di yaSSL o yet another SSL risale al 2004. OpenSSL era già disponibile all'epoca con doppia licenza OpenSSL e SSLeay. yaSSL è stato sviluppato anch'esso con doppia licenza, sia con licenza commerciale che con GNU General Public License. yaSSL proponeva una interfaccia di programmazione di applicazioni (API) più moderna, con sviluppatore in stile commerciale e completa di interfaccia di compatibilità OpenSSL. La prima applicazione principale a usare wolfSSL/CyaSSL/yaSSL è stata MySQL: grazie all'inclusione in MySql, yaSSL ha raggiunto un volume di distribuzione e vendita estremamente elevato raggiungendo cifre che si aggirano intorno ai milioni.
Protocolli wolfSSL, libreria ultraleggera implementa i seguenti protocolli:
SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 DTLS 1.0, DTLS 1.2
Note sul protocollo SSL 2.0 - SSL 2.0 è stato deprecato e proibito nel 2011 da RFC 6176. wolfSSL non lo supporta SSL 3.0 - SSL 3.0 è stato deprecato e proibito nel 2016 da RFC 7568. In risposta ad attacchi di tipo POODLE (Padding Oracle On Downgraded Legacy Encryption), SSL 3.0 è stato disabilitato di default dal momento che wolfSSL 3.6.6 può essere abilitato con un'opzione in fase di compilazione.
Algoritmi wolfSSL usa le seguenti librerie crittografiche:
wolfCrypt Per impostazione predefinita, wolfSSL utilizza i servizi crittografici forniti da wolfCrypt. 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").
NTRU CyaSSL+ include la chiave pubblica di criptazione NTRU. L'aggiunta di NTRU in CyaSSL+ è stato il risultato ottenuto dalla partnership tra yaSSL e Security Innovation. 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.
SGX wolfSSL supporta l'uso di Intel SGX (Software Guard Extensions). 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.
Piattaforme di accelerazione hardware Intel AES-NI (Xeon e famiglia del processore Core)
AES-GCM128, 192, 256 bitAES-CCM128, 192, 256 bitAES-CBC128, 192, 256 bitAES-ECB128, 192, 256 bitAES-CTR128, 192, 256 bit AVX/AVX2 (Intel e AMD x86) SHA-256SHA-384SHA-512 RDRAND (Intel 64, architetture IA-32) SHA-256SHA-512 RDSEED (Intel Broadwell, AMD Zen) SHA-256SHA-512 Freescale Coldfire SEC (NXP MCF547X e MCF548X) DES-CBC64 bit3DES-CBC192 bitAES-CBC128, 192, 256 bit Freescale Kinetis MMCAU K50, K60, K70 e K80 (ARM Cortex-M4 core) MD5128 bit digestSHA1160 bit digestSHA256DES-CBC64 bit3DES-CBC192 bitAES-CBC128, 192, 256 bitAES-CCM128, 192, 256 bitAES-GCM128, 192, 256 bitAES-ECB128, 192, 256 bit STMicroelectronics STM32 F1, F2, F4, L1, Serie W (ARM Cortex - M3/M4) RNGDES-CBC64 bitDES-ECB64 bit Encrypt3DES-CBC192 bitMD5128 bitSHA1160 bitAES-CBC128, 192, 256 bitAES-CTR128, 192, 256 bit CubeMX e Std Per Lib
Cavium NITROX (processori III/V PX) RNGAES-CBC128, 192, 256 bit3DES-CBC192 bitRC42048 bit maximumHMACMD5, SHA1, SHA256, SHA3RSA512 - 4096 bitECCNIST Prime 192, 224, 256, 384 and 521 Microchip PIC32 MX/MZ (Connettività Integrata) MD5128 bit digestSHA1160 bit digestSHA256HMACMD5, SHA1, SHA256DES-CBC64 bit3DES-CBC192 bitAES-CBC128, 192, 256 bitAES-CTR128, 192, 256 bitAES-GCM128, 192, 256 bit Texas Instruments TM4C1294 (ARM Cortex-M4F) DES-CBC64 bit3DES-CBC192 bitAES-CCM128, 192, 256 bitAES-GCM128, 192, 256 bitAES-ECB128, 192, 256 bitAES-CTR128, 192, 256 bitAES-CBC128, 192, 256 bit Nordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 processor core) AES-ECB128 bitRNG Microchip/Atmel ATECC508A (compatibile con MPU o MCU) ECC256 bit (NIST-P256) ARMv8 AES-CBC128, 192, 256 bitAES-CTR128, 192, 256 bitAES-GCM128, 192, 256 bitSHA256 Intel QuickAssist Technology RSA512 - 4096 bitSHA1160 bit digestSHA2224, 256, 384 and 512 bitAES-CBC128, 192, 256 bitAES-GCM128, 192, 256 bitECCQualsiasi curva o livello di forza bitHMACSHA1, SHA2MD5 Freescale NXP LTC Curve25519256 bitEd25519256 bitAES-CCM128, 192, 256 bitAES-ECB128, 192, 256 bitAES-CBC128, 192, 256 bitAES-CTR128, 192, 256 bitAES-GCM128, 192, 256 bitSHA1160 bit digestSHA256ECC128, 256 bitECC-DHE128, 256 bitRSA512 - 4096 bit
Licenze wolfSSL è distribuito con licenza OpenSource riconosciuta dal sistema GNU General Public License GPLv2.
Note
Voci correlate Transport Layer Security OpenSSL
Collegamenti esterni
Categoria:Librerie C