wolfSSL開発元Todd Ouska
初版2006年2月19日 (2006-02-19)
最新版5.5.0 - 2022年8月30日 (20か月前) (2022-08-30)[1] [±]
wolfSSL (日本語: ウルフエスエスエル) は組込みシステム開発者の使用に向けた小型で移植性の高い組み込みSSL/TLSライブラリである。TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, DTLS 1.0, 1.2, 1.3)のオープンソース実装でC言語で書かれている。SSL/TLSクライアントライブラリとサーバライブラリが含まれ、SSLとTLSで定義される各種APIほかをサポートする。またOpenSSLで主に利用されている関数と互換[2]のインタフェースを実現している。
wolfSSL/CyaSSLの前身であるyaSSLは、組み込み環境やリソースの限られたリアルタイムOS向けのC++で書かれたSSLライブラリである。 CyaSSLの始まりは2004年に遡る。2004年当時、OpenSSLがSSLライブラリとして利用可能であったが、そのライセンスはOpenSSL License および SSLeay licenseでのデュアルライセンス[3]という独特のものであった。yaSSLは、商用ライセンスとGPLでのデュアルライセンスにおいて利用可能なOpenSSLの代替として開発された[4]。yaSSLはより洗練されたAPI、商用開発におけるサポート、OpenSSLとの完全な互換性を提供した[2]。yaSSLは始めMySQL[5]で利用された。この結果、yaSSLはMySQLへの組込みを通して数百万単位の極めて広い普及を実現した。 現在、wolfSSLはオープンソース、商用プロジェクトの双方で利用されている[6]。wolfSSLは車載スマートデバイス、IP電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。 2019年2月にcURLの作成者」であるDaniel Stenberg
プラットフォーム、VxWorks、FreeBSD、NetBSD、OpenBSD、組み込みLinux、Yocto Project、OpenEmbedded、Microsoft Windows Embedded CE、Haiku、OpenWrt、iPhone、Android、Nintendo Wii およびDevKitProを通じてGamecube、QNX、MontaVista、TRON、ITRON、μITRON、NonStop、OpenCL、 MicriumのMicroC/OS-II、FreeRTOS、SafeRTOS、フリースケールMQX、Nucleus、TinyOS、TI-RTOS、HP-UX、uTasker、uT-kernel、INtime、mbed、RIOT、CMSIS-RTOS、FROSTED、Green Hills INTEGRITY、Keil RTX、TOPPERS、PetaLinux、Apache Mynewt、PikeOS、およびembOSにおいて利用可能である。
歴史
プロトコル詳細は「Transport Layer Security」を参照
wolfSSLは以下の各種プロトコルを実現している:[8]
SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3
DTLS 1.0、DTLS 1.2、DTLS 1.3
ただし、SSL 2.0は安全性の問題から含まれていない。また、SSL 3.0は既定では無効とされている。 wolfSSLは以下の暗号化ライブラリーを使用している: wolfSSLは標準ではwolfCrypt[9]を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptはRSA、楕円曲線暗号、DSS、Diffie Hellman、EDH、NTRU
アルゴリズム
wolfCrypt
wolfCryptはCurve25519とEd25519をサポートする。
wolfCryptは、例えば ケルベロス認証[10]のようないくつかのソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。 CyaSSL+にはNTRU[11]による公開鍵暗号化が含まれている。 CyaSSL+へのNTRUの追加はwolfSSLとSecurity Innovation.[11] のパートナーシップによって実現した。NTRUは、他の公開鍵暗号と同レベルのセキュリティをより小さなビット数で実現できるため、モバイルや組込み環境でうまく機能する。NTRUはまた、公開鍵暗号化へのquantum attackに対しても脆弱性が知られていない。CyaSSL+ではAES-256、RC4、または HC-128など、NTRUを使用したいくつかの暗号スイートが利用可能である。 wolfSSLはインテル SGX(ソフトウェア保護拡張)をサポートする。インテル SGXは攻撃対象領域を減らし、既存のコードで目立った性能の低下なくより高いレベルの安全性を確保している。 サポート対象のハードウェア暗号とアルゴリズムの組み合わせ AES 暗号モードデバイスAES-GCMAES-CCMAES-CBCAES-ECBAES-CTR (Xeon and Core processor families)AllAllAllAllAll Cryptographic Accelerator and Assurance Module (CAAM)AllAllAllAll (NXP MCF547X and MCF548X)All K50, K60, K70, and K80 (ARM Cortex-M4 core)AllAllAllAll F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)AllAll (III/V PX processors)All (Embedded Connectivity)AllAllAll (ARM Cortex-M4F)AllAllAllAllAll
NTRU
SGX
暗号化ハードウェアアクセラレーションのサポート対象
セキュアエレメント
STSAFE
ATECC508A
ハードウェア暗号
⇒Intel AES-NI
Freescale
⇒Freescale Coldfire SEC
⇒Freescale Kinetis MMCAU
STMicroelectronics STM32
⇒Cavium NITROX
⇒Microchip PIC32 MX/MZ
⇒Texas Instruments TM4C1294
Nordic NRF51
(Series SoC family, 32-bit ARM Cortex M0 processor core)128-bit
ARMv8AllAllAll
Intel QuickAssist TechnologyAllAll
Freescale NXP LTCAllAllAllAllAll
Xilinx Zynq UltraScale+256-bit
Renesas RX65N (R5F565NEHDFB)AllAll
Renesas RX72N (RTK5RX72N0C00000BJ)AllAll
Renesas RX MPU (R5F571MLDDFC)AllAll
Renesas Synergy DK-S7G2128-bit
- "All" は、128、192、および 256 ビットのサポートされているブロックサイズ。
DES/3DES 暗号モードデバイスDES-CBCDES-ECB3DES-CBC
⇒Freescale Coldfire SEC
(NXP MCF547X and MCF548X)64 bit192 bit
⇒Freescale Kinetis MMCAU
K50, K60, K70, and K80 (ARM Cortex-M4 core)64 bit192 bit
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)64 bit64 bit (encrypt)192 bit
⇒Cavium NITROX
(III/V PX processors)192 bit
⇒Microchip PIC32 MX/MZ
(Embedded Connectivity)64 bit192 bit
⇒Texas Instruments TM4C1294
(ARM Cortex-M4F)64 bit192 bit
ストリーム暗号デバイスRC4ChaCha20
AVX1/AVX2
(Intel and AMD x86)Supported
⇒Cavium NITROX
(III/V PX processors)2048 bit max.
ハッシュアルゴリズム サポートデバイスMD5SHA1SHA2SHA-256SHA-384SHA-512
AVX1/AVX2
(Intel and AMD x86)SupportedSupportedSupported
⇒Freescale Kinetis MMCAU