"SHA0"의 두 판 사이의 차이
잔글 |
fshiel8165 (토론 | 기여) |
||
3번째 줄: | 3번째 줄: | ||
== 개요 == | == 개요 == | ||
− | SHA-0는 1993년 미국 국립표준기술연구소(NIST)가 발표한 안전한 해시 표준(SHS)으로, 표준 FIPS PUB 180으로 공표되었다. SHA 제품군중에 최초로 개발된 버전으로, 다른 함수들과 구별하기 위해 SHA-0라고 부르기 시작했다. 공개되지 않은 | + | SHA-0는 1993년 미국 국립표준기술연구소(NIST)가 발표한 안전한 해시 표준(SHS)으로, 표준 FIPS PUB 180으로 공표되었다. SHA 제품군중에 최초로 개발된 버전으로, 다른 함수들과 구별하기 위해 SHA-0라고 부르기 시작했다. 공개되지 않은 보안적인 결함으로 인해 출판 직후 바로 철회되었고, 약간 수정된 버전인 [[SHA-1]]로 대체되었다. |
+ | |||
+ | == 특성 == | ||
+ | |||
+ | * 해시값 크기 : 160 | ||
+ | * 내부 크기 : 160 | ||
+ | * 블록 크기 : 512 | ||
+ | * 길이 한계 : 64 | ||
+ | * 워드 크기 : 32 | ||
+ | * 과정 수 : 80 | ||
+ | * 사용 연산 : +, and, or, xor, rotl | ||
+ | |||
+ | == 알고리즘 == | ||
+ | |||
+ | 해시함수 SHA-0은 길이 <math>2^{64}</math>비트 미만의 메시지를 취하여 160비트 해시값을 생성한다. 입력 메시지는 패딩 처리된 다음 머클-담골 반복 구조에서 512비트 블록으로 처리된다. 각 반복은 160비트 체인값과 512비트 메시지 블록을 취하고 160비트 체인값을 추가로 출력하는 압축 함수를 호출한다. 초기 체인값은 고정 상수의 집합이며, 최종 체인값은 메시지의 해시값이다. | ||
+ | |||
+ | 패딩된 메시지의 각 512비트 블록에 대해 16개의 32비트 워드(<math>m_{0},m_{1},\cdots,m_{15}</math>)로 나눈다. 메시지 단어는 먼저 다음과 같이 확장된다 : | ||
+ | |||
+ | <math> m_{i} = m_{i-3} \oplus m_{i-8} \oplus m_{i-14} \oplus m_{i-16}</math> | ||
+ | |||
+ | 확장된 메시지 단어는 각각 20단계로 구성된 4라운드에서 처리된다. 스텝 함수는 다음과 같이 정의된다. | ||
+ | |||
+ | <math> For \ i=1,2,\cdots,80 </math> | ||
+ | <math> a_{i} = (a_{i-1} << 5) + f_{i}(b_{i-1}, c_{i-1}, d_{i-1}) + e_{i-1} + m_{i-1} + k_{i} </math> | ||
+ | <math> b_{i} = a_{i-1} </math> | ||
+ | <math> c_{i} = b_{i-1} << 30 </math> | ||
+ | <math> d_{i} = c_{i-1} </math> | ||
+ | <math> e_{i} = d_{i-1} </math> | ||
+ | 초기 체인값 <math> IV = (a_{0}, b_{0}, c_{0}, d_{0}, e_{0}) </math>는 다음과 같이 정의된다. | ||
+ | |||
+ | (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0) | ||
+ | |||
+ | 각 라운드는 다음 표와 같이 요약된 다른 부울함수 <math>f_{i}</math>와 상수 <math>k_{i}</math>를 사용한다. | ||
+ | |||
+ | :{|class=wikitable width=600 | ||
+ | !align=center|라운드 | ||
+ | !align=center|스텝 | ||
+ | !align=center|부울 함수 <math>f_{i}</math> | ||
+ | !align=center|상수 <math>k_{i}</math> | ||
+ | |+ | ||
+ | |align=center|1 | ||
+ | |align=center|1 - 20 | ||
+ | |align=center|<math> IF : (x \and y) \or (\neg x \and z)</math> | ||
+ | |align=center|0x5a827999 | ||
+ | |+ | ||
+ | |align=center|2 | ||
+ | |align=center|21 - 40 | ||
+ | |align=center|<math> XOR : x \oplus y \oplus z </math> | ||
+ | |align=center|0x6ed6eba1 | ||
+ | |+ | ||
+ | |align=center|3 | ||
+ | |align=center|41 - 60 | ||
+ | |align=center|<math> MAJ : (x \and y) \or (x \and z) \or (y \and z) </math> | ||
+ | |align=center|0x8fabbcdc | ||
+ | |+ | ||
+ | |align=center|4 | ||
+ | |align=center|61 - 80 | ||
+ | |align=center|<math> XOR : x \oplus y \oplus z </math> | ||
+ | |align=center|0xca62c1d6 | ||
+ | |} | ||
== 참고자료 == | == 참고자료 == | ||
+ | |||
+ | * SHA-0 충돌 검색 공격 논문 - https://www.iacr.org/archive/crypto2005/36210001/36210001.pdf | ||
== 같이 보기 == | == 같이 보기 == | ||
+ | |||
* [[SHA]] | * [[SHA]] | ||
− | {{암호 알고리즘| | + | {{암호 알고리즘|검토 필요}} |
2019년 8월 2일 (금) 14:13 판
SHA-0는 미국 국립표준기술연구소(NIST)에서 1993년 발표되고 FIPS PUB 180으로 공표된 해시 함수 알고리즘이다. 이는 해시 알고리즘 중 하나인 MD4에 기반을 두고 있으며, MD5의 취약점을 개선하고 대체하기 위해 개발되었다.
개요
SHA-0는 1993년 미국 국립표준기술연구소(NIST)가 발표한 안전한 해시 표준(SHS)으로, 표준 FIPS PUB 180으로 공표되었다. SHA 제품군중에 최초로 개발된 버전으로, 다른 함수들과 구별하기 위해 SHA-0라고 부르기 시작했다. 공개되지 않은 보안적인 결함으로 인해 출판 직후 바로 철회되었고, 약간 수정된 버전인 SHA-1로 대체되었다.
특성
- 해시값 크기 : 160
- 내부 크기 : 160
- 블록 크기 : 512
- 길이 한계 : 64
- 워드 크기 : 32
- 과정 수 : 80
- 사용 연산 : +, and, or, xor, rotl
알고리즘
해시함수 SHA-0은 길이 비트 미만의 메시지를 취하여 160비트 해시값을 생성한다. 입력 메시지는 패딩 처리된 다음 머클-담골 반복 구조에서 512비트 블록으로 처리된다. 각 반복은 160비트 체인값과 512비트 메시지 블록을 취하고 160비트 체인값을 추가로 출력하는 압축 함수를 호출한다. 초기 체인값은 고정 상수의 집합이며, 최종 체인값은 메시지의 해시값이다.
패딩된 메시지의 각 512비트 블록에 대해 16개의 32비트 워드()로 나눈다. 메시지 단어는 먼저 다음과 같이 확장된다 :
확장된 메시지 단어는 각각 20단계로 구성된 4라운드에서 처리된다. 스텝 함수는 다음과 같이 정의된다.
초기 체인값 는 다음과 같이 정의된다.
(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0)
각 라운드는 다음 표와 같이 요약된 다른 부울함수 와 상수 를 사용한다.
라운드 스텝 부울 함수 상수 1 1 - 20 0x5a827999 2 21 - 40 0x6ed6eba1 3 41 - 60 0x8fabbcdc 4 61 - 80 0xca62c1d6
참고자료
- SHA-0 충돌 검색 공격 논문 - https://www.iacr.org/archive/crypto2005/36210001/36210001.pdf
같이 보기