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

SHA3-256

위키원
Asadal (토론 | 기여)님의 2020년 1월 16일 (목) 20:08 판
이동: 둘러보기, 검색

SHA3-256미국국립표준기술연구소가 2015년 8월에 제정하여 발표한 FIPS PUB 202호 표준 - FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION; SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions 에 들어있는 암호화 해시알고리즘이며 해시계산을 통한 출력 길이가 256비트이다. 알고리즘은 keccak team이 2008년 10월에 경진대회에 후보자로 참가하면서 제출되어 공개되었다.

개요

미국국립표준기술연구소가 승인하여 공식발표한 SHA3 알고리즘군은 4개 고정 해시 출력길이를 갖고 있는 SHA3-224, SHA3-256, SHA3-384, SHA3-512 와 2개 가변 해시 출력길이를 갖고 있는 SHAKE-128, SHAKE-256으로 구성된다.

SHA3 알고리즘은 경진대회를 통하여 64개의 후보 알고리즘 중에서 우승한 알고리즘 KECCAK을 채택하여 SHA3 알고리즘으로 사용하고 있다. KECCAK 알고리즘은 스위스의 제네바에 본사를 두고 있는 ST마이크로일렉트로닉스 (STMicroelectronics) 사의 귀도 베르토니 (Guido Bertoni), 조안 대먼 (Joan Daemen) 과 길레스 반 앗시 (Gilles Van Assche) 등 세 사람과 네덜란드의 아인드호벤에 본사를 두고 있는 NXP반도체 (NXP Semiconductors) 사의 미하엘 피터스 (Michaël Peeters) 가 공동으로 개발하였다.

관련업계에서 기존에 사용했던 암호화 알고리즘은 미국국립표준기술연구소가 제정하여 발표한 SHA-1, SHA-2였다. SHA-1은 1995년에 버전번호 FIPS PUB 180-1으로 발표되었고 SHA-2는 2001년에 버전번호 FIPS PUB 180-2로 발표되었다. SHA-2 알고리즘 군은 SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256으로 구성되어 있다.

2004년부터 몇 가지 해시알고리즘을 대상한 공격이 성공화되었고 2005년부터 이론적으로 SHA-1이 공격을 당할 수 있다는 언론들이 발표되었다. 실질적으로 이는 2017년 3월에 구글에서 클라우드컴퓨팅 방식으로 입증하였다.[1] SHA-1과 SHA-2가 Merkle-Damgard 라는 엔진구조를 갖고 있기에 SHA-1이 돌파되면 SHA-2가 돌파되는것은 단지 시간문제나 연산력문제일 따름이었다. SHA-2가 돌파된 사례는 없었지만 이를 대비하여 미국국립표준기술연구소는 두 차례 공개 워크샵을 가지고 기 사용중인 알고리즘에 관하여 상황조사를 추진하였으며 암호화 해시알고리즘 정책과 표준에 관한 의견을 공개 청구하였다. 최종 결론은 사회전반을 대상으로 신규표준으로 적용할 후보 암호화 해시 알고리즘들을 모집하여 공개 경쟁의 방식으로 우승 알고리즘을 선발하고 이를 차세대 비용 알고리즘으로 적용하는것으로 이루어졌다.

2007년에 미국국립표준기술연구소는 SHA-3경진대회를 조직하였으며 2012년에 우승 알고리즘을 선출하였다..[2]

우승으로 선발 된 KECCAK 알고리즘은 전에 발표되었던 함수 PANAMA와 RadioGatún의 설계를 참조하여 개발되었다. PANAMA는 1998년에 조안 대먼 (Joan Daemen)과 크레이그 클랩 (Craig Clapp)이 발표하였으며 RadioGatún은 PANAMA의 후속버전으로 조안 대먼 (Joan Daemen), 미하엘 피터스 (Michaël Peeters), 길레스 반 앗시 (Gilles Van Assche)이 공동으로 2006년에 NIST 해시 워크샵에서 발표하였다.

KECCAK 알고리즘은 신형 구조인 스펀지함수 (Sponge Function) 를 적용하여 기존의 Merkle-Damgard 구조를 대체하였다.

SHA-3은 경진대회의 우승 알고리즘을 채택하여 적용하였기에 SHA3-256은 Keccak-256과 동일하다.

경진경과

2007년 11월 2일, 미국국립표준기술연구소 (NIST) 는 SHA-3 암호화 해시알고리즘 경진을 조직한다고 선포하였으며 2008년 10월까지 경진에 참가하고자 하는 64개 후보 알고리즘을 접수하였다. 초도 심사를 거쳐 2008년 12월 10일에 51개 알고리즘이 1차 입선후보자로 경진 참가자격을 가졌다.

2009년 7월 24일에 14개 알고리즘이 1차 경진을 통과하여 2차 경진 입선후보 알고리즘으로 되었다. 2차 경진에 진입한 알고리즘으로는 BLAKE, BLUE MIDNIGHT WISH, CubeHash, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3, SIMD 및 Skein이 있다. [3]

일년기간의 경진을 거쳐 2010년 12월 9일에 NIST는 2차 경진을 통과한 다 섯가지 알고리즘 BLAKE, Grøstl, JH, Keccak 및 Skein 을 결승경진 후보 알고리즘으로 발표하였다.[4]

2012년 10월 2일, NIST는 알고리즘 캐착 (KECCAK) 이 경진 우승 알고리즘으로 되었음을 선포하였다. [5]

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) 이 되었음을 공개발표하였다.

소개

해시함수에서 입력은 통상적으로 "메세지"(Message)로 표현을 하고 출력은 "다이제스트"(Digest) 또는 "해시값" (Hash Value"로 표현을 한다. 메세지의 길이는 임의로 가능하나 출력은 고정길이로 되어있다. 암호화 해시함수는 해시함수이며 이의 설계취지는 충돌저항성 (collision resistant)과 역상 저항성 (preimage resistance)을 포함한 특별한 특성들을 제공하는데 있다. 정보보안영역의 어플리케이션들에 상당히 중요하다.

예를 들면 암호화 해시함수를 이용하여 "다이제스트"로 "메세지"를 대신할 경우에 전자서명방안의 보안성과 효율성은 현저히 향상된다. 여기에서 해시함수의 충돌저항성은 원본 메세지가 같은 해시값을 갖는 다른 메세지로 변동되지 않게끔 보증을 하며 따라서 같은 서명을 가진 다른 메세지로 변동되지 않게끔 보증을 한다. 해시함수의 기타 어플리케이션들에는 Pseudorandum bit generation, message authentication codes 및 password security이 포함되어 있다.

해시함수 스펀지 구조

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를 대상으로 아래의 사례를 정의하였다.

사례 출력 길이 비율=블록길이 용량 정의 보안강도
충돌
보안강도
프리이미지
보안강도
두 번째
프리이미지
SHA3-224(M) 224 1152 448 Keccak[448](M 01, 224) 112 224 224
SHA3-256(M) 256 1088 512 Keccak[512](M 01, 256) 128 256 256
SHA3-384(M) 384 832 768 Keccak[768](M 01, 384) 192 384 384
SHAKE128(M, d) d 1344 256 Keccak[256](M 1111, d) min(d | 2,128) ≥min(d,128) min(d,128)
SHAKE256(M, d) d 1088 512 Keccak[512](M 1111, d) min(d | 2,256) ≥min(d,256) min(d,256)

각주

참고자료

Extendable-Output Functions]", NIST

같이 보기

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