wolfSSL | |
---|---|
Type | Bibliotek |
Udvikler | Todd Ouska |
Skrevet i | C sprog |
Operativ system | software på tværs af platforme |
Første udgave | 19. februar 2006 [1] |
nyeste version | |
Licens | GNU General Public License eller Commercial Distribution License |
Internet side | wolfssl.com |
wolfSSL (tidligere navn: CyaSSL, eller endnu en SSL) er et lille, bærbart, indbygget SSL / TLS -bibliotek rettet mod udviklere af indlejrede system . Det er en open source- implementering af TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 og DTLS 1.0 og 1.2) skrevet på C-sproget . Inkluderer SSL/TLS-klientbiblioteker og en SSL/TLS-serverimplementering samt understøttelse af flere API'er , herunder visse SSL og TLS. wolfSSL inkluderer også en OpenSSL -kompatibilitetsgrænseflade med de mest almindeligt anvendte OpenSSL-funktioner. [12] [13]
wolfSSLs forgænger yaSSL er et C++- baseret SSL -bibliotek til ressourcebegrænsede indlejrede miljøer og realtidsoperativsystemer .
wolfSSL er i øjeblikket tilgængelig til Win32/64 , Linux , macOS , Solaris , Threadx, VxWorks , FreeBSD , NetBSD , OpenBSD , Embedded Linux , Yocto Project , OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone og Android DevK cube Nintendo Wii , QNX , MontaVista Linux , Tron systemvarianter , NonStop, OpenCL , Micrium's MicroC/OS-II , FreeRTOS , SafeRTOS , Freescale MQX, Nucleus , TinyOS , TI-RTOS, HP-UX , uTasker, uT-kernel IN, embOS mbed , RIOT, CMSIS-RTOS, FROSTED, Green Hills INTEGRITY , Keil RTX, TOPPERS, PetaLinux og Apache Mynewt.
Oprettelsen af yaSSL, eller endnu en SSL, går tilbage til 2004. På det tidspunkt eksisterede allerede OpenSSL , som blev distribueret under en dobbeltlicens af OpenSSL-licensen og SSLeay-licensen . [14] Alternativt har yaSSL fået licens til dobbelt kommerciel og GPL . [15] yaSSL tilbød en mere moderne API, understøttelse af kommerciel software og blev udvidet med et OpenSSL-kompatibilitetslag. [12] MySQL blev wolfSSL/CyaSSL/yaSSL's første store klient. [16] Takket være støtten fra MySQL har yaSSL opnået ekstremt store distributionsmængder på millioner af eksemplarer.
wolfSSL letvægts SSL-biblioteket implementerer følgende protokoller:
Yderligere bemærkninger om protokoller:
wolfSSL bruger følgende kryptografiske biblioteker:
Som standard bruger wolfSSL de kryptografiske tjenester fra wolfCrypt-biblioteket. [19] wolfCrypt leverer RSA , ECC , DSS , Diffie-Hellman , EDH, NTRU, DES , Triple DES , AES (CBC, CTR, CCM, GCM), Camellia , IDEA , ARC4 , HC-128 , ChaCha20 , MD4MD2 , MD , MD5 , SHA-1 , SHA-2 , SHA-3 , BLAKE2 , RIPEMD-160 , Poly1305, generering af tilfældige tal, understøttelse af stort heltal og Base16/64 encode/decode. Der er også inkluderet en eksperimentel kanin -ciffer og en stream-ciffer til public domain-software fra eSTREAM- projektet . Kanin er potentielt nyttig for dem, der krypterer streamingmedier i avancerede miljøer med høj efterspørgsel.
wolfCrypt inkluderer også understøttelse af de nyeste Curve25519 og Ed25519 algoritmer .
wolfCrypt fungerer som en back-end kryptografisk implementering for adskillige populære softwarepakker og biblioteker, inklusive MIT Kerberos [20] (hvor det kan aktiveres via en byggemulighed).
CyaSSL+ muliggør NTRU offentlig nøglekryptering [21] . Tilføjelsen af NTRU til CyaSSL+ var resultatet af et partnerskab mellem yaSSL og Security Innovation. [21] NTRU fungerer godt i mobile og indlejrede systemer på grund af det reducerede antal bit, der kræves for at give samme sikkerhed som andre offentlige nøglesystemer. Det er heller ikke blevet bekræftet at være sårbart over for kvanteangreb. Adskillige NTRU-krypteringspakker er tilgængelige i CyaSSL+-pakken, inklusive AES-256, RC4 og HC-128.
wolfSSL understøtter brugen af Intel SGX (Software Guard Extensions) [22] . Intel SGX reducerer angrebsoverfladen og har vist sig at give et højere sikkerhedsniveau for kodeudførelse uden væsentlig negativ indvirkning på ydeevnen.
I øjeblikket understøtter wolfSSL følgende verificerede elementer:
Tabellerne nedenfor viser wolfSSL's muligheder for at bruge hardwarekryptering på forskellige enheder med forskellige algoritmer.
AES -krypteringstilstandeEnhed | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI
(Familie af processorer Xeon og Core) |
Alle | Alle | Alle | Alle | Alle |
Freescale
Cryptographic Accelerator and Assurance Module (CAAM) |
Alle | Alle | Alle | Alle | |
Freescale Coldfire SEC
(NXP MCF547X og MCF548X) |
Alle | ||||
Freescale Kinetis MMCAU
K50, K60, K70 og K80 (ARM Cortex-M4 kerne) |
Alle | Alle | Alle | Alle | |
STMicroelectronics STM32
F1, F2, F4, L1, W-serien (ARM Cortex - M3/M4) |
Alle | Alle | |||
Cavium NITROX
(Processorer III/V PX) |
Alle | ||||
Mikrochip PIC32 MX/MZ
(indlejret forbindelse) |
Alle | Alle | Alle | ||
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
Alle | Alle | Alle | Alle | Alle |
Nordisk NRF51
(Serie SoC-familie, 32-bit ARM Cortex M0-processorkerne) |
128-bit | ||||
ARMv8 | Alle | Alle | Alle | ||
Intel QuickAssist-teknologi | Alle | Alle | |||
Freescale NXP LTC | Alle | Alle | Alle | Alle | Alle |
"Alle" betyder, at blokstørrelser på 128, 192 og 256 bit understøttes.
DES/3DES krypteringstilstandeenhed | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC
(NXP MCF547X og MCF548X) |
64 bit | 192 bit | |
Freescale Kinetis MMCAU
K50, K60, K70 og K80 (ARM Cortex-M4 kerne) |
64 bit | 192 bit | |
STMicroelectronics STM32
F1, F2, F4, L1, W-serien (ARM Cortex - M3/M4) |
64 bit | 64 bit (kodning) | 192 bit |
Cavium NITROX
(Processorer III/V PX) |
192 bit | ||
Mikrochip PIC32 MX/MZ
(indlejret forbindelse) |
64 bit | 192 bit | |
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
64 bit | 192 bit |
Enhed | RC4 | ChaCha20 |
---|---|---|
AVX1/AVX2
(Intel og AMD x86) |
Understøttet | |
Cavium NITROX
(Processorer III/V PX) |
2048 bit maksimum |
Enhed | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel og AMD x86) |
Understøttet | Understøttet | Understøttet | |||
Freescale Kinetis MMCAU
K50, K60, K70 og K80 (ARM Cortex-M4 kerne) |
Understøttet | Understøttet | Understøttet | |||
STMicroelectronics STM32
F1, F2, F4, L1, W-serien (ARM Cortex - M3/M4) |
Understøttet | Understøttet | ||||
Mikrochip PIC32 MX/MZ
(indlejret forbindelse) |
Understøttet | Understøttet | Understøttet | |||
ARMv8 | Understøttet | |||||
Intel QuickAssist-teknologi | Understøttet | Understøttet | Understøttet | |||
Freescale NXP LTC | Understøttet | Understøttet |
Enhed | RSA | ECC | ECC-DHE | Kurve25519 | Ed25519 |
---|---|---|---|---|---|
Cavium NITROX
(Processorer III/V PX) |
512 - 4096 bit | NIST Prime
192, 224, 256, 384, 521 |
|||
Mikrochip / Atmel
ATECC508A (kompatibel med enhver MPU eller MCU inklusive Atmel SMART og AVR MCU) |
256 bit
(NIST-P256) |
||||
Intel QuickAssist-teknologi | 512 - 4096 bit | 128, 256 bit | |||
Freescale NXP LTC | 512 - 4096 bit | 128, 256 bit | 128, 256 bit | 256 bit | 256 bit |
Enhed | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poly1305 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel og AMD x86) |
Understøttet | |||||
Cavium NITROX
(Processorer III/V PX) |
Understøttet | Understøttet | Understøttet | Understøttet | ||
Mikrochip PIC32 MX/MZ
(indlejret forbindelse) |
Understøttet | Understøttet | Understøttet | |||
Intel QuickAssist-teknologi | Understøttet | Understøttet |
Enhed | RNG |
---|---|
STMicroelectronics STM32
F1, F2, F4, L1, W-serien (ARM Cortex - M3/M4) |
Understøttet |
Cavium NITROX
(III/V PX-processorer) |
Understøttet |
Nordisk NRF51
(Serie SoC-familie, 32-bit ARM Cortex M0-processorkerne) |
Understøttet |
wolfSSL er open source-software licenseret under GNU General Public License GPLv2. [23]