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)
(BC)+(B D)
2
G(B,C,D)
(BD)+(CD)
3
H(B,C,D)
BCD
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)
(BC)+(B D)
2
G(B,C,D)
(BD)+(CD)
3
H(B,C,D)
BCD
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
서명문 형식
L512비트=N 32비트
100 0
서명문 M
64
448 mod 512
패딩 패턴 : 1000
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
서명문 형식
L512비트=N 32비트
서명문 M
100 0
64
448 mod 512
패딩 패턴 : 1000
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