| RFC 10015 | (D)TLS에서 사용되지 않는 키 교환 폐기 | 2026년 7월 |
| Aviram | 표준 트랙 | [페이지] |
(D)TLS 1.2에 대해 이 문서는 두 가지 키 교환 방식, 즉 유한체상의 Diffie-Hellman(DH)과 RSA의 사용을 폐기한다. 또한 정적 Elliptic Curve Diffie-Hellman(ECDH) 암호 스위트의 사용을 권장하지 않는다.¶
이러한 규정은 (D)TLS 1.2에만 적용된다. (D)TLS 1.0과 TLS 1.1은 RFC 8996에 의해 폐기되었으며, (D)TLS 1.3은 영향을 받는 알고리즘을 사용하지 않거나 관련 구성 옵션을 공유하지 않기 때문이다. (DTLS 버전 1.1은 존재하지 않는다.)¶
이 문서는 RFC 4162, 4279, 4346, 4785, 5246, 5288, 5289, 5469, 5487, 5932, 6209, 6347, 6367, 6655, 7905, 8422 및 9325를 업데이트하여 (D)TLS 1.2 연결에서 위의 키 교환 방식을 사용하는 암호 스위트의 사용을 폐기하거나 권장하지 않도록 한다.¶
이 문서는 인터넷 표준 트랙 문서이다.¶
이 문서는 인터넷 엔지니어링 태스크 포스 (IETF)의 산출물이다. 이 문서는 IETF 커뮤니티의 합의를 나타낸다. 공개 검토를 거쳤으며 인터넷 엔지니어링 운영 그룹 (IESG)의 발행 승인을 받았다. 인터넷 표준에 관한 추가 정보는 RFC 7841의 섹션 2에서 확인할 수 있다.¶
이 문서의 현재 상태, 정오표 및 피드백 제공 방법에 관한 정보는 https://www.rfc-editor.org/info/rfc10015에서 확인할 수 있다.¶
Copyright (c) 2026 IETF Trust 및 문서 저자로 식별된 사람들. 모든 권리 보유.¶
이 문서에는 BCP 78과 이 문서의 발행일에 유효한 IETF 문서 관련 IETF Trust 법적 조항 (https://trustee.ietf.org/license-info)이 적용된다. 이 문서와 관련된 사용자의 권리와 제한 사항이 설명되어 있으므로 이러한 문서를 주의 깊게 검토하기 바란다. 이 문서에서 추출한 코드 구성 요소에는 Trust 법적 조항의 섹션 4.e에 설명된 개정 BSD 라이선스 문구가 포함되어야 하며, 개정 BSD 라이선스에 설명된 대로 보증 없이 제공된다.¶
(D)TLS 1.2는 RSA, 유한체상의 Diffie-Hellman (DH) 및 Elliptic Curve Diffie-Hellman(ECDH)을 포함한 다양한 키 교환 알고리즘을 지원한다.¶
모든 그룹에서의 DH 키 교환에는 일회성 방식과 비일회성 방식이 있다. 비일회성 DH 알고리즘은 인증하는 피어의 인증서에 포함된 정적 DH 공개 키를 사용한다. 관련 논의는 [RFC4492]를 참조한다. 이와 대조적으로 일회성 DH 알고리즘은 핸드셰이크에서 전송되고 피어의 인증서로 인증되는 일회성 DH 공개 키를 사용한다. 일회성 및 비일회성 유한체 DH 알고리즘은 각각 DHE와 DH(또는 FFDHE와 FFDH)라고 하며, 일회성 및 비일회성 타원 곡선 DH 알고리즘은 각각 ECDHE와 ECDH라고 한다 [RFC4492].¶
일반적으로 비일회성 암호 스위트는 순방향 비밀성을 제공하지 않으므로 권장되지 않는다. 또한 유한체 DH에 대한 Raccoon 공격 [RACCOON]이 보여 주었듯이, 공개 키 재사용은 (비일회성 암호 스위트를 통하거나 일회성 암호 스위트에서 키를 재사용하는 방식으로) 연결 비밀을 유출할 수 있는 타이밍 부채널을 초래할 수 있다. ECDH의 경우에도 잘못된 곡선 공격이 비밀 재사용을 악용하여 보안을 깨뜨리며 [ICA], 이는 공개 키 재사용의 위험을 더욱 분명히 보여 준다. 구현에서 두 부채널을 모두 피할 수는 있지만, 경험에 따르면 실제 구현은 필요한 완화 조치의 복잡성과 수로 인해 이러한 공격을 방어하지 못할 수 있다.¶
또한 RSA 키 교환에는 구현 선택과 무관한 보안 문제뿐 아니라 보안 대책을 올바르게 구현하기 어렵다는 점에서 순전히 발생하는 문제도 있다.¶
대략적으로 살펴보면, (D)TLS 1.2의 FFDHE에 영향을 미치는 문제는 다음과 같다.¶
FFDHE에는 그룹을 협상하는 메커니즘이 없고 일부 구현은 작은 그룹 크기만 지원하기 때문에 상호 운용성 문제가 있다 ([RFC7919], 섹션 1 참조).¶
FFDHE 그룹에는 작은 부분군이 있을 수 있으며, 이는 여러 공격을 가능하게 한다 [SUBGROUPS]. 사용자 정의 비표준 FFDHE 그룹이 제시되면 핸드셰이크 중인 클라이언트는 서버가 선택한 그룹에 이 문제가 없는지 실질적으로 검증할 수 없다. 또한 이러한 핸드셰이크가 클라이언트가 수용할 수 있는 다른 키 교환 매개변수로 대체되는 메커니즘도 없다. 사용자 정의 FFDHE 그룹은 널리 사용된다([WEAK-DH]에 기반한 조언의 결과이다). 따라서 클라이언트는 사용자 정의이므로 잠재적으로 위험한 그룹을 제시하는 핸드셰이크를 단순히 거부할 수 없다.¶
실제로 일부 운영자는 폭넓은 지원을 보장할 수 있는 최대 크기이므로 1024비트 FFDHE 그룹을 사용한다 ([RFC7919], 섹션 1 참조). 이 크기는 현재 795비트인 이산 로그 기록에 비해 보안 여유가 작다 [DLOG795].¶
앞의 내용을 더 설명하면, 극소수의 매우 큰 계산만으로도 공격자는 비교적 많은 비율의 FFDHE 트래픽 (즉, 특정 표준화된 그룹을 사용해 암호화된 트래픽)을 저렴하게 복호화할 수 있다 [WEAK-DH].¶
비밀이 완전히 일회성이 아니면 FFDHE는 Raccoon 부채널 공격에 취약하다 [RACCOON]. (상수 시간 완화 조치를 사용하지 않는 한 FFDH는 본질적으로 Raccoon 공격에 취약하다는 점에 유의한다.)¶
(D)TLS 1.2의 RSA 키 교환에 영향을 미치는 문제는 다음과 같다.¶
RSA 키 교환은 구조적으로 순방향 비밀성을 제공하지 않는다.¶
RSA 키 교환은 Bleichenbacher 공격에 취약할 수 있다 [BLEI]. 관련 대책을 올바르게 구현하기 어렵기 때문에 이 공격의 변종이 몇 년마다 발생한다는 사실이 경험으로 확인되었다 ([ROBOT], [NEW-BLEI] 및 [DROWN] 참조).¶
위의 문제에 더해, (D)TLS 1.2에는 키의 도메인 분리를 위한 편리한 메커니즘이 없다. 따라서 Bleichenbacher 공격에 취약한 단일 엔드포인트는 동일한 RSA 키를 공유하는 모든 엔드포인트에 영향을 미친다 ([XPROT] 및 [DROWN] 참조).¶
이 문서는 [RFC4162], [RFC4279], [RFC4346], [RFC4785], [RFC5246], [RFC5288], [RFC5289], [RFC5469], [RFC5487], [RFC5932], [RFC6209], [RFC6347], [RFC6367], [RFC6655], [RFC7905], [RFC8422] 및 [RFC9325]를 업데이트하여, 섹션 5.2, 5.3, 5.4 및 5.5에 나열된 것처럼 영향을 받는 암호 스위트의 사용을 폐기하거나 권장하지 않음으로써 위의 문제를 해결한다.¶
BCP 195 [RFC8996] [RFC9325]에는 (D)TLS 프로토콜 (특히 (D)TLS 1.2) 사용자를 위한 최신 IETF 권장사항이 포함되어 있으며, 이 문서는 여러 지점에서 [RFC9325]를 업데이트한다. 섹션 6에서는 정확한 차이점을 설명한다. BCP 문서의 다른 모든 권장사항은 여전히 유효하다.¶
클라이언트는 (D)TLS 1.2 연결에서 비일회성 FFDH 암호 스위트를 제공해서는 안 되며, 서버는 이를 선택해서도 안 된다. ((D)TLS 1.0과 TLS 1.1은 [RFC8996]에 의해 폐기되었고, (D)TLS 1.3은 FFDH를 지원하지 않는다는 점에 유의한다 [RFC9846] [RFC9147].) 여기에는 섹션 5.1의 표 1에 나열된 모든 암호 스위트가 포함된다.¶
클라이언트는 (D)TLS 1.2 연결에서 비일회성 ECDH 암호 스위트를 제공하지 않아야 하며, 서버는 이를 선택하지 않아야 한다. (이 요구사항은 이미 [RFC9325]에 존재한다. (D)TLS 1.0과 TLS 1.1은 [RFC8996]에 의해 폐기되었으며, (D)TLS 1.3은 ECDH를 지원하지 않는다는 점에 유의한다 [RFC9846] [RFC9147].) 여기에는 섹션 5.2의 표 2에 나열된 모든 암호 스위트가 포함된다.¶
또한 비일회성 DH의 사용을 피하기 위해 클라이언트는 고정 DH 매개변수가 있는 인증서를 사용하지 않아야 하며, 서버는 이를 수락하지 않아야 한다. 이러한 인증서 유형은 섹션 5.5에 나열된 rsa_fixed_dh, dss_fixed_dh, rsa_fixed_ecdh 및 ecdsa_fixed_ecdh이다. 이러한 값은 1.2 이하의 (D)TLS 버전에만 적용된다.¶
클라이언트는 (D)TLS 1.2 연결에서 FFDHE 암호 스위트를 제공해서는 안 되며, 서버는 이를 선택해서도 안 된다. 여기에는 섹션 5.3의 표 3에 나열된 모든 암호 스위트가 포함된다. ((D)TLS 1.0과 TLS 1.1은 [RFC8996]에 의해 폐기되었다는 점에 유의한다.) (D)TLS 1.3의 FFDHE 암호 스위트에는 섹션 1에 제시된 문제가 없다. [RFC9846] 및 [RFC9147]을 참조한다. 따라서 클라이언트와 서버는 (D)TLS 1.3 연결에서 FFDHE 암호 스위트를 제공해도 된다.¶
클라이언트는 (D)TLS 1.2 연결에서 RSA 암호 스위트를 제공해서는 안 되며, 서버는 이를 선택해서도 안 된다. ((D)TLS 1.0과 TLS 1.1은 [RFC8996]에 의해 폐기되었고, (D)TLS 1.3은 정적 RSA를 지원하지 않는다는 점에 유의한다 [RFC9846] [RFC9147].) 여기에는 섹션 5.4의 표 4에 나열된 모든 암호 스위트가 포함된다. 이러한 암호 스위트는 이전에 "TLS Cipher Suites" 레지스트리에서 권장되지 않는 것으로 표시되었다는 점에 유의한다 [TLS-REGISTRY].¶
다음 하위 섹션에서는 "TLS Cipher Suites" 및 "TLS ClientCertificateType Identifiers" 레지스트리 [TLS-REGISTRY]의 "Recommended" 열에서 "D"를 사용하는 것을 언급한다. "D"의 사용에 관한 정보는 [RFC9847]을 참조한다.¶
IANA는 "Recommended" 열을 "D"로 설정하고 다음 "TLS Cipher Suites" 레지스트리 항목에 대한 참조로 이 문서를 추가했다 [TLS-REGISTRY]:¶
| 암호 스위트 | 참조 |
|---|---|
| TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_DH_DSS_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_DH_RSA_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 | [RFC4346] [RFC6347] |
| TLS_DH_anon_WITH_RC4_128_MD5 | [RFC5246] [RFC6347] |
| TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_DH_anon_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_DH_anon_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_DH_DSS_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_DH_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_DH_anon_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_DH_DSS_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_DH_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_DH_anon_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_DH_DSS_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_DH_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_DH_DSS_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_DH_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_DH_anon_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_DH_anon_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_DH_DSS_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_DH_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_DH_anon_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_DH_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_DH_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_DH_DSS_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_DH_DSS_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_DH_anon_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_DH_anon_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
[RFC9325]는 구현이 다음 암호 스위트를 협상하지 않아야 한다고 규정하며, 이에 따라 이들은 IANA "TLS Cipher Suites" 레지스트리 [TLS-REGISTRY]의 "Recommended" 열에 "N"으로 표시되었다. 이 문서에 따라 IANA는 [RFC9847]에 맞추어 "Recommended" 열이 "D"가 되도록 업데이트하고 (각 항목의 참조로 이 문서를 추가했다). 이 문서는 또한 이러한 암호 스위트의 사용을 권장하지 않는 근거를 기록하고, 관련 위험을 입증하는 이전 분석과 공격을 인용한다 (섹션 8 참조).¶
| 암호 스위트 | 참조 |
|---|---|
| TLS_ECDH_ECDSA_WITH_NULL_SHA | [RFC8422] |
| TLS_ECDH_ECDSA_WITH_RC4_128_SHA | [RFC8422] [RFC6347] |
| TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA | [RFC8422] |
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA | [RFC8422] |
| TLS_ECDH_RSA_WITH_NULL_SHA | [RFC8422] |
| TLS_ECDH_RSA_WITH_RC4_128_SHA | [RFC8422] [RFC6347] |
| TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA | [RFC8422] |
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA | [RFC8422] |
| TLS_ECDH_anon_WITH_NULL_SHA | [RFC8422] |
| TLS_ECDH_anon_WITH_RC4_128_SHA | [RFC8422] [RFC6347] |
| TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA | [RFC8422] |
| TLS_ECDH_anon_WITH_AES_128_CBC_SHA | [RFC8422] |
| TLS_ECDH_anon_WITH_AES_256_CBC_SHA | [RFC8422] |
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 | [RFC5289] |
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 | [RFC5289] |
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 | [RFC5289] |
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 | [RFC5289] |
| TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 | [RFC5289] |
| TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 | [RFC5289] |
| TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 | [RFC5289] |
| TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 | [RFC5289] |
| TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
| TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
| TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
| TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
| TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
IANA는 "Recommended" 열을 "D"로 설정하고 다음 "TLS Cipher Suites" 레지스트리 항목에 대한 참조로 이 문서를 추가했다 [TLS-REGISTRY]:¶
| 암호 스위트 | 참조 |
|---|---|
| TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_DHE_DSS_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_DHE_RSA_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_DHE_PSK_WITH_NULL_SHA | [RFC4785] |
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_DHE_PSK_WITH_RC4_128_SHA | [RFC4279] [RFC6347] |
| TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA | [RFC4279] |
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA | [RFC4279] |
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA | [RFC4279] |
| TLS_DHE_DSS_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_DHE_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 | [RFC5487] |
| TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 | [RFC5487] |
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 | [RFC5487] |
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 | [RFC5487] |
| TLS_DHE_PSK_WITH_NULL_SHA256 | [RFC5487] |
| TLS_DHE_PSK_WITH_NULL_SHA384 | [RFC5487] |
| TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
| TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
| TLS_DHE_RSA_WITH_AES_128_CCM | [RFC6655] |
| TLS_DHE_RSA_WITH_AES_256_CCM | [RFC6655] |
| TLS_DHE_RSA_WITH_AES_128_CCM_8 | [RFC6655] |
| TLS_DHE_RSA_WITH_AES_256_CCM_8 | [RFC6655] |
| TLS_DHE_PSK_WITH_AES_128_CCM | [RFC6655] |
| TLS_DHE_PSK_WITH_AES_256_CCM | [RFC6655] |
| TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
| TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
| TLS_PSK_DHE_WITH_AES_128_CCM_8 | [RFC6655] |
| TLS_PSK_DHE_WITH_AES_256_CCM_8 | [RFC6655] |
IANA는 "Recommended" 열을 "D"로 설정하고 다음 "TLS Cipher Suites" 레지스트리 항목에 대한 참조로 이 문서를 추가했다 [TLS-REGISTRY]:¶
| 암호 스위트 | 참조 |
|---|---|
| TLS_RSA_WITH_NULL_MD5 | [RFC5246] |
| TLS_RSA_WITH_NULL_SHA | [RFC5246] |
| TLS_RSA_EXPORT_WITH_RC4_40_MD5 | [RFC4346] [RFC6347] |
| TLS_RSA_WITH_RC4_128_MD5 | [RFC5246] [RFC6347] |
| TLS_RSA_WITH_RC4_128_SHA | [RFC5246] [RFC6347] |
| TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | [RFC4346] |
| TLS_RSA_WITH_IDEA_CBC_SHA | [RFC8996] |
| TLS_RSA_EXPORT_WITH_DES40_CBC_SHA | [RFC4346] |
| TLS_RSA_WITH_DES_CBC_SHA | [RFC8996] |
| TLS_RSA_WITH_3DES_EDE_CBC_SHA | [RFC5246] |
| TLS_RSA_PSK_WITH_NULL_SHA | [RFC4785] |
| TLS_RSA_WITH_AES_128_CBC_SHA | [RFC5246] |
| TLS_RSA_WITH_AES_256_CBC_SHA | [RFC5246] |
| TLS_RSA_WITH_NULL_SHA256 | [RFC5246] |
| TLS_RSA_WITH_AES_128_CBC_SHA256 | [RFC5246] |
| TLS_RSA_WITH_AES_256_CBC_SHA256 | [RFC5246] |
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA | [RFC5932] |
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA | [RFC5932] |
| TLS_RSA_PSK_WITH_RC4_128_SHA | [RFC4279] [RFC6347] |
| TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA | [RFC4279] |
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA | [RFC4279] |
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA | [RFC4279] |
| TLS_RSA_WITH_SEED_CBC_SHA | [RFC4162] |
| TLS_RSA_WITH_AES_128_GCM_SHA256 | [RFC5288] |
| TLS_RSA_WITH_AES_256_GCM_SHA384 | [RFC5288] |
| TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 | [RFC5487] |
| TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 | [RFC5487] |
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 | [RFC5487] |
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 | [RFC5487] |
| TLS_RSA_PSK_WITH_NULL_SHA256 | [RFC5487] |
| TLS_RSA_PSK_WITH_NULL_SHA384 | [RFC5487] |
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 | [RFC5932] |
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 | [RFC5932] |
| TLS_RSA_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_RSA_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_RSA_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_RSA_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 | [RFC6209] |
| TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 | [RFC6209] |
| TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 | [RFC6209] |
| TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 | [RFC6209] |
| TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 | [RFC6367] |
| TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 | [RFC6367] |
| TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 | [RFC6367] |
| TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 | [RFC6367] |
| TLS_RSA_WITH_AES_128_CCM | [RFC6655] |
| TLS_RSA_WITH_AES_256_CCM | [RFC6655] |
| TLS_RSA_WITH_AES_128_CCM_8 | [RFC6655] |
| TLS_RSA_WITH_AES_256_CCM_8 | [RFC6655] |
| TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 | [RFC7905] |
IANA는 "Recommended" 열을 "D"로 설정하고 다음 "TLS ClientCertificateType Identifiers" 레지스트리 항목에 대한 참조로 이 문서를 추가했다 [TLS-REGISTRY]:¶
| 인증서 유형 | 참조 |
|---|---|
| rsa_fixed_dh (3) | [RFC5246] [RFC9847] |
| dss_fixed_dh (4) | [RFC5246] [RFC9847] |
| rsa_fixed_ecdh (65) | [RFC8422] [RFC9847] |
| ecdsa_fixed_ecdh (66) | [RFC8422] [RFC9847] |
이 문서는 (D)TLS 1.2의 사용과 관련하여 [RFC9325]를 업데이트하며, 표 6에 정확한 변경 사항이 나열되어 있다. 이러한 모든 변경 사항은 [RFC9325]의 섹션 4.1에 적용된다.¶
| RFC 9325 | RFC 10015 | |
|---|---|---|
| 비일회성 FFDH | SHOULD NOT | MUST NOT |
| 비일회성 ECDH | SHOULD NOT | 변경 없음 |
| 고정 DH 인증서 유형 | 지정되지 않음 | SHOULD NOT |
| 일회성 FFDH | SHOULD NOT | MUST NOT |
| 정적 RSA | SHOULD NOT | MUST NOT |
"TLS Cipher Suites" 및 "TLS ClientCertificateType Identifiers" 레지스트리는 모두 "Transport Layer Security (TLS) Parameters" 레지스트리 그룹 [TLS-REGISTRY]에 속한다. IANA는 섹션 5.1, 5.2, 5.3 및 5.4에 표시된 대로 "TLS Cipher Suites" 레지스트리 [TLS-REGISTRY]의 항목을 업데이트했다. IANA는 또한 섹션 5.5에 표시된 대로 "TLS ClientCertificateType Identifiers" 레지스트리의 항목을 업데이트했다.¶
섹션 5.1, 5.2, 5.3, 5.4 및 5.5에 나열된 각 항목에 대해 IANA는 "Recommended" 열을 "D"로 설정하고 항목의 Reference 열이 이 문서를 참조하도록 업데이트했다. "Recommended" 열에서 "D"를 사용하는 방법에 관한 정보는 [RFC9847]을 참조한다.¶
비일회성 유한체 DH 암호 스위트(TLS_DH_*)와 유한체 DH 암호 스위트에서의 일회성 키 재사용은 Raccoon 공격 [RACCOON] 때문에 금지된다. 둘 다 순방향 비밀성을 제공하지 않으므로 이미 나쁜 관행으로 간주된다. 그러나 Raccoon 공격은 TLS 프리마스터 비밀을 처리할 때의 타이밍 부채널을 악용하여 암호화된 프리마스터 비밀을 알아낼 수 있음을 보여 주었다.¶
비일회성 ECDH 암호 스위트(TLS_ECDH_*)의 경우, 순방향 비밀성을 포기하면 키가 손상되었을 때 과거 트래픽을 복호화할 수 있을 뿐 아니라 공격자가 키 재사용을 악용하여 암호학적 비밀을 반복해서 질의하는 광범위한 종류의 공격도 가능해질 수 있다.¶
이 범주에는 다음 예가 포함되지만 반드시 이에 한정되지는 않는다.¶
공격자가 키 재사용을 악용하여 반복적으로 질의하고 결국 키 자체를 알아내는 잘못된 곡선 공격. 이러한 공격은 실제 TLS 구현에서 실용적임이 입증되었다 [ICA].¶
공격자가 키 재사용과 추가 부채널을 악용하여 암호학적 비밀을 알아내는 부채널 공격. 이러한 공격의 예는 [MAY4]를 참조한다.¶
공격자가 키 재사용과 잘못된 계산을 악용하여 암호학적 비밀을 알아내는 결함 공격. 이러한 공격의 예는 [PARIS256]을 참조한다.¶
위의 예를 포함하여 이러한 공격은 구현에 따라 달라지는 경우가 많다. 그러나 이러한 예는 키를 재사용하면서 이 범주의 공격을 피하는 시스템을 구축하기가 실제로 어렵다는 점을 보여 준다. 반대로 키 재사용을 피하면 키가 손상되었을 때의 복호화를 막을 뿐 아니라 이 범주의 공격 자체도 완전히 차단한다. 따라서 이 문서는 ECDH 공개 키의 재사용을 권장하지 않는다.¶
(D)TLS 1.2의 일회성 유한체 DH(TLS_DHE_* 및 TLS_PSK_DHE_*)의 경우, 앞에서 설명한 것처럼 클라이언트가 자신이 수용할 수 있는 보안 매개변수만 협상하도록 보장하면서 이러한 암호 스위트를 지원할 현실적인 방법이 없다. (D)TLS 1.2에서는 서버가 DH 그룹을 선택하며 사용자 정의 그룹이 널리 사용된다. 따라서 클라이언트가 이러한 암호 스위트를 핸드셰이크에 포함하고 서버가 사용자 정의 그룹을 제시하면, 클라이언트는 보안을 보장하면서 핸드셰이크를 완료할 수 없다. 그룹 구조를 검증하는 작업은 클라이언트에 지나치게 많은 비용이 든다. 서버 운영자에게 자체 사용자 정의 그룹을 생성하도록 권장했기 때문에 안전한 것으로 알려진 그룹의 허용 목록을 사용하는 것도 비현실적이다. 또한 핸드셰이크가 클라이언트와 서버 모두가 수용할 수 있는 다른 매개변수로 대체되는 메커니즘도 없다.¶
이 문서에는 본문의 상당 부분을 작성하고 IETF TLS WG에서 여러 차례 발표한 Carrie Bartle의 중요한 기여가 다수 포함되어 있다.¶
이 문서는 TLS WG 메일링 리스트에서의 논의와 Raccoon 공격 [RACCOON]이 공개된 뒤 Filippo Valsorda가 제안한 내용에서 영감을 받았다. 이 문서의 초기 초안을 작성한 Christopher A. Wood에게 감사한다. 의견과 제안을 제공한 Thomas Fossati, Sean Turner, Joe Salowey, Yaron Sheffer, Christian Buchgraber, John Preuß Mattsson 및 Manuel Pégourié-Gonnard에게도 감사한다.¶