wolfSSL

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

WolfSSL
개발자 Todd Ouska
발표일 2006년 2월 19일 (2006-02-19)[1]
최근 버전 3.15.3 / 2018년 6월 22일[2]
프로그래밍 언어 C
운영 체제 멀티 플랫폼
종류 보안 라이브러리
라이선스 GNU GPLv2 또는 상용 라이선스[3][4]
웹사이트 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 클라이언트 라이브러리 및 서버 라이브러리를 포함, SSLTLS 에서 정의 된 다양한 API 외에 지원한다. 또한 OpenSSL 에서 주로 사용되는 함수와 호환 [5] 의 인터페이스를 제공하고있다.

wolfSSL / CyaSSL의 전신 인 yaSSL는 임베디드 환경과 자원의 한정된 리얼 타임 OS를 위한 C ++ 로 작성된 SSL 라이브러리이다.

플랫폼[편집]

wolfSSL는 Win32 / 64 , Linux , macOS , Solaris , ThreadX, VxWorks , FreeBSD , NetBSD , OpenBSD , 임베디드 Linux , Haiku , OpenWrt , iPhone , Android , Nintendo WiiGamecube 는 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 LicenseSSLeay license의 듀얼 라이센스[6]라는 것이 독특한 것이었다. yaSSL은 상용 라이선스와 GPL로 듀얼 라이센스에서 사용할 수있는 OpenSSL의 대안으로 개발되었다 [7] . yaSSL는 더 정교한 API 상용 개발의 지원, OpenSSL과의 완벽한 호환성을 제공했다 [5]. wolfSSL/CyaSSL/yaSSL의 첫 시작은 MySQL [8]에서 이용되었다. 이 결과, yaSSL은 MySQL과의 번들링을 통해 수백만 단위의 매우 높은 보급을 실현했다.

프로토콜[편집]

자세한 내용은 Transport Layer Security 를 참조

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

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

알고리즘[편집]

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

wolfCrypt[편집]

기본적으로 wolfSSL 표준에서는 wolfCrypt 에서 제공되는 암호화 서비스를 사용한다.[11] 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는 또한 Curve25519Ed25519 을 지원한다.

wolfCrypt 는 MIT Kerberos [12](빌드 옵션 사용) 를 포함하여 몇 가지 소프트웨어 패키지와 라이브러리의 백엔드 암호화 구현으로 활약하고있다.

NTRU[편집]

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

SGX[편집]

wolfSSL는 인텔 SGX (소프트웨어 보호 확장)[14]을 지원한다. 인텔 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, 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

CubeMXStd 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

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 [15]에 상용 라이센스를 받아 이용 가능하다.

각주[편집]

  1. “wolfSSL Changelog | wolfSSL Embedded SSL/TLS Library Documentation”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  2. “wolfSSL Changelog | wolfSSL Embedded SSL/TLS Library Documentation”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  3. http://www.cryptlib.com/security-faq
  4. https://www.gnu.org/licenses/license-list.html#BerkeleyDB
  5. “Embedded Communications Products | wolfSSL SSL/TLS Library”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  6. Inc., OpenSSL Foundation,. “/source/license.html” (영어). 2018년 6월 27일에 확인함. 
  7. “Licensing Information | wolfSSL Embedded SSL/TLS Library”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  8. “MySQL :: MySQL 5.7 Reference Manual :: 6.4.5 Building MySQL with Support for Encrypted Connections” (영어). 2018년 6월 27일에 확인함. 
  9. “wolfSSL User Manual | Chapter 4: Features | Documentation”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  10. “wolfSSL 3.6.6 is Now Available - wolfSSL”. 《wolfSSL》 (영어). 2015년 8월 24일. 2018년 6월 27일에 확인함. 
  11. “wolfSSL User Manual | Chapter 10: wolfCrypt Usage Reference | Docs”. 《wolfSSL》 (영어). 2018년 6월 27일에 확인함. 
  12. “Kerberos: The Network Authentication Protocol”. 2018년 6월 27일에 확인함. 
  13. “wolfSSL” (영어). 2018년 6월 22일. 
  14. “Software Guard Extensions” (영어). 2018년 6월 20일. 
  15. “Various Licenses and Comments about Them”.