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で主に利用されている関数と互換のインタフェースを実現している。

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

プラットフォーム
wolfSSLは、Win32/64、Linux、macOS、Solaris、Threadx、VxWorks、FreeBSD、NetBSD、OpenBSD、組み込みLinux、Yocto Project、OpenEmbedded、WinCE、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でのデュアルライセンスという独特のものであった。yaSSLは、商用ライセンスとGPLでのデュアルライセンスにおいて利用可能なOpenSSLの代替として開発された。yaSSLはより洗練されたAPI、商用開発におけるサポート、OpenSSLとの完全な互換性を提供した。yaSSLは始めMySQLで利用された。この結果、yaSSLはMySQLへの組込みを通して数百万単位の極めて広い普及を実現した。

現在、wolfSSLはオープンソース、商用プロジェクトの双方で利用されている。wolfSSLは車載スマートデバイス、IP電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。

2019年2月にcURLの作成者」であるDaniel StenbergがwolfSSLへ加わった

プロトコル

wolfSSLは以下の各種プロトコルを実現している:
 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を使用する。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は、例えば ケルベロス認証のようないくつかのソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。

NTRU
CyaSSL+にはNTRUによる公開鍵暗号化が含まれている。 CyaSSL+へのNTRUの追加はwolfSSLとSecurity Innovation. のパートナーシップによって実現した。NTRUは、他の公開鍵暗号と同レベルのセキュリティをより小さなビット数で実現できるため、モバイルや組込み環境でうまく機能する。NTRUはまた、公開鍵暗号化へのquantum attackに対しても脆弱性が知られていない。CyaSSL+ではAES-256、RC4、または HC-128など、NTRUを使用したいくつかの暗号スイートが利用可能である。

SGX
wolfSSLはインテル SGX(ソフトウェア保護拡張)をサポートする。インテル SGXは攻撃対象領域を減らし、既存のコードで目立った性能の低下なくより高いレベルの安全性を確保している。

暗号化ハードウェアアクセラレーションのサポート対象

セキュアエレメント 

 STSAFE
 ATECC508A

ハードウェア暗号 
サポート対象のハードウェア暗号とアルゴリズムの組み合わせ

- "All" は、128、192、および 256 ビットのサポートされているブロックサイズ。

ライセンス 
wolfSSLはGNU General Public License GPLv2またはGPLv3.によるオープンソースと商用ライセンスの双方で利用可能である。

脚注

関連項目

Transport Layer Security
TLS実装の比較
暗号ライブラリの比較
GnuTLS
OpenSSL

外部リンク
 wolfSSL日本語ホームページ
 wolfSSL Homepage
 wolfSSL Now With ChaCha20 and Poly1305

暗号ソフトウェア
Transport Layer Security
オープンソースソフトウェア