{{위키데이터 속성 추적}}
{{SHA 상자}}
'''암호화 해시 함수'''(cryptographic hash function)은 [[해시 함수]]의 일종으로, 해시 값으로부터 원래의 입력값과의 관계를 찾기 어려운 성질을 가지는 경우를 의미한다. 암호화 해시 함수가 가져야 하는 성질은 다음과 같다.<ref>{{서적 인용|제목=Handbook of Applied Cryptography|저자= Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone }}</ref>
* 역상 저항성(preimage resistance): 주어진 해시 값에 대해, 그 해시 값을 생성하는 입력값을 찾는 것이 계산상 어렵다. 즉, [[역상 공격|제 1 역상 공격]]에 대해 안전해야 한다. 이 성질은 [[일방향함수]]와 연관되어 있다.
* 제 2 역상 저항성(second preimage resistance): 입력 값에 대해, 그 입력의 해시 값을 바꾸지 않으면서 입력을 변경하는 것이 계산상 어렵다. [[역상 공격|제 2 역상 공격]]에 대해 안전해야 한다.
* 충돌 저항성(collision resistance): [[해시 충돌]]에 대해 안전해야 한다. 같은 해시 값을 생성하는 두 개의 입력값을 찾는 것이 계산상 어려워야 한다.

즉, 입력값과 해시 값에 대해서, 해시 값을 망가뜨리지 않으면서 입력값을 수정하는 공격에 대해 안전해야 한다. 이러한 성질을 가지는 해시 값은 원래 입력값을 의도적으로 손상시키지 않았는지에 대한 검증 장치로 사용할 수 있다.

[[순환 중복 검사]](CRC)와 같은 몇몇 해시 함수는 암호 안전성에 필요한 저항성을 가지지 않으며, 우연적인 손상을 검출할 수는 있지만 의도적인 손상의 경우 검출되지 않도록 하는 것이 가능하기도 하다.
가령, [[유선 동등 프라이버시]](WEP)의 경우 암호화 해시 함수로 CRC를 사용하나, CRC의 암호학적 취약점을 이용한 [[암호공격]]이 가능하다는 것이 밝혀져 있다.

== 암호화 해시 함수의 비교 ==

