wolfSSL (日本語: ウルフエスエスエル、旧称 CyaSSL) は組込みシステム開発者の使用に向けた小型で移植性の高い組み込みSSL/TLSライブラリである。TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, DTLS 1.0, 1.2)のオープンソース実装でC言語で書かれている。SSL/TLSクライアントライブラリとサーバライブラリが含まれ、SSLとTLSで定義される各種APIほかをサポートする。またOpenSSLで主に利用されている関数と互換[2]のインタフェースを実現している。
wolfSSL/CyaSSLの前身であるyaSSLは、組み込み環境やリソースの限られたリアルタイムOS向けのC++で書かれたSSLライブラリである。
プラットフォーム編集
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電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。
プロトコル編集
wolfSSLは以下の各種プロトコルを実現している:[7]
- SSL 3.0、TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3
- DTLS 1.0、DTLS 1.2
ただし、SSL 2.0は安全性の問題から含まれていない。また、SSL 3.0は既定では無効とされている。
アルゴリズム編集
wolfSSLはインテル SGX(ソフトウェア保護拡張)をサポートする。インテル SGXは攻撃対象領域を減らし、既存のコードで目立った性能の低下なくより高いレベルの安全性を確保している。
暗号化ハードウェアアクセラレーションのサポート対象編集
- Intel AES-NI (Xeon および Core プロセッサー・ファミリー )
|
|
---|
|
AES-GCM |
128, 192, 256 bit
|
---|
|
AES-CCM |
128, 192, 256 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
|
AES-ECB |
128, 192, 256 bit
|
---|
|
AES-CTR |
128, 192, 256 bit
|
---|
- AVX1/AVX2 (Intel および AMD x86)
- RDRAND (Intel 64, IA-32 アーキテクチャ)
- RDSEED (Intel Broadwell, AMD Zen)
- Freescale Coldfire SEC (NXP MCF547X および MCF548X)
|
|
---|
|
DES-CBC |
64 bit
|
---|
|
3DES-CBC |
192 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
- Freescale Kinetis MMCAU K50, K60, K70 および K80 (ARM Cortex-M4 core)
- STマイクロエレクトロニクス STM32 F1, F2, F4, L1, W シリーズ (ARM Cortex - M3/M4)
|
|
---|
|
RNG |
|
---|
|
DES-CBC |
64 bit
|
---|
|
DES-ECB |
64 bit Encrypt
|
---|
|
3DES-CBC |
192 bit
|
---|
|
MD5 |
128 bit
|
---|
|
SHA1 |
160 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
|
AES-CTR |
128, 192, 256 bit
|
---|
- CubeMX および Std Per Lib
- Cavium NITROX (III/V PX プロセッサ)
|
|
---|
|
RNG |
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
|
3DES-CBC |
192 bit
|
---|
|
RC4 |
2048 bit 最大
|
---|
|
HMAC |
MD5, SHA1, SHA256, SHA3
|
---|
|
RSA |
512 - 4096 bit
|
---|
|
ECC |
NIST Prime 192, 224, 256, 384 and 521
|
---|
- Microchip PIC32 MX/MZ (Embedded Connectivity)
- Texas Instruments TM4C1294 (ARM Cortex-M4F)
|
|
---|
|
DES-CBC |
64 bit
|
---|
|
3DES-CBC |
192 bit
|
---|
|
AES-CCM |
128, 192, 256 bit
|
---|
|
AES-GCM |
128, 192, 256 bit
|
---|
|
AES-ECB |
128, 192, 256 bit
|
---|
|
AES-CTR |
128, 192, 256 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
- Nordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 processor core)
- Microchip/Atmel ATECC508A ( MPUまたはMCU互換 )
- ARMv8
- Intel QuickAssist テクノロジー
|
|
---|
|
RSA |
512 - 4096 bit
|
---|
|
SHA1 |
160 bit digest
|
---|
|
SHA2 |
224, 256, 384 and 512 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
|
AES-GCM |
128, 192, 256 bit
|
---|
|
ECC |
Any curve or bit strength
|
---|
|
HMAC |
SHA1, SHA2
|
---|
|
MD5 |
|
---|
- Freescale NXP LTC
|
|
---|
|
Curve25519 |
256 bit
|
---|
|
Ed25519 |
256 bit
|
---|
|
AES-CCM |
128, 192, 256 bit
|
---|
|
AES-ECB |
128, 192, 256 bit
|
---|
|
AES-CBC |
128, 192, 256 bit
|
---|
|
AES-CTR |
128, 192, 256 bit
|
---|
|
AES-GCM |
128, 192, 256 bit
|
---|
|
SHA1 |
160 bit digest
|
---|
|
SHA256 |
|
---|
|
ECC |
128, 256 bit
|
---|
|
ECC-DHE |
128, 256 bit
|
---|
|
RSA |
512 - 4096 bit
|
---|
ライセンス編集
wolfSSLはGNU General Public License GPLv2.[11]によるオープンソースと商用ライセンスの双方で利用可能である。
外部リンク編集