WolfSSL

소문자 wolfssl.com **wolfSSL** (이전 이름 **CyaSSL**)는 임베디드 시스템 개발자의 사용을 타겟으로 한 소형의 휴대성 좋은 내장 SSL / TLS 라이브러리이다. C 언어 로 작성된 TLS (SSL 3.0 TLS 1.0, 1.1, 1.2, 1.3, DTLS 1.0, 1.2)의 오픈 소스를 구현한다. SSL / TLS 클라이언트 라이브러리 및 서버 라이브러리를 포함, SSL 및 TLS에서 정의 된 다양한 API 외에 지원한다. 또한 OpenSSL에서 주로 사용되는 함수와 호환확인날짜=2018-06-27의 인터페이스를 제공하고있다. wolfSSL / CyaSSL의 전신 인 **yaSSL**는 임베디드 환경과 자원의 한정된 리얼 타임 OS를 위한 C ++ 로 작성된 SSL 라이브러리이다.
# 플랫폼
wolfSSL는 Win32 / 64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, 임베디드 Linux, Haiku, OpenWrt, iPhone, Android, Nintendo Wii 및 Gamecube는 DevKitPro 통하며 QNX, MontaVista, Tron variants, NonStop, OpenCL, Micrium의 MicroC / OS-II, FreeRTOS, SafeRTOS, 프리 스케일 MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker 및 embOS에서 이용 가능하다.
# 역사
yaSSL의 시작은 2004년으로 거슬러 올라간다. 2004년 당시 OpenSSL 가 가능했고, 그 라이센스는 *OpenSSL License* 및 *SSLeay license*의 듀얼 라이센스확인날짜=2018-06-27라는 것이 독특한 것이었다. yaSSL은 상용 라이선스와 GPL로 듀얼 라이센스에서 사용할 수 있는 OpenSSL의 대안으로 개발되었다확인날짜=2018-06-27 . yaSSL는 더 정교한 API 상용 개발의 지원, OpenSSL과의 완벽한 호환성을 제공했다. wolfSSL/CyaSSL/yaSSL의 첫 시작은 MySQLurl-status=dead에서 이용되었다. 이 결과, yaSSL은 MySQL과의 번들링을 통해 수백만 단위의 매우 높은 보급을 실현했다.
# 프로토콜
자세한 내용은 Transport Layer Security를 참조 wolfSSL는 다음의 다양한 프로토콜을 실현하고있다 :확인날짜=2018-06-27 · SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 · DTLS 1.0, DTLS 1.2 프로토콜 Notes: · SSL 2.0은 RFC 6176 에 의해 2011년 폐지되었다. WolfSSL은 이를 서포트하지 않는다. · SSL 3.0은 RFC 7568 에 의해 2015년 폐지되었다. POODLE 공격에 대응하여, SSL 3.0은 wolfSSL 3.3.6 이후 기본적으로 비활성화되었으나, 컴파일 시간 옵션으로 사용될 수 있다.확인날짜=2018-06-27
# 알고리즘
wolfSSL는 다음의 암호화 라이브러리를 사용하고있다 :
## wolfCrypt
기본적으로 wolfSSL 표준에서는 wolfCrypt에서 제공되는 암호화 서비스를 사용한다.확인날짜=2018-06-27 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, BLAKE2, RIPEMD-160, Poly1305, 난수 생성 , 대규모 정수 연산베이스 16/64 인코딩 / 디코딩을 지원한다. 유럽의 eSTREAM 공용 도메인 스트림 암호 Rabbit 도 포함되어있다. Rabbit은 고성능, 높은 부하 환경에서의 암호화 스트리밍 미디어에 잠재적으로 유용성이 있다. wolfCrypt는 SSL의 일종을 위해 필요한 기능에 특화하는 한편, 최대한의 이식성을 얻을 수 있도록 배려되어있다. wolfCrypt는 또한 Curve25519과 Ed25519을 지원한다. wolfCrypt는 MIT Kerberos확인날짜=2018-06-27(빌드 옵션 사용)를 포함하여 몇 가지 소프트웨어 패키지와 라이브러리의 백엔드 암호화 구현으로 활약하고있다.
## NTRU
CyaSSL +에는 NTRU언어=en 공개 키 암호화가 포함되어 있다. CyaSSL +에의 NTRU의 추가는 yaSSL과 Security Innovation의 파트너십의 결과였다. NTRU는 다른 공개 키 암호화와 같은 수준의 보안을 작은 비트 수로 제공하므로 모바일 및 임베디드 환경에서 잘 작동한다. 게다가 TRU 또는quantum attack에 대해서도 취약점이 알려져 있지 않다. TRU를 사용하하는 암호화 세트는 CyaSSL + 을 비롯하여 AES-256, RC4 또는 HC-128 등에서 사용 가능하다.
# SGX
wolfSSL는 인텔 SGX (소프트웨어 보호 확장)언어=en을 지원한다. 인텔 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 url=https://web.archive.org/web/20170316114001/http://www.nxp.com/assets/documents/data/en/application-notes/AN2788.pdf (NXP MCF547X 및 MCF548X)

{| |- |DES -CBC |64 bit |- |3DES -CBC |192 bit |- |AES -CBC |128, 192, 256 bit |- | | |}

> Freescale Kinetis MMCAU url=https://web.archive.org/web/20170316114203/http://www.nxp.com/assets/documents/data/en/application-notes/AN4307.pdf 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 url=https://web.archive.org/web/20111111161327/https://www.arm.com/files/downloads/ARMv8_Architecture.pdf

{| |- |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확인날짜=에 상용 라이센스를 받아 이용 가능하다.