ns_ch11 해쉬알고리즘

Download Report

Transcript ns_ch11 해쉬알고리즘

정보보호기초강의
제11장 해쉬 알고리즘
The Hash Algorithm
2007. 11.
http://www.ezpia.biz
[[email protected]]
목 차
11.1 해쉬함수 정의 및 분류
11.2 전용 해쉬 알고리즘
11.3 기타 해쉬 알고리즘
2007-02 정보보호기초
2
암호 이론의 상관관계
2007-02 정보보호기초
3
11.1 해쉬함수 정의 및 분류
11.1.1 해쉬함수 정의
11.1.2 해쉬함수 분류
11.1.3 해쉬함수 일반모델
11.1.4 Birthday Paradox
11.1.5 해쉬함수 종류
2007-02 정보보호기초
4
11.1.1 해쉬함수 정의
 해쉬함수(hash function)
 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열(해쉬값,
메시지 다이제스트, 메시지 지문)로 매핑하여 주는 함수
임의의 비트열
Hash function
2007-02 정보보호기초
고정 비트열
5
11.1.1 해쉬함수 정의 (계속)
 해쉬 함수의 두 가지 기본성질
 compression - 임의의 유한 길이의 입력 비트 스트링 x를 고정된
길이의 출력 비트 스트링 h(x)로 변환한다.
 ease of computation - 주어진 h와 x에 대하여 h(x)를 계산하기
쉽다.

해쉬함수
 일방향 해쉬 함수(one-way hash function)
 충돌 회피 해쉬 함수(collision resistant hash function)
2007-02 정보보호기초
6
11.1.1 해쉬함수 정의 (계속)
해쉬 함수 세 가지 특성
(1) preimage resistance - 주어진 출력에 대하여 입력값
을 구하는 것이 계산상 불가능하다.
(2) 2nd-preimage resistance - 주어진 입력에 대하여 같
은 출력을 내는 또 다른 입력을 찾아 내는 것이 계산상
불가능하다.
(3) collision resistance - 같은 출력을 내는 임의의 서로
다른 두 입력 메시지를 찾는 것이 계산상 불가능하다.
2007-02 정보보호기초
7
11.1.1 해쉬함수 정의 (계속)
 일방향 해쉬 함수(one-way hash function)
(1) compression - 임의의 유한 길이의 입력 비트 스트링 x를 고정
된 길이의 출력 비트 스트링 h(x)로 변환한다.
(2) ease of computation - 주어진 h와 x에 대하여 h(x)를 계산하기
쉽다.
(3) preimage resistance - 주어진 출력에 대하여 입력값을 구하는
것이 계산상 불가능하다.
(4) 2nd-preimage resistance - 주어진 입력에 대하여 같은 출력을
내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다.
2007-02 정보보호기초
8
11.1.1 해쉬함수 정의 (계속)
 충돌 회피 해쉬 함수(collision resistant hash function)
(1) compression - 임의의 유한 길이의 입력 비트 스트링 x를 고정
된 길이의 출력 비트 스트링 h(x)로 변환한다.
(2) ease of computation - 주어진 h와 x에 대하여 h(x)를 계산하기
쉽다.
(3) 2nd-preimage resistance - 주어진 입력에 대하여 같은 출력을
내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다.
(4) collision resistance - 같은 출력을 내는 임의의 서로 다른 두 입
력 메시지를 찾는 것이 계산상 불가능하다.
2007-02 정보보호기초
9
11.1.2 해쉬함수 분류
2007-02 정보보호기초
10
11.1.2 해쉬함수 분류 (계속)
 MDCs (Manipulation detection codes)
 일방향성(one-wayness)

입력을 모르는 해쉬값 y가 주어졌을 때, h(x’)=y를 만족하는 x를 찾는
것은 계산적으로 어렵다. (OWHF)
 약한 충돌회피성(weak collision-resistance)

h(x)가 주어졌을 때 h(x’)=h(x)인 x’( ≠x)을 찾는 것은 계산적으로 어렵
다.
 강한 충돌회피성(strong collision-resistance)

