Mbed TLS

Mbed TLS
개발자트러스티드펌웨어가 관리하는 협력 프로젝트 (이전에는 Arm)
발표일2009년 1월 15일 (2009-01-15)
프로그래밍 언어C
운영 체제멀티 플랫폼
종류보안 라이브러리
라이선스아파치 2.0 또는 GPL 2.0 이상 이중 라이선스
웹사이트www.trustedfirmware.org/projects/mbed-tls/

Mbed TLS(이전 명칭 PolarSSL)는 TLS 및 SSL 프로토콜과 그에 필요한 암호화 알고리즘 및 지원 코드를 구현한 라이브러리이다. 아파치 라이선스 2.0 버전으로 배포된다. 웹사이트에 명시된 Mbed TLS의 목표는 "이해하기 쉽고, 사용하기 쉬우며, 통합과 확장이 용이하게 하는 것"이다.

역사

PolarSSL SSL 라이브러리는 XySSL SSL 라이브러리의 공식적인 후속 포크이다. XySSL은 프랑스의 화이트햇 해커인 크리스토프 드빈에 의해 만들어졌으며, 2006년 11월 1일에 GNU GPL v2와 BSD 라이선스로 처음 공개되었다. 2008년, 크리스토프 드빈이 더 이상 XySSL을 지원할 수 없게 되자 폴 바커가 PolarSSL이라는 이름으로 공식 포크를 만들 수 있도록 허용하였다. 2014년 11월, PolarSSL은 ARM에 인수되었다.

2011년, 네덜란드 정부는 오픈VPN과 PolarSSL을 통합한 OpenVPN-NL을 승인하였다. 이 버전의 OpenVPN은 제한(Restricted) 수준까지의 정부 통신을 보호하는 용도로 사용이 승인되었다.

버전 1.3.10 출시와 함께, PolarSSL은 Mbed 생태계 내에서의 적합성을 더 잘 보여주기 위해 Mbed TLS로 브랜드명이 변경되었다. 버전 2.1.0부터 라이브러리는 GPL v2와 아파치 라이선스 v2.0을 모두 사용할 수 있게 되었다.

2020년, Mbed TLS는 트러스티드펌웨어 프로젝트에 합류하였다.

라이브러리

핵심 SSL 라이브러리는 C 프로그래밍 언어로 작성되었으며, SSL 모듈과 기본적인 암호화 함수를 구현하고 다양한 유틸리티 기능을 제공한다. OpenSSL 및 다른 TLS 구현들과 달리, Mbed TLS는 WolfSSL과 마찬가지로 소형 임베디드 장치에 맞게 설계되어 최소한의 완전한 TLS 스택이 60KB 미만의 프로그램 공간과 64KB 미만의 RAM을 요구한다. 또한 매우 모듈화되어 있어 암호화 함수와 같은 각 구성 요소를 프레임워크의 나머지 부분과 독립적으로 사용할 수 있다. 마이크로소프트 윈도우 및 리눅스용 버전도 제공된다. Mbed TLS는 외부 의존성 없이 C 프로그래밍 언어로 작성되었기 때문에 대부분의 운영체제 및 아키텍처에서 작동한다.

버전 1.3.0부터는 "기존 임베디드 운영체제와의 통합을 더 원활하게 지원하기 위해" 메모리 할당 및 스레딩을 위한 추상화 계층이 핵심부에 추가되었다.

설계 우선순위

Mbed TLS 라이브러리는 코드의 가독성, 문서화, 자동 회귀 테스트, 느슨하게 결합된 설계 및 이식 가능한 코드에 중점을 둔다.

개발 문서

개발자를 위해 다음과 같은 문서가 제공된다.

  • 고수준 설계(High Level Design): UML 다이어그램, 유스 케이스, 공통 시나리오에서의 상호작용을 포함하여 라이브러리 내부의 다양한 모듈에 대한 고수준 설명.
  • API 문서: 라이브러리의 헤더 파일에서 Doxygen으로 생성된 문서.
  • 소스 코드 문서: 구조, 결정 사항 및 코드 구성을 명확히 하기 위해 문서화된 라이브러리 소스 코드.

자동 테스트

