본 글의 취약점은 플로리다 대학교(University of Florida)의 'Standardizing Bad Cryptographic Practice' 논문과 US-CERT에서 제공한 글을 바탕으로 작성된 글임을 밝힙니다.
12월을 바라보는 이 시점에서 올해 발견된 취약점은 놀라울 만하다. 우리가 평소에 안전하다고 생각했던 것들 대부분에서 발견된 취약점은 한편으로 당황스럽게 만들기 충분했다. 반면, 여러 보안 연구원에 의해 계속해서 발견되는 취약점은 컴퓨터 산업이 좀 더 안전해지고 견고해지려는 한 걸음이지 않을까 기대하게도 만든다. 최근 ‘페어링’이라는 안전한 인증 시스템으로 뚫기 힘들고 안전하다 생각했던 블투투스에서 대량의 취약점이 공개되면서 ‘블루본’이라는 새로운 이슈거리가 여러 해커 입에 올라왔다. 그리고 ‘KRACK’이 공개되면서 우리가 안전하다 믿고 흔히 사용하고 있던 ‘WPA2’가 속수무책으로 탈탈 털렸다. 두 번의 충격이 가시기도 전에 곧바로 새로운 이동통신망 5G에서 취약점이 나오고, 안전한 통신 연결을 위해 사용되는 VPN에서도 취약점이 공개되었다. 모든 시스템이 안전하다고 믿는 것은 아니지만, 이처럼 생각지도 못했던 취약점은 한 방 먹은 듯한 느낌이 들곤 한다. 특히나, 이건 필자의 느낌적인 느낌이지만, 발견되는 취약점 중에서 소프트웨어상이나, 시스템적인 부분에서 발견되는 취약점보다 우리가 사용하고 있던 암호화 알고리즘에서 발견되는 취약점이 유독 더 크게 와 닿는 기분이다. 오늘의 이야기도 이처럼 암호화에서 발견된 취약점에 대해 말해볼까 하는데, 지난 2017년 11월 7일, 미 국토 안보부인 US-CERT는 IEEE P 1735 암호 표준에서 취약점이 발견되어 사용에서 주의하라는 경고를 발표했다.[1]
IEEE P1735 체계는 칩 설계자들이 해커 혹은 인증되지 않은 제 3자로부터 당사자들의 IP를 보호할 수 있도록 하드웨어 및 소프트웨어로 IP를 암호화하는 수단이다.[2] 대부분의 모바일 및 임베디드 디바이스에는 SoC (System-on-Chip)가 포함되며, 단일 집적 회로는 여러 개의 IP로 구성될 수 있다. 보통 이는 아날로그 신호를 디지털 신호를 변환하는 아날로그-디지털 변환기(analogue-to-digital converter), 디지털 신호 처리 장치, 그래픽 처리 장치, 암호화 엔진과 같은 다른 공급 업체의 제품을 포함되어 사용된다. 여기에서 사용되는 라이센스가 부여된 IP는 공급 업체에 상당히 가치가 있으므로 판매 후 리버스 엔지니어링되지 않도록 IEEE는 전자 설계 시에 IP를 암호화하는 P1735 표준을 개발했다.[3] 즉, IEEE P1735는 저수준 DRM이라고 불리기도 하고, 복잡한 전자기기 설계 및 지적 재산을 암호화하고 관리하는 것에 관한 표준으로[4], 다른 제조업체의 코드를 암호화된 상태로 함께 사용할 수 있는 암호화 방식이다.
하지만 미 국토 안보부 (US-CERT)의 금요일 발표 된 경고는 IEEE P1735 표준에 결함이 있다고 경고했다. 플로리다 대학의 5명의 연구원은 ‘잘못된 암호화 실습 표준화’라는 제목으로 최근 학술 논문을 발표하고, IEEE P1735 표준에서 총 7가지 취약점을 보고했다.[5] 다음은 논문에 있는 IEEE P1735 취약점 목록이다. 아래의 CVE는 Common Vulnerability Scoring System 등급이 5.7에서 6.3 사이의 등급이다.
CVE-2017-13091 : AES-CBC Mode 사용에서 부적절하게 지정된 패딩을 사용하면 EDA(Electronic Design Automation) 도구를 복호화 오라클로 사용할 수 있다.
CVE-2017-13092 : 부적절하게 지정된 HDL (hardware description language) 구문을 사용하여 EDA 도구를 복호화 오라클로 사용할 수 있다.
CVE-2017-13093 : 암호화된 IP(intellectual property)에 하드웨어 트로이 목마를 포함할 수 있도록 ciphertext의 수정할 수 있다.
CVE-2017-13094 : 키에 대한 정보 없이 모든 IP에서 암호화 키 및 하드웨어 트로이 목마를 포함할 수 있도록 수정할 수 있다.
CVE-2017-13095 : 라이센스 부여에 대한 라이센스 거부 응답을 수정할 수 있으며 반대의 경우에서도 할 수 있다.
CVE-2017-13096 : AES 키의 RSA 암호화가 포함된 권한 차단을 수정하여 접근 제어를 없애거나 좀 더 접근하기 쉽도록 수정할 수 있다.
CVE-2017-13097 : 라이센스 요구 사항을 없애기 위하여 권한 블록을 수정할 수 있다.
주로 취약점은 IEEE P1735 표준의 AES-CBC Mode 사용에 있다.[6] AES-CBC Mode는 데이터 무결성을 제공하는 방식으로 블록 간의 의존 관계를 맺고 암호화한다.[7] 여기서 AES는 암호화 기법으로 미국을 비롯한 유럽 각국의 정부 기관에서 가장 많이 사용되는 암호의 표준이기도 하다.[8] 보통 군이나 정보기관처럼 중요한 정보를 다루는 기관에서는 AES 256bit를 채택하고 있으며, 기술적으로 더 복잡한 CBC mode를 선택하고 있다. 쉽게 말해, CBC Mode는 16byte 단위로 암호화한 데이터가 그다음 16byte 암호화에 적용되어 상호 연관 관계에 의해 원본 데이터의 중간 어느 부분도 따로 해석할 수 없는 구조로 보면 된다.[9][10]
개발자가 이를 구현할 때, 임의의 특정 패딩 방식에 대한 표준이 없으므로 종종 개발자는 잘못된 구성표를 선택하여 구현한다. 이때, 공격자는 키에 대한 지식이 없어도 POA(padding-oracle attack) 기술을 악용하여 시스템의 구조 및 기술적인 부분을 해독할 수 있다. POA란 응답에 대한 판독과 같은 뜻으로, 패딩이 올바르게 되었는지에 따라 서버의 응답이 다르므로 이것을 이용한 공격을 말한다.[11][12] 심각한 경우에는 평문 IP 전체를 복구할 수 있는 공격 벡터를 사용할 수도 있다. 특히, 상업용 전자 설계 자동화 도구인 EDA를 사용하여 여러 개의 IP 조각을 지정된 칩에 설계하여 완벽하게 HDL 구문 오류를 만들 수도 있다. 즉, EDA 도구를 블랙박스 오라클로 활용함으로써 악용될 수 있다는 이야기다. 정리하면, 공격자가 이 취약점을 악용하면 전자 설계되어 암호화된 IP를 전체를 복구할 수 있을 뿐만 아니라, 도용 및 보안 중요 기능 분석을 수행할 수 있고, 키가 없어도 평문 지적 재산을 얻을 수 있는 암호 공격을 할 수 있다. 더욱이, 이 같은 공격은 일반 평문 IP 전체를 나타내는 거 외에도, 공격자가 암호화된 IP에 하드웨어 트로이 목마도 넣을 수 있다고 한다. 이는 표준이 제공해야 하는 모든 보호 장치를 파괴 할 뿐만 아니라 IP의 위험 가능성을 더욱 높일 수 있다.[13]
현재, IEEE P1735를 사용하고 있는 벤더는 AMD, Intel, Qualcomm, Cisco, IBM, Samsung, Synopsys, Mentor Graphics, Marvell, NXP, Cadence Design Systems, Xilinx, Zuken 등이 있다. 지금은 위의 모든 공급 업체가 이러한 취약점으로부터 잠재적 위험에 있다고 여겨지지만, 이는 정확히 확인된 바는 아니라고 한다.[14] 더불어, 이러한 취약점을 발표한 연구원은 복잡성을 줄일 수 있는 기본 기밀성 공격에 대한 다양한 최적화를 제안했으며, 안전하지 않은 방식으로 IEEE P1735 체계를 사용하는 공급 업체는 US-CERT에 의해 이미 경고를 받았다고 한다. 그리고 연구원은 EDA 소프트웨어 개발자가 문제를 해결하기 위해 적용할 수 있는 수정 방안을 제안했다고 한다. EDA 소프트웨어를 사용하는 사용자는 공급 업체의 업데이트를 기다리며 업데이트가 있으면 바로 적용하는 것이 좋을 듯하다.[15]