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

"SHA0"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
잔글 (Asadal님이 SHA-0 문서를 SHA0 문서로 이동하면서 넘겨주기를 덮어썼습니다)
 
(다른 사용자 한 명의 중간 판 하나는 보이지 않습니다)
3번째 줄: 3번째 줄:
 
== 개요 ==
 
== 개요 ==
  
SHA-0는 1993년 미국 국립표준기술연구소(NIST)가 발표한 안전한 해시 표준(SHS)으로, 표준 FIPS PUB 180으로 공표되었다. SHA 제품군중에 최초로 개발된 버전으로, 다른 함수들과 구별하기 위해 SHA-0라고 부르기 시작했다. 공개되지 않은 중대한 결함으로 인해 출판 직후 바로 철회되었고, 약간 수정된 버전인 [[SHA-1]]로 대체되었다.
+
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년 11월 16일 (토) 14:27 기준 최신판

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

참고자료[편집]

같이 보기[편집]


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