wolfSSL | |
---|---|
Tip de | Bibliotecă |
Dezvoltator | Todd Ouska |
Scris in | limbajul C |
Sistem de operare | software multiplatform |
Prima editie | 19 februarie 2006 [1] |
ultima versiune | |
Licență | Licență publică generală GNU sau licență de distribuție comercială |
Site-ul web | wolfssl.com |
wolfSSL (nume anterior: CyaSSL, sau încă un alt SSL) este o bibliotecă SSL / TLS mică, portabilă, încorporată, destinată dezvoltatorilor de sisteme încorporate . Este o implementare open source a TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 și DTLS 1.0 și 1.2) scrisă în limbajul C. Include biblioteci client SSL/TLS și o implementare de server SSL/TLS, precum și suport pentru mai multe API-uri , inclusiv anumite SSL și TLS. wolfSSL include, de asemenea, o interfață de compatibilitate OpenSSL cu cele mai frecvent utilizate funcții OpenSSL. [12] [13]
Predecesorul lui wolfSSL, yaSSL, este o bibliotecă SSL bazată pe C++ pentru medii încorporate cu resurse limitate și sisteme de operare în timp real .
wolfSSL este disponibil în prezent pentru Win32/64 , Linux , macOS , Solaris , Threadx, VxWorks , FreeBSD , NetBSD , OpenBSD , Embedded Linux , Yocto Project, OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Nintendo Wii și GameKcuitbePro , QNX , MontaVista Linux , variante de sistem Tron , NonStop, OpenCL , Micrium's MicroC/OS-II , FreeRTOS , SafeRTOS , Freescale MQX, Nucleus , TinyOS , TI-RTOS, HP-UX , uTasker, uT-kernel, embOS, INtime mbed , RIOT, CMSIS-RTOS, FROSTED, Green Hills INTEGRITY , Keil RTX, TOPPERS, PetaLinux și Apache Mynewt.
Crearea yaSSL, sau încă un alt SSL, datează din 2004. La acel moment, OpenSSL exista deja , care era distribuit sub o licență duală a licenței OpenSSL și a licenței SSLeay . [14] În mod alternativ, yaSSL a primit licență comercială duală și GPL . [15] yaSSL a oferit un API mai modern, suport pentru software comercial și a fost extins cu un strat de compatibilitate OpenSSL. [12] MySQL a devenit primul client important al lui wolfSSL/CyaSSL/yaSSL. [16] Datorită suportului MySQL, yaSSL a realizat volume de distribuție extrem de mari de milioane de copii.
Biblioteca SSL ușoară wolfSSL implementează următoarele protocoale:
Note suplimentare despre protocoale:
wolfSSL utilizează următoarele biblioteci criptografice:
În mod implicit, wolfSSL utilizează serviciile criptografice ale bibliotecii wolfCrypt. [19] wolfCrypt oferă 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, generare de numere aleatorii, suport pentru numere întregi mari și codificare/decodificare Base16/64 . De asemenea, este inclus un cifru Rabbit experimental și un cifru flux pentru software de domeniu public din proiectul eSTREAM . Rabbit este potențial util pentru cei care criptează conținut media în flux în medii high-end, cu cerere mare.
wolfCrypt include, de asemenea, suport pentru cei mai recenti algoritmi Curve25519 și Ed25519 .
wolfCrypt acționează ca o implementare criptografică back-end pentru mai multe pachete software și biblioteci populare, inclusiv MIT Kerberos [20] (unde poate fi activată printr-o opțiune de construire).
CyaSSL+ permite criptarea cheii publice NTRU [21] . Adăugarea NTRU la CyaSSL+ a fost rezultatul unui parteneriat dintre yaSSL și Security Innovation. [21] NTRU funcționează bine în sistemele mobile și încorporate datorită numărului redus de biți necesari pentru a oferi aceeași securitate ca și alte sisteme cu cheie publică. De asemenea, nu a fost confirmat a fi vulnerabil la atacuri cuantice. Mai multe suite de criptare NTRU sunt disponibile în pachetul CyaSSL+, inclusiv AES-256, RC4 și HC-128.
wolfSSL acceptă utilizarea Intel SGX (Software Guard Extensions) [22] . Intel SGX reduce suprafața de atac și s-a dovedit că oferă un nivel mai ridicat de securitate pentru execuția codului fără un impact negativ semnificativ asupra performanței.
În prezent, wolfSSL acceptă următoarele elemente verificate:
Tabelele de mai jos listează capabilitățile wolfSSL pentru utilizarea criptării hardware pe diferite dispozitive cu diferiți algoritmi.
Dispozitiv | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI
(Familii de procesoare Xeon și Core) |
Toate | Toate | Toate | Toate | Toate |
Freescale
Accelerator criptografic și Modul de asigurare (CAAM) |
Toate | Toate | Toate | Toate | |
Freescale Coldfire SEC
(NXP MCF547X și MCF548X) |
Toate | ||||
Freescale Kinetis MMCAU
K50, K60, K70 și K80 (nucleu ARM Cortex-M4) |
Toate | Toate | Toate | Toate | |
STMicroelectronics STM32
Seria F1, F2, F4, L1, W (ARM Cortex - M3/M4) |
Toate | Toate | |||
Caviu NITROX
(Procesoare III/V PX) |
Toate | ||||
Microcip PIC32 MX/MZ
(conexiune încorporată) |
Toate | Toate | Toate | ||
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
Toate | Toate | Toate | Toate | Toate |
Nordic NRF51
(Familia SoC seria, nucleu procesor ARM Cortex M0 pe 32 de biți) |
128 de biți | ||||
ARMv8 | Toate | Toate | Toate | ||
Tehnologia Intel QuickAssist | Toate | Toate | |||
Freescale NXP LTC | Toate | Toate | Toate | Toate | Toate |
„Toate” înseamnă că sunt acceptate dimensiunile de bloc de 128, 192 și 256 de biți.
dispozitiv | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC
(NXP MCF547X și MCF548X) |
64 de biți | 192 de biți | |
Freescale Kinetis MMCAU
K50, K60, K70 și K80 (nucleu ARM Cortex-M4) |
64 de biți | 192 de biți | |
STMicroelectronics STM32
Seria F1, F2, F4, L1, W (ARM Cortex - M3/M4) |
64 de biți | 64 de biți (codificare) | 192 de biți |
Caviu NITROX
(Procesoare III/V PX) |
192 de biți | ||
Microcip PIC32 MX/MZ
(conexiune încorporată) |
64 de biți | 192 de biți | |
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
64 de biți | 192 de biți |
Dispozitiv | RC4 | ChaCha20 |
---|---|---|
AVX1/AVX2
(Intel și AMD x86) |
Sprijinit | |
Caviu NITROX
(Procesoare III/V PX) |
2048 de biți maxim |
Dispozitiv | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel și AMD x86) |
Sprijinit | Sprijinit | Sprijinit | |||
Freescale Kinetis MMCAU
K50, K60, K70 și K80 (nucleu ARM Cortex-M4) |
Sprijinit | Sprijinit | Sprijinit | |||
STMicroelectronics STM32
Seria F1, F2, F4, L1, W (ARM Cortex - M3/M4) |
Sprijinit | Sprijinit | ||||
Microcip PIC32 MX/MZ
(conexiune încorporată) |
Sprijinit | Sprijinit | Sprijinit | |||
ARMv8 | Sprijinit | |||||
Tehnologia Intel QuickAssist | Sprijinit | Sprijinit | Sprijinit | |||
Freescale NXP LTC | Sprijinit | Sprijinit |
Dispozitiv | RSA | ECC | ECC-DHE | Curba25519 | Ed25519 |
---|---|---|---|---|---|
Caviu NITROX
(Procesoare III/V PX) |
512 - 4096 biți | NIST Prime
192, 224, 256, 384, 521 |
|||
Microcip / Atmel
ATECC508A (compatibil cu orice MPU sau MCU, inclusiv Atmel SMART și AVR MCU) |
256 de biți
(NIST-P256) |
||||
Tehnologia Intel QuickAssist | 512 - 4096 biți | 128, 256 de biți | |||
Freescale NXP LTC | 512 - 4096 biți | 128, 256 de biți | 128, 256 de biți | 256 de biți | 256 de biți |
Dispozitiv | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poly1305 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel și AMD x86) |
Sprijinit | |||||
Caviu NITROX
(Procesoare III/V PX) |
Sprijinit | Sprijinit | Sprijinit | Sprijinit | ||
Microcip PIC32 MX/MZ
(conexiune încorporată) |
Sprijinit | Sprijinit | Sprijinit | |||
Tehnologia Intel QuickAssist | Sprijinit | Sprijinit |
Dispozitiv | RNG |
---|---|
STMicroelectronics STM32
Seria F1, F2, F4, L1, W (ARM Cortex - M3/M4) |
Sprijinit |
Caviu NITROX
(procesoare III/V PX) |
Sprijinit |
Nordic NRF51
(Familia SoC seria, nucleu procesor ARM Cortex M0 pe 32 de biți) |
Sprijinit |
wolfSSL este un software cu sursă deschisă licențiat conform GNU General Public License GPLv2. [23]