Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

SWEET32: 64bit 블록의 TLS 암호화에서 생일 공격 (CVE-2016-2183)

업데이트됨 -

개요

Red Hat 제품 보안팀은 특정한 설정 환경에서 SSL/TLS 프로토콜의 블록 암호 중 collision을 발생시킬 수 있는 취약점을 인지하고 있습니다. 본 결함은 [보통 등급] (https://access.redhat.com/security/updates/classification#moderate)으로 평가되며 CVE-2016-2183에서 다루고 있습니다. 현재 Red Hat 제품에 필요한 업데이트나 조치는 없습니다. 보다 자세한 내용은 해결 방법 부분에서 확인하시기 바랍니다.

배경 정보

기존의 64 비트 블록 암호 중에서 CBC 모드를 사용할 경우 collision을 발생시킬 수 있습니다. 3DES 대칭 암호의 암호스위트를 지원하는 SSL/TLS 프로토콜 모두 (예: ECDHE-RSA-DES-CBC3-SHA) 해당 취약점의 영향을 받는 것으로 나타났습니다. Red Hat Enterprise Linux 6 및 7에 내장된 OpenSSL 버전에서 DES 기반 암호스위트의 우선 순위는 AES-128 (PFS 암호스위트) 및 AES-256을 지원하는 암호스위트 보다 낮습니다. 따라서 서버가 명시적으로 AES-128 및 AES-256을 비활성화해야만 DES 암호화가 선택됩니다. Red Hat Enterprise Linux 5에 내장된 OpenSSL 버전에서는 DES 기반 암호스위트의 우선 순위는 AES-256 보다 낮고 AES-128보다 높습니다. 따라서 서버가 명시적으로 AES-256 기반 암호스위트를 비활성화해야만 DES가 선택됩니다.

블록 암호의 보안성은 암호화 키 길이 (k)에 따라 달라집니다. 따라서 블록 암호화에 대한 가장 효과적인 공격 방법은 2k 복잡도를 가지고 있는 비밀키를 검색하는 것입니다. 하지만 블록 암호가 CBC와 같은 암호화 모드를 사용하여 대량의 데이터를 암호화할 경우 블록길이 (n)도 보안성에 영향을 줍니다.

CBC 암호화 모드를 사용할 때 동일한 키를 사용하여 2n/2 블록을 암호화한 후 생일 공격을 하면 두 개의 암호화된 블록 간에 collision이 발생합니다. 출력에서 collision이 발생하는 것은 입력 값이 동일하다는 것을 의미합니다. 이 데이터를 몇 가지 조건과 결합하면 (아래 설명 참조) 암호화된 데이터 중 일반 텍스트를 추측해 낼 수 있습니다.

공격 실행

  1. 우선 DES/3DES는 SSL/TLS에서 유일하게 64 비트 블록 암호화를 사용합니다. 개요에서 설명했듯이 3DES가 포함된 암호스위트의 우선 순위는 다른 암호스위트 (예 : AES-128)보다 낮습니다.

2.64 비트 블록 암호화를 공격하려면 최소한 32GB 이상의 데이터를 수집해야 합니다. SSL/TLS의 경우 단일 SSL/TLS 세션에서 이루어져야 합니다. (모든 새로운 세션의 경우 SSL/TLS는 대칭키를 다시 협상합니다). 따라서 HTTPS의 긴 연결이 영향을 받을 수 있습니다.

  1. 다양한 상황에서 두 개의 일반 텍스트 블록 사이에서 다른점만 찾는 것은 실제 공격에 영향을 줄 수 없습니다. 그러나 다음과 같은 조건을 만족하는 경우 공격이 가능합니다:

    • 고정된 비밀 정보값이 반복되어 발송되는 경우

    • 일부 일반 텍스트가 알려진 경우

  2. 연구 논문에 언급된 PoC (Proof of Concept) 공격은 일부 인증 토큰이 전체 통신 과정 중 서버와 클라이언트 간에 전송되는 것을 가정하고 있습니다 (토큰은 기본 인증에 사용된 인증 정보 쿠키를 사용 가능). 이때 공격자는 공격당한 원래의 웹사이트에 악성 JavaScript를 실행하고 BEAST와 같은 공격을 통해 쿠키를 획득합니다.

완화조치

  1. SSL/TLS 설정에서 AES의 우선 순위를 DES 보다 높게 설정합니다. Red Hat Enterprise Linux 6 및 7에 내장된 OpenSSL 버전은 이미 이렇게 설정되어 있습니다.
  2. Red Hat Enterprise Linux 5에 내장된 OpenSSL 버전에서 3DES의 우선 순위는 AES-256 보다 낮고 AES-128 보다 높기 때문에 서버에서 AES-256 기반 암호스위트를 비활성화시키면 안됩니다.
  3. OpenSSL을 사용하는 서버에서 AES-128 및 AES-256 암호화스위트를 비활성화시키면 안됩니다. Red Hat Enterprise Linux에 내장된 Apache 버전은 DES/3DES 기반 암호화스위트 보다 AES가 더 높은 우선 순위로 설정되어 있는 기본 암호 문자열을 사용합니다.

해결 방법

  1. 본 결함은 DES/3DES 암호화 설계 문제로 구현 상의 결함이 아닙니다.
  2. 본 결함은 기본 암호 목록 구성에서 3DES 보다 높은 우선 순위에 있는 여러 강력한 암호스위트가 있기 때문에 Red Hat Enterprise Linux 5, 6, 7에 있는 모든 암호화 라이브러리 (OpenSSL, NSS, GnuTLS)에 직접적인 영향을 주지 않습니다.
  3. Red Hat Enterprise Linux 5의 경우 서버에서 AES-256 기반 암호스위트를 활성화합니다. Red Hat Enterprise Linux 6 및 7의 경우 서버에서 AES-128 또는 AES-256 기반 암호스위트를 활성화합니다.

업스트림 보안 수정:

OpenSSL:

OpenSSL은 본 결함을 심각도가 '낮은' 보안 문제로 평가하고 있습니다. 1.0.2에서 3DES 암호스위트를 HIGH 카테고리에서 MEDIUM으로 변경하여 다음 릴리즈에서 이러한 암호스위트는 기본으로 비활성화됩니다.

NSS:

Mozilla는 모든 암호스위트에 대한 데이터를 제한하고 있습니다.

관련 문제

업스트림 OpenVPN도 Sweet32 공격에 취약하며 CVE-2016-6329에 의해 추적되고 있습니다. Red Hat의 OpenVPN 구현은 본 결함에 의한 영향을 받지 않습니다.

참조 정보

https://access.redhat.com/security/cve/CVE-2016-2183
https://sweet32.info/