Top Banner
1 Chap 6. Chap 6. 공공공 공공 공공공 공공
42

Chap 6. 공개키 암호

Jan 03, 2016

Download

Documents

lareina-macias

Chap 6. 공개키 암호. 목 차. 1. 공개키 암호 시스템의 원리 2. RSA 알고리즘 3. 키 관리 4. Diffie-Hellman 키교환 알고리즘. 1. 공개키 암호 시스템의 원리. 관용 암호 방식의 문제점 키 분배의 문제 디지털 서명이 불가능 기본연산 : 전치와 치환기법 이용 공개키 암호로 해결 기본연산 : 수학적 함수 이용 (1976 년 Diffe 와 Hellman 에 의해 제기 ). 1.1 공개키 암호 시스템. 공개키 알고리즘 : 두 개의 다른 키 사용 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Chap 6.  공개키 암호

1

Chap 6. Chap 6. 공개키 암호공개키 암호

Page 2: Chap 6.  공개키 암호

2

목 차목 차1. 공개키 암호 시스템의 원리

2. RSA 알고리즘

3. 키 관리

4. Diffie-Hellman 키교환 알고리즘

Page 3: Chap 6.  공개키 암호

3

1. 1. 공개키 암호 시스템의 원리공개키 암호 시스템의 원리

관용 암호 방식의 문제점관용 암호 방식의 문제점 키 분배의 문제

디지털 서명이 불가능

기본연산 : 전치와 치환기법 이용

공개키 암호로 해결공개키 암호로 해결 기본연산 : 수학적 함수 이용

(1976 년 Diffe 와 Hellman 에 의해 제기 )

Page 4: Chap 6.  공개키 암호

4

1.1 1.1 공개키 암호 시스템공개키 암호 시스템

공개키 알고리즘공개키 알고리즘: 두 개의 다른 키 사용

공개키 : 모든 사람이 접근 가능한 키 ( 공개 )

개인키 : 각 사용자 자신만이 소유 ( 비밀 )

( 관용 암호에 사용되는 키는 비밀키라고 함 )

공개키 알고리즘의 특징공개키 알고리즘의 특징 암호 알고리즘과 암호키를 알아도 복호키 계산 불가능

두 개의 키 중 하나는 암호에 다른 하나는 복호에 사용

Page 5: Chap 6.  공개키 암호

5

관용 암호와 공개키 암호 비교관용 암호와 공개키 암호 비교

관용 암호 공개키 암호

암호 / 복호에 동일한 키와 암호 / 복호에 각각 서로 다른 키 와동일한 알고리즘 사용 동일한 알고리즘 사용

수신자와 송신자는 키를 수신자와 송신자는 연관된 키쌍 중교환해야 함 하나를 알아야 함

공유한 키 ( 비밀키 ) 는 비밀로 유지 키 쌍중 하나 ( 개인키 ) 를 비밀로 유지

키 분배의 어려움 공개키를 공개

디지털 서명 불가능 디지털 서명 가능

속도가 빠름 속도가 느림

Page 6: Chap 6.  공개키 암호

6

공개키 암호의 단순 모델공개키 암호의 단순 모델: A 가 B 에게 암호화 메시지를 보내는 경우

암호 알고리즘 복호 알고리즘

사용자 A 사용자 B

평문 암호문 평문

B 의 공개키 B 의 개인키

1. 공개키와 개인키 생성2. 공개키는 공개하고 개인키는 개인이 소유3. A 는 B 의 공개키로 메시지를 암호화4. B 는 자신의 개인키로 메시지 복호화 (B 의 개인키를 모르는 제 3 자는 메시지 복호 불가능 )

Page 7: Chap 6.  공개키 암호

7

공개키 암호 시스템 공개키 암호 시스템 : : 기밀성기밀성: 공개키로 암호화함으로써 메시지 기밀성 제공

암호화 복호화

사용자 A 사용자 B

평문 암호문 평문

B 의 공개키 B 의 개인키

