일방행 해시 함수 SHA-1 개요
SHA-1 구조
- 입력: 최대 264 bits 미만 메시지
- 출력: 512 bits 메시지 다이제스트 => 160 bits 해시값
- 블록 크기 : 512 bits
SHA-1 처리 단계
- 패딩(Padding)
- W0 ~ W79 계산
- 블록 처리
- 단계 1 ~ 단계 80 처리
패딩(Padding)
목적: 512비트 블록 만들기(1추가 + 데이터 크기 표시)
패딩(Padding)?
- 메시지 뒤에 여분의 데이터를 부가하여 메시지의 길이가 512비트의 정수배가 되도록 하는 것
패딩의 예
- 입력: Hello. (6바이트(48비트))의 메시지
- ASCII 코드로 부호화하여 2진수로 표현하면
- 여기에 1을 붙인다.
H e l l o . 01001000 01100101 01101100 01101100 01101111 00101110 01001000 01100101 01101100 01101100 01101111 00101110 1 |
- 메시지의 길이가 512비트의 정수배가 될때까지 0이라는 1비트의 값을 부가
- 단, 마지막 블록의 마지막 64비트는 메시지 길이정보 영역으로서 비워둔다.
- "Hello."의 경우* 원래 메시지 길이(48비트) 정보 저장을 위해 끝의 64비트를 뺀 나머지를 0으로 채워 넣는다.
- * 512 - 64 = 448 비트가 될때까지 0을 부가
길이 정보 추가
- 데이터 길이: 48 bits를 2진수로 표현하면
- 데이터 길이: 48 = 32 + 16 = 00110000
이것을 마지막에 추가
W0 ~ W79 계산
목적: 복잡성 구현(XOR, Rotation L)
입력 블록 512 bits마다 32 bits×80개(2560 bits)의 값(W0 ~ W79)을 계산
- W0 ~ W15 : 32 bits × 16
- W16 : 32 bits × 1
- W17 ~ W79 : 32 bits × 63
입력 블록 512 bits를 32 bits×16개로 분할하여 W0 ~ W15로 이름을 붙인다.
W16부터 W79는 아래와 같이 계산
- W16 = (W0 ㊉ W2 ㊉ W8 ㊉ W13)을 1비트 회전
- Wt = (Wt-16 ㊉ Wt-14 ㊉ Wt-8 ㊉ Wt-3)을 1비트 회전, t=17~79
1비트 회전한 모양
01001000 01100101 01101100 01101100를 1비트 회전한 모양
블록 처리
목적: 복잡성 구현(and, or, xor, +)
- 입력 블록에 대해 80 단계씩의 처리를 행한다.
- 입력 블록의 정보를 기초로 내부 상태(160비트)를 변화
'현대 암호학' 카테고리의 다른 글
[현대 암호학] 08-5. 일방향 해시 함수의 SHA-512 (0) | 2021.06.30 |
---|---|
[현대 암호학] 08-2. 일방향 해시 함수의 응용 예 / 3. 일방향 해시 함수의 예 (0) | 2021.06.30 |
[현대 암호학] 08-1.일방향 해시 함수 (0) | 2021.06.30 |
[현대 암호학] 07-4. 기타암호 - 동형 암호 (0) | 2021.06.29 |
[현대 암호학] 07-2. 강한 하이브리드 암호 시스템이란 / 3. 암호 기술의 조합 (0) | 2021.06.29 |