2017년 2월 27일 월요일

첫 SHA-1 충돌 사례 공개

본 글은 제가 아래 원본을 읽고 나서 번역한 글입니다. 혹시나 번역이 잘못되었거나 이렇게 번역하는 것이 올바르지 않은 것이면 말씀해주세요. 조치하겠습니다!

https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

This blog is the translation of "" from Google security blog.
If this blog violates copyrights or anything else, please let me know.
----------------------------------------------------------------------------------------------------------------------------------

2017년 2월 23일

본문 작성자: Marc Stevens (CWI Amsterdam), Elie Bursztein (Google), Pierre Karpman (CWI Amsterdam), Ange Albertini (Google), Yarik Markov (Google), Alex Petit Bianco (Google), Clement Baisse (Google)

 SHA-1과 같은 암호화 해시 함수는 암호를 사용하는 사람들에게는 다용도 칼(swiss army knife)이다. 브라우저 보안, 코드 저장 관리 그리고 심지어 스토리지 내 파일 중복을 검사할 때에도 사용되기 때문이다. 암호화 해시 함수란 큰 용량의 데이터를 암호화하여 메세지 조각(Message digest)로 만드는 함수를 나타내며, 보안이라는 목적에 맞게, 동일한 메세지 조각을 만드는 다른 데이터는 산술적으로 존재하지 않는다. 하지만 시간이 지나면서 해시 함수의 수학적인 치명점이나 컴퓨터의 나날이 좋아지는 산술 능력 때문에 이러한 보안이라는 기존 목적이 깨질 수 있음이 밝혀져 왔다.

 SHA-1이 처음 소개된 지 20여년이 지난 오늘날, 우리는 처음으로 실제 SHA-1 충돌을 발생시킬 수 있는 기술을 공개하려 한다. 이는 구글과 암스테르담 CWI 연구소 공동으로 진행된 2년 동안의 연구 결과물이다. 우리는 어떻게 SHA-1 충돌을 만들어 내는지 아래 요약할 것이며, 또한 이러한 주장의 증거물로써 SHA-1 해시 값은 같지만 내용은 다른 2개의 PDF을 공개할 것이다.

 그동안 기술 관련 커뮤니티에서 우리의 연구는 SHA-1 사용 중단의 필요성을 강조해 왔다. 구글은 수 년동안 SHA-1의 사용, 특히나 TLS 인증 확인에서의 사용에 관해 지속적으로 반대를 주장해 왔고 2014년 초기부터 the Chrome 팀은 SHA-1 사용을 단계적으로 정지해 왔다.

 우리는 우리의 SHA-1 공격 성공 사례가 더 이상 프로토콜이 안전하지 않다는 것을 확실히 보여주길 희망한다.


암호화 해시 충돌이란?



 암호화 해시 충돌은 위와 같이 2개의 다른 데이터(문서, 바이너리 또는 웹사이트 인증 등)이 동일한 메세지 조각으로 만들어지는 경우를 뜻한다. 보안 관련 해시 함수들만 보더라도 충돌은 일어나면 안 된다. 하지만 만일 현재 실제로 사용되고 있는 해시 알고리즘이 SHA-1에서 일어나는 것과 비슷한 결점을 가지고 있다면, 실력 좋은 해커인 경우 충돌을 일부러 만드는 것이 가능하다. 그러면 해커는 악성 파일을 무해한 파일 대신 인식하여 받아들이도록 시스템을 속일 수도 있을 것이다. 예를 들면, 내용이 극명하게 다른 2개의 보험 계약을 바꿀 수도 있다는 것이다.


SHA-1 충돌 발견

 2013년 Marc Stevens는 논문을 통해 SHA-1 충돌을 만들 수 있는 이론을 제시했다. 우리는 내용은 전혀 다르지만 동일한 SHA-1 해시 값을 가지는 2개의 문서를 만들기 위해서는 특별한 PDF 헤더 포맷이 필요하다는 것부터 시작했다. 하지만 이러한 이론을 실질적으로 가능하게 만들기 위해 몇 가지 새로운 위기를 극복해야 했으며, 때문에 우리는 구글의 기술 전문가들과 함께 역대 가장 시간이 오래 걸리는 계산 중 하나인 SHA-1 충돌을 계산하기 위해 클라우드 기술(cloud infrastructure)를 활용했다.

 SHA-1 충돌 계산이 얼마나 걸리는 지는 아래 수치를 보면 알 수 있을 것이다.

 - 총 9경(9,223,372,036,854,775,808) 번의 계산 필요
 - SHA-1 공격 1단계를 위한 SHA-1 해시 값 계산: CPU 1대당 6,500년 정도의 시간 필요
 - SHA-1 공격 2단계를 위한 SHA-1 해시 값 계산: CPU 1대당 110년 정도의 시간 필요


 이러한 숫자들이 매우 크게 느껴지는 반면, SHA-1 분산 공격(Shattered)은 단독 공격(Bruteforce)에 비해 100,000배 빠르다. (역주: SHA-1 분산 공격(SHA-1 Shattered)는 Google에서 최근에 공개한 새로운 SHA-1 공격 방법입니다.)


SHA-1 충돌 공격 위험을 줄이는 것

 결국 더 나아가, 보안 담당자는 SHA-256 또는 SHA-3과 같은 더 안전한 암호화 해시 함수로 위험성을 줄이는 것을 서둘러야 한다. 구글의 취약점 공개 정책에 따라, 우리는 90일 이후에 몇몇 조건들과 더불어 동일한 SHA-1 해시를 생성할 수 있는 PDF 파일들을 만드는 코드는 공개할 것이다. 이러한 공격이 실제 쓰이는 것을 방지하기 위해, Gmail과 GSuite 사용자들을 위한 PDF 충돌 기술을 감지하기 위한 보호 기술을 추가했다. 또한, 감지 시스템 또한 공개할 것이다.

 SHA-1 공격 에 대해 더 자세한 내용을 찾기를 원한다면 여기를 클릭하길 바란다.

우리 팀에 대해

 이 결과는 CWI 연구소와 구글 보안 연구팀의 오랜 연구에 따른 산출물이다. Marc StevensElie Bursztein은 구글 인프라를 이용하여 Marc의 SHA-1 공격 이론을 실전으로 보여주기 위해 협력을 시작했다. Ange Albertini는 PDF 공격을 개발했으며 Pierre Karpman는 암호 분석와 GPU 응용을, Yarik Markov는 분산 GPU code를 담당했다. 그리고 Alex Petit Bianco는 구글 사용자들을 보호하기 위한 충돌 감지 시스템를 구현했으며 마지막으로 Clement Baisse는 산술 계산의 신뢰성을 감독하였다.


댓글 없음:

댓글 쓰기