Mbed TLS의 자동 테스트에는 다음이 포함된다.

  • 소스 코드와 함께 5,000개 이상의 자동화된 테스트(라이브러리 1.3.2 버전 기준)를 포함하는 테스트 프레임워크가 제공되어, 여러 플랫폼에서 회귀 분석 및 호환성을 테스트한다.
  • OpenSSL 및 GnuTLS와의 SSL 통신 호환성을 테스트하는 호환성 스크립트(compat.sh).
  • Travis CI 및 젠킨스 기반의 지속적 통합 시스템.

사용

Mbed TLS는 대규모 오픈 소스 프로젝트의 SSL 구성 요소로 사용된다.

플랫폼

Mbed TLS는 현재 리눅스, 마이크로소프트 윈도우, MacOS, OpenWrt, 안드로이드, iOS, RISC OS 및 FreeRTOS를 포함한 대부분의 운영체제에서 사용할 수 있다. 지원되는 칩셋은 최소 ARM, x86, PowerPC, MIPS를 포함한다.

알고리즘

Mbed TLS는 여러 가지 암호화 알고리즘을 지원한다.

암호화 해시 함수
MD2, MD4, MD5, RIPEMD, SHA-1, SHA-2, SHA-3
MAC 모드
CMAC, HMAC
암호
AES, ARIA, 블로피시, 카멜리아, ChaCha, DES, RC4, 트리플 DES, XTEA
암호 운용 방식
ECB, CBC, CFB, CTR, OFB, XTS
인증된 암호 방식 모드
CCM, GCM, 미국 국립표준기술연구소 키 싸기,
ChaCha20-Poly1305
키 유도
HKDF
키 스트레칭
PBKDF2, PKCS #5 PBE2, PKCS #12 키 유도
공개 키 암호 방식
RSA, 디피-헬먼 키 교환,
타원곡선 암호, 타원곡선 디피-헬먼, 타원곡선 DSA, 타원곡선 J-PAKE

같이 보기

각주

  1. ↑ “About us”. PolarSSL. 2014년 7월 2일에 원본 문서에서 보존된 문서. 2014년 5월 8일에 확인함.
  2. ↑ “PolarSSL is now a part of ARM”. 2014년 11월 24일. 2014년 11월 24일에 원본 문서에서 보존된 문서. 2014년 12월 5일에 확인함.
  3. ↑ 보관됨 1월 29, 2013 - 웨이백 머신
  4. ↑ “mbed TLS 1.3.10 released”. 2015년 2월 8일. 2015년 2월 9일에 원본 문서에서 보존된 문서. 2015년 2월 9일에 확인함.
  5. ↑ “Download”. 《Mbed TLS》. Arm. 2019년 3월 24일에 원본 문서에서 보존된 문서. 2021년 4월 5일에 확인함.
  6. ↑ “Hafnium, MbedTLS, PSA Crypto join the Trusted Firmware Project”. 《TrustedFirmware》. TrustedFirmware. 2020년 8월 12일에 원본 문서에서 보존된 문서. 2021년 4월 5일에 확인함.
  7. ↑ “New features in PolarSSL 1.3.0 – Tech Updates”. Polarssl.org. 2014년 5월 8일에 원본 문서에서 보존된 문서. 2014년 5월 8일에 확인함.
  8. ↑ “PolarSSL Features: easy to use SSL library and well-documented”. Polarssl.org. 2014년 7월 2일에 원본 문서에서 보존된 문서. 2014년 5월 8일에 확인함.
  9. ↑ “PolarSSL High Level Design”. Polarssl.org. 2014년 7월 2일에 원본 문서에서 보존된 문서. 2014년 5월 8일에 확인함.
  10. ↑ “v1.3.6 source code documentation – API Documentation”. PolarSSL. 2014년 6월 25일에 원본 문서에서 보존된 문서. 2014년 5월 8일에 확인함.
  11. ↑ “polarssl/polarssl — GitHub”. Github.com. 2014년 5월 8일에 확인함.
  12. ↑ executable file (2020년 4월 26일). “mbedtls/compat.sh at development · ARMmbed/mbedtls · GitHub”. Github.com. 2021년 4월 5일에 확인함.
  13. ↑ “Mbed TLS continuous integration”. 《Trusted Firmware》. Trusted Firmware. 2021년 4월 5일에 확인함.
  14. ↑ “Connecting with the 21st century”. 《RISC OS Open》. Steve Revill. 2022년 4월 19일에 확인함.

외부 링크