wolfSSL

libreria integrata nel sistema SSL/TLS

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.

WolfSSL
software
GenereSicurezza informatica
SviluppatoreTodd Ouska
Data prima versione19 febbraio 2006
Ultima versione5.7.4 (24 ottobre 2024)
Sistema operativoMultipiattaforma
LinguaggioC
LicenzaGNU GPL v2+ e licenza proprietaria
(licenza libera)
Sito webwww.wolfssl.com/products/wolfssl/

È 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.

Piattaforme

modifica

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.

Protocolli

modifica

wolfSSL, libreria ultraleggera implementa i seguenti protocolli:[7]

  • SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
  • DTLS 1.0, DTLS 1.2

Note sul protocollo

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

Algoritmi

modifica

wolfSSL usa le seguenti librerie crittografiche:

wolfCrypt

modifica

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.

Piattaforme di accelerazione hardware

modifica

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

AVX/AVX2 (Intel e AMD x86)

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

Licenze

modifica

wolfSSL è distribuito con licenza OpenSource riconosciuta dal sistema GNU General Public License GPLv2.[13]

  1. ^ a b (EN) Embedded Communications Product, su wolfSSL.
  2. ^ (EN) What You Need to Know About the TLS 1.3 Protocol and wolfSSL's SSL/TLS Libraries, su allaboutcircuits.com. URL consultato il 28 dicembre 2018.
  3. ^ (EN) wolfSSL Embedded SSL/TLS Library, su wolfSSL Products. URL consultato il 31 gennaio 2019.
  4. ^ (EN) OpenSSL: Source, License, su openssl.org.
  5. ^ (EN) License, su wolfSSL.
  6. ^ (EN) Building MySQL with Support for Secure Connections, su MySQL.com. URL consultato il 19 dicembre 2019 (archiviato dall'url originale il 6 luglio 2017).
  7. ^ (EN) Docs - CyaSSL Manual - Chapter 4 (Features), su wolfSSL.
  8. ^ (EN) wolfSSL 3.6.6 is Now Available, su wolfSSL.
  9. ^ (EN) wolfSSL Manual - Chapter 10 (wolfCrypt Usage Reference), su wolfSSL - Docs.
  10. ^ (EN) Kerberos: The Network Authentication Protocol, su MIT.edu.
  11. ^ a b (EN) NTRU CryptoLabs, su securityinnovation.com (archiviato dall'url originale il 2 febbraio 2013).
  12. ^ (EN) wolfSSL with Intel® SGX, su wolfSSL.
  13. ^ (EN) GNU License, su gnu.org.

Voci correlate

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica