전송 계층 보안 프로토콜은 네트워크 간의 통신을 보호하는 기능을 제공한다. 이 **TLS 구현의 비교**에서는 가장 알려진 라이브러리를 비교한다.

모든 비교 범주에서 설명 섹션에 나열되어있는 각 구현의 안정 버전을 사용하며 이 비교는 TLS 프로토콜에 직접 관련된 기능에 한정한다.

## 개요
1.0.2o - 2018년 3월 27일 (2 개월 전)

## 프로토콜 지원
TLS 프로토콜에는 여러 버전이 존재한다. SSL 2.0은 심각한 약점을 가지고 폐지 예정이다. SSL 3.0 (1996)과 TLS 1.0 (1999)는 2001년에 Serge Vaudenay 의해 설명된 CBC 패딩 두 가지 약점을 그대로 뒤따르고 있다. TLS 1.1 (2006)는 CBC 블록 암호에 임의의 초기화 벡터 (IV)를 사용하도록 전환하여 여러 문제 중 하나만 해결했던 반면, 안전한 pad-mac-encrypt 대신해 mac-pad-encrypt 문제있는 사용은 RFC7366로 처리되었다. TLS 1.1 랜덤 IV에 상당하는 SSL 3.0 및 TLS 1.0의 해결 방법은 2011년 후반 많은 구현에서 널리 채용되고 있었다. 보안 관점에서는 TLS 1.0, 1.1, 1.2의 모든 기존 버전이 기본 프로토콜에서 동등한 강도를 가지고 NIST SP800-57에 따라서 적어도 2030년까지는 128 비트 보안에 적합하다. 2014년에는 SSL 3.0 POODLE의 취약점이 발견되었는데, 이것은 CBC의 알려진 취약점을 이용하여 브라우저에서 사용되는 안전하지 않은 TLS 버전의 폴백 협상을 할 것이다.

TLS 1.2 (2008)는 기본 프로토콜의 최신 버전이며, 디지털 서명에 사용되는 해시를 식별하는 수단을 도입했다. SSL 3.0 의 보수적인 선택 에서 미래의 디지털 서명 에 대해 강력한 해쉬 함수를 사용할 수 있도록 하는 한편, TLS 1.2 프로토콜 변경은 기본 디지털 서명을 고의적으로 상당히 많이 약화시키면서 는 물론 심지어 까지 제공한다.

데이터 그램 전송 계층 보안 (DTLS 혹은 Datagram TLS) 1.0은 패킷 손실과 패킷의 정렬을 허용해야 하는 패킷 기반 전송 계층의 TLS 1.1을 변경 한 것이다. TLS 1.2를 기반으로 한 DTLS 1.2 개정판은 2012년 1월에 공개되었다.

SSL 2.0과 SSL 3.0에는 알려진 취약점이 존재한다. 예측 가능한 IV (간단한 해결 방법이 존재함)을 제외하고 현재 알려진 모든 취약점은 TLS 1.0 / 1.1 / 1.2 와 같은 모든 버전에 영향을 미친다.
**(초안)**
**(초안)**

## 암호화 알고리즘
https://tools.ietf.org/html/rfc5289|제목=|성=|이름=|날짜=|웹사이트=|출판사=|확인날짜=}}
https://tools.ietf.org/html/rfc6367|제목=|성=|이름=|날짜=|웹사이트=|출판사=|확인날짜=}}
**(안전하지 않음)** 
**(proposed)**

**(안전하지 않음)**

**(안전하지 않음)**
**(proposed)**

**(안전하지 않음)**

**Notes**

1.    ^ **''**'' 이 알고리즘은 초안에서 제안된 단계에서 RFC의 TLS 암호 수트로 아직 정의되어 있지 않다.

2.    ^ **''**'' 인증만 암호화 없음

## 폐지된 알고리즘
**(안전하지 않음)**

**(EXPORT 안전하지 않음)**

**(EXPORT 안전하지 않음)**

**(안전하지 않음)**

**(EXPORT 안전하지 않음)**

 **(안전하지 않음)**
**(안전하지 않음)**

**(EXPORT 안전하지 않음**

**(EXPORT 안전하지 않음)**

**(안전하지 않음)**

**(EXPORT 안전하지 않음)**

**Notes**

1.    ^ **''

2.    ^ **''**'' 특정 강력한 암호화 알고리즘 지닌 암호화 소프트웨어의 수출에 대한 미국의 규제를 준수하기 위해 40 비트 강도 암호화 제품군이 단축 된 키 길이에서 작동하도록 설계되었다. 이러한 약한 스위트는 TLS 1.1 및 그 이후에서는 금지됨.

3.    ^ **''에서 금지됨)

4.    ^ **''**'' RC4 공격은 SSL / TLS에서 사용되는 RC4는 안전하지 않게 함.

## 지원되는 타원 곡선
이 섹션에서는 각 구현에서 지원되는 타원 곡선을 목록으로 만든다.
**NIST K-163**

**(1)**
**(2)**
**NIST B-163**

**(3)**
**(4)**
**(5)**
**NIST K-233**

**(6)**
**NIST B-233**

**(7)**
**(8)**
**NIST K-283**

**(9)**
**NIST B-283**

**(10)**
**NIST K-409**

**(11)**
**NIST B-409**

**(12)**
**NIST K-571**

**(13)**
**NIST B-571**

**(14)**
**NIST K-163**

**(1)**
**(2)**
**NIST B-163**

**(3)**
**(4)**
**(5)**
**NIST K-233**

**(6)**
**NIST B-233**

**(7)**
**(8)**
**NIST K-283**

**(9)**
**NIST B-283**

**(10)**
**NIST K-409**

**(11)**
**NIST B-409**

**(12)**
**NIST K-571**

**(13)**
**NIST B-571**

**(14)**
**(15)**
**(16)**
**(17)**
**(18)**
**prime192v1**

**NIST P-192**

**(19)**
**(20)**
**NIST P-244**

**(21)**
**(22)**
**prime256v1**

**NIST P-256**

**(23)**
**NIST P-384**

**(24)**
**NIST P-521**

**(25)**
**(0xFF01)**
**(0xFF02)**
**(15)**
**(16)**
**(17)**
**(18)**
**prime192v1**

**NIST P-192**

**(19)**
**(20)**
**NIST P-244**

**(21)**
**(22)**
**prime256v1**

**NIST P-256**

**(23)**
**NIST P-384**

**(24)**
**NIST P-521**

**(25)**
**(0xFF01)**
**(0xFF02)**
**(26)**
**(27)**
**(28)**
**Ed448-Goldilocks**
**Curve2213**
**Curve3617**
**Curve511187**
**(26)**
**(27)**
**(28)**
**Ed448-Goldilocks**
**Curve2213**
**Curve3617**
**Curve511187**

## 압축
CRIME 공격은 TLS 압축을 이용하기 때문에, 신중한 구현에서는 TLS 레벨에서의 압축은 사용하지 않는다. 또한 HTTP 압축 무관이 공격의 영향을 받지 않지만, 관련 BREACH 공격에 의해 악용되는 점에 주의가 필요하다.
**(안전하지 않음)**

## 확장 기능
이 섹션에서는 각 구현이 지원하는 확장 기능을 나열한다. 안전한 재협상 확장 (Secure Renegotiation extension)은 HTTPS 클라이언트 보안에 중요한 의미를 갖는다. 클라이언트가 TLS 재협상 (TLS renegotiation)을 구현하고 있는지 여부에 관계없이 이 확장을 구현하지 않은 TLS 클라이언트는 공격에 취약하다.

## 어시스트 암호화
이 섹션에서는 암호화를 최적화하는 CPU 명령어 세트의 장점을 살린 구현의 알려진 기능이나 하드웨어 암호화 및 데이터 분리의 접근을 허용하는 디바이스의 사용 시스템에 대해 나열한다.

## 시스템 고유의 백엔드
이 섹션에서는 사용 가능한 운영 체제 고유의 백엔드 또는 다른 구현에서 제공하는 백엔드를 사용하는 구현의 기능을 나타낸다.

## 코드의 종속성
**의존**
nettle

gmp
p11-kit (PKCS # 11)

trousers (TPM)
**의존**

## 개발 환경
SHA1_ *

MD5_ *

EVP_ *

...
SSL_ *