コンテンツにスキップ

wolfSSL

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

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

プラットフォーム

[編集]

wolfSSLは、Win32/64LinuxmacOSSolarisThreadxVxWorksFreeBSDNetBSDOpenBSD組み込みLinuxYocto ProjectOpenEmbeddedMicrosoft Windows Embedded CEHaikuOpenWrtiPhoneAndroidNintendo Wii およびDevKitProを通じてGamecubeQNXMontaVistaTRONITRON、µITRON、NonStopOpenCL、 MicriumのMicroC/OS-IIFreeRTOSSafeRTOSフリースケールMQXNucleus、TinyOS、TI-RTOS、HP-UX、uTasker、uT-kernelINtimembedRIOTCMSIS-RTOSFROSTEDGreen Hills INTEGRITYKeil RTXTOPPERSPetaLinuxApache 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-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/3DES 暗号モード
デバイス 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
MAC アルゴリズム
デバイス 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]によるオープンソースと商用ライセンスの双方で利用可能である。

脚注

[編集]

関連項目

[編集]

外部リンク

[編集]