가장 널리 사용되는 해시 함수에는 [[MD5]]와 [[SHA-1]]이 있으나, 이들은 안전하지 않다는 것이 알려져 있다.
미국 US-CERT에서는 2008년 MD5를 사용하지 말아야 한다고 발표했다.<ref>{{웹 인용|url=http://www.kb.cert.org/vuls/id/836068|제목=Vulnerability Note VU#836068: MD5 vulnerable to collision attacks}}</ref>
NIST에서는 2008년 SHA-1의 사용을 중지하며 [[SHA-2]]를 사용할 것이라고 발표했다.<ref>{{저널 인용|url=http://csrc.nist.gov/groups/ST/toolkit/documents/shs/hash_standards_comments.pdf|제목=NIST Brief Comments on Recent Cryptanalytic Attacks on Secure Hashing Functions and the Continued Security Provided by SHA-1|확인날짜=2012-08-11|보존url=https://web.archive.org/web/20110604144720/http://csrc.nist.gov/groups/ST/toolkit/documents/shs/hash_standards_comments.pdf|보존날짜=2011-06-04|url-status=dead}}</ref>

2008년 미국 [[국립표준기술연구소]](NIST)에서는 [[SHA-3]]로 부를 새로운 안전한 암호화 해시 함수에 대한 공모전을 열었다. 2012년 8월 현재 SHA-3의 후보는 다섯 개가 있으며, 2012년 중으로 이들 중 최종 후보를 뽑을 예정이다.<ref>{{웹 인용|url=http://csrc.nist.gov/groups/ST/hash/timeline.html|제목=Tentative Timeline of the Development of New Hash Functions|저자=[[국립표준기술연구소]]|확인날짜=2012-08-12}}</ref>

다음은 널리 알려진 암호화 해시 함수 알고리즘의 목록이다. 이들 중에는 안전하지 않다는 것이 밝혀진 것도 있다.

{| class="wikitable"
|-
! rowspan="2"|알고리즘
! rowspan="2"|출력 비트 수
! rowspan="2"|내부 상태 크기<ref group="c">Merkle-Damgård 방식에서 각 라운드 시 생성되는 내부 해시의 크기.</ref>
! rowspan="2"|블록 크기
! rowspan="2"|Length size
! rowspan="2"|Word size
! rowspan="2"|라운드 수
! colspan="3"|공격 가능성 (복잡도:최대 라운드 수)<ref group="c">라운드 수가 표시되지 않은 경우 전체 라운드에 대한 공격을 의미한다.</ref>
|-
! 충돌
! 2차 역상
! 역상

|-
| '''[[GOST]]'''
| 256
| 256
| 256
| 256
| 32
| 256
| [https://web.archive.org/web/20110406104650/http://www.springerlink.com/content/2514122231284103/ 2<sup>105</sup>]
| [https://web.archive.org/web/20110406104650/http://www.springerlink.com/content/2514122231284103/ 2<sup>192</sup>]
| [https://web.archive.org/web/20110406104650/http://www.springerlink.com/content/2514122231284103/ 2<sup>192</sup>]

|-
| '''[[HAVAL]]'''
| 256/224/192/160/128
| 256
| 1,024
| 64
| 32
| 160/128/96
| 가능
| 
|
|-
| '''[[MD2]]'''
| 128
| 384
| 128
| -
| 32
| 864
| [https://web.archive.org/web/20110406104731/http://www.springerlink.com/content/n5vrtdha97a2udkx/ 2<sup>63.3</sup>]
| 
| [http://eprint.iacr.org/2008/089.pdf 2<sup>73</sup>]

|-
| '''[[MD4]]'''
| 128
| 128
| 512
| 64
| 32
| 48
| [https://web.archive.org/web/20110406104708/http://www.springerlink.com/content/v6526284mu858v37/ 3]
| [http://eprint.iacr.org/2010/016.pdf 2<sup>64</sup>]
| [http://eprint.iacr.org/2010/016.pdf 2<sup>78.4</sup>]

|-
| '''[[MD5]]'''
| 128
| 128
| 512
| 64
| 32
| 64
| [http://eprint.iacr.org/2009/223.pdf 2<sup>20.96</sup>]
| 
| [https://web.archive.org/web/20121003035831/http://www.springerlink.com/content/d7pm142n58853467/ 2<sup>123.4</sup>]

|-
| '''[[PANAMA]]'''
| 256
| 8,736
| 256
| -
| 32
| -
| 가능
| 
|
|-
| '''[[RadioGatún]]'''
| Up to 608/1,216 (19 words)
| 58 words
| 3 words
| -
| 1–64
| -
| [http://eprint.iacr.org/2008/515 2<sup>352</sup> 또는 2<sup>704</sup>]
| 
|
|-
| '''[[RIPEMD]]'''
| 128
| 128
| 512
| 64
| 32
| 48
| [https://web.archive.org/web/20110406104731/http://www.springerlink.com/content/n5vrtdha97a2udkx/ 2<sup>18</sup>]
| 
|
|-
| '''[[RIPEMD|RIPEMD-128/256]]'''
| 128/256
| 128/256
| 512
| 64
| 32
| 64
| 
| 
|
|-
| '''[[RIPEMD|RIPEMD-160]]'''
| 160
| 160
| 512
| 64
| 32
| 80
| [https://web.archive.org/web/20121001035337/http://www.springerlink.com/content/3540l03h1w31n6w7 2<sup>51</sup>:48]
| 
|
|-
| '''[[RIPEMD|RIPEMD-320]]'''
| 320
| 320
| 512
| 64
| 32
| 80
| 
| 
|
|-
| '''[[SHA-1|SHA-0]]'''
| 160
| 160
| 512
| 64
| 32
| 80
| [https://web.archive.org/web/20110406104746/http://www.springerlink.com/content/3810jp9730369045/ 2<sup>33.6</sup>]
| 
|
|-
| '''[[SHA-1]]'''
| 160
| 160
| 512
| 64
| 32
| 80
| [http://eprint.iacr.org/2008/469.pdf 2<sup>51</sup>]
|
|
|-
| '''[[SHA-2|SHA-256/224]]'''
| 256/224
| 256
| 512
| 64
| 32
| 64
| [http://eprint.iacr.org/2008/270.pdf 2<sup>28.5</sup>:24]
| 
| [http://eprint.iacr.org/2010/016.pdf 2<sup>248.4</sup>:42]

|-
| '''[[SHA-2|SHA-512/384]]'''
| 512/384
| 512
| 1,024
| 128
| 64
| 80
| [http://eprint.iacr.org/2008/270.pdf 2<sup>32.5</sup>:24]
| 
| [http://eprint.iacr.org/2010/016.pdf 2<sup>494.6</sup>:42]

|-
| '''[[Tiger (cryptography)|Tiger(2)-192/160/128]]'''
| 192/160/128
| 192
| 512
| 64
| 64
| 24
| [https://web.archive.org/web/20110406104832/http://www.springerlink.com/content/u762587644802p38/ 2<sup>62</sup>:19]
| 
| [http://eprint.iacr.org/2010/016.pdf 2<sup>184.3</sup>]

|-
| '''[[WHIRLPOOL]]'''
| 512
| 512
| 512
| 256
| 8
| 10
| [https://www.cosic.esat.kuleuven.be/fse2009/slides/2402_1150_Schlaeffer.pdf 2<sup>120</sup>:4.5]
| 
|
|}

<references group="c" />

== 같이 보기 ==
* [[쇄도 효과]]
* [[HMAC]]
* [[메시지 인증 코드]]
* [[SHA-3]]
== 각주 ==
{{각주}}

{{암호화 해시}}

[[분류:암호화 해시 함수| ]]
[[분류:암호학]]
[[분류:해시 함수]]