암호 해독자

키 쌍 출처키 쌍 출처

암호문과 공개키로부터평문 획득 불가능

Page 8: Chap 6.  공개키 암호

8

공개키 암호 시스템 공개키 암호 시스템 : : 인증인증: 개인키로 서명함으로써 송신자 인증 제공

암호화 복호화

사용자 A 사용자 B

평문 서명문 평문

A 의 공개키 A 의 개인키

암호 해독자

키 쌍 출처키 쌍 출처

개인키를 알 수 없음으로위조된 서명문 작성 불가능( 평문은 알 수 있음 )

Page 9: Chap 6.  공개키 암호

9

공개키 암호 시스템 공개키 암호 시스템 : : 기밀성과 인증기밀성과 인증: 개인키로 서명하고 공개키로 암호화하여 기밀성과 인증 제공

암호화 복호화

사용자 A 사용자 B

평문 암호문 평문

B 의 공개키 B 의 개인키

키 쌍 출처키 쌍 출처

A 의 공개키 A 의 개인키

키 쌍 출처키 쌍 출처

암호화 복호화서명문 서명문

Page 10: Chap 6.  공개키 암호

10

1.2 1.2 공개키 암호 시스템의 응용공개키 암호 시스템의 응용

공개키 암호 시스템의 사용공개키 암호 시스템의 사용 암호 / 복호 ( 수신자의 공개키로 메시지 암호 )

디지털 서명 ( 송신자의 개인키로 메시지 서명 )

키 교환 ( 세션키를 교환하기 위해 사용 )

공개키 암호 시스템의 응용공개키 암호 시스템의 응용

알고리즘 암호 / 복호화 디지털 서명 키 교환

RSA 가능 가능 가능

DSS 불가능 가능 불가능

Diffie-Hellman 불가능 불가능 가능

Page 11: Chap 6.  공개키 암호

11

1.3 1.3 공개키 암호를 위한 요구 사항공개키 암호를 위한 요구 사항

공개키 알고리즘의 조건 공개키 알고리즘의 조건 (Diffie(Diffie 와 와 Hellman)Hellman) 키 쌍 ( 공개키 KU, 개인키 KR) 의 생성이 쉽다 .

다음 식과 같은 암호문의 생성이 쉽다 .

C = EKUb(M)

다음식과 같은 암호문의 복구화가 쉽다 .

M = DKRb(C) = DKRb[EKUb(M)]

공개키 KUb 로부터 개인키 KRb 를 결정하는 것은 어렵다 .

공개키 KUb 와 암호문 C 로부터 메시지 M 의 복구가 어렵다 .

암호와 복호 기능이 다음과 같이 적용 가능하다 . ( 추가 사항 )

M = EKUb[DKRb(M)]

Page 12: Chap 6.  공개키 암호

12

1.4 1.4 공개키 암호 분석공개키 암호 분석

공격 유형공격 유형 전사적 공격에 취약

키의 크기를 크게 함으로써 방지 ( 상대적으로 속도가 느려짐 )

공개키로부터 개인키를 계산하는 방법

수학적으로 계산이 불가능함을 증명하지 못함

가능한 메시지 공격 : 모든 가능한 메시지를 공개키로 암호화하여 암호문과 비교

메시지에 임의의 비트를 추가함으로써 방지

Page 13: Chap 6.  공개키 암호

13

2. RSA 2. RSA 알고리즘알고리즘2.1 2.1 알고리즘 설명알고리즘 설명 RSARSA 의 개발의 개발

: 1977 년에 개발되어 1978 년에 공포 (Rivest, Shamir, Adleman)

평문 블록은 키의 길이보다 작아야 함 비밀키 암호방식 (DES) 보다 계산이 늦음 소인수 분해의 어려움에 근거

Page 14: Chap 6.  공개키 암호

14

알고리즘알고리즘 평문은 블록으로 암호화 암호화

C = Me mod n

복호화M = Cd mod n = (Me)d mod n = Med mod n

