Offcanvas

보안

칼럼 | 왜 SHA-3을 사용하지 않는가

2018.02.26 Roger A. Grimes  |  CSO
지난 2년 동안 암호(cipher) 공격의 성공이 증가하면서 디지털 세계의 대부분은 결함이 있는 SHA-1(Secure Hash Algorithm Version 1) 디지털 해시에서 SHA-2(Secure Hash Algorithm Version 2)로 전환해야 했다.


Credit: Michele M. F. (CC BY-SA 2.0)

이런 마이그레이션 작업에 관여한 사람이라면 누구나 알겠지만 운영 중단을 최소화하면서 성공적인 마이그레이션을 달성하기 위해 연구하고 작업하느라 수많은 시간이 소요됐다. 인정하고 싶지 않지만 할 수 있는 최선으로 준비하고 "스위치를 돌린 다음" 결과는 운에 맡겼다고 말하는 편이 더 정확할 것이다. 암호 마이그레이션(Cipher migrations)은 다시 떠올리고 싶지 않을 만큼 힘든 일이었다.

그런데, SHA-2에는 SHA-1과 동일한 수학적 결함이 있고 SHA-3(Secure Hash Algorithm Version 3)에는 그 결함이 없다는 것을 알면서도 SHA-3이 아닌 SHA-2로 전환한 이유는 무엇일까? SHA 암호 마이그레이션을 다시 할 수밖에 없는 이유는 무엇일까.

SHA 암호와 점점 더 정교해지는 공격
SHA-1은 미국 국가안전국(NSA)이 개발해 미국 국립표준기술원(NIST)이 1995년 연방 표준으로 공표했다(FIPS Pub 180-1). SHA-1은 160비트의 메시지 다이제스트를 생성하는데, 암호적으로 완벽하게 안전할 경우, 이는 무차별 대입 공격으로 해시를 크랙하기 위해서는 평균 2의 159승의 공격을 시도해야 함을 의미한다. 지금과 같은 초고속 클라우드 컴퓨팅 환경에서도 2의 159승번 시도가 필요하다는 것은 현실적인 공격이 '간단치 않음(non-trivial)'을 의미한다. '간단치 않다'는 것은 암호화 전문가들이 수학 및 물리학에 대한 현재의 이해로는 불가능하거나 거의 불가능하다는 의미로 사용하는 표현이다.

2005년부터 SHA-1에 대한 여러 가지 이론적 공격이 공개적으로 문서화되기 시작했다. SHA-1 공격이 거듭되면서 2012년에는 이론적으로 SHA-1의 보호 기능이 최대 평균 159비트에서 57.5~61비트 수준으로 낮아졌다. 오랜 시간 동안 이는 단순한 이론적 공격일 뿐이었다. 그러나 시간이 지나면서 이론적 공격이 실제 공격으로 바뀔 것임이 예상됐고 그 예상은 현실화됐다(다만 현실화되기까지 5년이 더 걸렸다).

오래된 암호는 시간이 지나면 깨진다는 것은 모든 암호화에서 예상되는 결과다. 따라서 NIST는 NSA와 함께 누구나 새로 만든 암호를 제안할 수 있는 공개 대회를 정기적으로 개최하고 제안된 암호를 검토해 표준으로 선정한다. 이런 대회에는 보통 몇 년이 걸리고, 세계적인 암호화 전문가들이 참가한다. 최종적으로 새로운 암호 표준이 선정되고 새로운 미국 정부의 공식 필수 암호로 공표된다. AES(Advanced Encryption Standard), SHA-3을 포함한 많은 암호화가 이와 같은 과정을 거쳐 실용화됐다.

2011년 1월(NIST 문서 SP800-131A), SHA-2가 새로운 권장 해시 표준이 됐다. SHA-2는 224비트, 256비트, 384비트, 512비트 다이제스트를 포함해 여러 가지 길이의 해시를 포함하므로 SHA-2 해시 '군(family)'으로 불리곤 한다(각 다이제스트는 관련 NIST 연방 정보 처리 표준 문서에서 논의 및 릴리스됨). 이름만으로는 다른 사람이 사용하는 SHA-2 비트 길이를 알 수 없지만 256비트가 가장 많이 사용된다. 

SHA-1에서 SHA-2로의 느린 이동
SHA-1에 대한 성공적인 공격이 이뤄지고 2011년부터 SHA-2가 NIST의 필수 해시 표준이 되었지만 전 세계적으로 대부분의 환경은 2016년까지 SHA-2로 전환되지 않았다. 사람들은 고통에는 즉각적으로 반응하는데 당시에는 공개적인 SHA-1 공격은 이론상의 이야기일 뿐이었기 때문이다.

