「WolfSSL」の版間の差分
Claw of Slime (会話 | 投稿記録) |
m 商標修正 |
||
(21人の利用者による、間の35版が非表示) | |||
1行目: | 1行目: | ||
{{小文字}} |
|||
{{改名提案|wolfSSL|date=2015年3月}} |
|||
{{primary sources|date=September 2010}} |
|||
{{Infobox software |
{{Infobox software |
||
| name = |
| name = wolfSSL |
||
| logo = |
| logo = |
||
| screenshot = |
| screenshot = |
||
| caption = |
| caption = |
||
| developer = Todd Ouska |
| developer = Todd Ouska |
||
| released = {{Start date|2006|02|19}} |
| 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| |
| website = {{URL|https://www.wolfssl.jp}} |
||
}} |
}} |
||
''' |
'''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ライブラリである。 |
|||
==プラットフォーム== |
==プラットフォーム== |
||
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の始まりは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への組込みを通して数百万単位の極めて広い普及を実現した。 |
|||
現在、 |
現在、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}} |
||
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は既定では無効とされている。 |
||
==アルゴリズム== |
==アルゴリズム== |
||
wolfSSLは以下の暗号化ライブラリーを使用している: |
|||
===wolfCrypt=== |
===wolfCrypt=== |
||
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+ |
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. |
{{Portal|FLOSS|[[ファイル:FLOSS_logo.svg|41px]]}} |
||
*[[Transport Layer Security]] |
*[[Transport Layer Security]] |
||
*[[TLS実装の比較]] |
|||
*[[:en:Comparison of TLS implementations|Comparison of TLS implementations]] |
|||
*[[暗号ライブラリの比較]] |
|||
*[[GnuTLS]] |
|||
*[[OpenSSL]] |
|||
==外部リンク== |
==外部リンク== |
||
* [ |
* [https://www.wolfssl.jp wolfSSL日本語ホームページ] |
||
* [ |
* [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: |
{{DEFAULTSORT:WolfSSL}} |
||
[[Category:暗号ソフトウェア]] |
[[Category:暗号ソフトウェア]] |
||
[[Category:Transport Layer Security]] |
|||
[[Category:オープンソースソフトウェア]] |
2024年5月12日 (日) 12:23時点における最新版
開発元 | Todd Ouska |
---|---|
初版 | 2006年2月19日 |
最新版 | 5.5.0 - 2022年8月30日[1] [±] |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS | マルチプラットフォーム |
サポート状況 | Active |
種別 | セキュリティ・ライブラリー |
ライセンス | GNU GPL2 または 商用ライセンス |
公式サイト |
www |
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で主に利用されている関数と互換[2]のインタフェースを実現している。
wolfSSL/CyaSSLの前身であるyaSSLは、組み込み環境やリソースの限られたリアルタイムOS向けのC++で書かれたSSLライブラリである。
プラットフォーム[編集]
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 および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でのデュアルライセンス[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 2.0は安全性の問題から含まれていない。また、SSL 3.0は既定では無効とされている。
アルゴリズム[編集]
wolfSSLは以下の暗号化ライブラリーを使用している:
wolfCrypt[編集]
wolfSSLは標準ではwolfCrypt[9]を使用する。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は、例えば ケルベロス認証[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-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-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 |
デバイス | 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]によるオープンソースと商用ライセンスの双方で利用可能である。
脚注[編集]
- ^ “wolfSSL ChangeLog”. 2022年9月5日閲覧。
- ^ a b wolfSSL - Embedded Communications Products
- ^ OpenSSL: Source, License
- ^ wolfSSL - License
- ^ MySQL, Using SSL Connections
- ^ wolfSSL - Community
- ^ Daniel Stenberg, founder and Chief Architect of cURL, joins wolfSSL
- ^ wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features)
- ^ wolfSSL - Docs | CyaSSL Manual - Chapter 10 (CTaoCrypt Usage Reference)
- ^ Kerberos: The Network Authentication Protocol
- ^ a b NTRU CryptoLabs
- ^ GNU License