공개키 : KU = {e, n}, 개인키 : KR = { d, n }

Page 15: Chap 6.  공개키 암호

15

MMeded = M mod n = M mod n 의 증명의 증명 오일러 정리

• p,q ( 솟수 ), n = qp, 정수 n, m (0mn), 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) + 1ed = 1 mod (n)e = d-1 mod (n) e 와 d 는 mod (n) 에 곱셈 역원 (e 와 d 가 (n) 에 서로소인 경우에만 참 )

Page 16: Chap 6.  공개키 암호

16

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

Page 17: Chap 6.  공개키 암호

17

RSA 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}

Page 18: Chap 6.  공개키 암호

18

RSA RSA 알고리즘 사용 예 알고리즘 사용 예 (( 계속계속 )) 암호화와 복호화

: 평문 메시지 M = 19 일 경우• 암호문 : 195 = 66 mod 119 66

• 복호문 : 6677 = 19 mod 119 19

평문19

2476099 20807195 = = 119 나머지 : 66

1.27…10140 1.06 …10138

6677 = = 119 나머지 : 19

평문19

암호문66

암호화 복호화

KU = 5, 119 KR = 77, 119

Page 19: Chap 6.  공개키 암호

19

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

제시하시오제시하시오 ..

Page 20: Chap 6.  공개키 암호

20

2.2 2.2 계산적인 측면계산적인 측면

암호화와 복호화암호화와 복호화 Me, Cd : 지수승계산 => 중간과정 이후의 큰 숫자 계산량 증대 중간 결과를 mod n 으로 계산하여 숫자 크기 축소 계산량을 줄이는 방법

• 모듈러 연산의 특징 이용[(a mod n) (b mod n)] mod n = (a b) mod n

중간 결과를 축소

• 효율적인 지수 승– 직접적인 방법 (x16 일 경우 )

: x16 = xxxxxxxxxxxxxxxx 15 번의 곱셈

– 효율적인 방법: x2, x4, x8, x16 4 번의 곱셈

Page 21: Chap 6.  공개키 암호

21

키 생성키 생성 랜덤한 큰 솟수를 찾는 방법 ( 확률적 검사법 )

1. 랜덤하게 홀수 n 을 선택2. 랜덤하게 a<n 인 정수 a 를 선택3. 확률적 솟수 판정법 수행 ( 만약 n 이 검사에서 실패하면 1 단계로 )4. n 이 충분한 횟수로 통과하면 n 을 수용 , 그렇지 않으면 2 단계로

솟수 생성을 위한 검사 횟수• N 에 가까운 솟수는 (ln N) 에 대하여 평균 1 회 생성• ex) 2200 범위의 솟수 ln(2200)/2 = 70 회 정도 시행

Page 22: Chap 6.  공개키 암호

22

암호 해독의 고찰암호 해독의 고찰 암호 해독의 접근 방법

• 전사적 공격 큰 키를 사용하여 방지

• 인수 n 를 두 소인수로 인수 분해 큰 값에 대한 두 솟수의 곱을 인수 분해하는 적당한 알고리즘이 없음

• p 와 q 을 결정하지 않고 직접 (n) 을 결정 인수 분해만큼 어려움

(n) 을 결정하지 않고 직접 d 를 결정 인수 분해만큼 어려움

Page 23: Chap 6.  공개키 암호

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

Page 24: Chap 6.  공개키 암호

24

3. 3. 키 관리키 관리3.1 3.1 공개키의 분배공개키의 분배

공개키의 공개 발표공개키의 공개 발표 자신의 공개키를 다른 사용자에게 전송 등의 방법으로 공개 문제점

• 어떤 사용자가 다른 사용자 A 로 위장하여 공개키 공개 (A 에 전송되는 암호화 메시지를 읽을 수 있게 됨 )

사용자 A 사용자 B

KUa

KUa

KUa

KUa

.

.

.

KUb

KUb

KUb

