'''wolfSSL''' (이전 이름 '''CyaSSL''')는 임베디드 시스템 개발자의 사용을 타겟으로 소형의 휴대성 좋은 내장 SSL TLS 라이브러리이다. 언어 작성된 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를 위한 ++ 작성된 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과의 완벽한 호환성을 제공했다. 시작은 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 프로세서 제품군) 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, 시리즈 (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 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에 상용 라이센스를 받아 이용 가능하다. == 각주 == 분류:C 라이브러리 분류:암호 소프트웨어 분류:전송 계층 보안 구현