h(x’)=h(x)인 서로 다른 임의의 두 입력 x와 x’을 찾는 것은 계산적으로
어렵다. (CRHF)
2007-02 정보보호기초
11
11.1.2 해쉬함수 분류 (계속)
 메시지 인증 코드(MACs: Message authentication codes)
 MACs는 비밀키(secret key) 를 파라미터로 가지며, 다음 특성을
만족하는 함수이다.
(1) compression - 임의의 유한 길이의 입력 비트 스트링 x를 고정
된 길이의 출력 비트 스트링 h(x)로 변환한다.
(2) ease of computation - 주어진 hk와 입력 x, 비밀키 k에 대하여
hk(x)를 계산하기 쉽다.
 이 계산 결과를 MAC-value 혹은 MAC이라고 부른다
(3) computation-resistance - 즉, 키 를 모르는 공격자가 임의의 메
시지에 대한 MAC값을 위장하는 것이 계산상 불가능하다.
2007-02 정보보호기초
12
11.1.3 해쉬함수 모델
2007-02 정보보호기초
13
11.1.3 해쉬함수 일반모델 (계속)
 패딩(padding)
메시지가 블록의 상수배가 되게 정보를 추가하는 것을 말한다.
 가장 간단한 패딩 방법은 메시지의 끝에 “0”추가
 메시지의 끝에 하나의 “1”을 추가, 이어서 “0” 추가
 추가된 “0” 설명+이어서 “0” 추가
 메시지의 설명+ 이어서 “0” 추가
2007-02 정보보호기초
14
11.1.4 Birthday Paradox
 생일 역설 (Birthday Paradox) : 생일이 같은 날일 확률이 ½이려면 몇
명의 사람이 있어야 하나?
 Prob = 1-(N명의 사람이 모두 생일이 다를 확률)
 가정: 사람들의 생일이 균일하게 분포되어 있다.
 이 확률이 50%이상이 되기 위한 N의 최소값은? 23명
2007-02 정보보호기초
15
11.1.4 Birthday Paradox (계속)
 증명


M개의 통에 N개의 구술을 임의로 넣는다.
M개의 통 중에 2개 이상의 구술이 들어 있는 통이 있을 확률은?
– Prob = 1-(N개의 구슬이 모두 다른 통에 들어갈 확률)
M 1 M  2
M  N 1
prob 1  (


)
M
M
M
1
2
N 1
1  (1  )  (1  )  (1 
)
M
M
M
N 1
i
 1   (1  )
M
i 1
2007-02 정보보호기초
16
11.1.4 Birthday Paradox (계속)
2007-02 정보보호기초
17
11.1.4 Birthday Paradox (계속)
2007-02 정보보호기초
18
11.1.5 해쉬함수 종류
 전용 해쉬 함수
 MD4, MD5, SHA, SHA-1, RIPEMD-128/160, HAS-160
 블록 암호 기반 해쉬 함수-DES 기반
 Single length MDCs
※ Matyas-Meyer-Oseas, Davies-Meyer, Miyaguchi-Preneel
 MDC-2
 MDC-4
 모듈러 연산에 기반 해쉬 함수
 MASH-1, MASH-2
2007-02 정보보호기초
19
11.2 전용해쉬 알고리즘
11.2.1 MD5
11.2.2 SHA-1
11.2.3 RIPEMD-128/160
11.2.4 HAS-160
2007-02 정보보호기초
20
11.2.1 MD5
2007-02 정보보호기초
21
11.2.1 MD5 (계속)
 HMD5 처리 과정
CVq
Yq
512
128
A
B
C
fF , ABCD, Yq, T [1-16] 16회
A
B
C
fG , ABCD, Yq, T [17-32] 16회
A
B
C
fH , ABCD, Yq, T [33-48] 16회
A
B
C
fI , ABCD, Yq, T [49-64] 16회
D
D
D
D
mod 232
CVq+1
2007-02 정보보호기초
22
11.2.1 MD5 (계속)
 MD5 초기값