2015년, 암호화를 사용하는 세계의 주요 개발업체는 고객을 대상으로 2018년 1월 1일까지 SHA-1에서 SHA-2로의 전환을 의무화하기로 결정했다. 이론적인 공격이 조만간 실제로 이어질 것이 확실했기 때문이다. 이런 움직인은 주효했다. 최근 대부분의 기업은 암호화에 의존하는 모든 프로그램 또는 기기를 서둘러 SHA-2로 마이그레이션했다. 필자는 이 글을 포함해 관련 백서와 여러 칼럼을 쓴 적이 있다. 

2017년 초반까지 많은 고객이 SHA-2로 마이그레이션했다. 절묘한 시기였다. 2017년 2월 23일 구글은 실제 SHA-1 충돌 공격이 성공했음을 발표하고, 동일한 SHA-1 해시를 가진 두 개의 PDF 파일을 제시해 이를 입증했다. 이 공격은 기본적으로 SHA-1을 완전히 깨트린 것이다.

글로벌 마이그레이션 시점은 이보다 더 절묘할 수 없었다. 암호화 개발업체들은 SHA-1이 깨지기 직전에 전 세계 대부분의 환경에서 SHA-2로의 전환을 성공적으로 마쳤다. 그 때까지 마이그레이션하지 않았던 기업들은 훨씬 더 쉽게 마이그레이션할 수 있었다. 수많은 기업이 이미 성공적인 마이그레이션을 완료했으므로 웹에서 마이그레이션 방법에 대한 지침을 찾을 수 있었고 개발업체는 도울 준비가 되었으며 대부분의 소프트웨어와 기기 공급업체 역시 이미 준비가 되어 있었기 때문이다. SHA-1에서 SHA-2로의 마이그레이션 계획과 일정은 완전히 성공했다. 곳곳에서 칭찬과 격려가 이어졌다.

그런데, 더 안전한 SHA-3으로 마이그레이션하지 않은 이유는 무엇일까?

SHA-3으로 마이그레이션해야 하는 이유
SHA-1과 SHA-2는 공개적인 대회를 통해 만들어지지 않았다. NSA가 만들어 공용 특허로 발표됐다. SHA-1과 SHA-2는 동일하지는 않지만 똑같은 암호화 결함을 포함한 동일한 수학적 기반을 일부 공유한다. SHA-2가 더 안전한 해시인 이유는 주로 늘어난 해시 길이에 있다.

SHA-1과 SHA-2는 서로 상당히 다르지만 동일한 기반 알고리즘(SHA)을 공유하며, 궁극적으로는 일부 동일한 해시 길이가 동일 유형의 공격에 취약하다. 일부 시나리오에서는 SHA-2의 보호 기능이 SHA-1와 비교해 우수한 부분은 SHA-2가 더 큰 입력과 출력을 사용한다는 점 외에는 없다.

SHA-2에 대한 공개적인 공격은 2008년부터 발생하기 시작했다. SHA-1의 경우와 마찬가지로 SHA-2에 대한 공격 역시 점점 더 효과를 더하며 SHA-2를 약화시키고 있다. 일부 공격은 SHA-2의 유효 보호 수준을 237까지 낮췄다. 2016년에 발표된 일부 최근 공격을 보면 SHA-2 공격은 이미 "실용" 단계에 있다. 불과 2~3년 전 SHA-1을 두고 펼쳐졌던 상황과 똑같다.

앞서 언급했듯이 시간이 지나면서 기존 암호가 공격을 받고 약화되는 것은 예상 가능한 일이다. 실제로 NIST는 SHA 군에서 파생되지 않은 새로운 해시 표준을 미리 확보하기 위한 목적으로 공개 대회를 통해 SHA-3을 선정했다. 이 대회는 2006년에 시작되었으며 케착(Keccak) 암호가 2010년 유일한 결승 진출 암호로 선정됐다. NIST는 2015년에 초안 표준을 공표했고 2015년 8월 5일에는 SHA-3이 공식 권장 표준이 됐다. 

여기까지의 이야기를 듣게 되면 많은 사람이 SHA-1에서 SHA-3으로 바로 전환하지 않은 이유를 궁금해한다. SHA-1을 버려야 하는 상황에서 대부분의 마이그레이션 작업은 2016년 후반에서 2017년 사이에 이뤄졌다. SHA-1 전환의 공식적인 마감 날짜는 2017년 12월 31일이었다. 준비할 시간이 거의 3년이나 있었는데 SHA-2가 아니라 SHA-3으로 전환하라고 권하지 않은 이유가 무엇일까?