KUb

.

.

.

Page 25: Chap 6.  공개키 암호

25

공개적으로 사용 가능한 디렉토리공개적으로 사용 가능한 디렉토리 필요한 사항

• 기관은 각 가입자에 대한 { 이름 , 공개키 } 의 디렉토리 유지

• 각 가입자는 디렉토리 기관에 공개키 등록• 가입자는 필요시 새로운 것으로 교체 가능• 기관은 디렉토리를 공포• 가입자는 전자적으로 디렉토리 접근 가능

문제점• 디렉토리 정보를 수정• 위조의 공개키로 임의의 가입자로 위장하여 도청

Page 26: Chap 6.  공개키 암호

26

공개적으로 사용 가능한 디렉토리 공개적으로 사용 가능한 디렉토리 (( 계속계속 ))

사용자 A 사용자 B

공개키디렉토리

KUa KUb

Page 27: Chap 6.  공개키 암호

27

공개키 기관공개키 기관: 공개키 기관에서 공개키 분배 제어

시행자 A 대응자 B

공개키 기관(1) Request || Time1 (4) Request || Time2

(2) EKRau[KUb || Request || Time1]

(5) EKRau[KUa || Request || Time2]

(3) EKUb[IDA || N1]

(6) EKUa[N1 || N2]

(7) EKUb[N2]

Page 28: Chap 6.  공개키 암호

28

공개키 기관 공개키 기관 (( 계속계속 ))

(1) 단계• B 의 공개키에 대한 요구를 타임스템프와 함께 전송

(2) 단계• 공개키 기관은 B 의 공개키와 (1) 단계의 메시지를

자신의 개인키로 암호화하여 전송

(3) 단계• B 의 공개키를 저장하고 , A 의 식별자 (IDA) 와 임시비표

(N1) 을 B 의 공개키로 암호화하여 전송

Page 29: Chap 6.  공개키 암호

29

공개키 기관 공개키 기관 (( 계속계속 ))

(4), (5) 단계• B 는 (1), (2) 단계와 같은 방법으로 A 의 공개키 획득

(6) 단계• B 는 임시비표 N1, N2 를 A 의 공개키로 암호화하여 전송

(7) 단계• A 는 N2 를 B 의 공개키로 암호화하여 전송

문제점• 공개키 디렉토리 수정에 취약

Page 30: Chap 6.  공개키 암호

30

공개키 인증서공개키 인증서 공개키 기관의 도움없이 인증서를 이용하여 키 교환

인증서 방식을 위한 요구 사항• 임의의 가입자는 인증서의 내용 ( 이름 , 공개키 ) 확인

가능• 임의의 가입자는 인증서의 정당성 확인 가능• 인증 기관만이 인증서 생성과 갱신 가능• 임의의 가입자는 인증서의 현행성 확인 가능

Page 31: Chap 6.  공개키 암호

31

공개키 인증서 공개키 인증서 (( 계속계속 ))

시행자 A 대응자 B

공개키 기관 KUa

CA = EKRau[ Time1, IDA, Kua ]

(1) CA

(2) CB

KUb

CA = EKRau[ Time2, IDB, Kub ]

: 사용자는 공개키 인증서를 받은 후 인증서로 공개키 전송

Page 32: Chap 6.  공개키 암호

32

3.2 3.2 비밀키의 공개키 분배비밀키의 공개키 분배

공개키의 사용처공개키의 사용처: 공개키는 느리기 때문에 관용 암호의 비밀키 분배에 많이 사용

단순 비밀키 분배단순 비밀키 분배

사용자 A 사용자 B

(1) Kua || IDA

(2) EKUa[Ks]

(1) 단계• A 는 공개키 쌍 {KUa, KRa} 을 생성하고 , 식별자 IDA 와 함께

공개키 전송(2) 단계

• B 는 비밀키 Ks 를 생성하고 A 의 공개키로 암호화하여 전송

Page 33: Chap 6.  공개키 암호

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 획득 ( 도청 공격 )

