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クライアントライブラリとサーバライブラリが含まれ、SSLTLSで定義される各種APIほかをサポートする。またOpenSSLで主に利用されている関数と互換[2]のインタフェースを実現している。

wolfSSL
開発元Todd Ouska
初版2006年2月19日 (2006-02-19)
最新版5.5.0 - 2022年8月30日 (20か月前) (2022-08-30)[1] [±]
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OSマルチプラットフォーム
サポート状況Active
種別セキュリティ・ライブラリー
ライセンスGNU GPL2 または 商用ライセンス
公式サイトwww.wolfssl.jp
テンプレートを表示

wolfSSL/CyaSSLの前身であるyaSSLは、組み込み環境やリソースの限られたリアルタイムOS向けのC++で書かれたSSLライブラリである。

プラットフォーム

wolfSSLは、Win32/64LinuxmacOSSolaris、Threadx、VxWorksFreeBSDNetBSDOpenBSD組み込みLinuxYocto ProjectOpenEmbeddedMicrosoft Windows Embedded CEHaikuOpenWrtiPhoneAndroidNintendo Wii およびDevKitProを通じてGamecubeQNXMontaVistaTRONITRON、µITRON、NonStopOpenCL、 MicriumのMicroC/OS-IIFreeRTOS、SafeRTOS、フリースケールMQXNucleus、TinyOS、TI-RTOS、HP-UX、uTasker、uT-kernel、INtimembedRIOT、CMSIS-RTOS、FROSTED、Green Hills INTEGRITY、Keil RTX、TOPPERS、PetaLinux、Apache MynewtPikeOS、および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 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は以下の暗号化ライブラリーを使用している:

wolfCrypt

wolfSSLは標準ではwolfCrypt[9]を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptはRSA楕円曲線暗号DSSDiffie Hellman、EDH、NTRUDESTriple DESAES (CBC、CTRCCMGCM)、Camellia、IDEA、ARC4HC-128ChaCha20MD2MD4MD5SHA-1SHA-2SHA-3BLAKE2RIPEMD-160Poly1305、乱数生成、大規模整数演算、ベース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 暗号モード
デバイスAES-GCMAES-CCMAES-CBCAES-ECBAES-CTR
Intel AES-NI

(Xeon and Core processor families)

AllAllAllAllAll
Freescale

Cryptographic Accelerator and Assurance Module (CAAM)

AllAllAllAll
Freescale Coldfire SEC

(NXP MCF547X and MCF548X)

All
Freescale Kinetis MMCAU

K50, K60, K70, and K80 (ARM Cortex-M4 core)

AllAllAllAll
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

AllAll
Cavium NITROX

(III/V PX processors)

All
Microchip PIC32 MX/MZ

(Embedded Connectivity)

AllAllAll
Texas Instruments TM4C1294

(ARM Cortex-M4F)

AllAllAllAllAll
Nordic NRF51 Archived 2018-06-19 at the Wayback Machine.

(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

K50, K60, K70, and K80 (ARM Cortex-M4 core)

SupportedSupportedSupported
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

SupportedSupported
Microchip PIC32 MX/MZ

(Embedded Connectivity)

SupportedSupportedSupported
ARMv8Supported
Intel QuickAssist TechnologySupportedSupportedSupported
Freescale NXP LTCSupportedSupported
Xilinx Zynq UltraScale+Supported
Renesas Synergy DK-S7G2SupportedSupported
Renesas RX65N (R5F565NEHDFB)SupportedSupported
Renesas RX72N (RTK5RX72N0C00000BJ)SupportedSupportedSupported
Renesas RX MPU (R5F571MLDDFC)SupportedSupportedSupported
鍵演算: 生成と交換、楕円曲線暗号
デバイスRSAECCECC-DHECurve25519Ed25519
Cavium NITROX

(III/V PX processors)

512–4096 bitNIST 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 Technology512–4096 bit128, 256 bit
Freescale NXP LTC512 - 4096 bit128, 256 bit128, 256 bit256 bit256 bit
Xilinx Zynq UltraScale+2048–4096 bit
MAC アルゴリズム
デバイスHMAC-MD5HMAC-SHA1HMAC-SHA2HMAC-SHA256SHA-3Poly1305
AVX1/AVX2

(Intel and AMD x86)

Supported
Cavium NITROX

(III/V PX processors)

SupportedSupportedSupportedSupported
Microchip PIC32 MX/MZ

(Embedded Connectivity)

SupportedSupportedSupported
Intel QuickAssist TechnologySupportedSupported
Renesas RX65N (R5F565NEHDFB)SupportedSupported
Renesas RX72N (RTK5RX72N0C00000BJ)
Renesas RX MPU (R5F571MLDDFC)SupportedSupported
Renesas Synergy DK-S7G2Supported
乱数生成
デバイス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]によるオープンソースと商用ライセンスの双方で利用可能である。

脚注

関連項目

外部リンク