WolfCrypt

**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 使用以下加密庫:

### 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 （頁面存檔備份，存於網際網路檔案館） (至強和酷睿處理器系列)

　
: AVX1/AVX2 (英特爾 和 AMD x86)

　
: RDRAND （頁面存檔備份，存於網際網路檔案館） (英特爾 64, IA-32 架構)

　
: RDSEED （頁面存檔備份，存於網際網路檔案館） (英特爾 Broadwell, AMD Zen)

　
: Freescale Coldfire SEC （頁面存檔備份，存於網際網路檔案館） (NXP MCF547X 和 MCF548X)

　
: Freescale Kinetis MMCAU （頁面存檔備份，存於網際網路檔案館） K50, K60, K70 和 K80 (ARM Cortex-M4 核)

　
: STMicroelectronics STM32 F1, F2, F4, L1, W 系列 (ARM Cortex - M3/M4)

　
: : CubeMX （頁面存檔備份，存於網際網路檔案館） and Std Per Lib （頁面存檔備份，存於網際網路檔案館）

　
: Cavium NITROX （頁面存檔備份，存於網際網路檔案館） (III/V PX 處理器)

　
: Microchip PIC32 MX/MZ （頁面存檔備份，存於網際網路檔案館） (嵌入式連接)

　
: 德州儀器 TM4C1294 （頁面存檔備份，存於網際網路檔案館） (ARM Cortex-M4F)

　
: Nordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 核心處理器)

　
: Microchip （頁面存檔備份，存於網際網路檔案館）/Atmel （頁面存檔備份，存於網際網路檔案館） ATECC508A (兼容於 MPU or MCU)

　
: ARMv8 （頁面存檔備份，存於網際網路檔案館）

　
: 英特爾 QuickAssist 技術 （頁面存檔備份，存於網際網路檔案館）

　
: Freescale NXP LTC （頁面存檔備份，存於網際網路檔案館）

## 許可

wolfSSL 開放原始碼，根據 GNU 通用公共許可證 GPLv2 獲得許可.

## 其他

* 加密
* 傳輸層安全性協議
* TLS 的應用對比
* GnuTLS
* 網絡安全服務
* OpenSSL
* MatrixSSL

## 參考文獻

## 外部連結

* wolfSSL/CyaSSL Homepage
* wolfSSL Now With ChaCha20 and Poly1305 （頁面存檔備份，存於網際網路檔案館）

## 註釋