최신판 |
당신의 편집 |
29번째 줄: |
29번째 줄: |
| | | |
| 2012년 10월 2일, NIST는 알고리즘 캐착 (KECCAK) 이 경진 우승 알고리즘으로 되었음을 선포하였다. <ref>"[https://csrc.nist.gov/publications/detail/nistir/7896/final NISTIR 7896, Third-Round Report of the SHA-3 Competition]", ''CSRC''</ref> | | 2012년 10월 2일, NIST는 알고리즘 캐착 (KECCAK) 이 경진 우승 알고리즘으로 되었음을 선포하였다. <ref>"[https://csrc.nist.gov/publications/detail/nistir/7896/final NISTIR 7896, Third-Round Report of the SHA-3 Competition]", ''CSRC''</ref> |
− |
| |
− | 2014년 NIST는 FIPS 202 "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions" 초안을 공개 발행하였으며 2015년 8월 5일에 공식승인을 취득하였다.
| |
− |
| |
− | 2015년 8월 5일 NIST는 SHA-3이 신규 해싱표준 (Hashing Standard) 이 되었음을 공개발표하였다.
| |
| | | |
| ==소개== | | ==소개== |
− | [[파일:스펀지.png|썸네일|350픽셀|해시함수 스펀지 구조]]
| |
− | SHA-3 해시알고리즘은 SHA3-224, SHA3-256, SHA3-384 와 SHA3-512 등 4개 암호화 해시 알고리즘 그리고 SHAKE128과 SHAKE256, 두개의 확장가능한 출력함수 (Extendable-output functions) (XOFs)로 구성되어 있다. 스펀지구조로 이루어졌기에 스펀지함수라고도 한다.
| |
− |
| |
− | 스펀지 구조는 Wide random function 혹은 random permutation에 기반하였으며 pseudorandom function의 역할로 입력하는 데이터를 처리 할 시 임의 길이의 데이터 입력을 허용하며 임의 길이 데이터의 출력을 허용한다. 상당히 훌륭한 융통성이 구현되었다.
| |
− |
| |
− | 전반 과정을 보면 임의 길이의 데이터가 입력시 메세지를 패딩 (Padding)하는 패딩함수가 역할하면서 입력한 데이터의 다이제스트 (Digest)를 뽑으며 그 뒤에 전환함수가 역할하면서 소정 길이의 출력이 이루어진다. SHA-3에 적용한 케착-f [1600] (Keccak-f [1600]) 전환함수는 XOR, AND, NOT를 사용한 순열이다.
| |
| | | |
− | SHA3 의 속도문제를 살펴보면 소프트웨어 측면에서 SHA-1보다 3배 더디고 SHA-512 대비 2배 더디다. 하드웨어 측면에서는 SHA-1, SHA-2를 가볍게 넘어서는 성능을 나타낸다. 수치로 보면 약간 실망스럽지만 최신 소프트웨어와 기기에서 해시 확인 절차는 아주 드물게 사용함으로 해시 수행과정에 소모하는 시간이 2배, 3배 된다하더라도 대부분 고객의 시나리오에는 별반 영향을 안 미친다. 이외 CPU의 계산속도가 나날이 향상됨에 따라 얼마후에는 아예 느껴지지도 않을수도 있다.
| |
| | | |
− | 사례
| |
− |
| |
− | NIST 표준은 주어진 메세지 M와 출력길이 d를 대상으로 아래의 사례를 정의하였다.
| |
− |
| |
− | :{|class=wikitable width=800
| |
− | |-
| |
− | !align=center|사례
| |
− | !align=center|출력 길이
| |
− | !align=center|비율=블록길이
| |
− | !align=center|용량
| |
− | !align=center|정의
| |
− | !align=center|보안강도<br>충돌
| |
− | !align=center|보안강도<br>프리이미지
| |
− | !align=center|보안강도<br>두 번째<br>프리이미지
| |
− | |-
| |
− | |align=left|SHA3-224(M)
| |
− | |align=center|224
| |
− | |align=center|1152
| |
− | |align=left|448
| |
− | |align=left|Keccak[448](M 01, 224)
| |
− | |align=center|112
| |
− | |align=center|224
| |
− | |align=center|224
| |
− | |-
| |
− | |align=left|SHA3-256(M)
| |
− | |align=center|256
| |
− | |align=center|1088
| |
− | |align=left|512
| |
− | |align=left|Keccak[512](M 01, 256)
| |
− | |align=center|128
| |
− | |align=center|256
| |
− | |align=center|256
| |
− | |-
| |
− | |align=left|SHA3-384(M)
| |
− | |align=center|384
| |
− | |align=center|832
| |
− | |align=left|768
| |
− | |align=left|Keccak[768](M 01, 384)
| |
− | |align=center|192
| |
− | |align=center|384
| |
− | |align=center|384
| |
− | |-
| |
− | |align=left|SHAKE128(M, d)
| |
− | |align=center|d
| |
− | |align=center|1344
| |
− | |align=left|256
| |
− | |align=left|Keccak[256](M 1111, d)
| |
− | |align=left|min(d | 2,128)
| |
− | |align=left|≥min(d,128)
| |
− | |align=left|min(d,128)
| |
− | |-
| |
− | |align=left|SHAKE256(M, d)
| |
− | |align=center|d
| |
− | |align=center|1088
| |
− | |align=left|512
| |
− | |align=left|Keccak[512](M 1111, d)
| |
− | |align=left|min(d | 2,256)
| |
− | |align=left|≥min(d,256)
| |
− | |align=left|min(d,256)
| |
− | |-
| |
− | |}
| |
− |
| |
− | SHA3 적용시점
| |
− |
| |
− | SHA-1과 SHA-2는 NSA가 만들어 표준으로 사용한 암호화 해시알고리즘이며 동일하지는 않지만 똑같은 암호화 결함을 포함한 동일한 수학적 기반을 일부 공유한다. SHA-2가 더 안전한 해시인 이유는 주로 늘어난 해시 길이에 있다.
| |
− |
| |
− | 2008년부터 SHA-2를 대상한 공격이 발생하였으며 SHA-1의 경우와 마찬가지로 SHA-2에 대한 공격 역시 점점 더 효과를 더하여 SHA-2를 약화시키고 일부 공격은 SHA-2의 유효 보호 수준을 237까지 낮췄다. 2016년에 발표된 공격사례를 보면 SHA-2 공격은 이미 "실용" 단계에 처해 있으며 불과 2~3년 전 SHA-1을 두고 펼쳐졌던 상황과 유사하다
| |
− |
| |
− | 세월이 흐르면서 기존 암호가 공격을 받고 약화되는 것은 예상가능한 사항들이며 NIST는 기존 SHA 군에서 파생되지 않은 새로운 해시 표준을 사전 확보하고자 경진방식으로 SHA-3을 선정하여 2015년 8월에 권장기준으로 공개발표하였다. 마이그레이션의 구체적인 시점은 정해진 일정이 없지만 조만간 전부 적용되여야 하는것은 분명한 사항이다.<ref>〈[http://www.itworld.co.kr/news/108321#csidx4c15bad02f207bdaad55c8557f85bc7 글로벌 칼럼: 왜 SHA-3을 사용하지 않는가]〉, 《네이버블로그》</ref>
| |
| | | |
| {{각주}} | | {{각주}} |
− |
| |
| ==참고자료== | | ==참고자료== |
| * "[https://csrc.nist.gov/projects/hash-functions/sha-3-project SHA-3 Project - Hash Functions]", ''CSRC'' | | * "[https://csrc.nist.gov/projects/hash-functions/sha-3-project SHA-3 Project - Hash Functions]", ''CSRC'' |
127번째 줄: |
46번째 줄: |
| ==같이 보기== | | ==같이 보기== |
| * [[SHA-3]] | | * [[SHA-3]] |
− | {{암호 알고리즘|검토 필요}} | + | {{암호 알고리즘|토막글}} |