wolfSSL(ウルフエスエスエル)は、組み込みシステム開発者向けに設計された、小型で移植性の高いSSL/TLS
ライブラリです。
C言語で記述されており、TLS 1.0から1.3、DTLS 1.0から1.3までの幅広いプロトコルをサポートしています。この
ライブラリは、SSL/TLSクライアントおよびサーバー
ライブラリの両方を含み、SSL/TLSで定義された各種APIを実装しています。また、OpenSSLとの互換性を考慮したインターフェースも提供しており、既存のOpenSSLベースのアプリケーションからの移行も比較的容易です。
歴史
wolfSSLの前身であるyaSSLは、2004年に組み込み環境やリソースが限られたリアルタイムOS向けに開発されました。当初は
C++で記述されていましたが、現在のwolfSSLは
C言語で実装されています。yaSSLは、OpenSSLの代替として、商用
ライセンスとGPLのデュアル
ライセンスで利用可能であり、より洗練されたAPI、商用開発のサポート、OpenSSLとの高い互換性を提供しました。特に、
MySQLへの組み込みを通して、数百万単位という非常に広い普及を達成しました。
現在では、wolfSSLはオープンソースプロジェクトと商用プロジェクトの両方で幅広く利用されており、車載スマートデバイス、IP電話、携帯電話、ルーター、プリンター、クレジットカードスキャナーなど、さまざまなネットワークデバイスに組み込まれています。2019年2月には、cURLの作成者であるDaniel StenbergがwolfSSLの開発チームに加わりました。
対応プラットフォーム
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、Gamecube(DevKitPro経由)、
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、Peta
Linux、Apache Mynewt、
PikeOS、embOSなどが挙げられます。
プロトコル
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を使用します。wolfCryptは、SSLなどの必要な機能に特化しつつ、最大限の移植性を実現するように設計されています。wolfCryptは、RSA、楕円曲線暗号、DSS、Diffie Hellman、EDH、NTRU、DES、Triple DES、AES (CBC、CTR、CCM、GCM)、Camellia、IDEA、A
RC4、HC-128、ChaCha20、
MD2、
MD4、
MD5、
SHA-1、
SHA-2、SHA-3、BLAKE2、
RIPEMD-160、
Poly1305などの暗号化アルゴリズム、乱数生成、大規模整数演算、Base16/64エンコーディング/デコーディングに対応しています。また、欧州のeSTREAMプロジェクトで公開された
ストリーム暗号であるRabbitも含まれており、高性能・高負荷環境での暗号化に適しています。
wolfCryptは、Curve25519とEd25519もサポートしています。さらに、
ケルベロス認証など、他のソフトウェアパッケージや
ライブラリのバックエンド暗号化実装としても利用されています。
NTRU
wolfSSLには、NTRUによる
公開鍵暗号化が含まれています。これは、Security Innovation社とのパートナーシップによって実現しました。NTRUは、他の
公開鍵暗号と同程度のセキュリティをより小さなビット数で実現できるため、モバイルや組み込み環境に適しています。また、量子コンピュータによる攻撃に対する脆弱性が知られていません。wolfSSLでは、NTRUを使用したいくつかの暗号スイートが利用可能です。
SGX
wolfSSLは、Intel SGX(ソフトウェア・ガード・エクステンション)をサポートしています。SGXは攻撃対象領域を減らし、既存のコードで目立ったパフォーマンスの低下なしにより高いレベルの安全性を確保することができます。
ハードウェアアクセラレーション
wolfSSLは、ハードウェアアクセラレーションにも対応しており、セキュアエレメント、STSAFE、ATECC508Aなどのハードウェア暗号化アクセラレーターを利用できます。
wolfSSLは、
GNU General Public License GPLv2またはGPLv3によるオープンソースと商用
ライセンスの両方で利用できます。
wolfSSLは、その移植性と機能性から、多くの組み込みシステム開発者にとって魅力的なSSL/TLS
ライブラリの選択肢となっています。