제 11 장 해쉬 알고리즘 the h ash algorithm

51
http://www.ezpia.biz [[email protected]] 정정정정정정정정 정정정정정정정정 11 11 정 정정 정정정정 정 정정 정정정정 The H The Hash Algorithm 200 200 7. 11. 7. 11.

Upload: kimberly

Post on 14-Jan-2016

145 views

Category:

Documents


0 download

DESCRIPTION

제 11 장 해쉬 알고리즘 The H ash Algorithm. 200 7. 11. 목 차. 11.1 해쉬함수 정의 및 분류 11.2 전용 해쉬 알고리즘 11.3 기타 해쉬 알고리즘. 암호 이론의 상관관계. 11.1 해쉬함수 정의 및 분류. 11.1.1 해쉬함수 정의 11.1.2 해쉬함수 분류 11.1.3 해쉬함수 일반모델 11.1.4 Birthday Paradox 11.1.5 해쉬함수 종류. 11.1.1 해쉬함수 정의. 해쉬함수 (hash function) - PowerPoint PPT Presentation

TRANSCRIPT

http://www.ezpia.biz[[email protected]]

정보보호기초강의정보보호기초강의정보보호기초강의정보보호기초강의

제제 1111 장 해쉬 알고리즘장 해쉬 알고리즘 The HThe Hash Algorithm

2002007. 11. 7. 11.

22007-02 정보보호기초

목 차목 차

11.1 해쉬함수 정의 및 분류

11.2 전용 해쉬 알고리즘

11.3 기타 해쉬 알고리즘

32007-02 정보보호기초

암호 이론의 상관관계암호 이론의 상관관계

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 - 같은 출력을 내는 임의의 서로 다른 두 입력 메시지를 찾는 것이 계산상 불가능하다 .

102007-02 정보보호기초

11.1.2 11.1.2 해쉬함수 분류해쉬함수 분류

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 값을 위장하는 것이 계산상 불가능하다 .

132007-02 정보보호기초

11.1.3 11.1.3 해쉬함수 모델해쉬함수 모델

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

172007-02 정보보호기초

11.1.4 Birthday Paradox (11.1.4 Birthday Paradox ( 계속계속 ))

182007-02 정보보호기초

11.1.4 Birthday Paradox (11.1.4 Birthday Paradox ( 계속계속 ))

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

212007-02 정보보호기초

11.2.1 MD511.2.1 MD5

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

302007-02 정보보호기초

11.2.2 SHA 11.2.2 SHA 알고리즘알고리즘 (( 계속계속 ))

312007-02 정보보호기초

11.2.2 SHA 11.2.2 SHA 알고리즘알고리즘 (( 계속계속 ))

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

372007-02 정보보호기초

11.2.3 RIPEMD11.2.3 RIPEMD–160–160 (( 계속계속 ))

RIPEMD 의 논리함수

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 과 동일하다 .

402007-02 정보보호기초

11.2.4 HAS-16011.2.4 HAS-160 ( ( 계속계속 ))

각 라운드 상수 값

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 : 상수 값

422007-02 정보보호기초

11.3 기타 해쉬함수

11.3.1 Single-length MDCs

11.3.2 Double-length MDCs

432007-02 정보보호기초

개 요개 요

블록암호 방식을 이용한 일반 해쉬함수

D = EK(A) C

Hi = EK(Hi 1) C

E Hi – 1

K C

Hi

중간 해쉬값A D

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

482007-02 정보보호기초

11.3.2 Double-length MDCs11.3.2 Double-length MDCs

1. MDC-2

492007-02 정보보호기초

Double-length MDCs (Double-length MDCs ( 계속계속 ))

2. MDC-4

502007-02 정보보호기초

해쉬 함수 요약해쉬 함수 요약

n bit 블록 암호 알고리즘을 기반으로 한 해쉬 함수의 요약

ISO/IEC 10118-2 표준에서 1) 단일 길이 MDC 로 Matyas-Meyer-Oseas 방식 2) 이중 길이 MDC 로 MDC-2 방식

K = 키의 비트 길이 , M = 해쉬 값의 비트 길이

512007-02 정보보호기초

해쉬 함수 요약해쉬 함수 요약 전용 해쉬 함수 요약

0H IV 1( ) mod , 1ei i iH H x M i t ( ) th x H

모듈러 연산을 이용한 해쉬 함수