コンテンツにスキップ

「WolfSSL」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Claw of Slime (会話 | 投稿記録)
m Claw of Slime がページ「CyaSSL」を「WolfSSL」に移動しました: 改名提案による(公式な名称変更)
m 商標修正
 
(21人の利用者による、間の35版が非表示)
1行目: 1行目:
{{小文字}}
{{改名提案|wolfSSL|date=2015年3月}}
{{primary sources|date=September 2010}}
{{Infobox software
{{Infobox software
| name = CyaSSL
| name = wolfSSL
| logo =
| logo =
| screenshot =
| screenshot =
| caption =
| caption =
| developer = Todd Ouska
| developer = Todd Ouska
| released = {{Start date|2006|02|19}}<ref name="CyaSSL-ChangeLog">{{Cite web |accessdate=2014-7-14 |title=CyaSSL ChangeLog|url=http://www.wolfssl.com/yaSSL/Docs-cyassl-changelog.html}}</ref>
| released = {{Start date|2006|02|19}}
| operating_system = マルチプラットフォーム
| operating_system = マルチプラットフォーム
| frequently_updated = yes
| frequently_updated = yes
| programming_language = [[C言語]]
| programming_language = [[C言語]]
| genre = [[ライブラリ|セキュリティ・ライブラリー]]
| genre = [[ライブラリ|セキュリティ・ライブラリー]]
| status = Active
| status = Active
| license = [[GNU General Public License|GNU GPL2]] または 商用ライセンス
| license = [[GNU General Public License|GNU GPL2]] または 商用ライセンス
| website = {{URL|http://www.wolfssl.com/jp}}
| website = {{URL|https://www.wolfssl.jp}}
}}
}}
'''CyaSSL''' (C - Yet another SSL) は組込みシステム開発者向けのコンパクトでポータブルな組込み向けSSLプログラミング・ライブラリ、[[C言語]]、[[C++]]、[[Java]]プログラムなどに組み込まれ [[オープンソース]] の[[Secure Sockets Layer|SSL]]ライブラリ (SSL 3, TLS 1.0, 1.1, 1.2, DTLS 1.0, 1.2)でる。SSLクライアントライブラリー、サーバライブラリーの両方また[[Secure Sockets Layer|SSL]]および[[Transport Layer Security|TLS]]で定義される各種APIを実現している。また[[OpenSSL]]で主に利用されている関数と互換<ref name="compatibility">[http://yassl.com/yaSSL/Products.html wolfSSL: Products, OpenSSL Compatibility Layer]</ref>のインタフェースを実現している。
'''wolfSSL''' ({{Lang-ja|ウルフエスエスエル}}) は組込みシステム開発者の使用に向けた小型で移植性高い込み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クライアントライブラリサーバライブラリが含まれ、[[Secure Sockets Layer|SSL]][[Transport Layer Security|TLS]]で定義される各種APIほかサポートする。また[[OpenSSL]]で主に利用されている関数と互換<ref name="compatibility">[https://www.wolfssl.com/wolfSSL/Products.html wolfSSL - Embedded Communications Products]</ref>のインタフェースを実現している。

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


==プラットフォーム==
==プラットフォーム==
CyaSSLは、[[Windows API|Win32/64]]、[[Linux]]、[[Mac OS X]]、[[Solaris]]、[[FreeBSD]]、[[NetBSD]]、[[OpenBSD]]、[[組み込みLinux]]、[[Haiku (オペレーティングシステム)|Haiku]]、[[OpenWrt]]、[[iPhone]]、[[Android]]、[[Wii|Nintendo Wii]] およびDevKitProを通じて[[ニンテンドーゲームキューブ|Gamecube]]、[[QNX]]、[[VxWorks]]、[[:en:MontaVista|MontaVista]]、[[:en:ThreadX|ThreadX]]、[[ITRON]]、[[:en:NonStop|NonStop]]、[[OpenCL]]、 Micriumの[[:en:MicroC/OS-II|MicroC/OS-II]]、[[FreeRTOS]]、[[:en:MQX|フリースケールMQX]]、[[Nucleus RTOS|Nucleus]]、および[[:en:TinyOS|TinyOS]]において利用可能である。
wolfSSLは、[[Windows API|Win32/64]]、[[Linux]]、[[macOS]]、[[Solaris]]、[[Threadx]]、[[VxWorks]]、[[FreeBSD]]、[[NetBSD]]、[[OpenBSD]]、[[組み込みLinux]]、[[Yocto Project]]、[[OpenEmbedded]]、[[Microsoft Windows Embedded CE]]、[[Haiku (オペレーティングシステム)|Haiku]]、[[OpenWrt]]、[[iPhone]]、[[Android (オペレーティングシステム)|Android]]、[[Wii|Nintendo Wii]] およびDevKitProを通じて[[ニンテンドーゲームキューブ|Gamecube]]、[[QNX]]、[[:en:MontaVista|MontaVista]]、[[TRONプロジェクト|TRON]]、[[ITRON]]、µITRON、[[:en:NonStop|NonStop]]、[[OpenCL]]、 Micriumの[[:en:MicroC/OS-II|MicroC/OS-II]]、[[FreeRTOS]]、[[SafeRTOS]]、[[:en:MQX|フリースケールMQX]]、[[Nucleus RTOS|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(旧yaSSL)は始め[[MySQL]]<ref>[http://dev.mysql.com/doc/refman/5.7/en/configuring-for-ssl.html MySQL, Using SSL Connections]</ref>で利用された。この結果、yaSSLはMySQLへの組込みを通して数百万単位の極めて広い普及を実現した。
CyaSSLの始まりは2004年に遡る。2004年当時、[[OpenSSL]]がSSLライブラリとして利用可能であったが、そのライセンスは''OpenSSL License'' および ''[[SSLeay]] license''でのデュアルライセンス<ref>[http://www.openssl.org/source/license.html OpenSSL: Source, License<!-- Bot generated title -->]</ref>という独特のものであった。yaSSLは、商用ライセンスとGPLでのデュアルライセンスにおいて利用可能なOpenSSLの代替として開発された<ref>[https://www.wolfssl.com/wolfSSL/License.html wolfSSL - License]</ref>。yaSSLはより洗練されたAPI、商用開発におけるサポート、OpenSSLとの完全な互換性を提供した<ref name="compatibility"/>。yaSSLは始め[[MySQL]]<ref>[http://dev.mysql.com/doc/refman/5.7/en/configuring-for-ssl.html MySQL, Using SSL Connections]</ref>で利用された。この結果、yaSSLはMySQLへの組込みを通して数百万単位の極めて広い普及を実現した。


現在、CyaSSLはオープンソース、商用プロジェクトの双方で利用されている<ref>[http://yassl.com/yaSSL/Community.html Projects using yaSSL]</ref>。CyaSSLは車載スマートデバイス、IP電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。
現在、wolfSSLはオープンソース、商用プロジェクトの双方で利用されている<ref>[https://www.wolfssl.com/wolfSSL/Community.html wolfSSL - Community]</ref>。wolfSSLは車載スマートデバイス、IP電話、携帯電話、ルータ、プリンタやクレジットカード・スキャナのようなさまざまな種類のネットワーク・デバイスに組み込まれている。

2019年2月に[[cURL]]の作成者」である[[Daniel Stenberg]]がwolfSSLへ加わった<ref>[https://www.helpnetsecurity.com/2019/02/07/daniel-stemberg-joins-wolfssl/ Daniel Stenberg, founder and Chief Architect of cURL, joins wolfSSL]</ref>


==プロトコル==
==プロトコル==
{{main|Transport Layer Security}}
{{main|Transport Layer Security}}
CyaSSLは以下の各種プロトコルを実現している:<ref name="protocols">[http://yassl.com/yaSSL/Docs_References.html wolfSSL: Algorithm and Protocol Reference]</ref>
wolfSSLは以下の各種プロトコルを実現している:<ref name="protocols">[https://www.wolfssl.com/wolfSSL/Docs-cyassl-manual-4-features.html wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features)]</ref>
* [[Secure Sockets Layer|SSL]] 3.0、[[Transport Layer Security|TLS]] 1.0、TLS 1.1、TLS 1.2
* [[Secure Sockets Layer|SSL]] 3.0、[[Transport Layer Security|TLS]] 1.0、TLS 1.1、TLS 1.2、TLS 1.3
* [[Datagram Transport Layer Security|DTLS]] 1.0、DTLS 1.2
* [[Datagram Transport Layer Security|DTLS]] 1.0、DTLS 1.2、DTLS 1.3
ただし、SSL 2.0は安全性の問題から含まれていない。
ただし、SSL 2.0は安全性の問題から含まれていない。また、SSL 3.0は既定では無効とされている


==アルゴリズム==
==アルゴリズム==
CyaSSLは以下の暗号化ライブラリーを使用している:
wolfSSLは以下の暗号化ライブラリーを使用している:


===wolfCrypt===
===wolfCrypt===
CyaSSLは標準ではwolfCrypt<ref>[http://www.yassl.com/yaSSL/Docs-cyassl-manual-10-ctaocrypt-usage-reference.html wolfCrypt]</ref>を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptは[[RSA暗号|RSA]]、[[楕円曲線暗号]]、[[Digital Signature Algorithm|DSS]]、[[ディフィー・ヘルマン鍵共有|Diffie Hellman]]、[[:en:NTRU|NTRU]]、[[Data Encryption Standard|DES]]、[[Triple DES]]、[[Advanced Encryption Standard|AES]] ([[暗号利用モード|CBC、CTR]]、[[Counter with CBC-MAC|CCM]]、[[Galois/Counter Mode|GCM]])、[[Camellia]]、[[RC4|ARC4]]、[[:en:HC-128|HC-128]]、[[ChaCha20]]、[[MD2]]、[[MD4]]、[[MD5]]、[[SHA-1]]、[[SHA-2]]、[[BLAKE2]]、[[RIPEMD|RIPEMD-160]]、[[Poly1305]]、乱数生成、大規模整数演算、ベース16/64エンコーディング/デコーディング。EUのeSTREAMのパブリックドメインのストリーム・サイファー[[:en:Rabbit (cipher)|Rabbit]]も含まれている。Rabbitは高性能、高負荷環境での暗号化のために有効であると考えられる。
wolfSSLは標準ではwolfCrypt<ref>[https://www.wolfssl.com/wolfSSL/Docs-cyassl-manual-10-ctaocrypt-usage-reference.html wolfSSL - Docs | CyaSSL Manual - Chapter 10 (CTaoCrypt Usage Reference)]</ref>を使用する。wolfCryptは、SSLのようなものに向けて必要な機能に特化する一方で、最大限のポータビリティーが得られるように配慮されている。wolfCryptは[[RSA暗号|RSA]]、[[楕円曲線暗号]]、[[Digital Signature Algorithm|DSS]]、[[ディフィー・ヘルマン鍵共有|Diffie Hellman]]、EDH、[[:en:NTRU|NTRU]]、[[Data Encryption Standard|DES]]、[[Triple DES]]、[[Advanced Encryption Standard|AES]] ([[暗号利用モード#秘匿用の利用モード|CBC、CTR]]、[[Counter with CBC-MAC|CCM]]、[[Galois/Counter Mode|GCM]])、[[Camellia]]、IDEA、[[RC4|ARC4]]、[[:en:HC-128|HC-128]]、[[ChaCha20]]、[[MD2]]、[[MD4]]、[[MD5]]、[[SHA-1]]、[[SHA-2]]、[[SHA-3]]、[[BLAKE2]]、[[RIPEMD|RIPEMD-160]]、[[Poly1305]]、乱数生成、大規模整数演算、ベース16/64エンコーディング/デコーディングに対応する欧州のeSTREAMのパブリックドメインのストリーム暗号[[:en:Rabbit (cipher)|Rabbit]]も含まれている。Rabbitは高性能、高負荷環境での暗号化のために有効であると考えられる。


wolfCryptはCurve25519と[[EdDSA|Ed25519]]をサポートする。
wolfCryptは、例えば [[ケルベロス認証|ケルベロス認証]]<ref>[http://web.mit.edu/kerberos/ Kerberos: The Network Authentication Protocol]</ref>のようないくつかののソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。

wolfCryptは、例えば [[ケルベロス認証]]<ref>[http://web.mit.edu/kerberos/ Kerberos: The Network Authentication Protocol]</ref>のようないくつかのソフトウェア・パッケージやライブラリーのバックエンド暗号化インプリメンテーションとして活躍している。


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

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

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

=== セキュアエレメント ===

* STSAFE
* ATECC508A


=== ハードウェア暗号 ===
==製品==
サポート対象のハードウェア暗号とアルゴリズムの組み合わせ
CyaSSL開発マイルストーン:
{| class="wikitable"
* CyaSSL version 3.1.0: July 14, 2014リリース
|+[[Advanced Encryption Standard|AES]] 暗号モード
* CyaSSL version 3.0.0: April 30, 2014リリース
!デバイス
* CyaSSL version 2.9.4: April 09, 2014リリース
!AES-GCM
* ...
!AES-CCM
* CyaSSL version 2.3.0: August 10, 2012リリース
!AES-CBC
* CyaSSL version 2.2.0: May 18, 2012リリース
!AES-ECB
* CyaSSL version 2.0.8: February 24, 2012リリース
!AES-CTR
* CyaSSL version 2.0.0rc3: September 28, 2011リリース
|-
* CyaSSL version 1.9.0: March 2, 2011リリース
|[http://www.intel.com/content/www/us/en/architecture-and-technology/advanced-encryption-standard--aes-/data-protection-aes-general-technology.html Intel AES-NI]
* CyaSSL version 1.6.0: August 27, 2010リリース
(Xeon and Core processor families)
* CyaSSL version 1.5.0: May 11, 2010リリース
|All
* CyaSSL version 1.2.0: November 2, 2009リリース
|All
* CyaSSL version 1.1.0: September 2, 2009リリース
|All
* CyaSSL version 1.0.2: April 2, 2009リリース
|All
* CyaSSL version rc3-1.0.0: February 25, 2009リリース
|All
* CyaSSL version rc1-1.0.0: December 17, 2008リリース
|-
|[https://www.nxp.com/ Freescale]
Cryptographic Accelerator and Assurance Module (CAAM)
|
|All
|All
|All
|All
|-
|[http://www.nxp.com/assets/documents/data/en/application-notes/AN2788.pdf Freescale Coldfire SEC]
(NXP MCF547X and MCF548X)
|
|
|All
|
|
|-
|[http://www.nxp.com/assets/documents/data/en/application-notes/AN4307.pdf Freescale Kinetis MMCAU]
K50, K60, K70, and K80 (ARM Cortex-M4 core)
|All
|All
|All
|All
|
|-
|[[STM32|STMicroelectronics STM32]]
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)
|
|
|All
|
|All
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|
|
|All
|
|
|-
|[http://www.microchip.com/design-centers/32-bit Microchip PIC32 MX/MZ]
(Embedded Connectivity)
|All
|
|All
|
|All
|-
|[http://www.ti.com/product/TM4C1294NCPDT Texas Instruments TM4C1294]
(ARM Cortex-M4F)
|All
|All
|All
|All
|All
|-
|[https://www.nordicsemi.com/Products/nRF51-Series-SoC Nordic NRF51] {{Webarchive|url=https://web.archive.org/web/20180619035750/https://www.nordicsemi.com/Products/nRF51-Series-SoC |date=2018-06-19 }}
(Series SoC family, 32-bit ARM Cortex M0 processor core)
|
|
|
|128-bit
|
|-
|[https://www.arm.com/files/downloads/ARMv8_Architecture.pdf ARMv8]
|All
|
|All
|
|All
|-
|[https://www.wolfssl.com/docs/intel-quickassist/ Intel QuickAssist Technology]
|All
|
|All
|
|
|-
|[https://www.wolfssl.com/nxp-kinetis-k8x-ltc-support-for-pki-rsaecc-with-tls13/ Freescale NXP LTC]
|All
|All
|All
|All
|All
|-
|[https://www.wolfssl.com/wolfssl-xilinx-support/ Xilinx Zynq UltraScale+]
|256-bit
|
|
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m3g-evaluation-kit-ra6m3-mcu-group-graphics-expansion-boards Renesas RX65N (R5F565NEHDFB)]
|All
|
|All
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx72n-envision-kit-rx72n-envision-kit Renesas RX72N (RTK5RX72N0C00000BJ)]
|All
|
|All
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus Renesas RX MPU (R5F571MLDDFC)]
|All
|
|All
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/renesas-synergy-platform-mcus/ysdks7g2e40-dk-s7g2-development-kit Renesas Synergy DK-S7G2]
|
|
|128-bit
|
|
|}


- "All" は、128、192、および 256 ビットのサポートされているブロックサイズ。
==ライセンス==
{| class="wikitable"
CyaSSLはGNU General Public License GPLv2.<ref>[http://www.gnu.org/licenses/license-list.html GNU License]</ref>による[[オープンソース]]と商用ライセンスの双方で利用可能である。
|+[[Triple DES|DES/3DES]] 暗号モード
!デバイス
!DES-CBC
!DES-ECB
!3DES-CBC
|-
|[http://www.nxp.com/assets/documents/data/en/application-notes/AN2788.pdf Freescale Coldfire SEC]
(NXP MCF547X and MCF548X)
|64 bit
|
|192 bit
|-
|[http://www.nxp.com/assets/documents/data/en/application-notes/AN4307.pdf Freescale Kinetis MMCAU]
K50, K60, K70, and K80 (ARM Cortex-M4 core)
|64 bit
|
|192 bit
|-
|[[STM32|STMicroelectronics STM32]]
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)
|64 bit
|64 bit (encrypt)
|192 bit
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|192 bit
|
|
|-
|[http://www.microchip.com/design-centers/32-bit Microchip PIC32 MX/MZ]
(Embedded Connectivity)
|64 bit
|
|192 bit
|-
|[http://www.ti.com/product/TM4C1294NCPDT Texas Instruments TM4C1294]
(ARM Cortex-M4F)
|64 bit
|
|192 bit
|}
{| class="wikitable"
|+[[ストリーム暗号]]
!デバイス
!RC4
!ChaCha20
|-
|[[Advanced Vector Extensions|AVX1/AVX2]]
(Intel and AMD x86)
|
|Supported
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|2048 bit max.
|
|}
{| class="wikitable"
|+[[ハッシュアルゴリズム]] サポート
!デバイス
!MD5
!SHA1
!SHA2
!SHA-256
!SHA-384
!SHA-512
|-
|[[Advanced Vector Extensions|AVX1/AVX2]]
(Intel and AMD x86)
|
|
|
|Supported
|Supported
|Supported
|-
|[http://www.nxp.com/assets/documents/data/en/application-notes/AN4307.pdf Freescale Kinetis MMCAU]
K50, K60, K70, and K80 (ARM Cortex-M4 core)
|Supported
|Supported
|
|Supported
|
|
|-
|[[STM32|STMicroelectronics STM32]]
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)
|Supported
|Supported
|
|
|
|
|-
|[http://www.microchip.com/design-centers/32-bit Microchip PIC32 MX/MZ]
(Embedded Connectivity)
|Supported
|Supported
|
|Supported
|
|
|-
|[https://www.arm.com/files/downloads/ARMv8_Architecture.pdf ARMv8]
|
|
|
|Supported
|
|
|-
|[https://www.wolfssl.com/docs/intel-quickassist/ Intel QuickAssist Technology]
|Supported
|Supported
|Supported
|
|
|
|-
|[https://www.wolfssl.com/nxp-kinetis-k8x-ltc-support-for-pki-rsaecc-with-tls13/ Freescale NXP LTC]
|
|Supported
|
|Supported
|
|
|-
|[https://www.wolfssl.com/wolfssl-xilinx-support/ Xilinx Zynq UltraScale+]
|
|
|
|
|Supported
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/renesas-synergy-platform-mcus/ysdks7g2e40-dk-s7g2-development-kit Renesas Synergy DK-S7G2]
|
|Supported
|
|Supported
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m3g-evaluation-kit-ra6m3-mcu-group-graphics-expansion-boards Renesas RX65N (R5F565NEHDFB)]
|
|
|
|Supported
|
|Supported
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx72n-envision-kit-rx72n-envision-kit Renesas RX72N (RTK5RX72N0C00000BJ)]
|Supported
|
|
|Supported
|
|Supported
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus Renesas RX MPU (R5F571MLDDFC)]
|
|
|
|Supported
|Supported
|Supported
|}
{| class="wikitable"
|+鍵演算: 生成と交換、楕円曲線暗号
!デバイス
!RSA
!ECC
!ECC-DHE
!Curve25519
!Ed25519
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|512–4096 bit
|NIST Prime
192, 224, 256, 384, 521
|
|
|
|-
|[http://www.microchip.com/wwwproducts/en/ATECC508A Microchip]/[http://www.atmel.com/Images/Atmel-8923S-CryptoAuth-ATECC508A-Datasheet-Summary.pdf Atmel]
ATECC508A (compatible with any MPU or MCU including: Atmel SMART and AVR MCUs)
|
|256 bit
(NIST-P256)
|
|
|
|-
|[https://www.wolfssl.com/docs/intel-quickassist/ Intel QuickAssist Technology]
|512–4096 bit
|128, 256 bit
|
|
|
|-
|[https://www.wolfssl.com/nxp-kinetis-k8x-ltc-support-for-pki-rsaecc-with-tls13/ Freescale NXP LTC]
|512 - 4096 bit
|128, 256 bit
|128, 256 bit
|256 bit
|256 bit
|-
|[https://www.wolfssl.com/wolfssl-xilinx-support/ Xilinx Zynq UltraScale+]
|2048–4096 bit
|
|
|
|
|}
{| class="wikitable"
|+[[Message authentication code|MAC]] アルゴリズム
!デバイス
!HMAC-MD5
!HMAC-SHA1
!HMAC-SHA2
!HMAC-SHA256
!SHA-3
!Poly1305
|-
|[[Advanced Vector Extensions|AVX1/AVX2]]
(Intel and AMD x86)
|
|
|
|
|
|Supported
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|Supported
|Supported
|
|Supported
|Supported
|
|-
|[http://www.microchip.com/design-centers/32-bit Microchip PIC32 MX/MZ]
(Embedded Connectivity)
|Supported
|Supported
|
|Supported
|
|
|-
|[https://www.wolfssl.com/docs/intel-quickassist/ Intel QuickAssist Technology]
|
|Supported
|Supported
|
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m3g-evaluation-kit-ra6m3-mcu-group-graphics-expansion-boards Renesas RX65N (R5F565NEHDFB)]
|Supported
|
|
|Supported
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx72n-envision-kit-rx72n-envision-kit Renesas RX72N (RTK5RX72N0C00000BJ)]
|
|
|
|
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus Renesas RX MPU (R5F571MLDDFC)]
|Supported
|
|
|Supported
|
|
|-
|[https://www.renesas.com/us/en/products/microcontrollers-microprocessors/renesas-synergy-platform-mcus/ysdks7g2e40-dk-s7g2-development-kit Renesas Synergy DK-S7G2]
|
|
|
|Supported
|
|
|}
{| class="wikitable"
|+[[乱数生成]]
!デバイス
!RNG
|-
|[[STM32|STMicroelectronics STM32]]
F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)
|Supported
|-
|[http://cavium.com/processor_security.html Cavium NITROX]
(III/V PX processors)
|Supported
|-
|[https://www.nordicsemi.com/Products/nRF51-Series-SoC Nordic NRF51] {{Webarchive|url=https://web.archive.org/web/20180619035750/https://www.nordicsemi.com/Products/nRF51-Series-SoC |date=2018-06-19 }}
(Series SoC family, 32-bit ARM Cortex M0 processor core)
|Supported
|}


== ライセンス ==
==受賞==
wolfSSLはGNU General Public License GPLv2またはGPLv3.<ref>[http://www.gnu.org/licenses/license-list.html GNU License]</ref>による[[オープンソース]]と商用ライセンスの双方で利用可能である。
2011 Tomorrow's Technology Today - Mobile Encryption<ref>[http://www.infosecurityproductsguide.com/technology/2011/Security-Innovation.html 2011 Tomorrow's Technology Today - Mobile Encryption]</ref>


==脚注==
==脚注==
73行目: 519行目:


==関連項目==
==関連項目==
{{Portal|FLOSS|[[ファイル:FLOSS_logo.png|41px]]}}
{{Portal|FLOSS|[[ファイル:FLOSS_logo.svg|41px]]}}
*[[Transport Layer Security]]
*[[Transport Layer Security]]
*[[TLS実装の比較]]
*[[:en:Comparison of TLS implementations|Comparison of TLS implementations]]
*[[暗号ライブラリの比較]]
*[[GnuTLS]]
*[[OpenSSL]]


==外部リンク==
==外部リンク==
* [http://www.wolfssl.com/jp wolfSSL/CyaSSLホームページ]
* [https://www.wolfssl.jp wolfSSL日本語ホームページ]
* [http://www.wolfssl.com/yaSSL/Docs.html CyaSSL/wolfSSL Documentation]
* [https://www.wolfssl.com wolfSSL Homepage]
* [http://embedded-computing.com/news/wolfssl-with-chacha20-poly1305 wolfSSL Now With ChaCha20 and Poly1305]
* [http://www.securityinnovation.com/products/encryption/cyassl.shtml CyaSSL - High-Performance SSL, Security Innovation]
* [http://tek-tips.nethawk.net/yassl-secures-embedded-systems-with-tiny-footprints wolfSSL Secures Embedded Systems with Tiny Footprints]


{{暗号ソフトウェア}}
{{暗号ソフトウェア}}
{{SSL/TLS}}
{{SSL/TLS}}
{{DEFAULTSORT:Cyassl}}
{{DEFAULTSORT:WolfSSL}}
[[Category:暗号ソフトウェア]]
[[Category:暗号ソフトウェア]]
[[Category:Transport Layer Security]]
[[Category:オープンソースソフトウェア]]

2024年5月12日 (日) 12:23時点における最新版

wolfSSL
開発元 Todd Ouska
初版 2006年2月19日 (2006-02-19)
最新版 5.5.0 - 2022年8月30日 (21か月前) (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]によるオープンソースと商用ライセンスの双方で利用可能である。

脚注[編集]

関連項目[編集]

外部リンク[編集]