A = 0x 0 1 2 3 4 5 6 7
B = 0x 8 9 A B C D E F
C = 0x F E D C B A 9 8
D = 0x 7 6 5 4 3 2 1 0
2007-02 정보보호기초
23
11.2.1 MD5 (계속)
 MD5의 HMD5 상수 T [i]의 값
 T [i ] = 232 * ABS (sin (i )) 정수부분; i 는 라디안
T[1] = D76AA478
T[17] = F61E2562
T[33] = FFFA3942
T[49] = F4292244
T[2] = E8C7B756
T[18] = C040B340
T[34] = 8771F681
T[50] = 432AFF97
T[3] = 242070DB
T[19] = 265E5A51
T[35] = 699D6122
T[51] = AB9423A7
T[4] = C1BDCEEE
T[20] = E9B6C7AA
T[36] = FDE5380C
T[52] = FC93A039
T[5] = F57C0FAF
T[21] = D62F105D
T[37] = A4BEEA44
T[53] = 655B59C3
T[6] = 4787C62A
T[22] = 02441453
T[38] = 4BDECFA9
T[54] = 8F0CCC92
T[7] = A8304613
T[23] = D8A1E681
T[39] = F6BB4B60
T[55] = FFEFF47D
T[8] = FD469501
T[24] = E7D3FBC8
T[40] = BEBFBC70
T[56] = 85845DD1
T[9] = 698098D8
T[25] = 21E1CDE6
T[41] = 289B7EC6
T[57] = 6FA87E4F
T[10] = 8B44F7AF
T[26] = C33707D6
T[42] = EAA127FA
T[58] = FE2CE6E0
T[11] = FFFF5BB1
T[27] = F4D50D87
T[43] = D4EF3085
T[59] = A3014314
T[12] = 895CD7BE
T[28] = 455A14ED
T[44] = 04881D039
T[60] = 4E0811A1
T[13] = 6B901122
T[29] = A9E3E905
T[45] = D9D4D039
T[61] = F7537E82
T[14] = FD987193
T[30] = FCEFA3F8
T[46] = E6DB99E5
T[62] = BD3AF235
T[15] = A679438E
T[31] = 676F02D9
T[47] = 1FA27CF8
T[63] = 2AD7D2BB
T[16] = 49B40821
T[32] = 8D2A4C8A
T[48] = C4AC5665
T[64] = EB86D391
2007-02 정보보호기초
24
11.2.1 MD5 (계속)
 MD5의 HMD5 의 기본 동작
A, B, C, D : 버퍼의 4 단어
g
A
B
C
D
g
: 기약 함수 F, G, H, I 중의 하나
CLSS=<<<s :32 비트 순환 좌측 쉬프트
(로테이션)
X[k] : 메시지의 q번째 512비트 블록 중
에서 k번째 단어(32비트)
X[K]
T [i]
T[i] : 행렬 T에서 i번째 단어(32비트)
:법2
CLSS
A
B
C
D
32
의 덧셈
라운드
기약함수 g
g(b,c,d)
1
F(B,C,D)
(BC)+(B D)
2
G(B,C,D)
(BD)+(CD)
3
H(B,C,D)
BCD
4
I(B,C,D)
C(B+D)
2007-02 정보보호기초
25
11.2.1 MD5 (계속)
라운드
기약함수 g
g(b,c,d)
1
F(B,C,D)
(BC)+(B D)
2
G(B,C,D)
(BD)+(CD)
3
H(B,C,D)
BCD
4
I(B,C,D)
C(B+D)
BCD
FGHI
000
001
010
011
100
101
110
111
0001
1010
0110
1001
0011
0101
1100
1110
2007-02 정보보호기초
26
11.2.2 SHA 알고리즘
 Secure Hash Algorithm
 NIST(National Institute of Standards and Technology)에서 개발
 1993년에 표준으로 발표 (FIPS 180)
 1995년에 개선된 버전 발표 (FIPS 180-1) SHA-1
 해쉬길이: 160 비트(5개의 32 비트 워드)
 입력: 264 비트 보다 작은 임의의 크기의 입력


