SHA3조(최종본)

Download Report

Transcript SHA3조(최종본)

해쉬 함수 SHA-1
발표자 : 노수현
조원 : 장종훈,유창열,김범용
전인철,김세원
목차

SHA 배경

SHA-1 알고리즘




패딩
W0~W79
블록처리(80단계)
SHA함수 비교

각 매개변수 비교
SHA 배경

SHA (Secure Hash Algorithm)



1993년에 미국의 연방정보처리표준규격(FIPS PUB 180)으로 발표
NIST에서 제안
160bit의 해쉬값 생성

일방향 해쉬 함수



메시지->해쉬값 (o)
해쉬값->메시지 (x)
SHA-1


1995년에 발표된 개정판 FIPS PUB 180-1으로 발표
메시지 길이에 대한 상한 존재

메시지 길이가 264비트 미만
SHA-1 알고리즘
메시지
메시지
L x 512 비트 = N x 32 비트
패딩
64
K비트<2
입력블록
512비트
입력블록
512비트
입력블록
512비트
W0~W79
32비트×80개
블록의 처리
80단계
서명문
입력블록
512비트
입력블록
512비트
초기 상태
160비트
(A,B,C,D,E
32비트×5개
비트
블록의 처리
80단계
100‥‥0
서명문 길이
64bit
입력블록
512비트
W0~W79
32비트×80개
내부 상태
160비트
(A,B,C,D,E
32비트×5개
패 딩
W0~W79
32비트×80개
내부 상태
160비트
(A,B,C,D,E
32비트×5개
블록의 처리
80단계
최종 상태
160비트
(A,B,C,D,E
32비트×5개
해시값
160비트
패딩

메시지 다음에 여분의 데이터를 부가하여 메시지의 길이가 512비
트의 정수배가 되도록 하는 것을 가리킨다.

패딩이라는 것은 「메워 넣기」라는 의미이다.

SHA-1에서는 이후의 처리를 하기 쉽게 하기 위해 맨 처음에 패딩
(padding)을 행한다.

패딩되는 비트수는 1~512사이의 수

이 512비트의 집합을 입력 블록이라 부른다.
L x 512 비트 = N x 32 비트
64
K비트<2 비트
입력블록
서명문
패 딩
100‥‥0
64bit
W0~W79의 계산

패딩이 끝난 다음에는 입력 블록 단위의 처리가 된다.

입력 블록 512비트마다 32비트× 80개의 값(W0~W79)을 계
산한다. 이 80개의 값은 블록의 처리 80단계에서 사용한다.

우선 입력 블록 512비트를 32비트× 16개로 분할하여
W0~W15처럼 이름을 붙여 간다.

그리고 W16부터 W79는 다음과 같은 계산을 한다.
Wt = (Wt-16⊕Wt-14⊕Wt-8⊕Wt-3)을 1비트 회전
Wt 생성 과정
입력블록 512비트
W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11W12 W13W14W15
XOR
XOR
1bit
회전
XOR
1bit
회전
XOR
1bit
회전
W16
W63 W65 W71 W76
Wt-16 Wt-14 Wt-8 Wt-3
XOR
XOR
1bit
회전
1bit
회전
W79
Wt
XOR
1bit
회전
W17
1bit
회전
W18
W19
W20

입력 블록 512비트로부터 32bit X 80개 (W0~W79)을 생성
W16 = (W0⊕W2⊕W8⊕W13)을 1비트 회전
Wt = (Wt-16⊕Wt-14⊕Wt-8⊕Wt-3)을 1비트 회전
회전한 모양 (예)
좌측 시프트 1회
01001000011001010110110001101100
10010000110010101101100011011000
블록처리

입력 블록에 대해 80 단계씩의 처리를 행한다(다음장 참조)

입력 블록의 정보를 기초로 내부 상태(160비트)를 변화시
킨다.

이것을 모든 블록에 대해 행한다.

내부 상태 160비트는 A, B, C, D, E라는 이름이 붙은 32비
트× 5개의 버퍼로 표현되어 있다.
1블록 처리 전의 내부 상태 160비트
입력 블록 512비트

A버퍼 B버퍼 C버퍼 D버퍼 E버퍼
32비트 32비트 32비트 32비트 32비트
입력 블록
512비트를
160비트의
내부 상태에
섞어 넣는다
(80 단계)
단계 0
단계 1
단계 2
단계 3
단계 77
단계 78
단계 79
+
+
+: 법232연산
+
+
+
+
A버퍼 B버퍼 C버퍼 D버퍼 E버퍼
32비트 32비트 32비트 32비트 32비트
1블록 처리 후의 내부 상태 160비트
A버퍼의 초기값 B버퍼의 초기값
67 45 23 01
EF CD AB 89
C버퍼의 초기값 D버퍼의 초기값
98 BA DC FE
10 32 54 76
E버퍼의 초기값
C3 D2 E1 F0
1단계 처리 전의 내부 상태 160비트

HSHA-1각 단계 처리
A버퍼
32비트
B버퍼
32비트
C버퍼
32비트
D버퍼
32비트
기약
논리함수
ft
f0~f19=(B · C) + (~B · D)
E버퍼
32비트
+
f20~f39=B ⊕ C ⊕ D
5비트
회전
f40~f59=(B · C) + (C · D) + (D · B)
+
f60~f79=B ⊕ C ⊕ D
30비트
회전
K0~K19= 5A 82 79 99
+
입력 블록과 단계에
의존하는 수 Wt
(32비트)
+
단계에 의존하는
정수 Kt
32비트
K20~K39= 6E D9 EB A1
K40~K59= 8F 1B BC DC
K60~K79= CA 62 C1 D6
A버퍼
32비트
+
B버퍼
32비트
C버퍼
32비트
D버퍼
32비트
: 법232 연산
1단계 처리 후의 내부 상태 160비트
E버퍼
32비트
SHA 매개변수 비교
서명 알고리즘은 RSA 이며 해쉬 알고리즘은 SHA1
감사합니다.