Page 34: Chap 6.  공개키 암호

34

기밀성과 인증을 가지는 비밀키 분배기밀성과 인증을 가지는 비밀키 분배: 적극적 , 소극적 공격에 대한 해결

사용자 A 사용자 B(4) EKUb [EKRa [Ks]]

(1) EKUb [N1 || IDA]

(2) EKUa [N1 || N2]

(3) EKUb [ N2]

Page 35: Chap 6.  공개키 암호

35

기밀성과 인증을 가지는 비밀키 분배 기밀성과 인증을 가지는 비밀키 분배 (( 계속계속 ))

: 공개키를 교환했다고 가정

(1) 단계• A 의 식별자와 임시비표 (N1) 를 B 의 공개키로 암호화하여 전송

(2) 단계• B 는 새로운 임시비표 (N2) 와 N1 을 A 의 공개키로 암호화하여 전송

(3) 단계• A 는 보증을 위해 B 의 공개키로 암호화한 N2 을 반환

(4) 단계• A 는 비밀키 Ks 를 선택하여 M=EKUb[EKRa[Ks]] 를 B 에게 전송

Page 36: Chap 6.  공개키 암호

36

혼합 방식혼합 방식

키 분배 센터 (KDC) 의 사용을 유지: 각 사용자에게 마스터키를 나누어주고 , 마스터키로

암호화 된 비밀 세션키를 분배

공개키 방식은 마스터키를 분배하기 위해 사용

Page 37: Chap 6.  공개키 암호

37

4. Diffie-Hellman 4. Diffie-Hellman 키교환 키교환 알고리즘알고리즘 19761976 년 년 DiffieDiffie 와 와 HellmanHellman 에 의해 개발에 의해 개발 사용자들간에 효율적으로 키 교환 가능사용자들간에 효율적으로 키 교환 가능

인증 메시지에 비밀 세션키를 포함한 전달이 불필요

세션키를 암호화해서 전달할 필요 없음 ( 로컬 계산 )

One-time random secret value 를 사용 ( 키 노출시 one traffic 만 손상 )

Page 38: Chap 6.  공개키 암호

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 까지의 각각 다른 정수를 구성

Page 39: Chap 6.  공개키 암호

39

Diffie-Hellman Key Exchange AlgorithmDiffie-Hellman Key Exchange Algorithm

AA

랜덤한 랜덤한 a a 선택선택XXAA==ααaa mod p mod p 계산계산

KKABAB=X=XBBaa mod p mod p 계산계산

BB

랜덤한 랜덤한 b b 선택선택XXBB==ααbb mod p mod p 계산계산

KKABAB=X=XAAbb mod p mod p 계산계산

AA 와 와 BB 는 소수 는 소수 pp 와 원시근 와 원시근 αα 공유공유

XXAA

XXBB

KKABAB=X=XBBaa mod p mod p=X=XAA

bb mod p= mod p= ααabab mod p mod p

Page 40: Chap 6.  공개키 암호

40

Diffie-Hellman 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) 로 표현

Page 41: Chap 6.  공개키 암호

41

Diffie-Hellman Diffie-Hellman 키교환의 예제키교환의 예제 α =3, p=7

α =3, p=19

Page 42: Chap 6.  공개키 암호

42

과제물과제물 RSA RSA 알고리즘의 암호화알고리즘의 암호화 // 복호화 과정을 프로그래밍 복호화 과정을 프로그래밍

하시오하시오 .. 다음 다음 RSA RSA 알고리즘을 이용해서알고리즘을 이용해서

두 솟수 p=7, q=17 일때 임의의 공개키 비밀키 쌍을 생성한 다음 본인의 학번을

암호화 하고 복호화 하시오 .

손으로 그 과정 제출 Diffie-Hellman Diffie-Hellman 키교환 알고리즘을 이용해서키교환 알고리즘을 이용해서

P=17 일때 손으로 키교환하는 과정을 제출