512비트 단위로 적용
전체 입력의 크기가 512 비트의 배수가 아니면 padding을 한다.
– 마지막 64 비트에는 실제 크기를 기록한다.
2007-02 정보보호기초
27
11.2.2 SHA 알고리즘 (계속)
 SHA
 서명문 형식
L512비트=N  32비트
100  0
서명문 M
64
448 mod 512
 패딩 패턴 : 1000
 64비트 : 서명문 길이 표시 상위 32비트와 하위 32비트 교환
2007-02 정보보호기초
28
11.2.2 SHA 알고리즘 (계속)
 512 비트 입력은 80개의 32비트 블록으로 확장
 4 라운드, 라운드 당 20 단계
 5 개의 32 비트 초기 값을 사용
 A = 0x67452301
 B = 0xefcdab89
 C = 0x98badcfe
 D = 0x10325476
 E = 0xc3d2e1f0
2007-02 정보보호기초
29
11.2.2 SHA 알고리즘 (계속)
2007-02 정보보호기초
30
11.2.2 SHA 알고리즘 (계속)
2007-02 정보보호기초
31
11.2.3 RIPEMD–160
 RIPEMD–160
 서명문 형식
L512비트=N  32비트
서명문 M
100  0
64
448 mod 512
 패딩 패턴 : 1000
 64비트 : 서명문 길이 표시 상위 32비트와 하위 32비트 교환
2007-02 정보보호기초
32
11.2.3 RIPEMD–160 (계속)
 RIPEMD–160 해쉬
512비트
512비트
Y0
Y1
160
ABCDE
512
160
HRIP-160
CV0= IV
512비트

HRIP-160
CV1

Yq
512
512비트
YL–1
512

160
HRIP-160
CVq
2007-02 정보보호기초
512

160
HRIP-160
CVL–1
160
CVL
33
11.2.3 RIPEMD–160 (계속)
 RIPEMD 초기값
A=01234567
B=89ABCDEF
C=FEDCBA98
D=76543210
E=0FE1D2C3
2007-02 정보보호기초
34
11.2.3 RIPEMD–160 [계속]
CVq
Yq
Yq
f1, K1, Xi
16 steps
A B C D
f2, K2, X(i)
16 steps
A B C D
f3, K3, X 2 (i)
16 steps
A B C D
f4, K4, X 3 (i)
16 steps
A B C D
f5, K5, X 4 (i)
16 steps
f5, K´1, Xi
16 steps
A´ B´ C´ D´ E´
f4, K´2, X(i)
16 steps
A´ B´ C´ D´ E´
f3, K´3, X 2(i)
16 steps
A´ B´ C´ D´ E´
f2, K´4, X 3 (i)
16 steps
A´ B´ C´ D´ E´
f1, K´4, X 4 (i)
16 steps
E
E
E
E
 : mod 232
CVCV
q+1q+1
2007-02 정보보호기초
35
11.2.3 RIPEMD–160 (계속)
 RIPEMD의 HRIP–160 상수
j = 0 ~ 15
K1 = 00000000
K1´ = 50A28BE6
j = 16 ~ 31
K2 = 5A827999
K2´ = 5C4DD124
j = 32 ~ 47
K3 = 6ED9EBA1
K3´ = 6D703EF3
j = 48 ~ 63
K4 = 8F1BBCDC
K4´ = 7A6D76E9
j = 64 ~ 79
K5 = A953FD4E
K5´ = 00000000
2007-02 정보보호기초
36
11.2.3 RIPEMD–160 (계속)
 RIPEMD의 논리함수
2007-02 정보보호기초
37
11.2.3 RIPEMD–160(계속)
 HRIP–160 기본 동작
 A, B, C, D, E = 32비트 버퍼
 A', B', C', D', E' = 32비트 버퍼
 j = 스텝 수 (0≤j≤79)
 rols(j) = rotation(회전)
 Xj = 512비트 입력 값에서 선택
