SHA1 깬 구글 "깃(Git) 시스템도 불안하다"

깃 만든 리누스 토발즈 "당장 큰 일 안 나"

컴퓨팅입력 :2017/02/27 13:57

구글이 지난주 낡은 암호화 알고리즘 SHA1를 깨뜨렸다. SHA1에 의존하는 기술은 믿음직하지 않다는 점을 보여 줬다. 해당 연구자들은 개발자들에게 소스코드 저장소 시스템으로 널리 쓰이는 깃(Git)도 그런 기술이라 지적했다. 그런데 깃을 만든 리누스 토발즈는 동의하지 않는 듯하다.

■무슨 일 있었나

지난주 구글은 SHA1 알고리즘 해시값의 고유성을 깨뜨릴 수 있는 '섀터드(SHAttered)'란 방법을 선보였다. 서로 다른 파일이 동일한 SHA1 해시 값을 나타내는 '충돌(collision)' 현상을 의도적으로 만들어냈음을 입증한 것이다. 이는 앞으로 SHA1 알고리즘으로 처리된 정보의 고유성을 보장하지 못할 공산이 크다는 의미다.

[☞관련기사: 구글, 구형 암호기술 'SHA1' 허점 입증했다]

[☞관련기사: 20년 묵은 보안 기법 깨부순 구글 "SHA-1은 버려라"]

SHA1 알고리즘으로 처리된 정보가 고유하지 않으면 SHA1 기반 HTTPS 인증서같은 기술의 보안성을 보장하지 못한다. 앞서 구글, 마이크로소프트, 모질라가 최신 브라우저에서 SHA1 기반 HTTPS 인증서 퇴출을 예고한 이유다.

구글이 SHA1 암호화 알고리즘으로 만든 해시 값의 안전성을 설명하기 위해 제시한 도안. 서로 다른 문서에 해시 알고리즘 적용시 (왼쪽) 서로 다른 해시 값을 생성해야 한다. 서로

지난 24일 미국 지디넷 보도에 따르면 섀터드 기법을 소개한 연구자들은 공개 문건에서 깃이 "파일 오브젝트와 커밋 정합성 점검에 SHA1에 강하게 의존한다"면서, 깃 시스템 역시 덮어놓고 안심하고 쓸 수 있는 기술은 아니라고 지적했다.

[☞원문: Google breaks SHA-1 web crypto for good but Torvalds plays down impact on Git]

■SHA1 암호 깬 구글 "깃 저장소에 정상-백도어 소스코드 공존 가능성"

깃은 소프트웨어 코드파일 관리에 흔히 쓰이는 분산형버전관리시스템이다. 여러 개발자가 소스코드 파일 집합을 관리할 때 쓴다. 개발자마다 자체 저장소를 갖고 파일 변경 내역을 생성, 관리하게 해준다.

깃 저장소에서 쓰는 파일 버전 정보, 리비전 식별자(identifier)가 SHA1 알고리즘 해시 값을 쓴다. 해시 값은 파일을 SHA1 암호화 함수로 돌려 나온 알파벳 40자 길이 결과값이다. 한 파일 내용이 변경 시점마다 다르며 고유하다는 걸 나타낸다.

누군가 구글의 섀터드 기법을 응용해, 필요한 SHA1 알고리즘 연산량을 수행하면, 깃 시스템의 버전관리 기능에 문제가 생길 수 있다.

버전관리시스템 깃(Git) 공식 로고

연구자들은 "헤드 커밋 해시는 동일하지만 내용은 상이한 두개의 깃 저장소, 즉 정상적인 소스코드와 백도어를 포함한 소스코드를 만드는 게 가능해진다"고 지적했다.

■리누스 토발즈 "SHA1 기반 깃 쓴다고 당장 하늘 안 무너져"

하지만 리눅스 커널 소스코드 관리를 위해 깃을 만들어낸 리누스 토발즈는 이런 우려섞인 시각에 동의하지 않는 것으로 보인다. 구글이 SHA1를 깨뜨린 방식이 깃 사용 환경에 당장 심각한 영향을 주지 않는다는 입장이다.

미국 지디넷 보도에 따르면 토발즈는 깃 관련 메일링리스트에서 "깃은 데이터를 해시하기만 하는 게 아니라, 거기에 타입과 길이 필드를 측량한다(prepend a type/length field to it)"고 밝혔다. 이는 구글이 PDF 파일 대상으로 구현한 섀터드 기법보다 고의적인 충돌을 만들어내기 어렵다는 의미다.

물론 토발즈가 SHA1 알고리즘을 쓰는 깃이 앞으로도 아무 문제가 없으리라고 장담하는 건 아니다. 그의 이어지는 메시지는 실제보다 위험을 부풀려 불안을 조장할 필요는 없다는 뉘앙스다. 나머지 메일링리스트 내용 일부를 한국어로 옮겨 봤다.

관련기사

[☞리누스 토발즈의 메일: 'Re: SHA1 collisions found' - MARC]

"달리 말하자면 소스제어관리툴로 깃을 쓴다고 하늘이 무너지는 건 아니다. 우리가 (깃이 의존하는 SHA1 알고리즘을) 다른 해시로 바꿔야 할까? 그렇다. 사람들이 말하고 싶어하듯이 (당장) SHA1가 게임오버 상태일까? 아닐 거다. …(중략)… 그 공격 기법을 자세히 본 건 아니다. 하지만 첫째, 인코딩 크기를 분리하면서 당초 깃 오브젝트 대상으로 할 때보다 공격이 더 어려워진 게 사실이고 둘째, 보유 데이터가 불분명하다면 무결성 검사(sanity check)를 쉽게 추가해, 이런 공격이 항상 의존하는 임의의 데이터를 숨겨넣기 훨씬 더 어렵게 만들 수 있다고 본다."