WolfSSL

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에서 주로 사용되는 함수와 호환의 인터페이스를 제공하고있다.

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의 듀얼 라이센스라는 것이 독특한 것이었다. yaSSL은 상용 라이선스와 GPL로 듀얼 라이센스에서 사용할 수 있는 OpenSSL의 대안으로 개발되었다 . yaSSL는 더 정교한 API 상용 개발의 지원, OpenSSL과의 완벽한 호환성을 제공했다. wolfSSL/CyaSSL/yaSSL의 첫 시작은 MySQL에서 이용되었다. 이 결과, yaSSL은 MySQL과의 번들링을 통해 수백만 단위의 매우 높은 보급을 실현했다.

프로토콜 
자세한 내용은 Transport Layer Security를 참조

wolfSSL는 다음의 다양한 프로토콜을 실현하고있다 :

·        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 이후 기본적으로 비활성화되었으나, 컴파일 시간 옵션으로 사용될 수 있다.

알고리즘  
wolfSSL는 다음의 암호화 라이브러리를 사용하고있다 :

wolfCrypt 
기본적으로 wolfSSL 표준에서는 wolfCrypt에서 제공되는 암호화 서비스를 사용한다. 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(빌드 옵션 사용)를 포함하여 몇 가지 소프트웨어 패키지와 라이브러리의 백엔드 암호화 구현으로 활약하고있다.

NTRU 
CyaSSL +에는 NTRU 공개 키 암호화가 포함되어 있다. CyaSSL +에의 NTRU의 추가는  yaSSL과 Security Innovation의 파트너십의 결과였다. NTRU는 다른 공개 키 암호화와 같은 수준의 보안을 작은 비트 수로 제공하므로 모바일 및 임베디드 환경에서 잘 작동한다. 게다가 TRU 또는quantum attack에 대해서도 취약점이 알려져 있지 않다. TRU를 사용하하는 암호화 세트는 CyaSSL + 을 비롯하여 AES-256, RC4 또는 HC-128 등에서 사용 가능하다.

SGX 
wolfSSL는 인텔 SGX (소프트웨어 보호 확장)을 지원한다. 인텔 SGX는 공격 대상 영역을 줄이고 기존의 코드에서 눈에 띄는 성능 저하 없이 높은 수준의 안전성을 확보하고있다.

암호화 하드웨어 가속 지원 
Intel AES-NI (Xeon 및 Core 프로세서 제품군)

AVX1 / AVX2 (Intel 및 AMD x86)

RDRAND (Intel 64 IA-32 아키텍처)

RDSEED (Intel Broadwell, AMD Zen)

Freescale Coldfire SEC  (NXP MCF547X 및 MCF548X)

Freescale Kinetis MMCAU  K50, K60, K70 및 K80 (ARM Cortex-M4 core)

ST 마이크로 일렉트로닉스 STM32 F1, F2, F4, L1, W 시리즈 (ARM Cortex - M3 / M4)

CubeMX 및 Std Per LibCavium NITROX (III / V PX 프로세서)

Microchip PIC32 MX / MZ (Embedded Connectivity)

Texas Instruments TM4C1294 (ARM Cortex-M4F)

Nordic NRF51 (Series SoC family 32-bit ARM Cortex M0 processor core)

Microchip / Atmel ATECC508A (MPU 또는 MCU 호환)

ARMv8 

Intel QuickAssist 기술

Freescale NXP LTC

라이센스 
wolfSSL는 오픈 소스로, GNU General Public License GPLv2에 상용 라이센스를 받아 이용 가능하다.

각주 

C 라이브러리
암호 소프트웨어
전송 계층 보안 구현