SHA-3으로 전환하지 않은 이유
SHA-3으로 전환하지 않은 가장 큰 이유는 이를 지원하는 소프트웨어 또는 하드웨어가 사실상 전무했다는 데 있다. SHA-3으로 전환하고 싶어도 소유하거나 사용하는 모든 기기를 위한 코드와 펌웨어를 본인이 직접 작성하지 않는 한 방법이 없었다.

게다가 SHA-3은 SHA-2 마이그레이션 계획이 이미 수립된 시점에서 비교적 새로운 표준이었다. 초기 SHA-1 폐기 회의가 열릴 당시 SHA-3은 공식 표준도 아니었다. 또한 SHA-2는 일부분이 SHA-1에서 파생되긴 했지만 SHA-1만큼 악용의 소지가 크지 않았다. 당시에는 SHA-2의 어느 버전을 사용하든 충분한 보호 기능을 얻을 수 있었다. 셋째, SHA-3은 SHA-2에 비해 훨씬 더 속도가 느리다는 것이 중론이었다. 결국 더 느리고 필요하지도 않은 것을 권장할 이유는 없었다.

SHA-2 개발업체의 대부분은 어쨌든 결함을 수정하기 위해 SHA-2 루틴을 업데이트해야 했다. 암호 개발업체 입장에서는 SHA-2를 구현하는 것이나 SHA-3 알고리즘으로 작성하는 편이나 난이도는 똑같았을 것이다. 권장 경로가 SHA-1에서 SHA-3이었다면 암호 개발업체들은 SHA-2 중간 단계를 거치지 않고 바로 구현했을 것이다.

SHA-3의 속도 문제
SHA-3은 소프트웨어에서만 느리다. 하드웨어에서는 SHA-1과 SHA-2를 가볍게 넘어서는 성능을 낸다. 암호화 루틴은 하드웨어 측에서 처리되는 비중이 늘고 있고 앞으로 그 추세는 더 강화될 것으로 전망된다.

소프트웨어 측면을 보면 인텔 CPU에서 SHA-1은 SHA-3에 비해 3배 더 빠르고 SHA-512는 2배 더 빠르다. 수치로 보면 실망스럽겠지만, 사실 최신 소프트웨어와 기기에서 해시 확인 요소는 상당히 드물게 사용되므로 해시를 수행하거나 확인하는 데 필요한 시간이 2배 또는 3배가 된다 해도 대부분의 고객 시나리오에서는 큰 부담이 되지 않는다. CPU는 점점 더 빨라지므로 얼마 후에는 이런 시간 증가를 아예 인지하지 못하게 될 것이다. 또한 SHA-3으로 선정된 해시 암호의 저자는 NSA/NIST에 소프트웨어에서 속도를 크게 높일 수 있는 여러 가지 방법을 제안한 상태다.

여기서 더 중요한 질문은 신뢰할 수 없다면 해시 속도가 더 빠른 것이 무슨 소용이냐는 것이다.

SHA-3 마이그레이션을 준비하는 방법
몇 년 내에 모두들 SHA-3 마이그레이션을 실시하게 될 것임은 확실하다. 그렇다면 어떻게 준비해야 할까?

첫째, SHA-3 마이그레이션이 다가온다는 점을 인식한다. 강제적으로 할 수밖에 없는 때가 언제가 될 지는 아무도 모른다. SHA-2에 대한 현실적인 공격 증가 양상에 달렸다. 언젠가 구글이나 다른 누군가가 SHA-2가 깨졌고 더 강한 것이 필요하다고 발표할 것이다. 그 소식에 깜짝 놀라는 사람이 되지 않도록 준비해야 한다.

둘째, SHA-2 마이그레이션 계획과 문서를 잘 보관한다. SHA-3 마이그레이션은 SHA-2 마이그레이션 작업과 상당부분 비슷할 것이다. SHA-2에서 실수했던 부분에 대해 생각하라. SHA-2 마이그레이션에서 얻은 교훈은 무엇인가? 교훈을 잊지 않도록 기존 암호 마이그레이션 문서를 업데이트해야 한다. 보유 중인 소프트웨어와 하드웨어 제품이 어떤 암호를 사용하는지 문서로 잘 기록하고 있는가?

마지막으로, IT 분야에서 일한다면 암호 마이그레이션은 일상적이고 정기적이며 지속적인 사이클 작업이 될 것임을 기억해야 한다. 자신과 자사의 동료, 그리고 개발업체는 암호에 대해 민첩한 태세를 갖춰야 한다. 필자는 암호화 민첩성의 개념에 대한 칼럼을 다룬 바 있다. editor@itworld.co.kr  
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.