SHA2
SHA-2(Secure Hash Algorithm 2)는 미국 국가안보국(NSA)이 설계한 암호화 해시 함수들의 집합이다.[1]
목차
개요
암호 해시 함수는 디지털 데이터 상에서 수학적으로 동작하는 것으로 알려져있고 예측된 해시값에 대해 계산된 해시(알고리즘의 실행 출력)를 비교함으로써 사람이 데이터의 무결성을 파악할 수 있게 된다. 이를테면 다운로드한 파일의 해시를 계산한 다음 이전에 게시한 해시 결과물의 결과와 비교하면 다운로드한 파일이 수정 또는 조작되었는지 알 수 있다. 암호 해시 함수의 주요 개념은 충돌 회피이다. 즉, 누구도 동일한 해시 출력 결과가 있는 두 개의 다른 입력값을 알아낼 수 없다. SHA-2는 전작 SHA-1으로부터 상당한 변경사항을 포함하고 있고, SHA-2 계열은 224, 256, 384, 512비트로 된 다이제스트(해시 값)이 있는 6개의 해시 함수를 구성하고 있다. 'SHA-224, SHA-256, SHA-512, SHA-512/224, SHA-512/256'. [1]
등장배경
1993년에 미국 국립표준기술연구소(NIST)에서 SHA-0을 미국 연방 정보 처리표준(FIPS PUB 180)으로 채택하고, 암호확적으로 심각한 결함이 발견됨에 따라 SHA-0 표준을 폐기하고, 1995년에 SHA-1(FIPS PUB 180-1)을 표준으로 채택하였으나 마찬가지로 해독 방법이 제시되어, 2002년에 미국 국가안보국(NSA)에서 설계한 SHA-2 새롭게 공표하게 되었다.[2]
SHA-2의 상용화
2005년 부터 SHA-1에 대한 여러 가지 이론적 공격이 공개적으로 문서화되기 시작했다. SHA-1 공격이 거듭되면서 2012년에는 이론적으로 SHA-1의 보호 기능이 최대 평균 159비트에서 57.5 ~ 61비트 수준으로 낮아질 것으로 보았다. 하지만 그 오랜 시간 동안 이는 단순한 이론적 공격일 뿐이었지만, 시간이 경과함에 따라 이론적 공격이 실제 공격으로 바뀔 것임을 예상했고, 그 에상은 5년이란 시간이 자난 후였지만 현실화가 됐다. 그렇게 오래된 암호는 시간이 지나면 깨진다는 것은 모든 암호화에서 예상되는 결과였고, 미국 국립표준기술연구소(NIST)는 미국 국가 안보국(NSA)와 함께 누구나 새로 만든 암호를 제안할 수 있는 공개 대회를 정기적으로 개최하고 제안된 암호를 검토해 표준 암호로 선정하는 것이다(대표적으로 선정된 암호는 AES(Advanced Encryption Standard), SHA-3 등). 하지만 SHA-2는 공개적인 대회를 통해 만들어지지는 않았지만 미국 국가 안보국(NSA)이 설계하고 공용 특허로 미국 국립표준기술연구소(NIST)이 발표하여 2011년 1월(NIST 문서 SP800-131A), SHA-2가 새로운 권장 해시 표준이 됐다'(공표가 된 것은 2002년 NIST가 SHA-2(FIPS PUB 180-2)를 공표)'. SHA-2는 224, 256, 384, 512비트 다이제스트를 포함해 여러 가지 길이의 해시를 포함하므로 SHA-2 해시 '군(famliy)'으로 불리며(각 다이제스트는 관련 NIST 연방 정보 처리 표준 문서에서 논의 및 릴리스됨), 또한 이름만으로는 다른 사람이 사용하는 SHA-2 비트 길이를 알 수 없지만 256비트인 SHA-256이 가장 많이 채용되어지고 있다. [3]
이렇게 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로의 마이그레이션 계획, 즉 상용화 일정은 완전히 성공했다.[3]
- SHA-1과의 차이점
- SHA-1과 SHA-2는 동일하지는 않지만 똑같은 암호화 결함을 갖고있으며 동일한 수학적 기반을 일부 공유하고 있다. 하지만 SHA-2가 더 안전하다고 평가받는 이유는 SHA-1보다 SHA-2의 해시 길이가 더 크기 때문이다. 제일 많이 사용되는 SHA-256과 비교하자면 SHA-1의 해시 길이는 160비트인 것에 불과하지만 SHA-256는 해시 길이가 256비트이기 때문에 더 안전하다는 것이다.[3]
- SHA-2에 대한 공격
- SHA-2에 대한 공격은 2008년부터 발생하기 시작했고, SHA-1의 경우와 마찬가지로 SHA-2에 대한 공격 역시 점점 더 박차를 가하며 SHA-2마저 약화시키고 있다. 일부 공격은 SHA-2의 유효 보호 수준을 237비트까지 낮췄고 2016년에 발표된 일부 최근 공격을 보면 SHA-2 공격은 이미 "실용" 단계에 있다고 할 수 있다. 불과 2~3년 전 SHA-1과 비슷한 상황이 이어지고 있다. 앞에 언급했듯이 시간이 지나면서 기존 암호가 공격을 받고 약화되는 것은 예상 가능한 일이고, 실제로 NIST에서는 SHA-2에서 파생되지 않은 새로운 해시 표준을 미리 확보하기 위한 목적으로 앞서 언급한 공개 대회를 통해 SHA-3을 선정하였다. 이렇게 NIST는 2015년에 초안 표준을 공표하였고, 2015년 8월 5일에는 SHA-3가 공식 권장 표준이 됐다.[3]
- SHA-3로 전환하지 않은 이유
- 여기서 SHA-1을 포기하고, 대부분의 마이그레이션 작업은 2016년 후반에서 2017년 사이에 이뤄졌고, SHA-1 전환의 공식 마감 날짜인 2017년 12월 31일 임에도 불구하고, 3년이란 시간이 있었는데 왜 SHA-3로 마이그레이션(전환)하라고 권하지 않은 이유로는 3가지가 있다. 1. SHA-3를 지원하는 소프트웨어 또는 하드웨어가 사실상 전무했다. SHA-3로 전환하고 싶어도 소유하거나 사용하고 있는 모든 기기를 위한 코드와 펌웨어를 본인이 직접 작성하지 않는 한 방법이 없다는 것, 2. SHA-3는 SHA-2의 마이그레이션 계획이 이미 수립된 시점에서 비교적 새로운 표준이었고, 초기 SHA-1 폐기 회의가 열릴 당시 SHA-3는 공식 표준도 아니었다는 점과 SHA-1에서 파생되긴 했지만 SHA-1만큼 악용의 소지가 없었다는 점, 3. SHA-3는 SHA-2에 비해 훨씬 더 속도가 느리다는 것이 중론이었다. 결국 더 느리고 필요하지도 않은 것을 권장할 이유는 없었기 때문에 SHA-3로 전환을 권장하지 않았던 것이다.[3]
종류
SHA-2 계열은 224, 256, 384, 512비트로 된 다이제스트(해시값)이 있는 6개의 해시 함수를 구성하고 있다.[4]
SHA-224
SHA-256
SHA-384
SHA-512
SHA-512/224
SHA-512/256
각주
참고자료
- 〈SHA-2〉, 《위키백과》
- 〈SHA〉, 《네이버 IT용어사전》
- Roger A. Grimes|CSO, 〈왜 SHA-3을 사용하지 않는가〉, 《ITWORLD》, 2018-02-23
- 〈SHA〉, 《위키피디아》
- MOBILEFISH, 〈MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator〉, 《MOBILEFISH》*Ilmari Karonen, 〈sha-224〉, 《Cryptography》, 2014-03-21
- Lyudmil Latinov, 〈MD5, SHA-1, SHA-256 and SHA-512 speed performance〉, 《Automation Rhapsody》, 2018-05-03
- David Schwartz, 〈Why chose SHA512 over SHA384?〉 , 《stackoverflow》, 2012-04-08
- st.he.ag, 〈TLS 1.2 and SHA-512〉, 《TechNet Microsoft》, 2014-04-16
- 윈디하나, 〈SHA-512/224, SHA-512/256〉, 《윈디하나 블로그》, 2013-04-09
- 스타버드, 〈SHA-256 , SHA-512 pseudo code로 원리 이해하기〉, 《스타버드 블로그》, 2018-05-15
- 윈디하나, 〈해시알고리즘 비교〉, 《윈디하나의 솔라나라》, 2011-09-04
같이 보기
|