wolfSSL

出典: フリー百科事典『ウィキペディア(Wikipedia)』
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) は組込みシステム開発者の使用に向けた小型で移植性の高い組み込みSSL/TLSライブラリである。TLS (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3, DTLS 1.0, 1.2)のオープンソース実装でC言語で書かれている。SSL/TLSクライアントライブラリとサーバライブラリが含まれ、SSLTLSで定義される各種APIほかをサポートする。またOpenSSLで主に利用されている関数と互換[2]のインタフェースを実現している。

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

プラットフォーム

wolfSSLは、Win32/64LinuxmacOSSolarisFreeBSDNetBSDOpenBSD組み込みLinuxHaikuOpenWrtiPhoneAndroidNintendo Wii およびDevKitProを通じてGamecubeQNXVxWorksMontaVistaThreadXTRONITRON、µITRON、NonStopOpenCL、 MicriumのMicroC/OS-IIFreeRTOSフリースケールMQXNucleus、TinyOS、TI-RTOS、HP-UX、uTasker、および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電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。

プロトコル

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は以下の暗号化ライブラリーを使用している:

wolfCrypt

wolfSSLは標準ではwolfCrypt[8]を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptはRSA楕円曲線暗号DSSDiffie Hellman、EDH、NTRUDESTriple DESAES (CBC、CTRCCMGCM)、Camellia、IDEA、ARC4HC-128ChaCha20MD2MD4MD5SHA-1SHA-2BLAKE2RIPEMD-160Poly1305、乱数生成、大規模整数演算、ベース16/64エンコーディング/デコーディングに対応する。欧州のeSTREAMのパブリックドメインのストリーム暗号Rabbitも含まれている。Rabbitは高性能、高負荷環境での暗号化のために有効であると考えられる。

wolfCryptはCurve25519とEd25519をサポートする。

wolfCryptは、例えば ケルベロス認証[9]のようないくつかのソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。

NTRU

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

SGX

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)
SHA-256
SHA-384
SHA-512
RDRAND (Intel 64, IA-32 アーキテクチャ)
SHA-256
SHA-512
RDSEED (Intel Broadwell, AMD Zen)
SHA-256
SHA-512
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)
MD5 128 bit digest
SHA1 160 bit digest
SHA256
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CBC 128, 192, 256 bit
AES-CCM 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
AES-ECB 128, 192, 256 bit
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)
MD5 128 bit digest
SHA1 160 bit digest
SHA256
HMAC MD5, SHA1, SHA256
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
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)
AES-ECB 128 bit
RNG
Microchip/Atmel ATECC508A ( MPUまたはMCU互換 )
ECC 256 bit (NIST-P256)
ARMv8
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
SHA256
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]によるオープンソースと商用ライセンスの双方で利用可能である。

脚注

関連項目

外部リンク