WolfSSL

wolfSSL (原名 CyaSSL 或 yet another SSL)，是一个提供传输层安全协议（SSL/TLS）功能的软件库，主要针对嵌入式系系统发展。以开放原始码及商用许可两种方式释出，提供SSL/TLS功能(SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3以及DTLS 1.0、DTLS 1.2)，以C语言写成。提供了与OpenSSL兼容的API界面，让原有使用OpenSSL的软件可以容易的移植过來。

wolfSSL的早期版本, yaSSL，基于C++，为嵌入式环境和资源限制的实时操作系统提供SSL功能库。

平台
wolfSSL 现在支持 Win32/64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWrt, 苹果iPhone, 安卓Android, Nintendo Wii 和 Gamecube系统。通过 DevKitPro 的支持, QNX, MontaVista, Tron variants, NonStop, OpenCL, Micrium's MicroC/OS-II, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker, 和 embOS.

版本历史
yaSSL, 或 yet another SSL, 始建于2004. OpenSSL 当时可用, 并且根据OpenSSL许可证和SSLeay许可证获得双重许可。  然而，yaSSL是在商业和GPL许可下开发的。  yaSSL提供了更现代的API和商业风格的开发人员支持，并含有OpenSSL兼容层。  wolfSSL / CyaSSL / yaSSL的第一个主要用户是MySQL. 通过捆绑MySQL，yaSSL已经实现了数百万的极高分发量。

协议

wolfSSL 轻量级SSL库实现以下协议:
 SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3
 DTLS 1.0、DTLS 1.2

协议说明:
 SSL 2.0 - SSL 2.0 在2011年被 RFC 6176弃用（禁止）。wolfSSL 不再支持。
 SSL 3.0 - SSL 3.0 已于2015年被RFC 7568为回应POODLE 攻击而弃用（禁止）。SSL 3.0被wolfSSL 3.6.6 之后的版本默认禁用，但仍可通过编译时选项启用。"wolfSSL 3.6.6 is Now Available" .

算法
wolfSSL 使用以下加密库:

wolfCrypt
默认情况下，wolfSSL使用wolfCrypt提供的加密服务。  wolfCrypt 提供 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, BLAKE2, RIPEMD-160, Poly1305, 随机数生成，大整数支持和基本16/64编码/解码。还包含一个来自欧盟eSTREAM项目的公共领域软件流密码（public domain software）的实验密码，Rabbit。 Rabbit对于那些在高性能，高需求环境中对流媒体进行加密的潜在用户非常有用。

wolfCrypt 还支持最近的 Curve25519 和 Ed25519 算法。

wolfCrypt 充当几个流行软件包和库的后端加密实现，包括MIT Kerberos（可使用构建选项启用）。

NTRU
CyaSSL+ 包含 NTRU 公钥加密。在CyaSSL + 中增加NTRU是yaSSL和Security Innovation之间合作的结果。 NTRU在移动电话和嵌入式环境中运行良好，这是因为与其他公钥系统相比，提供相同安全性所需的位数大小减少了。另外，还不知道它易受到量子攻击。CyaSSL + 中含有包括AES-256，RC4和HC-128在内的几种使用NTRU的密码套件。

 软件防护扩展(SGX) 
wolfSSL 支持使用英特尔SGX (软件防护扩展). 英特尔SGX Intel SGX 允许更小的攻击表面积，并且已被证明为执行代码提供更高级别的安全性，而对性能没有显着的负面影响。

硬件加速平台支持
英特尔 AES-NI  (至强和酷睿处理器系列)

               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
AVX1/AVX2 (英特尔 和 AMD x86)
               SHA-256
          SHA-384
          SHA-512
RDRAND  (英特尔 64, IA-32 架构)
               SHA-256
          SHA-512
RDSEED  (英特尔 Broadwell, AMD Zen)
               SHA-256
          SHA-512
Freescale Coldfire SEC  (NXP MCF547X 和 MCF548X)
                  DES-CBC  64 bit
           3DES-CBC  192 bit
          AES-CBC  128, 192, 256 bit
Freescale Kinetis MMCAU  K50, K60, K70 和 K80 (ARM Cortex-M4 核)
                  MD5  128 bit 摘要
          SHA1  160 bit 摘要
          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, W 系列 (ARM Cortex - M3/M4)
                  RNG  
          DES-CBC  64 bit
          DES-ECB  64 bit 加密
          3DES-CBC  192 bit
          MD5  128 bit
            SHA1  160 bit
          AES-CBC  128, 192, 256 bit
          AES-CTR  128, 192, 256 bit

CubeMX  and Std Per Lib 

Cavium NITROX  (III/V PX 处理器)
                  RNG           AES-CBC  128, 192, 256 bit
          3DES-CBC  192 bit
          RC4  2048 bit 上限
          HMAC  MD5, SHA1, SHA256, SHA3
          RSA  512 - 4096 bit       ECC  NIST Prime 192, 224, 256, 384 and 521
Microchip PIC32 MX/MZ  (嵌入式连接)
                  MD5  128 bit 摘要
          SHA1  160 bit 摘要
          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
德州仪器 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 核心处理器)
                  AES-ECB   128 bit
          RNG 
Microchip /Atmel  ATECC508A (兼容于MPU or 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 
英特尔QuickAssist技术 
                  RSA  512 - 4096 bit
          SHA1  160 bit 摘要
          SHA2  224, 256, 384 和 512 bit
          AES-CBC  128, 192, 256 bit
         AES-GCM  128, 192, 256 bit
         ECC  任意位数
          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 摘要
          SHA256  
          ECC  128, 256 bit
          ECC-DHE  128,  256 bit
         RSA  512 - 4096 bit

许可
wolfSSL 开放源代码, 根据GNU通用公共许可证GPLv2获得许可.

其他

 加密
传输层安全性协议
TLS的应用对比

GnuTLS
网络安全服务
OpenSSL
MatrixSSL

参考文献

外部链接
 wolfSSL/CyaSSL Homepage
 wolfSSL Now With ChaCha20 and Poly1305 

Category:Transport Layer Security implementation

註釋

Category:加密软件
Category:C函式庫
Category:自由安全软件
Category:傳輸層安全協議