검수요청.png검수요청.png

"SHA2"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(SHA-512)
(개요)
 
(사용자 4명의 중간 판 40개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''SHA-2'''(Secure Hash Algorithm 2)는 미국 국가안보국(NSA)이 설계한 [[암호화]] [[해시]] 함수들의 집합이다.<ref name="SHA-2 위키백과">〈[https://ko.wikipedia.org/wiki/SHA-2 SHA-2]〉, 《위키백과》</ref>
+
'''SHA-2'''(Secure Hash Algorithm 2)<!--sha2, sha-2, 샤2, 샤-2, Secure Hash Algorithm 2, SecureHashAlgorithm2-->[[미국국가안전보장국]](NSA)이 2001년에 설계한 [[암호화]] [[해시]] 함수들의 집합이다.
  
 
== 개요 ==
 
== 개요 ==
암호 해시 함수는 디지털 데이터 상에서 수학적으로 동작하는 것으로 알려져있고 예측된 해시값에 대해 계산된 해시(알고리즘의 실행 출력)를 비교함으로써 사람이 데이터의 무결성을 파악할 수 있게 된다. 이를테면 다운로드한 파일의 해시를 계산한 다음 이전에 게시한 해시 결과물의 결과와 비교하면 다운로드한 파일이 수정 또는 조작되었는지 알 수 있다. 암호 [[해시]] 함수의 주요 개념은 [[충돌 회피]]이다. 즉, 누구도 동일한 해시 출력 결과가 있는 두 개의 다른 입력값을 알아낼 수 없다. [[SHA-2]]는 전작 [[SHA-1]]으로부터 상당한 변경사항을 포함하고 있고, SHA-2 계열은 224, 256, 384, 512비트로 된 [[다이제스트]](해시 값)이 있는 6개의 해시 함수를 구성하고 있다. 'SHA-224, SHA-256, SHA-512, SHA-512/224, SHA-512/256'. <ref name="SHA-2 위키백과"></ref>
+
암호 해시 함수는 디지털 [[데이터]] 상에서 수학적으로 동작하는 것으로 알려져있는데, 이를 통해 예측된 해시값에 대해 계산된 해시(알고리즘의 실행 출력)를 비교함으로써 데이터의 [[무결성]]을 파악할 수 있다. 이를테면 [[다운로드]]한 파일의 해시를 계산한 다음 이전에 게시한 해시 결과물의 결과와 비교하면 다운로드한 파일이 수정 또는 조작되었는지 알 수 있다. 암호 [[해시]] 함수의 주요 개념은 [[충돌 회피]]이다. 이는 곧 누구도 동일한 해시 출력 결과가 있는 두 개의 다른 입력 값을 알아낼 수 없는 것을 의미한다. [[SHA-2]]는 전작 [[SHA-1]]으로부터 상당한 변경사항을 포함하고 있고, SHA-2 계열은 224, 256, 384, 512비트로 된 [[다이제스트]](해시값)이 있는 6개의 해시 함수를 구성하고 있다. '[[SHA-224]], [[SHA-256]], [[SHA-384]], [[SHA-512]], [[SHA-512/224]], [[SHA-512/256]]'.<ref name="SHA-2 위키백과">〈[https://ko.wikipedia.org/wiki/SHA-2 SHA-2]〉, 《위키백과》</ref>
  
 
== 등장배경 ==
 
== 등장배경 ==
1993년에 미국 국립표준기술연구소(NIST)에서 [[SHA-0]]을 미국 연방 정보 처리표준(FIPS PUB 180)으로 채택하고, 암호확적으로 심각한 결함이 발견됨에 따라 [[SHA-0]] 표준을 폐기하고, 1995년에 [[SHA-1]](FIPS PUB 180-1)을 표준으로 채택하였으나 마찬가지로 해독 방법이 제시되어, 2002년에 미국 국가안보국(NSA)에서 설계한 [[SHA-2]] 새롭게 공표하게 되었다.<ref>〈[https://terms.naver.com/entry.nhn?docId=3436585&cid=42346&categoryId=42346 SHA]〉, 《네이버 IT용어사전》</ref>
+
1993년에 [[미국표준기술연구소]](NIST)에서 [[SHA-0]]을 미국 연방 정보 처리 표준(FIPS PUB 180)으로 채택하고, 암호학적으로 심각한 결함이 발견됨에 따라 [[SHA-0]] 표준을 폐기한 후 1995년에 [[SHA-1]](FIPS PUB 180-1)을 표준으로 채택하였으나 마찬가지로 해독 방법이 제시되어, 2002년에 미국 국가안보국(NSA)에서 설계한 [[SHA-2]]새롭게 공표되었다.<ref>〈[https://terms.naver.com/entry.nhn?docId=3436585&cid=42346&categoryId=42346 SHA]〉, 《네이버 IT용어사전》</ref>
  
== 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]]이 가장 많이 채용되어지고 있다. <ref name="SHA 상용화"> Roger A. Grimes|CSO, 〈[http://www.itworld.co.kr/opinion/108321%20sha-2 왜 SHA-3을 사용하지 않는가]〉, 《ITWORLD》, 2018-02-23</ref>
 
  
이렇게 [[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로의 마이그레이션 계획, 즉 상용화 일정은 완전히 성공했다.<ref name="SHA 상용화"></ref>
 
 
* [[SHA-1]]과의 차이점
 
: [[SHA-1]]과 [[SHA-2]]는 동일하지는 않지만 똑같은 [[암호화]] 결함을 갖고있으며 동일한 수학적 기반을 일부 공유하고 있다. 하지만 [[SHA-2]]가 더 안전하다고 평가받는 이유는 [[SHA-1]]보다 [[SHA-2]]의 해시 길이가 더 크기 때문이다. 제일 많이 사용되는 [[SHA-256]]과 비교하자면 [[SHA-1]]의 해시 길이는 160비트인 것에 불과하지만 [[SHA-256]]는 해시 길이가 256비트이기 때문에 더 안전하다는 것이다.<ref name="SHA 상용화"></ref>
 
 
* [[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]]가 공식 권장 표준이 됐다.<ref name="SHA 상용화"></ref>
 
 
* [[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]]로 전환을 권장하지 않았던 것이다.<ref name="SHA 상용화"></ref>
 
 
== 종류 ==
 
 
[[파일:SHA-2.PNG|오른쪽|300픽셀|썸네일|SHA-2 그림1]]
 
[[파일:SHA-2.PNG|오른쪽|300픽셀|썸네일|SHA-2 그림1]]
 
[[파일:SHA-2-1.PNG|오른쪽|300픽셀|썸네일|SHA-2 그림2]]
 
[[파일:SHA-2-1.PNG|오른쪽|300픽셀|썸네일|SHA-2 그림2]]
[[SHA-2]] 계열은 224, 256, 384, 512비트로 된 [[다이제스트]](해시값)이 있는 6개의 해시 함수를 구성하고 있다.<ref name="SHA-2 위키피디아">〈[https://en.wikipedia.org/wiki/SHA-2 SHA]〉, 《위키피디아》</ref>
 
  
=== SHA-224 ===
+
* '''SHA-1에 대한 공격'''
SHA-224는 국가안보국(NSA)이 설계한 [[암호]] [[해시함수]]이다. SHA-224는 224비트(28바이트)의 [[해시 값]]을 생성하고, 일반적으로 길이가 56자리 인 16진수로 [[렌더링]]된다. 또한 SHA-224는 SHA-256을 두 가지 방법으로 수정하여 정의되었는데, 1. 256비트에서 32비트를 뺀 224비트로 줄여, 유효 보안 수준이 2의 224제곱을 갖고 있어 충돌 발견에 소요되는 예상 비용을 줄였고, 2. 다른 초기화 값. 즉, [[SHA-224]][[SHA-256]]에 대한 정보를 노출하지 않도록 한다(또는 그 반대도 마찬가지). 하지만 상위 버전인 SHA-256이 있기 때문에 자주 쓰이는 편은 아니나 해시가 많은 경우와 타원 곡선 그룹에 매핑 할 때는 유용하게 쓰일 있다.<ref name="SHA-2 특징">MOBILEFISH, 〈[https://www.mobilefish.com/services/hash_generator/hash_generator.php MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator]〉, 《MOBILEFISH》</ref><ref name="SHA-224">Ilmari Karonen, 〈[https://crypto.stackexchange.com/questions/15151/sha-224-purpose sha-224]〉, 《Cryptography》, 2014-03-21</ref>
+
: 2005년 부터 [[SHA-1]]에 대한 여러 가지 이론적 공격이 공개적으로 문서화되기 시작했다. SHA-1을 향한 공격이 거듭되면서 2012년에는 이론적으로 SHA-1의 보호 기능이 최대 평균 159비트에서 57.5 ~ 61비트 수준으로 낮아질 것으로 보았다. 이는 오랜 시간 동안 단순한 이론적 공격일 뿐이라고 치부되었지만, 시간이 경과함에 따라 더이상 이론적 공격이 아닌 실질적인 공격으로 바뀔 수 있음을 예상했고, 그 예상은 5년이란 시간이 지난 후에 현실화 됐다. 시간이 지나면 오래된 암호가 해독될 수 있다는 것은 모든 [[암호화]] 과정에서 예상되는 결과였기 때문에, 이에 대한 대비책으로 [[미국표준기술연구소]](NIST)는 [[미국국가안전보장국]](NSA)과 함께 누구나 새로 만든 암호를 제안할 있는 공개 대회를 정기적으로 개최하고 제안된 암호를 검토해 표준 암호로 선정하는 작업을 시작했다. 이 대회에서 선정된 대표적인 표준 암호로 [[AES]](Advanced Encryption Standard)와 [[SHA-3]] 등이 있다.
  
* SHA-256과 차이점
+
: SHA-2는 공개적인 대회를 통해 만들어지지는 않았지만  미국국가안전보장국이 설계하고 미국표준기술연구소가 공용 특허로 발표하여 2011년 1월(NIST 문서 SP800-131A), SHA-2가 새로운 권장 해시 표준이 됐다. 하지만 SHA-2가 공표된 시기는 이보다 훨신 이전으로, 2002년 미국표준기술연구소에 의해 [[FIPS PUB 180-2]]로 공표되었다. SHA-2는 224, 256, 384, 512비트 다이제스트를 포함한 여러 가지 길이의 해시를 포함한다고 하여 SHA-2 해시'군(famliy)'으로 불린다. 각 다이제스트는 관련 미국표준기술연구소 연방 정보 처리 표준 문서에서 논의 및 출시된다. 이름만으로는 다른 사람이 사용하는 SHA-2 비트 길이를 알 수 없지만 256비트인 [[SHA-256]]이 가장 많이 활용되고 있다. <ref name="SHA 상용화"> Roger A. Grimes|CSO, 〈[http://www.itworld.co.kr/opinion/108321%20sha-2 왜 SHA-3을 사용하지 않는가]〉, 《아이티월드》, 2018-02-23</ref>
** 초기 해시 값 h0 ~ h7은 서로 다르다.
 
** 출력은 h7을 생략하고 출력한다.<ref name="SHA-2 위키피디아"></ref>
 
  
* 문제점 : [[SHA-256]]보다 효율이 떨어진다. 128비트 이상 256비트 이하의 [[해시]]를 원하는 경우, [[SHA-256]]을 사용하여 원하는 비트 길이로 출력하는 것이 [[SHA-224]]를 사용하는 것만큼 간단하고 효율적이기 때문이다.<ref name="SHA-224"></ref>
+
* '''SHA-1에서 SHA-2로의 느린 이동'''
 +
: SHA-1에 대한 성공적인 공격이 이뤄지고 2011년부터 SHA-2가 미국표준기술연구소의 필수 해시 표준이 되었지만 전 세계적으로 대부분의 환경은 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-256 ===
+
: 마침내 기존에 있던 SHA-1에서 SHA-2로의 완전한 이동이 이루어졌으며, 그 시기 또한 매우 적절했다고 평가받는다. 기존 SHA-1이 깨지기 직전에 전 세계 대부분의 환경에서 SHA-2로의 전환을 성공적으로 마쳤고, 마이그레이션을 하지 않았던 기업들은 기존에 먼저 마이그레이션을 한 기업들 덕분에 훨씬 더 쉽게 마이그레이션을 할 수 있었기 때문이다. 수많은 기업이 마이그레이션을 완료하여 [[]]에서는 마이그레이션 방법에 대한 지침을 쉽게 찾을 수 있었고, 그 지침을 바탕으로 개발업체는 즉각적으로 마이그레이션을 할 준비가 되어있었으며, 대부분의 [[소프트웨어]][[하드웨어]] 업체 역시 마이그레이션에 대한 대비가 되어있었기 때문이다. SHA-1에서 SHA-2로의 마이그레이션 계획, 즉 상용화 일정은 완전히 성공했다.<ref name="SHA 상용화"></ref>
[[SHA-256]]은 현재 [[블록체인]]에서 가장 많이 채택하여 사용되고 있는 [[암호]] 방식이다. [[SHA-256]]은 256비트로 구성되어 62자리 문자열을 반환하며 유효 보안 수준이 2의 256제곱만큼을 가지고 있어 무차별 대입을 수행해 [[해시 충돌]]에 비교적 안전하다고 할 수 있고, 출력 속도가 빠르다는 장점을 갖고있다. 또한 단방향성의 성질을 띄고 있는 [[암호화]] 방법으로 [[복호화]]가 불가능하다. SHA-384, 512, [[SHA-3]]에 비해서는 유효 보호 수준이 낮을 지는 모르지만, 현재까지 안정성 문제에서도 큰 단점이 발견되지 않았고, 속도가 빠르기 때문에 [[인증서]], [[블록체인]] 등 많이 사용되고있으며, [[SHA-2]]라고 하면 [[SHA-256]]이라고 말할 정도로 상용화가 잘 되어있다.<ref name="SHA-2 특징"></ref><ref name="SHA-2 속도">Lyudmil Latinov, 〈[https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ MD5, SHA-1, SHA-256 and SHA-512 speed performance]〉, 《Automation Rhapsody》, 2018-05-03</ref>
 
  
* 문제점 : SHA-2에 대한 공격은 2008년부터 발생하기 시작했고, [[SHA-1]]의 경우와 마찬가지로 [[SHA-2]]에 대한 공격 역시 점점 박차를 가하며 [[SHA-2]]마저 약화시키고 있다. 일부 공격은 [[SHA-2]]의 유효 보호 수준을 237비트까지 낮췄고 2016년에 발표된 일부 최근 공격을 보면 [[SHA-2]] 공격은 이미 "실용" 단계에 있다고 할 수 있다. 따라서 추후 방법을 찾아야 한다는 것이다.<ref name="SHA 상용화"></ref>
+
* '''SHA-1과의 차이점'''
 +
: SHA-1과 SHA-2는 같은 [[암호화]] 결함을 갖고 있으며 동일한 수학적 기반을 일부 공유하고 있다. 그럼에도 불구하고 SHA-2가 안전하다고 평가받는 이유는 SHA-1보다 SHA-2의 해시 길이가 더 길기 때문이다. 가장 많이 사용되는 [[SHA-256]]과 비교하면 SHA-1의 해시 길이는 160비트에 불과하고 [[SHA-256]]는 해시 길이가 256비트이기 때문에 더 안전하다는 것이다.<ref name="SHA 상용화"></ref>
  
{{자세히|SHA-256}}
+
* '''SHA-2에 대한 공격'''
 +
: SHA-2에 대한 공격은 2008년부터 발생하기 시작했는데, SHA-1의 경우와 마찬가지로 SHA-2에 대한 공격 역시 점점 더 박차를 가하며 SHA-2 마저 약화시켰다. 일부 공격은 SHA-2의 유효 보호 수준을 237비트까지 낮췄고, 2016년에 발표된 일부 최근 공격을 보면 SHA-2 공격은 이미 실용 단계에 있다고 할 수 있었다. 즉, SHA-2 또한 불과 2~3년 전의 SHA-1과 비슷한 상황에 놓인 것이다. 앞에 언급했듯이 시간이 지나면서 기존 암호가 공격을 받고 약화되는 것은 예상 가능한 일이었기 때문에, 미국표준기술연구소에서는 SHA-2에서 파생되지 않은 새로운 [[해시 표준]]을 미리 확보하기 위한 목적으로 앞서 언급한 공개 대회를 통해 [[SHA-3]]을 선정하였다. 이렇게 미국표준기술연구소는 2015년에 초안 표준을 공표하였고, 2015년 8월 5일에는SHA-3가 공식 권장 표준이 됐다.<ref name="SHA 상용화"></ref>
  
=== SHA-384 ===
+
* '''SHA-3로 전환하지 않은 이유'''
[[SHA-384]]는 국가안보국(NSA)에서 설계한 [[암호 해시함수]]이다. SHA-384는 384비트(48바이트)의 [[해시 값]]을 생성하고, 일반적인 길이는 96자리 인 16진수로 [[렌더링]]이 된다. 또한 [[SHA-384]]는 [[SHA-256]]보다 큰 유효 보호 수준을 가지기 때문에 [[SHA-512]]만큼은 아니지만 대부분의 상상할 수 있는 충돌 저항에 대해 강점을 보인다. 어떤 [[해시]]를 사용할 것인가에 대한 주된 결정 요소는 얼마나 많은 양의 출력이 필요한가에 달려있는데, 예를 들어 256비트의 해시 기반 메시지 인증 코드(HMAC : Hash-based Message Authentication Code) 키와 128비트의 [[암호화]] 키를 모두 생성하기 위한 [[해시]]가 필요한 경우에 [[SHA-384]]의 사용은 당연하다고 할 수 있다. 계산 비용, 즉 의사 난수 생성기(PRNG : Pseudo Random Number Generator)의 출력이나 랜덤 [[패딩]]에 대해 가능한 많은 출력이 필요한 경우에는 [[SHA-512]]를 선택하는 것이 옳은 방법이라고 할 수 있다. 또한 [[SHA-384]]는 내부 상태로 출력을 감소시키지 않으므로 [[SHA-3]]에도 취약하지 않다.<ref name="SHA-2 특징"></ref><ref name="SHA-384"> David Schwartz, 〈[https://stackoverflow.com/questions/10061532/why-chose-sha512-over-sha384 Why chose SHA512 over SHA384?]〉 , 《stackoverflow》, 2012-04-08</ref>
+
: SHA-1을 폐기해야 하는 상황에서 대부분의 마이그레이션 작업은 2016년 후반에서 2017년 사이에 이뤄졌다. 많은 사람들이 SHA-1 전환의 공식적인 마감 날짜는 2017년 12월 31일이었으며, 3년이라는 준비 시간이 있었음에도 SHA-3이 아닌 SHA-2으로 전환한 이유에 대해 궁금해한다. 세 가지 이유가 있는데, 첫 번째는 SHA-3을 지원하는 [[소프트웨어]] 또는 [[하드웨어]]가 사실상 전무했기 때문이다. SHA-3으로 전환하고 싶어도 소유하거나 사용하고 있는 모든 기기를 위한 [[코드]][[펌웨어]]를 본인이 직접 작성하지 않는 한 방법이 없었다. 두 번째 이유는 SHA-3은 SHA-2의 마이그레이션 계획이 이미 수립된 시점에서 비교적 새로운 표준이었다는 것이다. 초기 SHA-1 폐기 회의가 열릴 당시 SHA-3은 공식 표준도 아니었고 SHA-2는 일부분이 SHA-1에서 파생되긴 했지만 SHA-1만큼 악용의 소지가 없었다. 마지막으로 SHA-3는 SHA-2에 비해 현저히 느린 속도를 가지고 있었다. 더 느리고 필요하지도 않은 것으로의 마이그레이션을 권장할 이유는 없었기 때문에 SHA-3으로의 전환을 권장하지 않았다.<ref name="SHA 상용화"></ref>
  
* SHA-512과 차이점
+
== 종류 ==
** 초기 해시 값 h0 ~ h7은 다르다(9번째 ~ 16번째 소수)
+
[[SHA-2]] 계열은 224, 256, 384, 512비트로 된 [[다이제스트]](해시값)이 있는 6개의 해시 함수를 구성하고 있다.<ref name="SHA-2 위키피디아">〈[https://en.wikipedia.org/wiki/SHA-2 SHA]〉, 《위키피디아》</ref>
** 출력은 h6과 h7을 생략하고 출력한다.<ref name="SHA-2 위키피디아"></ref>
 
  
* 문제점 : [[SHA-384]]는 길이 확장 공격(Length extension attack)에 있어서 [[SHA-512]]에 비해 강세를 보인다 [[SHA-512]]는 길이 확장 공격에 대해 휘발성이지만 [S[HA-384]]는 휘발성이 아니기 때문이다. 하지만 [[SHA-384]]의 경우에는 [[다이제스트]]의 서명이 필요하한데, 만약 ECDSA-384 서명을 채택할 경우 512비트가 아닌 384개의 해시 다이제스트가 필요로 한다. [[SHA-224]]와 [[SHA-256]]처럼 큰 비트에서 필요한 만큼의 비트를 자르고 출력하는 것이 더 쉬운 일이기 때문에 필요 상황에 맞게 사용해야 한다.<ref name="SHA-384"></ref>
+
* '''SHA-224''' : SHA-224는 2004년 2월 업데이트 된 [[SHA-2]]의 다른 버전으로, [[SHA-256]]으로 계산하다가 마지막에 출력을 224비트로 줄이는 [[알고리즘]]이다. SHA-224는 224비트(28 바이트) 해시값을 생성하며 일반적으로 56자리 길이의 16진수로 [[렌더링]]된다.<ref name="모바일피쉬">〈[https://www.mobilefish.com/services/hash_generator/hash_generator.php MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator]〉, ''MOBILEFISH''</ref><ref name="솔라나라">윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04</ref> {{자세히|SHA-224}}
  
=== SHA-512 ===
+
* '''SHA-256''' : SHA-256는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과 값을 출력한다. 일반적으로 입력 값이 조금만 변동하여도 출력 값이 완전히 달라지기 때문에 출력 값을 토대로 입력 값을 유추하는 것은 거의 불가능하다. 아주 작은 확률로 입력 값이 다름에도 불구하고 출력 값이 같은 경우가 발생하는데 이것을 충돌이라고 한다. 이러한 충돌의 발생 확률이 작을수록 좋은 함수라고 평가된다. {{자세히|SHA-256}}
[[SHA-512]]는 국가안보국(NSA)이 설계한 [[암호 해시함수]]이다. [[SHA-512]]는 512비트(64바이트) [[해시 값]]을 생성하는데, 일반적으로 길이가 128자리인 16진수로 [[렌더링]]된다. 또한 PRNG의 출력이나 랜덤 [[패딩]]에 대해 가능한 많이 출력이 필요한 경우에 대해 강점을 갖고있다. 또한 [[SHA-512]]는 전체적인 진행과정 중 가장 처음으로 발생하는 것이 [[패딩]](Padding)과정이며, [[해시 함수]]의 연산을 진행하기 전에 [[파싱]](Parsing)이라는 과정을 거치고 진행된다.<ref name="SHA-2 특징"></ref>
 
  
* SHA-256과의 차이점
+
* '''SHA-384''' : SHA-384는 2001년 SHA-1을 대체하기 위해 SHA-256, SHA-512와 같이 만들어진 만든 [[해시]] [[알고리즘]]이다. 384비트(48바이트)의 해시값을 생성하고, 일반적인 길이는 96자리 인 16진수로 [[렌더링]]이 된다. 현재 표준 알고리즘으로 널리사용되고 있다.<ref name="솔라나라">윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04</ref><ref name="모바일피쉬"></ref> {{자세히|SHA-384}}
** 블록의 크기는 1024비트로 변경
 
** 초기 해시 값 및 라운드 상수는 64비트로 확장
 
** 라운드(과정)는 62라운드가 아닌 80라운드로 변경
 
** 메시지 스케줄 배열은 64개의 32비트 문자 대신 80개의 64비트의 문자를 갖게 된다
 
** 메시지 스케줄 배열을 확장하기 위해 루프는 16개에서 63개로 확장시키는 것이 아니라 16개에서 79개로 확장 시킨다.
 
** 원형 상수는 처음 80개의 소수에 기초한다 2.409,
 
** 계산에 사용되는 단어 크기는 64비트이다.
 
** 메시지의 추가 길이 (전처리 전)는 비트 단위로 128비트 빅 엔디안 정수를 갖는다.
 
** 사용 된 이동 및 회전 양이 다르다.<ref name="SHA-2 위키피디아"></ref>
 
  
* 문제점 : [[SHA-512]]로 서명 된 인증서는 Windows TLS 1.2에서는 작동하지 않는 점이 발견되었고,<ref>st.he.ag, 〈[https://social.technet.microsoft.com/Forums/office/en-US/857c6804-8ce1-4f09-b657-00554055da16/tls-12-and-sha512?forum=winserversecurity TLS 1.2 and SHA-512]〉, 《TechNet Microsoft》, 2014-04-16</ref>길이 확장 공격에 대해 취약하며, SHA-256이 SHA-512보다 훨씬 빠르게 64개의 [[해시]]를 만들어낸다. 즉, 아직까지 [[SHA-512]]를 사용할 만큼의 문제점도 발견되지 않았다. 또한 현재에는 짧은 문자열(36 ~ 49 문자)이 사용되고 있고 긴 문자열(72 ~ 85 문자)에서도 큰 속도의 차이는 없기 때문에 상대적으로 속도적으로 느리며, 상대적으로 기술 비용이 많이 들어가는 [[SHA-512]]를 채택할 필요는 없다는 것이다. 하지만 64비트 [[CPU]]에서는 처리성능(속도)이 좋아지고, 현재는 64비트 [[CPU]]가 많이 사용되고 있고 성능도 좋아졌기 때문에 속도적인 측면에서의 단점은 어느 정도 해결이 되었지만, [[SHA-512]]의 특성상 결과 값이 512비트로만 나와서 용량(공간)을 너무 많이 차지한다는 단점이 있다.<ref name="SHA-2 속도"></ref><ref name="SHA-384"></ref>
+
* '''SHA-512''' : SHA-512는 SHA-2가 생성하는 다이제스트 출력 길이의 종류 중 하나이다. SHA-512는 46~80 라운드를 통과해야 공격으로부터 안전하다고 판단하며, 1024 비트를 1개의 [[패딩]] 메시지로 만든다.<ref name="티핀">티핀, 〈[https://blog.naver.com/tpinlab/10121774937 SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)], 《네이버 블로그》, 2011-10-19</ref> {{자세히|SHA-512}}
  
{{자세히|SHA-512}}
+
* '''SHA-512/224''' : 2012년 3월에 업데이트 된 SHA-512의 축소 버전이다. 알고리즘은 SHA-512와 동일하게 계산하지만, 최종 값 도출에 SHA-224와 같은 길이로 결과 값을 축소한다. SHA-512이 32비트 프로세서인 SHA-256보다 64비트 [[프로세서]]에서 계산이 빠르기 때문에 개발되었다.<ref name="솔라나라">윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04</ref> {{자세히|SHA-512/224}}
  
=== SHA-512/224 & SHA-512/256 ===
+
* '''SHA-512/256''' : 2012년 3월에 업데이트 된 SHA-512의 축소 버전이다. 알고리즘은 SHA-512와 동일하게 계산하지만, 최종 값 도출에 SHA-256과 같은 길이로 결과 값을 축소한다. SHA-512이 32비트 프로세서인 SHA-256보다 64비트 [[프로세서]]에서 계산이 빠르기 때문에 개발되었다. SHA-512/224와 출력 비트 크기 외에는 다 똑같다고 할 수 있다.<ref name="솔라나라">윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04</ref> {{자세히|SHA-512/256}}
SHA-512/224, 256은 SHA-512와 동일한 특징을 갖고있는게 특징인데, SHA-512에서의 공간을 많이 차지한다는 단점과 SHA-512가 SHA-256보다 64비트 CPU에서 계산이 빠르기 때문에 개발된 알고리즘이다. 계산방법은 SHA-512와 동일하지만 마지막에 결과 비트를 SHA-224, SHA-256과 같은 길이로 결과값을 축소하는 단계를 추가한 것(초기 벡터값도 다르다.)인데, 이는 SHA-512의 안정성을 해치지 않으며, 비트수를 줄였음에도 불구하고 보안 위협도 현재까지도 크게 없었다.<ref>윈디하나, 〈[http://windy.luru.net/entry/SHA-512224-SHA-512256 SHA-512/224, SHA-512/256]〉, 《윈디하나 블로그》, 2013-04-09</ref><ref>스타버드, 〈[https://starbirds.tistory.com/tag/SHA-512/256 SHA-256 , SHA-512 pseudo code로 원리 이해하기]〉, 《스타버드 블로그》, 2018-05-15</ref><ref>윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04</ref>
 
 
 
* SHA-512와의 차이점
 
** 초기 해시 값 h0 ~ h7은 SHA-512/t IV 생성 함수에 의해 주어진다.
 
** 출력은 t비트에서 h0 ~ h7의 결합 절단하여 생성된다.
 
** t는 384와 같을 수 없고, 대신 SHA-384가 지정된 대로 사용해야 한다.
 
** t 값 224와 256은 승인된 것으로 언급한다.<ref name="SHA-2 위키피디아"></ref>
 
  
 
{{각주}}
 
{{각주}}
82번째 줄: 50번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
*〈[https://ko.wikipedia.org/wiki/SHA-2 SHA-2]〉, 《위키백과》
 
*〈[https://ko.wikipedia.org/wiki/SHA-2 SHA-2]〉, 《위키백과》
 +
*〈[https://en.wikipedia.org/wiki/SHA-2 SHA]〉, 《위키피디아》
 
*〈[https://terms.naver.com/entry.nhn?docId=3436585&cid=42346&categoryId=42346 SHA]〉, 《네이버 IT용어사전》
 
*〈[https://terms.naver.com/entry.nhn?docId=3436585&cid=42346&categoryId=42346 SHA]〉, 《네이버 IT용어사전》
*Roger A. Grimes|CSO, 〈[http://www.itworld.co.kr/opinion/108321%20sha-2 왜 SHA-3을 사용하지 않는가]〉, 《ITWORLD》, 2018-02-23
+
* Roger A. Grimes, 〈[http://www.itworld.co.kr/opinion/108321%20sha-2 왜 SHA-3을 사용하지 않는가]〉, 《아이티월드》, 2018-02-23
*〈[https://en.wikipedia.org/wiki/SHA-2 SHA]〉, 《위키피디아》
 
*MOBILEFISH, 〈[https://www.mobilefish.com/services/hash_generator/hash_generator.php MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator]〉, 《MOBILEFISH》*Ilmari Karonen, 〈[https://crypto.stackexchange.com/questions/15151/sha-224-purpose sha-224]〉, 《Cryptography》, 2014-03-21
 
*Lyudmil Latinov, 〈[https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ MD5, SHA-1, SHA-256 and SHA-512 speed performance]〉, 《Automation Rhapsody》, 2018-05-03
 
*David Schwartz, 〈[https://stackoverflow.com/questions/10061532/why-chose-sha512-over-sha384 Why chose SHA512 over SHA384?]〉 , 《stackoverflow》, 2012-04-08
 
*st.he.ag, 〈[https://social.technet.microsoft.com/Forums/office/en-US/857c6804-8ce1-4f09-b657-00554055da16/tls-12-and-sha512?forum=winserversecurity TLS 1.2 and SHA-512]〉, 《TechNet Microsoft》, 2014-04-16
 
*윈디하나, 〈[http://windy.luru.net/entry/SHA-512224-SHA-512256 SHA-512/224, SHA-512/256]〉, 《윈디하나 블로그》, 2013-04-09
 
*스타버드, 〈[https://starbirds.tistory.com/tag/SHA-512/256 SHA-256 , SHA-512 pseudo code로 원리 이해하기]〉, 《스타버드 블로그》, 2018-05-15
 
*윈디하나, 〈[https://www.solanara.net/solanara/digestsolaris 해시알고리즘 비교]〉, 《윈디하나의 솔라나라》, 2011-09-04
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
103번째 줄: 64번째 줄:
 
* [[SHA-3]]
 
* [[SHA-3]]
  
{{알고리즘|검토 필요}}
+
{{암호 알고리즘|검토 필요}}

2023년 4월 11일 (화) 21:27 기준 최신판

SHA-2(Secure Hash Algorithm 2)는 미국국가안전보장국(NSA)이 2001년에 설계한 암호화 해시 함수들의 집합이다.

개요[편집]

암호 해시 함수는 디지털 데이터 상에서 수학적으로 동작하는 것으로 알려져있는데, 이를 통해 예측된 해시값에 대해 계산된 해시(알고리즘의 실행 출력)를 비교함으로써 데이터의 무결성을 파악할 수 있다. 이를테면 다운로드한 파일의 해시를 계산한 다음 이전에 게시한 해시 결과물의 결과와 비교하면 다운로드한 파일이 수정 또는 조작되었는지 알 수 있다. 암호 해시 함수의 주요 개념은 충돌 회피이다. 이는 곧 누구도 동일한 해시 출력 결과가 있는 두 개의 다른 입력 값을 알아낼 수 없는 것을 의미한다. SHA-2는 전작 SHA-1으로부터 상당한 변경사항을 포함하고 있고, SHA-2 계열은 224, 256, 384, 512비트로 된 다이제스트(해시값)이 있는 6개의 해시 함수를 구성하고 있다. 'SHA-224, SHA-256, SHA-384, 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 그림1
SHA-2 그림2
  • SHA-1에 대한 공격
2005년 부터 SHA-1에 대한 여러 가지 이론적 공격이 공개적으로 문서화되기 시작했다. SHA-1을 향한 공격이 거듭되면서 2012년에는 이론적으로 SHA-1의 보호 기능이 최대 평균 159비트에서 57.5 ~ 61비트 수준으로 낮아질 것으로 보았다. 이는 오랜 시간 동안 단순한 이론적 공격일 뿐이라고 치부되었지만, 시간이 경과함에 따라 더이상 이론적 공격이 아닌 실질적인 공격으로 바뀔 수 있음을 예상했고, 그 예상은 5년이란 시간이 지난 후에 현실화 됐다. 시간이 지나면 오래된 암호가 해독될 수 있다는 것은 모든 암호화 과정에서 예상되는 결과였기 때문에, 이에 대한 대비책으로 미국표준기술연구소(NIST)는 미국국가안전보장국(NSA)과 함께 누구나 새로 만든 암호를 제안할 수 있는 공개 대회를 정기적으로 개최하고 제안된 암호를 검토해 표준 암호로 선정하는 작업을 시작했다. 이 대회에서 선정된 대표적인 표준 암호로 AES(Advanced Encryption Standard)와 SHA-3 등이 있다.
SHA-2는 공개적인 대회를 통해 만들어지지는 않았지만 미국국가안전보장국이 설계하고 미국표준기술연구소가 공용 특허로 발표하여 2011년 1월(NIST 문서 SP800-131A), SHA-2가 새로운 권장 해시 표준이 됐다. 하지만 SHA-2가 공표된 시기는 이보다 훨신 이전으로, 2002년 미국표준기술연구소에 의해 FIPS PUB 180-2로 공표되었다. SHA-2는 224, 256, 384, 512비트 다이제스트를 포함한 여러 가지 길이의 해시를 포함한다고 하여 SHA-2 해시'군(famliy)'으로 불린다. 각 다이제스트는 관련 미국표준기술연구소 연방 정보 처리 표준 문서에서 논의 및 출시된다. 이름만으로는 다른 사람이 사용하는 SHA-2 비트 길이를 알 수 없지만 256비트인 SHA-256이 가장 많이 활용되고 있다. [3]
  • SHA-1에서 SHA-2로의 느린 이동
SHA-1에 대한 성공적인 공격이 이뤄지고 2011년부터 SHA-2가 미국표준기술연구소의 필수 해시 표준이 되었지만 전 세계적으로 대부분의 환경은 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-2로의 완전한 이동이 이루어졌으며, 그 시기 또한 매우 적절했다고 평가받는다. 기존 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 공격은 이미 실용 단계에 있다고 할 수 있었다. 즉, SHA-2 또한 불과 2~3년 전의 SHA-1과 비슷한 상황에 놓인 것이다. 앞에 언급했듯이 시간이 지나면서 기존 암호가 공격을 받고 약화되는 것은 예상 가능한 일이었기 때문에, 미국표준기술연구소에서는 SHA-2에서 파생되지 않은 새로운 해시 표준을 미리 확보하기 위한 목적으로 앞서 언급한 공개 대회를 통해 SHA-3을 선정하였다. 이렇게 미국표준기술연구소는 2015년에 초안 표준을 공표하였고, 2015년 8월 5일에는SHA-3가 공식 권장 표준이 됐다.[3]
  • SHA-3로 전환하지 않은 이유
SHA-1을 폐기해야 하는 상황에서 대부분의 마이그레이션 작업은 2016년 후반에서 2017년 사이에 이뤄졌다. 많은 사람들이 SHA-1 전환의 공식적인 마감 날짜는 2017년 12월 31일이었으며, 3년이라는 준비 시간이 있었음에도 SHA-3이 아닌 SHA-2으로 전환한 이유에 대해 궁금해한다. 세 가지 이유가 있는데, 첫 번째는 SHA-3을 지원하는 소프트웨어 또는 하드웨어가 사실상 전무했기 때문이다. SHA-3으로 전환하고 싶어도 소유하거나 사용하고 있는 모든 기기를 위한 코드펌웨어를 본인이 직접 작성하지 않는 한 방법이 없었다. 두 번째 이유는 SHA-3은 SHA-2의 마이그레이션 계획이 이미 수립된 시점에서 비교적 새로운 표준이었다는 것이다. 초기 SHA-1 폐기 회의가 열릴 당시 SHA-3은 공식 표준도 아니었고 SHA-2는 일부분이 SHA-1에서 파생되긴 했지만 SHA-1만큼 악용의 소지가 없었다. 마지막으로 SHA-3는 SHA-2에 비해 현저히 느린 속도를 가지고 있었다. 더 느리고 필요하지도 않은 것으로의 마이그레이션을 권장할 이유는 없었기 때문에 SHA-3으로의 전환을 권장하지 않았다.[3]

종류[편집]

SHA-2 계열은 224, 256, 384, 512비트로 된 다이제스트(해시값)이 있는 6개의 해시 함수를 구성하고 있다.[4]

  • SHA-256 : SHA-256는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과 값을 출력한다. 일반적으로 입력 값이 조금만 변동하여도 출력 값이 완전히 달라지기 때문에 출력 값을 토대로 입력 값을 유추하는 것은 거의 불가능하다. 아주 작은 확률로 입력 값이 다름에도 불구하고 출력 값이 같은 경우가 발생하는데 이것을 충돌이라고 한다. 이러한 충돌의 발생 확률이 작을수록 좋은 함수라고 평가된다. 가기.png SHA-256에 대해 자세히 보기
  • SHA-384 : SHA-384는 2001년 SHA-1을 대체하기 위해 SHA-256, SHA-512와 같이 만들어진 만든 해시 알고리즘이다. 384비트(48바이트)의 해시값을 생성하고, 일반적인 길이는 96자리 인 16진수로 렌더링이 된다. 현재 표준 알고리즘으로 널리사용되고 있다.[6][5] 가기.png SHA-384에 대해 자세히 보기
  • SHA-512 : SHA-512는 SHA-2가 생성하는 다이제스트 출력 길이의 종류 중 하나이다. SHA-512는 46~80 라운드를 통과해야 공격으로부터 안전하다고 판단하며, 1024 비트를 1개의 패딩 메시지로 만든다.[7] 가기.png SHA-512에 대해 자세히 보기
  • SHA-512/224 : 2012년 3월에 업데이트 된 SHA-512의 축소 버전이다. 알고리즘은 SHA-512와 동일하게 계산하지만, 최종 값 도출에 SHA-224와 같은 길이로 결과 값을 축소한다. SHA-512이 32비트 프로세서인 SHA-256보다 64비트 프로세서에서 계산이 빠르기 때문에 개발되었다.[6] 가기.png SHA-512/224에 대해 자세히 보기
  • SHA-512/256 : 2012년 3월에 업데이트 된 SHA-512의 축소 버전이다. 알고리즘은 SHA-512와 동일하게 계산하지만, 최종 값 도출에 SHA-256과 같은 길이로 결과 값을 축소한다. SHA-512이 32비트 프로세서인 SHA-256보다 64비트 프로세서에서 계산이 빠르기 때문에 개발되었다. SHA-512/224와 출력 비트 크기 외에는 다 똑같다고 할 수 있다.[6] 가기.png SHA-512/256에 대해 자세히 보기

각주[편집]

  1. SHA-2〉, 《위키백과》
  2. SHA〉, 《네이버 IT용어사전》
  3. 3.0 3.1 3.2 3.3 3.4 Roger A. Grimes|CSO, 〈왜 SHA-3을 사용하지 않는가〉, 《아이티월드》, 2018-02-23
  4. SHA〉, 《위키피디아》
  5. 5.0 5.1 MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator〉, MOBILEFISH
  6. 6.0 6.1 6.2 6.3 윈디하나, 〈해시알고리즘 비교〉, 《윈디하나의 솔라나라》, 2011-09-04
  7. 티핀, 〈SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)〉, 《네이버 블로그》, 2011-10-19

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 SHA2 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.