제 11 장 해쉬 알고리즘 The H ash Algorithm
description
Transcript of 제 11 장 해쉬 알고리즘 The H ash Algorithm
http://www.ezpia.biz[[email protected]]
정보보호기초강의정보보호기초강의정보보호기초강의정보보호기초강의
제제 1111 장 해쉬 알고리즘장 해쉬 알고리즘 The HThe Hash Algorithm
2002007. 11. 7. 11.
42007-02 정보보호기초
11.1 해쉬함수 정의 및 분류
11.1.1 해쉬함수 정의
11.1.2 해쉬함수 분류
11.1.3 해쉬함수 일반모델
11.1.4 Birthday Paradox
11.1.5 해쉬함수 종류
52007-02 정보보호기초
11.1.1 11.1.1 해쉬함수 정의해쉬함수 정의
해쉬함수 (hash function)
임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열 ( 해쉬값 ,
메시지 다이제스트 , 메시지 지문 ) 로 매핑하여 주는 함수
Hash function임의의 비트열 고정 비트열
62007-02 정보보호기초
11.1.1 11.1.1 해쉬함수 정의 해쉬함수 정의 (( 계속계속 ))
해쉬 함수의 두 가지 기본성질
compression - 임의의 유한 길이의 입력 비트 스트링 x 를 고정된 길이의 출력 비트 스트링 h(x) 로 변환한다 .
ease of computation - 주어진 h 와 x 에 대하여 h(x) 를 계산하기 쉽다 .
해쉬함수
일방향 해쉬 함수 (one-way hash function)
충돌 회피 해쉬 함수 (collision resistant hash function)
72007-02 정보보호기초
11.1.1 11.1.1 해쉬함수 정의 해쉬함수 정의 (( 계속계속 ))
해쉬 함수 세 가지 특성
(1) preimage resistance - 주어진 출력에 대하여 입력값을 구하는 것이 계산상 불가능하다 .
(2) 2nd-preimage resistance - 주어진 입력에 대하여 같은 출력을 내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다 .
(3) collision resistance - 같은 출력을 내는 임의의 서로 다른 두 입력 메시지를 찾는 것이 계산상 불가능하다 .
82007-02 정보보호기초
11.1.1 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 - 주어진 입력에 대하여 같은 출력을 내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다 .
92007-02 정보보호기초
11.1.1 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 - 같은 출력을 내는 임의의 서로 다른 두 입력 메시지를 찾는 것이 계산상 불가능하다 .
112007-02 정보보호기초
11.1.2 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)
122007-02 정보보호기초
11.1.2 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 값을 위장하는 것이 계산상 불가능하다 .
142007-02 정보보호기초
11.1.3 11.1.3 해쉬함수 일반모델 해쉬함수 일반모델 (( 계속계속 ))
패딩 (padding) 메시지가 블록의 상수배가 되게 정보를 추가하는 것을 말한다 .
가장 간단한 패딩 방법은 메시지의 끝에 “ 0” 추가 메시지의 끝에 하나의 “ 1” 을 추가 , 이어서 “ 0” 추가 추가된 “ 0” 설명 + 이어서 “ 0” 추가 메시지의 설명 + 이어서 “ 0” 추가
152007-02 정보보호기초
11.1.4 Birthday Paradox11.1.4 Birthday Paradox
생일 역설 (Birthday Paradox) : 생일이 같은 날일 확률이 ½ 이려면 몇 명의 사람이 있어야 하나 ?
Prob = 1-(N 명의 사람이 모두 생일이 다를 확률 )
가정 : 사람들의 생일이 균일하게 분포되어 있다 .
이 확률이 50% 이상이 되기 위한 N 의 최소값은 ? 23 명
162007-02 정보보호기초
11.1.4 Birthday Paradox (11.1.4 Birthday Paradox ( 계속계속 ))
증명
M 개의 통에 N 개의 구술을 임의로 넣는다 .
M 개의 통 중에 2 개 이상의 구술이 들어 있는 통이 있을 확률은 ?
– Prob = 1-(N 개의 구슬이 모두 다른 통에 들어갈 확률 )
1
1
)1(1
)1
1()2
1()1
1(1
)121
(1
N
i M
iM
N
MM
M
NM
M
M
M
Mprob
192007-02 정보보호기초
11.1.5 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
202007-02 정보보호기초
11.2 11.2 전용해쉬 알고리즘전용해쉬 알고리즘
11.2.1 MD5
11.2.2 SHA-1
11.2.3 RIPEMD-128/160
11.2.4 HAS-160
222007-02 정보보호기초
DCBA
B DCA
A B C D
DCBA
11.2.1 MD511.2.1 MD5 (( 계속계속 ))
HMD5 처리 과정
fF , ABCD, Yq, T [1-16] 16 회
128512
mod 232
CVq
fG , ABCD, Yq, T [17-32] 16 회
fH , ABCD, Yq, T [33-48] 16 회
fI , ABCD, Yq, T [49-64] 16 회
Yq
CVq+1
232007-02 정보보호기초
11.2.1 MD511.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
242007-02 정보보호기초
11.2.1 MD511.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
252007-02 정보보호기초
11.2.1 MD511.2.1 MD5 (( 계속계속 ))
MD5 의 HMD5 의 기본 동작
A B C D
A B C D
g
CLSSCLSS
X[K]
T [i]
A, B, C, D : 버퍼의 4 단어
g : 기약 함수 F, G, H, I 중의 하나
CLSS=<<<s :32 비트 순환 좌측 쉬프트
( 로테이션 )
X[k] : 메시지의 q 번째 512 비트 블록 중에서 k 번째 단어 (32 비트 )
T[i] : 행렬 T 에서 i 번째 단어 (32 비트 )
: 법 232 의 덧셈
A, B, C, D : 버퍼의 4 단어
g : 기약 함수 F, G, H, I 중의 하나
CLSS=<<<s :32 비트 순환 좌측 쉬프트
( 로테이션 )
X[k] : 메시지의 q 번째 512 비트 블록 중에서 k 번째 단어 (32 비트 )
T[i] : 행렬 T 에서 i 번째 단어 (32 비트 )
: 법 232 의 덧셈
라운드 기약함수 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)
262007-02 정보보호기초
11.2.1 MD511.2.1 MD5 (( 계속계속 ))
BCD FGHI
000001010011100101110111
00011010011010010011010111001110
라운드 기약함수 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)
272007-02 정보보호기초
11.2.2 SHA 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 비트에는 실제 크기를 기록한다 .
282007-02 정보보호기초
SHA
서명문 형식
패딩 패턴 : 1000
64 비트 : 서명문 길이 표시 상위 32 비트와 하위 32 비트 교환
11.2.2 SHA 11.2.2 SHA 알고리즘알고리즘 (( 계속계속 ))
서명문 M 100 0 64 서명문 M 100 0 64
L512 비트 =N 32비트
448 mod 512
292007-02 정보보호기초
11.2.2 SHA 11.2.2 SHA 알고리즘 알고리즘 (( 계속계속 ))
512 비트 입력은 80 개의 32 비트 블록으로 확장
4 라운드 , 라운드 당 20 단계
5 개의 32 비트 초기 값을 사용 A = 0x67452301
B = 0xefcdab89
C = 0x98badcfe
D = 0x10325476
E = 0xc3d2e1f0
322007-02 정보보호기초
RIPEMD–160 서명문 형식
패딩 패턴 : 1000
64 비트 : 서명문 길이 표시 상위 32 비트와 하위 32 비트 교환
11.2.3 RIPEMD11.2.3 RIPEMD–160–160
서명문 M 100 0 64 서명문 M 100 0 64
L512 비트 =N 32비트
448 mod 512
332007-02 정보보호기초
11.2.3 RIPEMD11.2.3 RIPEMD–160–160 (( 계속계속 ))
RIPEMD–160 해쉬
160
Y0 Y1 512
512비트 Yq
512비트
YL–1
512비트
HRIP-160
512
512 512
CV0= IVABCDE
CV1 CVq CVL–1 CVL
512비트
160 160 160 160HRIP-160 HRIP-160 HRIP-160
342007-02 정보보호기초
11.2.3 RIPEMD11.2.3 RIPEMD–160–160 (( 계속계속 ))
RIPEMD 초기값
A = 0 1 2 3 4 5 6 7
B = 8 9 A B C D E F
C = F E D C B A 9 8
D = 7 6 5 4 3 2 1 0
E = 0 F E 1 D 2 C 3
352007-02 정보보호기초
11.2.3 RIPEMD11.2.3 RIPEMD–160 [–160 [ 계속계속 ]]
CVq+1
f1, K1, Xi
16 stepsA B C D E
f2, K2, X(i)
16 stepsA B C D Ef3, K3, X 2 (i)
16 stepsA B C D Ef4, K4, X 3 (i)
16 stepsA B C D Ef5, K5, X 4 (i)
16 steps
f5, K´1, Xi
16 stepsA´ B´ C´ D´ E´f4, K´2, X(i)
16 steps
f3, K´3, X 2(i)
16 steps
f2, K´4, X 3 (i)
16 steps
f1, K´4, X 4 (i)
16 steps
A´ B´ C´ D´ E´
A´ B´ C´ D´ E´
A´ B´ C´ D´ E´
CVq
: mod 232
Yq Yq
CVq+1
362007-02 정보보호기초
11.2.3 RIPEMD11.2.3 RIPEMD–160–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
382007-02 정보보호기초
11.2.3 RIPEMD11.2.3 RIPEMD–160–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 = 상수
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 = 상수
392007-02 정보보호기초
11.2.4 HAS-160 11.2.4 HAS-160
HAS-160
한국 디지탈 서명 표준인 KCDSA 에서 사용할 목적으로 개발
160 비트의 해쉬 값
512 비트 단위로 입력 값
패딩 규칙은 SHA-1 과 동일하다 .
412007-02 정보보호기초
11.2.4 HAS-16011.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 : 상수 값
A, B, C, D, E = 32 비트 버퍼
t = 라운드 수 (0≤t≤79)
Ft = 라운드 함수
CLS(1)S/CLS(2)s = 32비트에서 s 비트 순환 좌측 쉬프트
X[t] =512 비트 입력 값에서
선택된 32 비트 ,
Kt : 상수 값
442007-02 정보보호기초
개 요 개 요 (( 계속계속 ))
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
452007-02 정보보호기초
11.3.1 Single-length MDCs11.3.1 Single-length MDCs
1. Meyer – Matyas 해쉬함수
H0 : 초기벡터 Hi = EH i –1 (Mi) Mi
E
key
Hi
Hi–1
Mi
462007-02 정보보호기초
11.3.1 Single-length MDCs11.3.1 Single-length MDCs (( 계속계속 ))
2. Miyaguchi – Ohta – Iwata 해쉬함수
H0 : 초기벡터 Hi = EH i–1 (Mi) Hi–1 Mi
E
key
Hi
Hi –1
Mi
472007-02 정보보호기초
11.3.1 Single-length MDCs11.3.1 Single-length MDCs (( 계속계속 ))
3. Davies – Meyer 해쉬함수
H0 : 초기벡터 Hi = EMi
(Hi –1) Hi–1
E
key
Hi
Mi
Hi –1
502007-02 정보보호기초
해쉬 함수 요약해쉬 함수 요약
n bit 블록 암호 알고리즘을 기반으로 한 해쉬 함수의 요약
ISO/IEC 10118-2 표준에서 1) 단일 길이 MDC 로 Matyas-Meyer-Oseas 방식 2) 이중 길이 MDC 로 MDC-2 방식
K = 키의 비트 길이 , M = 해쉬 값의 비트 길이