구글, 구형 암호기술 'SHA1' 허점 입증했다

"충돌현상 첫 구현"…퇴출 여론에 힘 실어

컴퓨팅입력 :2017/02/24 15:52    수정: 2017/02/28 10:53

구글이 낡은 암호화 알고리즘 'SHA1'의 충돌 현상을 입증했다. 서로 다른 정보를 갖고 동일한 해시 값을 만들어내는 기법을 공개하면서다. 그간 이런 일이 벌어질 수 있다며 업계서 예고한 SHA1 기술 퇴출 움직임에 힘을 싣는 소식이다.

구글은 23일(현지시각) 공식 보안 블로그를 통해 "SHA1가 처음 소개된지 20년 이상 지난 오늘 우리는 처음으로 충돌을 만들어내는 실질적인 기법을 선보인다"며 "구글과 네덜란드 암스테르담 국립수학전산학연구소(CWI)간 협력 연구의 2년간 성과"라고 밝혔다.

[사진=Pixabay 원본 편집]

[☞구글 보안블로그: Google Online Security Blog: Announcing the first SHA1 collision]

[☞SHA1충돌기법 소개 웹사이트: SHAttered]

구글은 SHA1 충돌 공격 시나리오를 피하기 위해 기존 기술을 SHA3와 SHA256같은 더 안전한 암호화 알고리즘으로 대신해야 한다고 조언했다.

SHA1은 웹사이트와 사용자 브라우저간 암호화통신(HTTPS) 환경에 쓰인다. HTTPS 통신을 위한 디지털 인증서 '해시' 값을 만드는 알고리즘 가운데 하나다. 원본이 일치하면 동일한 해시값을 얻을 수 있고, 조금이라도 다른 데이터를 넣으면 전혀 다른 해시값이 만들어진다. 이런 특성으로 인증서가 위변조되지 않았는지 확인할 수 있다.

구글이 SHA1 암호화 알고리즘으로 만든 해시 값의 안전성을 설명하기 위해 제시한 도안. 서로 다른 문서에 해시 알고리즘 적용시 (왼쪽) 서로 다른 해시 값을 생성해야 한다. 서로다른 문서가 동일 해시 값을 생성할 경우(오른쪽) 사용자가 정상 파일을 위장한 악성 파일 공격에 노출된다.

그런데 몇년 전부터 SHA1 알고리즘으로 만든 해시값의 불안전성이 문제로 지적됐다. 서로 다른 원본을 갖고도 동일한 해시값을 만들어낼 수 있다는 얘기였다. 이 현상을 '충돌(collision)'이라고 부른다. 충돌하는 해시값을 만들 수 있는 알고리즘은 더 이상 그걸 적용한 디지털 인증서의 고유성을 보장할 수 없다. 특정 인증서 발급주체를 사칭해 방문자를 위험에 빠뜨리는 웹사이트가 나타날 수 있다.

구글 측에 따르면 마크 스티븐스라는 사람이 지난 2013년 발표한 논문을 통해 SHA1 알고리즘에서 의도적으로 충돌을 만들어낼 수 있는 이론적 가능성을 제시했다. 구글은 SHA1 충돌이 이론적 가능성을 넘어 실질적인 보안위협으로 연결될 수 있는 현실임을 드러냈다.

구글은 별도 웹사이트를 만들고 SHA1 충돌 테스트를 위한 PDF 문서 파일 2개를 공개했다. 두 PDF 문서의 내용은 다르지만 SHA1 알고리즘을 적용한 해시 값은 일치한다. 문서는 구글과 CWI가 SHA1 알고리즘의 불안전성을 지적하기 위해 일부러 비슷하게 작성됐다. 즉 우연한 충돌이 아니라 의도적으로 만들어낼 수 있는 충돌이라는 얘기다.

구글이 PDF 포맷 구조를 설명한 도안. 구글은 SHA1 충돌 현상을 만들어내기 위해 PDF 포맷 구조를 활용했다.

어떻게 이런 파일을 만들었을까. 구글은 PDF 문서 파일 포맷의 구조를 이용했다. PDF 포맷은 본문의 정보를 JPEG 이미지 형식으로 요약한 '이미지 객체'를 포함하는 헤더(Header)를 정의하고 있다. 구글은 이미지 객체 속의 JPEG 이미지 데이터 영역에 충돌 블록(collision blocks)을 끼워넣었다. 충돌 블록은 원본 파일을 조작하고 그와 동일한 SHA1 해시 값을 얻도록 만들어 주는 데이터다.

구글은 물론 원하는 충돌 블록 데이터를 얻기 위해 클라우드 인프라와 기술 전문가를 동원했다. 구글이 충돌 블록 연산을 위해 수행했다고 밝힌 SHA1 알고리즘 연산 횟수는 약 9경(9,223,372,036,854,775,808)번에 달했다. 1차 시도에서는 6천500년치 CPU 연산을, 2차 시도에서는 110년치 GPU 연산을 수행했다. 즉 GPU 110개를 쓰면 1년이 걸리는 연산이었다는 뜻이다.

구글은 고의로 SHA1 충돌을 만들어내는 데 상당한 연산량이 필요하다는 점을 인정했다. 하지만 컴퓨터의 연산 성능이 꾸준히 개선되고 있기 때문에 시간이 지날수록 그걸 해내는 데 따르는 시간과 비용 부담은 줄게 된다. 이를 염두에 두고 구글과 모질라를 비롯한 주요 브라우저 개발업체가 앞서 SHA1 퇴출 계획을 내놓은 상황이었다.

[☞관련기사: 크롬에만 은행사이트가 위험하다 뜨는 이유]

관련기사

[☞관련기사: 구형 암호화 기술 'SHA1' 퇴출 임박]

구글의 크롬과 모질라 파이어폭스 등 브라우저 최신 버전 사용시 SHA1 알고리즘 기반 HTTPS 인증서를 적용한 웹사이트는 방문자에게 경고를 띄운다. 웹사이트의 암호화 접속을 제공하기 위한 인증서가 안전하지 않다는 표시를 하는 것이다.