된 32비트
 Kj = 상수
2007-02 정보보호기초
38
11.2.4 HAS-160
 HAS-160
 한국 디지탈 서명 표준인 KCDSA에서 사용할 목적으로 개발
 160비트의 해쉬 값
 512비트 단위로 입력 값
 패딩 규칙은 SHA-1과 동일하다.
2007-02 정보보호기초
39
11.2.4 HAS-160 (계속)
초
기
화
값
각 라운드 상수 값
2007-02 정보보호기초
40
11.2.4 HAS-160 (계속)
A, B, C, D, E = 32비트 버퍼
t = 라운드 수 (0≤t≤79)
Ft = 라운드 함수
CLS(1)S/CLS(2)s = 32비트
에서 s비트 순환 좌측 쉬프트
기
본
동
X[t] =512비트 입력 값에서 선
택된 32비트,
작
Kt : 상수 값
2007-02 정보보호기초
41
11.3 기타 해쉬함수
11.3.1 Single-length MDCs
11.3.2 Double-length MDCs
2007-02 정보보호기초
42
개요
 블록암호 방식을 이용한 일반 해쉬함수
K
C
Hi
Hi – 1
중간 해쉬값
A
E
D
D = EK(A)  C
Hi = EK(Hi  1)  C
2007-02 정보보호기초
43
개 요 (계속)
1)
블럭암호 방식을 이용한 안전한 해쉬함수
1) Hi = EHi – 1(Mi)  Mi
2) Hi = EHi – 1(Mi  Hi  1)  Mi  Hi  1
3) Hi = EHi – 1(Mi)  Hi  1  Mi
4) Hi = EHi – 1(Mi  Hi  1)  Mi
5) Hi = EMi(Hi  1)  Hi  1
6) Hi = EMi(Mi  Hi  1)  Mi  Hi  1
7) Hi = EMi(Hi  1)  Mi  Hi  1
8) Hi = EMi(Mi  Hi  1)  Hi  1
9) Hi = EMi  Hi – 1(Mi)  Mi
10) Hi = EMi  Hi – 1(Hi  1)  Hi  1
11) Hi = EMi  Hi – 1(Mi)  Hi  1
12) Hi = EMi  Hi – 1(Hi  1)  Mi
2007-02 정보보호기초
44
11.3.1 Single-length MDCs
1. Meyer – Matyas 해쉬함수
Hi–1
Mi
H0 : 초기벡터
key
E
Hi
Hi = EH i –1 (Mi)  Mi
2007-02 정보보호기초
45
11.3.1 Single-length MDCs (계속)
2. Miyaguchi – Ohta – Iwata 해쉬함수
Hi –1
Mi
key
E
Hi
H0 : 초기벡터
Hi = EH i–1 (Mi)  Hi–1  Mi
2007-02 정보보호기초
46
11.3.1 Single-length MDCs (계속)
3. Davies – Meyer 해쉬함수
Mi
Hi –1
key
E
Hi
H0 : 초기벡터
Hi = EMi (Hi –1)  Hi–1
2007-02 정보보호기초
47
11.3.2 Double-length MDCs
1. MDC-2
2007-02 정보보호기초
48
Double-length MDCs (계속)
2. MDC-4
2007-02 정보보호기초
49
해쉬 함수 요약
 n bit 블록 암호 알고리즘을 기반으로 한 해쉬 함수의 요약
 ISO/IEC 10118-2 표준에서
 1) 단일 길이 MDC로 Matyas-Meyer-Oseas 방식
 2) 이중 길이 MDC로 MDC-2 방식
K = 키의 비트 길이, M = 해쉬 값의 비트 길이
2007-02 정보보호기초
50
해쉬 함수 요약
 전용 해쉬 함수 요약
 모듈러 연산을 이용한 해쉬 함수
H 0  IV
Hi  (Hi 1  xi )e mod M , 1  i  t
2007-02 정보보호기초
h( x )  H t
51