wolfSSL
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]のインタフェースを実現している。
開発元 | Todd Ouska |
---|---|
初版 | 2006年2月19日 |
最新版 | 5.5.0 - 2022年8月30日[1] [±] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | マルチプラットフォーム |
サポート状況 | Active |
種別 | セキュリティ・ライブラリー |
ライセンス | GNU GPL2 または 商用ライセンス |
公式サイト |
www |
wolfSSL/CyaSSLの前身であるyaSSLは、組み込み環境やリソースの限られたリアルタイムOS向けのC++で書かれたSSLライブラリである。
プラットフォーム
編集wolfSSLは、Win32/64、Linux、macOS、Solaris、Threadx、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において利用可能である。
歴史
編集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がwolfSSLへ加わった[7]
プロトコル
編集wolfSSLは以下の各種プロトコルを実現している:[8]
ただし、SSL 2.0は安全性の問題から含まれていない。また、SSL 3.0は既定では無効とされている。
アルゴリズム
編集wolfSSLは以下の暗号化ライブラリーを使用している:
wolfCrypt
編集wolfSSLは標準ではwolfCrypt[9]を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptはRSA、楕円曲線暗号、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、SHA-3、BLAKE2、RIPEMD-160、Poly1305、乱数生成、大規模整数演算、ベース16/64エンコーディング/デコーディングに対応する。欧州のeSTREAMのパブリックドメインのストリーム暗号Rabbitも含まれている。Rabbitは高性能、高負荷環境での暗号化のために有効であると考えられる。
wolfCryptはCurve25519とEd25519をサポートする。
wolfCryptは、例えば ケルベロス認証[10]のようないくつかのソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。
NTRU
編集CyaSSL+にはNTRU[11]による公開鍵暗号化が含まれている。 CyaSSL+へのNTRUの追加はwolfSSLとSecurity Innovation.[11] のパートナーシップによって実現した。NTRUは、他の公開鍵暗号と同レベルのセキュリティをより小さなビット数で実現できるため、モバイルや組込み環境でうまく機能する。NTRUはまた、公開鍵暗号化へのquantum attackに対しても脆弱性が知られていない。CyaSSL+ではAES-256、RC4、または HC-128など、NTRUを使用したいくつかの暗号スイートが利用可能である。
SGX
編集wolfSSLはインテル SGX(ソフトウェア保護拡張)をサポートする。インテル SGXは攻撃対象領域を減らし、既存のコードで目立った性能の低下なくより高いレベルの安全性を確保している。
暗号化ハードウェアアクセラレーションのサポート対象
編集セキュアエレメント
編集- STSAFE
- ATECC508A
ハードウェア暗号
編集サポート対象のハードウェア暗号とアルゴリズムの組み合わせ
デバイス | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI
(Xeon and Core processor families) |
All | All | All | All | All |
Freescale
Cryptographic Accelerator and Assurance Module (CAAM) |
All | All | All | All | |
Freescale Coldfire SEC
(NXP MCF547X and MCF548X) |
All | ||||
Freescale Kinetis MMCAU
K50, K60, K70, and K80 (ARM Cortex-M4 core) |
All | All | All | All | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
All | All | |||
Cavium NITROX
(III/V PX processors) |
All | ||||
Microchip PIC32 MX/MZ
(Embedded Connectivity) |
All | All | All | ||
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
All | All | All | All | All |
Nordic NRF51 Archived 2018-06-19 at the Wayback Machine.
(Series SoC family, 32-bit ARM Cortex M0 processor core) |
128-bit | ||||
ARMv8 | All | All | All | ||
Intel QuickAssist Technology | All | All | |||
Freescale NXP LTC | All | All | All | All | All |
Xilinx Zynq UltraScale+ | 256-bit | ||||
Renesas RX65N (R5F565NEHDFB) | All | All | |||
Renesas RX72N (RTK5RX72N0C00000BJ) | All | All | |||
Renesas RX MPU (R5F571MLDDFC) | All | All | |||
Renesas Synergy DK-S7G2 | 128-bit |
- "All" は、128、192、および 256 ビットのサポートされているブロックサイズ。
デバイス | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC
(NXP MCF547X and MCF548X) |
64 bit | 192 bit | |
Freescale Kinetis MMCAU
K50, K60, K70, and K80 (ARM Cortex-M4 core) |
64 bit | 192 bit | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
64 bit | 64 bit (encrypt) | 192 bit |
Cavium NITROX
(III/V PX processors) |
192 bit | ||
Microchip PIC32 MX/MZ
(Embedded Connectivity) |
64 bit | 192 bit | |
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
64 bit | 192 bit |
デバイス | RC4 | ChaCha20 |
---|---|---|
AVX1/AVX2
(Intel and AMD x86) |
Supported | |
Cavium NITROX
(III/V PX processors) |
2048 bit max. |
デバイス | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel and AMD x86) |
Supported | Supported | Supported | |||
Freescale Kinetis MMCAU
K50, K60, K70, and K80 (ARM Cortex-M4 core) |
Supported | Supported | Supported | |||
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
Supported | Supported | ||||
Microchip PIC32 MX/MZ
(Embedded Connectivity) |
Supported | Supported | Supported | |||
ARMv8 | Supported | |||||
Intel QuickAssist Technology | Supported | Supported | Supported | |||
Freescale NXP LTC | Supported | Supported | ||||
Xilinx Zynq UltraScale+ | Supported | |||||
Renesas Synergy DK-S7G2 | Supported | Supported | ||||
Renesas RX65N (R5F565NEHDFB) | Supported | Supported | ||||
Renesas RX72N (RTK5RX72N0C00000BJ) | Supported | Supported | Supported | |||
Renesas RX MPU (R5F571MLDDFC) | Supported | Supported | Supported |
デバイス | RSA | ECC | ECC-DHE | Curve25519 | Ed25519 |
---|---|---|---|---|---|
Cavium NITROX
(III/V PX processors) |
512–4096 bit | NIST Prime
192, 224, 256, 384, 521 |
|||
Microchip/Atmel
ATECC508A (compatible with any MPU or MCU including: Atmel SMART and AVR MCUs) |
256 bit
(NIST-P256) |
||||
Intel QuickAssist Technology | 512–4096 bit | 128, 256 bit | |||
Freescale NXP LTC | 512 - 4096 bit | 128, 256 bit | 128, 256 bit | 256 bit | 256 bit |
Xilinx Zynq UltraScale+ | 2048–4096 bit |
デバイス | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poly1305 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel and AMD x86) |
Supported | |||||
Cavium NITROX
(III/V PX processors) |
Supported | Supported | Supported | Supported | ||
Microchip PIC32 MX/MZ
(Embedded Connectivity) |
Supported | Supported | Supported | |||
Intel QuickAssist Technology | Supported | Supported | ||||
Renesas RX65N (R5F565NEHDFB) | Supported | Supported | ||||
Renesas RX72N (RTK5RX72N0C00000BJ) | ||||||
Renesas RX MPU (R5F571MLDDFC) | Supported | Supported | ||||
Renesas Synergy DK-S7G2 | Supported |
デバイス | RNG |
---|---|
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4) |
Supported |
Cavium NITROX
(III/V PX processors) |
Supported |
Nordic NRF51 Archived 2018-06-19 at the Wayback Machine.
(Series SoC family, 32-bit ARM Cortex M0 processor core) |
Supported |
ライセンス
編集wolfSSLはGNU General Public License GPLv2またはGPLv3.[12]によるオープンソースと商用ライセンスの双方で利用可能である。
脚注
編集- ^ “wolfSSL ChangeLog”. 2022年9月5日閲覧。
- ^ a b wolfSSL - Embedded Communications Products
- ^ OpenSSL: Source, License
- ^ wolfSSL - License
- ^ MySQL, Using SSL Connections
- ^ wolfSSL - Community
- ^ Daniel Stenberg, founder and Chief Architect of cURL, joins wolfSSL
- ^ wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features)
- ^ wolfSSL - Docs | CyaSSL Manual - Chapter 10 (CTaoCrypt Usage Reference)
- ^ Kerberos: The Network Authentication Protocol
- ^ a b NTRU CryptoLabs
- ^ GNU License