1 / 42

Chap 6. 공개키 암호

Chap 6. 공개키 암호. 목 차. 1. 공개키 암호 시스템의 원리 2. RSA 알고리즘 3. 키 관리 4. Diffie-Hellman 키교환 알고리즘. 1. 공개키 암호 시스템의 원리. 관용 암호 방식의 문제점 키 분배의 문제 디지털 서명이 불가능 기본연산 : 전치와 치환기법 이용 공개키 암호로 해결 기본연산 : 수학적 함수 이용 (1976 년 Diffe 와 Hellman 에 의해 제기 ). 1.1 공개키 암호 시스템. 공개키 알고리즘 : 두 개의 다른 키 사용

Download Presentation

Chap 6. 공개키 암호

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. Chap 6. 공개키 암호

  2. 목 차 1. 공개키 암호 시스템의 원리 2. RSA 알고리즘 3. 키 관리 4. Diffie-Hellman 키교환 알고리즘

  3. 1. 공개키 암호 시스템의 원리 • 관용 암호 방식의 문제점 • 키 분배의 문제 • 디지털 서명이 불가능 • 기본연산 : 전치와 치환기법 이용 공개키 암호로 해결 • 기본연산 : 수학적 함수 이용 (1976년 Diffe와 Hellman에 의해 제기)

  4. 1.1 공개키 암호 시스템 • 공개키 알고리즘 : 두 개의 다른 키 사용 공개키 : 모든 사람이 접근 가능한 키 (공개) 개인키 : 각 사용자 자신만이 소유 (비밀) (관용 암호에 사용되는 키는 비밀키라고 함) • 공개키 알고리즘의 특징 • 암호 알고리즘과 암호키를 알아도 복호키 계산 불가능 • 두 개의 키 중 하나는 암호에 다른 하나는 복호에 사용

  5. 관용 암호와 공개키 암호 비교 관용 암호 공개키 암호 암호/복호에 동일한 키와 암호/복호에 각각 서로 다른 키 와 동일한 알고리즘 사용 동일한 알고리즘 사용 수신자와 송신자는 키를 수신자와 송신자는 연관된 키쌍 중 교환해야 함 하나를 알아야 함 공유한 키(비밀키)는 비밀로 유지 키 쌍중 하나(개인키)를 비밀로 유지 키 분배의 어려움 공개키를 공개 디지털 서명 불가능 디지털 서명 가능 속도가 빠름 속도가 느림

  6. 공개키 암호의 단순 모델 : A가 B에게 암호화 메시지를 보내는 경우 B의 공개키 B의 개인키 평문 암호문 평문 암호 알고리즘 복호 알고리즘 사용자 A 사용자 B 1. 공개키와 개인키 생성 2. 공개키는 공개하고 개인키는 개인이 소유 3. A는 B의 공개키로 메시지를 암호화 4. B는 자신의 개인키로 메시지 복호화 (B의 개인키를 모르는 제 3자는 메시지 복호 불가능)

  7. 공개키 암호 시스템 : 기밀성 : 공개키로 암호화함으로써 메시지 기밀성 제공 암호문과 공개키로부터 평문 획득 불가능 암호 해독자 암호문 평문 평문 암호화 복호화 사용자 A 사용자 B B의 개인키 B의 공개키 키 쌍 출처

  8. 공개키 암호 시스템 : 인증 : 개인키로 서명함으로써 송신자 인증 제공 개인키를 알 수 없음으로 위조된 서명문 작성 불가능 (평문은 알 수 있음) 암호 해독자 서명문 평문 평문 암호화 복호화 사용자 A 사용자 B A의 개인키 A의 공개키 키 쌍 출처

  9. 공개키 암호 시스템 : 기밀성과 인증 : 개인키로 서명하고 공개키로 암호화하여 기밀성과 인증 제공 서명문 서명문 암호문 평문 평문 암호화 암호화 복호화 복호화 사용자 A 사용자 B B의 개인키 B의 공개키 키 쌍 출처 A의 개인키 A의 공개키 키 쌍 출처

  10. 1.2 공개키 암호 시스템의 응용 • 공개키 암호 시스템의 사용 • 암호/복호 (수신자의 공개키로 메시지 암호) • 디지털 서명 (송신자의 개인키로 메시지 서명) • 키 교환 (세션키를 교환하기 위해 사용) • 공개키 암호 시스템의 응용 알고리즘 암호/복호화 디지털 서명 키 교환 RSA 가능 가능 가능 DSS 불가능 가능 불가능 Diffie-Hellman 불가능 불가능 가능

  11. 1.3 공개키 암호를 위한 요구 사항 • 공개키 알고리즘의 조건 (Diffie와 Hellman) • 키 쌍(공개키 KU, 개인키 KR)의 생성이 쉽다. • 다음 식과 같은 암호문의 생성이 쉽다. C = EKUb(M) • 다음식과 같은 암호문의 복구화가 쉽다. M = DKRb(C) = DKRb[EKUb(M)] • 공개키 KUb로부터 개인키 KRb를 결정하는 것은 어렵다. • 공개키 KUb와 암호문 C로부터 메시지 M의 복구가 어렵다. • 암호와 복호 기능이 다음과 같이 적용 가능하다. (추가 사항) M = EKUb[DKRb(M)]

  12. 1.4 공개키 암호 분석 • 공격 유형 • 전사적 공격에 취약  키의 크기를 크게 함으로써 방지 (상대적으로 속도가 느려짐) • 공개키로부터 개인키를 계산하는 방법  수학적으로 계산이 불가능함을 증명하지 못함 • 가능한 메시지 공격 : 모든 가능한 메시지를 공개키로 암호화하여 암호문과 비교  메시지에 임의의 비트를 추가함으로써 방지

  13. 2. RSA 알고리즘2.1 알고리즘 설명 • RSA의 개발 : 1977년에 개발되어 1978년에 공포 (Rivest, Shamir, Adleman) • 평문 블록은 키의 길이보다 작아야 함 • 비밀키 암호방식(DES)보다 계산이 늦음 • 소인수 분해의 어려움에 근거

  14. 알고리즘 • 평문은 블록으로 암호화 • 암호화 C = Me mod n • 복호화 M = Cd mod n = (Me)d mod n = Med mod n • 공개키 : KU = {e, n}, 개인키 : KR = { d, n }

  15. Med = M mod n의 증명 • 오일러 정리 • p,q (솟수), n = qp, 정수 n, m (0mn), k (임의의 정수) 일 때 • mk(n)+1 = mk(p-1)(q-1)+1 = m mod n • (n) : n보다 적고 n과 서로소인 양의 정수가 되는 함수 ( p,q가 솟수일 경우, (pq) = (p-1)(q-1) ) • ed = k(n) + 1 ed = 1 mod (n) e = d-1 mod (n)  e와 d는 mod (n)에 곱셈 역원 (e와 d가 (n)에 서로소인 경우에만 참)

  16. RSA 알고리즘 정리 • 키 생성 • p, q 선택 ( p, q는 솟수 ) • n = p  q 계산 • 정수 d 선택 ( gcd((n),d) =1, 1<d< (n) ) • e 계산 ( e = d-1 mod (n) ) • 공개키 ( KU = {e, n} ) • 개인키 ( KR = {d, n} ) • 암호화 • C = Me ( mod n ) • 복호화 • M = Cd ( mod n )

  17. RSA 알고리즘 사용 예 • 공개키와 개인키 생성 1. 두 솟수 p = 7, q = 17 을 선택 2. n = pq = 7  17 = 119 계산 3. (n) = (p-1)(q-1) = 96 계산 4. (n) = 96과 서로소이고 (n)보다 작은 e 선택 ( e = 5 ) 5. de = 1 mod 96이고 d < 96 인 d를 결정 (d = 77)  공개키 KU = {5, 119}, 개인키 KR = {77, 119}

  18. RSA 알고리즘 사용 예 (계속) • 암호화와 복호화 : 평문 메시지 M = 19 일 경우 • 암호문 : 195 = 66 mod 119  66 • 복호문 : 6677 = 19 mod 119  19 암호화 복호화 암호문 66 2476099 20807 195 = = 119 나머지 : 66 1.27…10140 1.06 …10138 6677 = = 119 나머지 : 19 평문 19 평문 19 KU = 5, 119 KR = 77, 119

  19. 예제 • p=11, q=3 • M=5 일때 키를 생성하고 암호 복호화 과정을 제시하시오.

  20. 2.2 계산적인 측면 • 암호화와 복호화 • Me, Cd : 지수승계산 => 중간과정 이후의 큰 숫자 계산량 증대 • 중간 결과를 mod n으로 계산하여 숫자 크기 축소 • 계산량을 줄이는 방법 • 모듈러 연산의 특징 이용 [(a mod n)  (b mod n)] mod n = (a  b) mod n  중간 결과를 축소 • 효율적인 지수 승 • 직접적인 방법 (x16일 경우) : x16 = xxxxxxxxxxxxxxxx  15번의 곱셈 • 효율적인 방법 : x2, x4, x8, x16 4번의 곱셈

  21. 키 생성 • 랜덤한 큰 솟수를 찾는 방법 (확률적 검사법) 1. 랜덤하게 홀수 n을 선택 2. 랜덤하게 a<n인 정수 a를 선택 3. 확률적 솟수 판정법 수행 (만약 n이 검사에서 실패하면 1단계로) 4. n이 충분한 횟수로 통과하면 n을 수용, 그렇지 않으면 2단계로 • 솟수 생성을 위한 검사 횟수 • N에 가까운 솟수는 (ln N)에 대하여 평균 1회 생성 • ex) 2200범위의 솟수  ln(2200)/2 = 70 회 정도 시행

  22. 암호 해독의 고찰 • 암호 해독의 접근 방법 • 전사적 공격  큰 키를 사용하여 방지 • 인수 n를 두 소인수로 인수 분해  큰 값에 대한 두 솟수의 곱을 인수 분해하는 적당한 알고리즘이 없음 • p와 q을 결정하지 않고 직접 (n)을 결정  인수 분해만큼 어려움 • (n)을 결정하지 않고 직접 d를 결정  인수 분해만큼 어려움

  23. 인수분해 시간 자릿수 인수분해시간 100 2주일 150 1년(1000만 달러 소요) 200 1500년(10억달러, 초당 1012처리) • 제안사항(인수 분해를 어렵게) • n= 10150~10200 • p, q= 1075~10100 • (p-1),(q-1)은 큰 솟수 • gcd(p-1, q-1)은 작아야 • e<n이고 d<n1/4일때 d는 쉽게 결정 by WIEN90

  24. 3. 키 관리3.1 공개키의 분배 • 공개키의 공개 발표 • 자신의 공개키를 다른 사용자에게 전송 등의 방법으로 공개 • 문제점 • 어떤 사용자가 다른 사용자 A로 위장하여 공개키 공개 (A에 전송되는 암호화 메시지를 읽을 수 있게 됨) KUa KUb KUa KUb . . . . . . KUa KUb 사용자 A 사용자 B KUb KUa

  25. 공개적으로 사용 가능한 디렉토리 • 필요한 사항 • 기관은 각 가입자에 대한 {이름, 공개키}의 디렉토리 유지 • 각 가입자는 디렉토리 기관에 공개키 등록 • 가입자는 필요시 새로운 것으로 교체 가능 • 기관은 디렉토리를 공포 • 가입자는 전자적으로 디렉토리 접근 가능 • 문제점 • 디렉토리 정보를 수정 • 위조의 공개키로 임의의 가입자로 위장하여 도청

  26. 공개적으로 사용 가능한 디렉토리 (계속) 공개키 디렉토리 KUa KUb 사용자 A 사용자 B

  27. 공개키 기관 : 공개키 기관에서 공개키 분배 제어 공개키 기관 (1) Request || Time1 (4) Request || Time2 (2) EKRau[KUb || Request || Time1] (5) EKRau[KUa || Request || Time2] (3) EKUb[IDA || N1] (6) EKUa[N1 || N2] 시행자 A 대응자 B (7) EKUb[N2]

  28. 공개키 기관 (계속) (1) 단계 • B의 공개키에 대한 요구를 타임스템프와 함께 전송 (2) 단계 • 공개키 기관은 B의 공개키와 (1) 단계의 메시지를 자신의 개인키로 암호화하여 전송 (3) 단계 • B의 공개키를 저장하고, A의 식별자(IDA)와 임시비표(N1)을 B의 공개키로 암호화하여 전송

  29. 공개키 기관 (계속) (4), (5) 단계 • B는 (1), (2) 단계와 같은 방법으로 A의 공개키 획득 (6) 단계 • B는 임시비표 N1, N2를 A의 공개키로 암호화하여 전송 (7) 단계 • A는 N2를 B의 공개키로 암호화하여 전송 • 문제점 • 공개키 디렉토리 수정에 취약

  30. 공개키 인증서 • 공개키 기관의 도움없이 인증서를 이용하여 키 교환 • 인증서 방식을 위한 요구 사항 • 임의의 가입자는 인증서의 내용(이름, 공개키) 확인 가능 • 임의의 가입자는 인증서의 정당성 확인 가능 • 인증 기관만이 인증서 생성과 갱신 가능 • 임의의 가입자는 인증서의 현행성 확인 가능

  31. 공개키 인증서 (계속) 공개키 기관 KUa KUb CA = EKRau[ Time1, IDA, Kua ] CA = EKRau[ Time2, IDB, Kub ] (1) CA (2) CB 시행자 A 대응자 B : 사용자는 공개키 인증서를 받은 후 인증서로 공개키 전송

  32. 3.2 비밀키의 공개키 분배 • 공개키의 사용처 : 공개키는 느리기 때문에 관용 암호의 비밀키 분배에 많이 사용 • 단순 비밀키 분배 (1) Kua || IDA (2) EKUa[Ks] 사용자 A 사용자 B (1) 단계 • A는 공개키 쌍 {KUa, KRa}을 생성하고, 식별자 IDA와 함께 공개키 전송 (2) 단계 • B는 비밀키 Ks를 생성하고 A의 공개키로 암호화하여 전송

  33. 단순 비밀키 분배 (계속) • 문제점 : 적극적인 공격에 약함 (1) A는 공개키 쌍 {KUa, KRa}을 생성하고, 공개키 전송 (2) E는 메시지를 가로채고, 자신의 공개키(KUe)를 전송 (3) B는 비밀키 Ks를 생성하고 E의 공개키로 암호화하여 전송 EKUe[Ks] (4) E는 메시지를 가로채어 Ks를 획득 (DKRe[EKUe[Ks]] = Ks (5) E는 A에게 EKUa[Ks] 전송  E는 A와 B가 모르게 비밀값 Ks 획득 (도청 공격)

  34. 기밀성과 인증을 가지는 비밀키 분배 : 적극적, 소극적 공격에 대한 해결 (1) EKUb [N1 || IDA] (2) EKUa [N1 || N2] (3) EKUb [ N2] 사용자 A 사용자 B (4) EKUb [EKRa [Ks]]

  35. 기밀성과 인증을 가지는 비밀키 분배 (계속) : 공개키를 교환했다고 가정 (1) 단계 • A의 식별자와 임시비표(N1)를 B의 공개키로 암호화하여 전송 (2) 단계 • B는 새로운 임시비표(N2)와 N1을 A의 공개키로 암호화하여 전송 (3) 단계 • A는 보증을 위해 B의 공개키로 암호화한 N2을 반환 (4) 단계 • A는 비밀키 Ks를 선택하여 M=EKUb[EKRa[Ks]]를 B에게 전송

  36. 혼합 방식 • 키 분배 센터(KDC)의 사용을 유지 : 각 사용자에게 마스터키를 나누어주고, 마스터키로 암호화 된 비밀 세션키를 분배 • 공개키 방식은 마스터키를 분배하기 위해 사용

  37. 4. Diffie-Hellman 키교환 알고리즘 • 1976년 Diffie와 Hellman에 의해 개발 • 사용자들간에 효율적으로 키 교환 가능 • 인증 메시지에 비밀 세션키를 포함한 전달이 불필요 • 세션키를 암호화해서 전달할 필요 없음(로컬 계산) • One-time random secret value를 사용 (키 노출시 one traffic만 손상)

  38. 알고리즘의 원리 • 임의의 소수 P에 대해서 근의 멱승이 1부터 p-1까지의 모든 정수를 생성하는 원시근을 α라고 함 • α의 멱승에 대한 mod p의 계산 결과(α mod p, α2 mod p,… , αp-1 mod p)가 { 1, 2, 3, …, p-1} 까지의 각각 다른 정수를 생성 • 소수 p=7, 원시근 α =3일때 b= αi mod p 에서 • 31 mod 7 = 3, 32 mod 7 = 2, 33 mod 7 = 6 34 mod 7 = 4, 35 mod 7 = 5, 36 mod 7 = 1 => 계산 결과 b는 1부터 6까지의 각각 다른 정수를 구성

  39. A 랜덤한 a 선택 XA=αa mod p 계산 KAB=XBa mod p 계산 B 랜덤한 b 선택 XB=αb mod p 계산 KAB=XAb mod p 계산 Diffie-Hellman Key Exchange Algorithm • A와 B는 소수 p와 원시근 α공유 XA XB • KAB=XBa mod p=XAb mod p= αab mod p

  40. Diffie-Hellman 의 안전성 • 공격자는 공개된 값 p, α, XA, XB를 갖고 공격 • 키를 결정하기 위해서는 이산대수를 계산 • a= indα p (XA) • a를 찾는것이 불가능하면 안전 • 임의의 정수 XA와 소수 p의 원시근 α에 대해서 다음과 같은 유일한 지수 a가 존재 • XA=αa mod p : 0<=a<=(p-1) • 지수 a를 밑수 α와 mod p에 대한 a의 이산대수 또는 인덱스라 하며, indα p (XA)로 표현

  41. Diffie-Hellman 키교환의 예제 • α =3, p=7 • α =3, p=19

  42. 과제물 • RSA 알고리즘의 암호화/복호화 과정을 프로그래밍 하시오. • 다음 RSA 알고리즘을 이용해서 • 두 솟수 p=7, q=17 • 일때 임의의 공개키 비밀키 쌍을 생성한 다음 본인의 학번을 암호화 하고 복호화 하시오. • 손으로 그 과정 제출 • Diffie-Hellman 키교환 알고리즘을 이용해서 • P=17 • 일때 손으로 키교환하는 과정을 제출

More Related