1 / 51

제 11 장 해쉬 알고리즘 The H ash Algorithm

제 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)

kimberly
Download Presentation

제 11 장 해쉬 알고리즘 The H ash Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제11장 해쉬 알고리즘The HashAlgorithm 2007. 11.

  2. 목 차 11.1 해쉬함수 정의 및 분류 11.2 전용 해쉬 알고리즘 11.3 기타 해쉬 알고리즘 2

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

  4. 11.1 해쉬함수 정의 및 분류 11.1.1 해쉬함수 정의 11.1.2 해쉬함수 분류 11.1.3 해쉬함수 일반모델 11.1.4 Birthday Paradox 11.1.5 해쉬함수 종류 4

  5. 11.1.1 해쉬함수 정의 • 해쉬함수(hash function) • 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열(해쉬값, 메시지 다이제스트, 메시지 지문)로 매핑하여 주는 함수 고정 비트열 임의의 비트열 Hash function 5

  6. 11.1.1 해쉬함수 정의 (계속) • 해쉬 함수의두 가지 기본성질 • compression - 임의의 유한 길이의 입력 비트 스트링 x를 고정된 길이의 출력 비트 스트링 h(x)로 변환한다. • ease of computation - 주어진 h와 x에 대하여 h(x)를 계산하기 쉽다. • 해쉬함수 • 일방향 해쉬 함수(one-way hash function) • 충돌 회피 해쉬 함수(collision resistant hash function) 6

  7. 11.1.1 해쉬함수 정의 (계속) • 해쉬 함수 세 가지 특성 (1) preimage resistance - 주어진 출력에 대하여 입력값을 구하는 것이 계산상 불가능하다. (2) 2nd-preimage resistance - 주어진 입력에 대하여 같은 출력을 내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다. (3) collision resistance - 같은 출력을 내는 임의의 서로 다른 두 입력 메시지를 찾는 것이 계산상 불가능하다. 7

  8. 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 - 주어진 입력에 대하여 같은 출력을 내는 또 다른 입력을 찾아 내는 것이 계산상 불가능하다. 8

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

  10. 11.1.2 해쉬함수 분류 10

  11. 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) 11

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

  13. 11.1.3 해쉬함수 모델 13

  14. 11.1.3 해쉬함수 일반모델 (계속) • 패딩(padding) 메시지가 블록의 상수배가 되게 정보를 추가하는 것을 말한다. • 가장 간단한 패딩 방법은 메시지의 끝에 “0”추가 • 메시지의 끝에 하나의 “1”을 추가, 이어서 “0”추가 • 추가된 “0”설명+이어서 “0”추가 • 메시지의 설명+ 이어서 “0”추가 14

  15. 11.1.4 Birthday Paradox • 생일 역설 (Birthday Paradox): 생일이 같은 날일 확률이 ½이려면 몇 명의 사람이 있어야 하나? • Prob = 1-(N명의 사람이 모두 생일이 다를 확률) • 가정: 사람들의 생일이 균일하게 분포되어 있다. • 이 확률이 50%이상이 되기 위한 N의 최소값은? 23명 15

  16. 11.1.4 Birthday Paradox (계속) • 증명 • M개의 통에 N개의 구술을 임의로 넣는다. • M개의 통 중에 2개 이상의 구술이 들어 있는 통이 있을 확률은? • Prob = 1-(N개의 구슬이 모두 다른 통에 들어갈 확률) 16

  17. 11.1.4 Birthday Paradox (계속) 17

  18. 11.1.4 Birthday Paradox (계속) 18

  19. 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 19

  20. 11.2 전용해쉬 알고리즘 11.2.1 MD5 11.2.2 SHA-1 11.2.3 RIPEMD-128/160 11.2.4 HAS-160 20

  21. 11.2.1 MD5 21

  22. 11.2.1 MD5(계속) • HMD5 처리 과정 CVq 128 Yq A B C D 512 fF , ABCD, Yq, T [1-16] 16회 A B C D fG , ABCD, Yq, T [17-32] 16회 A B C D fH , ABCD, Yq, T [33-48] 16회 A B C D fI , ABCD, Yq, T [49-64] 16회 mod232 CVq+1 22

  23. 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 23

  24. 11.2.1 MD5(계속) • MD5의 HMD5상수 T [i]의 값 • T [i ] = 232 * ABS (sin (i)) 정수부분; i는 라디안 24

  25. g CLSS CLSS 11.2.1 MD5(계속) • MD5의 HMD5 의 기본 동작 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의 덧셈 X[K] T [i] 25

  26. BCD FGHI 000 001 010 011 100 101 110 111 0001 1010 0110 1001 0011 0101 1100 1110 11.2.1 MD5(계속) 26

  27. 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 비트에는 실제 크기를 기록한다. 27

  28. 11.2.2 SHA 알고리즘 (계속) • SHA • 서명문 형식 • 패딩 패턴 : 1000 • 64비트 : 서명문 길이 표시 상위 32비트와 하위 32비트 교환 L512비트=N 32비트 서명문 M 100  0 64 서명문 M 100  0 64 448 mod 512 28

  29. 11.2.2 SHA 알고리즘 (계속) • 512 비트 입력은 80개의 32비트 블록으로 확장 • 4 라운드, 라운드 당 20 단계 • 5 개의 32 비트 초기 값을 사용 • A = 0x67452301 • B = 0xefcdab89 • C = 0x98badcfe • D = 0x10325476 • E = 0xc3d2e1f0 29

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

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

  32. 11.2.3 RIPEMD–160 • RIPEMD–160 • 서명문 형식 • 패딩 패턴 : 1000 • 64비트 : 서명문 길이 표시 상위 32비트와 하위 32비트 교환 L512비트=N 32비트 서명문 M 100  0 64 서명문 M 100  0 64 448 mod 512 32

  33. 11.2.3 RIPEMD–160(계속) • RIPEMD–160해쉬 512비트 512비트 512비트 512비트 Y0Y1 Yq YL–1   512 512 512 512 160 160 160 160 160 HRIP-160 HRIP-160 HRIP-160 HRIP-160   ABCDE CV0= IV CV1 CVq CVL–1 CVL 33

  34. 11.2.3 RIPEMD–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 34

  35. CVq Yq Yq f1, K1, Xi 16 steps f5, K´1, Xi 16 steps A B C D E B´ B´ B´ C´ C´ C´ D´ D´ D´ E´ E´ E´ A´ A´ A´ f2, K2, X(i) 16 steps f4, K´2, X(i) 16 steps A B C D E f3, K´3, X 2(i) 16 steps f3, K3, X 2 (i) 16 steps A B C D E f2, K´4, X 3(i) 16 steps f4, K4, X 3 (i) 16 steps A B C D E A´ B´ C´ D´ E´ f1, K´4, X 4(i) 16 steps f5, K5, X 4 (i) 16 steps  : mod 232 CVq+1 CVq+1 11.2.3 RIPEMD–160 [계속] 35

  36. 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 36

  37. 11.2.3 RIPEMD–160(계속) • RIPEMD의 논리함수 37

  38. 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 = 상수 11.2.3 RIPEMD–160(계속) 38

  39. 11.2.4 HAS-160 • HAS-160 • 한국 디지탈 서명 표준인 KCDSA에서 사용할 목적으로 개발 • 160비트의 해쉬 값 • 512비트 단위로 입력 값 • 패딩 규칙은 SHA-1과 동일하다. 39

  40. 11.2.4 HAS-160 (계속) 초 기 화 값 각 라운드 상수 값 40

  41. 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 : 상수 값 기 본 동 작 41

  42. 11.3 기타 해쉬함수 11.3.1 Single-length MDCs 11.3.2 Double-length MDCs 42

  43. 개 요 • 블록암호 방식을 이용한 일반 해쉬함수 D=EK(A)  C Hi =EK(Hi  1)  C K C Hi Hi – 1 E 중간 해쉬값 A D 43

  44. 개 요 (계속) • 블럭암호 방식을 이용한 안전한 해쉬함수 • Hi =EHi – 1(Mi)  Mi • Hi =EHi – 1(Mi  Hi  1)  Mi  Hi  1 • Hi =EHi – 1(Mi)  Hi  1  Mi • Hi =EHi – 1(Mi  Hi  1)  Mi • Hi =EMi(Hi  1)  Hi  1 • Hi =EMi(Mi  Hi  1)  Mi  Hi  1 • Hi =EMi(Hi  1)  Mi  Hi  1 • Hi =EMi(Mi  Hi  1)  Hi  1 • Hi =EMi  Hi – 1(Mi)  Mi • Hi =EMi  Hi – 1(Hi  1)  Hi  1 • Hi =EMi  Hi – 1(Mi)  Hi  1 • Hi =EMi  Hi – 1(Hi  1)  Mi 44

  45. 11.3.1 Single-length MDCs • Meyer – Matyas 해쉬함수 H0 : 초기벡터 Hi = EH i –1(Mi)  Mi Hi–1 key Mi E Hi 45

  46. 11.3.1 Single-length MDCs(계속) • Miyaguchi – Ohta – Iwata 해쉬함수 H0 : 초기벡터 Hi = EH i–1(Mi)  Hi–1 Mi Hi –1 key Mi E Hi 46

  47. 11.3.1 Single-length MDCs(계속) • Davies – Meyer 해쉬함수 H0 : 초기벡터 Hi = EMi(Hi –1)  Hi–1 Mi key Hi –1 E Hi 47

  48. 11.3.2 Double-length MDCs • MDC-2 48

  49. Double-length MDCs (계속) • MDC-4 49

  50. 해쉬 함수 요약 • n bit 블록 암호 알고리즘을 기반으로 한 해쉬 함수의 요약 • ISO/IEC 10118-2 표준에서 • 1) 단일 길이 MDC로 Matyas-Meyer-Oseas 방식 • 2) 이중 길이 MDC로 MDC-2 방식 K = 키의 비트 길이,M = 해쉬 값의 비트 길이 50

More Related