wolfSSL | |
---|---|
Typ | Knihovna |
Vývojář | Todd Ouška |
Zapsáno v | jazyk C |
Operační systém | multiplatformní software |
První vydání | 19. února 2006 [1] |
Nejnovější verze | |
Licence | GNU General Public License nebo Commercial Distribution License |
webová stránka | wolfssl.com |
wolfSSL (dřívější název: CyaSSL nebo další SSL) je malá, přenosná, vestavěná knihovna SSL / TLS zaměřená na vývojáře vestavěných systémů . Jedná se o open source implementaci TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 a DTLS 1.0 a 1.2) napsanou v jazyce C. Zahrnuje klientské knihovny SSL/TLS a implementaci serveru SSL/TLS a také podporu několika rozhraní API , včetně určitých SSL a TLS. wolfSSL také obsahuje rozhraní kompatibilní s OpenSSL s nejběžněji používanými funkcemi OpenSSL. [12] [13]
Předchůdce wolfSSL yaSSL je knihovna SSL založená na C++ pro vestavěná prostředí s omezenými zdroji a operační systémy pracující v reálném čase .
wolfSSL je aktuálně k dispozici pro Win32/64 , Linux , macOS , Solaris , Threadx, VxWorks , FreeBSD , NetBSD , OpenBSD , Embedded Linux , Yocto Project, OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Nintendo Wii a GamePro Game , QNX , MontaVista Linux , varianty systému Tron , NonStop, OpenCL , Micrium's MicroC/OS-II , FreeRTOS , SafeRTOS , Freescale MQX, Nucleus , TinyOS , TI-RTOS, HP-UX , uTasker, uT-kernel, embOS, IN mbed , RIOT, CMSIS-RTOS, FROSTED, Green Hills INTEGRITY , Keil RTX, TOPPERS, PetaLinux a Apache Mynewt.
Vznik yaSSL nebo dalšího SSL se datuje do roku 2004. V té době již existoval OpenSSL , který byl distribuován pod duální licencí OpenSSL License a SSLeay licencí . [14] Alternativně byla yaSSL licencována dvojí komerční a GPL . [15] yaSSL nabídl modernější API, podporu komerčního softwaru a byl rozšířen o vrstvu kompatibility OpenSSL. [12] MySQL se stalo prvním velkým klientem wolfSSL/CyaSSL/yaSSL. [16] Díky podpoře MySQL dosáhl yaSSL extrémně velkých distribučních objemů v řádu milionů kopií.
Lehká knihovna wolfSSL SSL implementuje následující protokoly:
Další poznámky k protokolům:
wolfSSL používá následující kryptografické knihovny:
Ve výchozím nastavení používá wolfSSL kryptografické služby knihovny wolfCrypt. [19] wolfCrypt poskytuje RSA , ECC , DSS , Diffie-Hellman , EDH, NTRU, DES , Triple DES , AES (CBC, CTR, CCM, GCM), Camellia , IDEA , ARC4 , HC-128 , ChaCha20 , MD4 , MD2 , MD5 , SHA-1 , SHA-2 , SHA-3 , BLAKE2 , RIPEMD-160 , Poly1305, generování náhodných čísel, podpora velkých celých čísel a kódování/dekódování Base16/64 . Součástí je také experimentální králičí šifra a proudová šifra pro software ve veřejné doméně z projektu eSTREAM . Králík je potenciálně užitečný pro ty, kteří šifrují streamovaná média ve špičkových prostředích s vysokou poptávkou.
wolfCrypt také obsahuje podporu pro nejnovější algoritmy Curve25519 a Ed25519 .
wolfCrypt funguje jako back-endová kryptografická implementace pro několik populárních softwarových balíčků a knihoven, včetně MIT Kerberos [20] (kde ji lze povolit pomocí možnosti sestavení).
CyaSSL+ umožňuje šifrování veřejného klíče NTRU [21] . Přidání NTRU do CyaSSL+ bylo výsledkem partnerství mezi yaSSL a Security Innovation. [21] NTRU funguje dobře v mobilních a vestavěných systémech díky sníženému počtu bitů potřebných k zajištění stejné bezpečnosti jako jiné systémy s veřejným klíčem. Také nebylo potvrzeno, že by byl zranitelný vůči kvantovým útokům. V balíčku CyaSSL+ je k dispozici několik šifrovacích sad NTRU, včetně AES-256, RC4 a HC-128.
wolfSSL podporuje použití Intel SGX (Software Guard Extensions) [22] . Intel SGX snižuje plochu útoku a ukázalo se, že poskytuje vyšší úroveň zabezpečení pro spouštění kódu bez výrazného negativního dopadu na výkon.
V současné době wolfSSL podporuje následující ověřené prvky:
V níže uvedených tabulkách jsou uvedeny možnosti wolfSSL pro použití hardwarového šifrování na různých zařízeních s různými algoritmy.
přístroj | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI
(rodiny procesorů Xeon a Core) |
Všechno | Všechno | Všechno | Všechno | Všechno |
Freescale
Cryptographic Accelerator and Assurance Module (CAAM) |
Všechno | Všechno | Všechno | Všechno | |
Freescale Coldfire SEC
(NXP MCF547X a MCF548X) |
Všechno | ||||
Freescale Kinetis MMCAU
K50, K60, K70 a K80 (jádro ARM Cortex-M4) |
Všechno | Všechno | Všechno | Všechno | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
Všechno | Všechno | |||
Cavium NITROX
(Procesory III/V PX) |
Všechno | ||||
Mikročip PIC32 MX/MZ
(vestavěné připojení) |
Všechno | Všechno | Všechno | ||
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
Všechno | Všechno | Všechno | Všechno | Všechno |
severské NRF51
(Řada SoC, 32bitové jádro procesoru ARM Cortex M0) |
128bitový | ||||
ARMv8 | Všechno | Všechno | Všechno | ||
Technologie Intel QuickAssist | Všechno | Všechno | |||
Freescale NXP LTC | Všechno | Všechno | Všechno | Všechno | Všechno |
"Vše" znamená, že jsou podporovány velikosti bloků 128, 192 a 256 bitů.
přístroj | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC
(NXP MCF547X a MCF548X) |
64 bit | 192 bit | |
Freescale Kinetis MMCAU
K50, K60, K70 a K80 (jádro ARM Cortex-M4) |
64 bit | 192 bit | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
64 bit | 64 bit (kódování) | 192 bit |
Cavium NITROX
(Procesory III/V PX) |
192 bit | ||
Mikročip PIC32 MX/MZ
(vestavěné připojení) |
64 bit | 192 bit | |
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
64 bit | 192 bit |
přístroj | RC4 | ChaCha20 |
---|---|---|
AVX1/AVX2
(Intel a AMD x86) |
Podporováno | |
Cavium NITROX
(Procesory III/V PX) |
Maximálně 2048 bitů |
přístroj | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel a AMD x86) |
Podporováno | Podporováno | Podporováno | |||
Freescale Kinetis MMCAU
K50, K60, K70 a K80 (jádro ARM Cortex-M4) |
Podporováno | Podporováno | Podporováno | |||
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
Podporováno | Podporováno | ||||
Mikročip PIC32 MX/MZ
(vestavěné připojení) |
Podporováno | Podporováno | Podporováno | |||
ARMv8 | Podporováno | |||||
Technologie Intel QuickAssist | Podporováno | Podporováno | Podporováno | |||
Freescale NXP LTC | Podporováno | Podporováno |
přístroj | RSA | ECC | ECC-DHE | Křivka25519 | Ed25519 |
---|---|---|---|---|---|
Cavium NITROX
(Procesory III/V PX) |
512 - 4096 bitů | NIST Prime
192, 224, 256, 384, 521 |
|||
Mikročip / Atmel
ATECC508A (kompatibilní s jakýmkoli MPU nebo MCU včetně Atmel SMART a AVR MCU) |
256 bit
(NIST-P256) |
||||
Technologie Intel QuickAssist | 512 - 4096 bitů | 128, 256 bitů | |||
Freescale NXP LTC | 512 - 4096 bitů | 128, 256 bitů | 128, 256 bitů | 256 bit | 256 bit |
přístroj | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poly1305 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel a AMD x86) |
Podporováno | |||||
Cavium NITROX
(Procesory III/V PX) |
Podporováno | Podporováno | Podporováno | Podporováno | ||
Mikročip PIC32 MX/MZ
(vestavěné připojení) |
Podporováno | Podporováno | Podporováno | |||
Technologie Intel QuickAssist | Podporováno | Podporováno |
přístroj | RNG |
---|---|
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
Podporováno |
Cavium NITROX
(procesory III/V PX) |
Podporováno |
severské NRF51
(Řada SoC, 32bitové jádro procesoru ARM Cortex M0) |
Podporováno |
wolfSSL je open source software licencovaný pod GNU General Public License GPLv2. [23]