i 부

55
1 I부 부부

Upload: skip

Post on 05-Jan-2016

36 views

Category:

Documents


5 download

DESCRIPTION

I 부. 암호. 4 장. 공개키 암호. 공개키 암호. 두 개의 키 송신자는 수령자의 공개키 로 암호화 수신자는 자신의 개인키 로 복호화 트랩도어 단방향 함수를 기반 한 방향은 계산하기가 용이 다른 방향은 계산하기가 난해 “ 트랩 ” 은 키를 생산하기 위해 사용 예제 : 주어진 p 와 q 에서 , N=pq 는 계산하기가 용이하나 주어진 N 에서 p 와 q 를 찾기는 난해하다. 공개키 암호. 암호화 밥의 공개키로 M 을 암호화 한다고 가정 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: I 부

11

I 부암호

Page 2: I 부

22

공개키 암호4 장

Page 3: I 부

3

공개키 암호

두 개의 키 송신자는 수령자의 공개키로 암호화

수신자는 자신의 개인키로 복호화

트랩도어 단방향 함수를 기반 한 방향은 계산하기가 용이

다른 방향은 계산하기가 난해

“ 트랩”은 키를 생산하기 위해 사용

예제 : 주어진 p 와 q 에서 , N=pq 는 계산하기가 용이하나 주어진 N 에서 p 와 q 를 찾기는 난해하다 .

Page 4: I 부

4

공개키 암호

암호화 밥의 공개키로 M 을 암호화 한다고 가정

밥의 개인키로만 M 을 찾을 수 있도록 복호화 가능

전자서명 개인키로 “암호화”함으로 서명

서명을 확인하기 위해서는 누구나 공개키로 “복호화”

개인키를 가진 자만이 서명이 가능

손으로 서명하는 것과 유사

Page 5: I 부

5

배낭 문제

주어진 n 개의 W0,W1,...,Wn-1 집합과 합 S 에서

다름과 같은 ai {0,1} 를 찾는 것이 가능한가 ?

S = a0W0+a1W1 +...+ an-1Wn-1

( 기술적으로 이 문제는 “ subset sum” 문제임 )

예제 무게들 (62,93,26,52,166,48,91,141)

문제 : 합이 S=302 인 부분집합을 찾으라

해답 : 62+26+166+48=302

일반적인 배낭은 NP-complete

Page 6: I 부

66

4 장 . 공개키 암호

배낭 암호

Page 7: I 부

7

배낭 문제

일반 배낭은 풀기가 어렵다 .

그러나 수퍼증가 배낭 (SIK) 은 쉬운 문제

SIK 는 각 무게가 먼저 무게들의 합보다 큼

예제 무게들 (2,3,7,14,30,57,120,251)

문제 : 무게 합이 S=186 인 부분집합을 찾아라 .

가장 큰 무게에서 가장 작은 무게로 시도

해답 : 120+57+7+2=186

Page 8: I 부

8

배낭 암호

1. 수퍼증가 배낭 (SIK) 을 생산

2. SIK 를 일반 배낭 (GK) 로 변환

3. 공개키 : GK

4. 개인키 : SIK 와 변환 요소 GK 로 암호화는 용이 개인키로 복호화 용이 ( 암호문을 SIK 로 변환 )

개인키 없이는 GK 문제를 풀어야 함 (???)

Page 9: I 부

9

배낭 암호 (2,3,7,14,30,57,120,251) 를 SIK 라고 하자

서로소인 m=41, n=491 그리고 n 이 SIK 요소들의 합보다 큰 수를 선정

일반 배낭으로 변환2 41 mod 491 = 82

3 41 mod 491 = 123

7 41 mod 491 = 287

14 41 mod 491 = 83

30 41 mod 491 = 248

57 41 mod 491 = 373

120 41 mod 491 = 10

251 41 mod 491 = 471

일반 배낭 : (82,123,287,83,248,373,10,471)

Page 10: I 부

10

배낭 예제

개인키 : (2,3,7,14,30,57,120,251)m1 mod n = 411 mod 491 = 12

공개키 : (82,123,287,83,248,373,10,471), n=491

예제 : 평문 10010110 암호화

82 + 83 + 373 + 10 = 548

복호화 548 · 12 = 193 mod 491 SIK (S=193) 문제를 풀어라 . 평문 10010110 을 찾을 수 있음

Page 11: I 부

11

배낭 약점

트랩도어 : SIK 를 모듈로 연산을 사용하여“일반 배낭”으로 변환

단방향 : 일반 배낭은 암호화 용이 , 풀기가 난해 ,

SIK 는 풀기가 용이

이 배낭 암호는 안전하지 못함 . 1983 년 Apple II 컴퓨터로 해독

공격은 격자줄이기 (lattice reduction) 이용

“ 일반 배낭”은 충분히 일반적이지 못함 !

이러한 특수한 배낭은 쉽게 풀릴 수 있음 !

Page 12: I 부

12

RSA

콕스 (GCHQ) 와 또 독립적으로 리베스트 , 샤미르 그리고 애들맨 (MIT) 에 의해 발명

p 와 q 를 큰 소수라고 하자 .

N = pq 를 모듈로스라 하자

e 를 (p-1)(q-1) 에 서로 소로 선정

ed = 1 mod (p-1)(q-1) 를 만족하는 d 로 선정

공개키 : (N,e)

개인키 : d

Page 13: I 부

1313

4 장 . 공개키 암호

RSA

Page 14: I 부

14

RSA

메시지 M 을 암호화 C = Me mod N

암호문 C 를 복호화 M = Cd mod N

E 와 N 은 공개키임을 상기할 것

ed = 1 mod (p1)(q1) 이므로 ,만약 공격자가 N 을 인수 분해할 수 있으면 , e 를 사용하여 쉽게 d 를 찾을 수 있음 .

모듈로의 인수분해는 RSA 를 해독

인수분해만이 유일하게 RSA 를 해독하는 방법인지는 알려지지 않았음

Page 15: I 부

15

RSA 가 동작이 되는가 ?

주어진 C = Me mod N 에서 다음을 보여야 한다 M = Cd mod N = Med mod N

오일러 정리 이용 x 가 n 과 서로 소이면 x(n) = 1 mod n

사실 : ed = 1 mod (p 1)(q 1)

“mod” 정의에 의해 , ed = k(p 1)(q 1) + 1

(N) = (p 1)(q 1)

Then ed 1 = k(p 1)(q 1) = k(N)

Med = M(ed 1) + 1 = MMed 1 = MMk(N) = M(M(N))k mod N = M1k mod N = M mod N

Page 16: I 부

16

간단한 RSA 예제

RSA 예제 큰 소수 p = 11, q = 3 를 선정

그러면 N = pq = 33 그리고 (p1)(q1) = 20

e = 3 선정 (20 과 서로 소 )

ed = 1 mod 20 을 만족하는 d 를 찾으면 ,

d = 7

공개키 : (N, e) = (33, 3)

개인키 : d = 7

Page 17: I 부

17

간단한 RSA 예제

공개키 : (N, e) = (33, 3)

개인키 : d = 7

메시지 : M = 8

암호문 C

C = Me mod N = 83 = 512 = 17 mod 33

C 복호화

M = Cd mod N = 177 = 410,338,673 = 12,434,505 33 + 8 = 8 mod

33

Page 18: I 부

18

보다 효율적인 RSA (1) 모듈로 지수 예제

520 = 95367431640625 = 25 mod 35

개선된 방법 : 제곱의 반복 o 20 = 10100 base 2o (1, 10, 101, 1010, 10100) = (1, 2, 5, 10, 20)o 참고 : 2 = 1 2, 5 = 2 2 + 1, 10 = 2 5, 20 = 2 10o 51= 5 mod 35o 52= (51)2 = 52 = 25 mod 35o 55= (52)2 51 = 252 5 = 3125 = 10 mod 35o 510 = (55)2 = 102 = 100 = 30 mod 35o 520 = (510)2 = 302 = 900 = 25 mod 35

절대로 거대한 숫자를 다루지 말 것 !

Page 19: I 부

19

보다 효율적인 RSA (2)

모든 사용자가 e = 3 을 사용( 그러나 동일한 N 이나 d 를 사용하지 않음 ) 공개키 연산은 단지 두 번의 곱만이 필요

개인키 연산은 여전히 “고가”

만약 M < N1/3 이면 , C = Me = M3 이 되어세제곱근 공격이 가능

어떤 M 에 대해서도 , 만약 C1, C2, C3 가 3 사용자에게

전송되면 , 세제곱근 공격이 가능 ( 중국인 나머지 정리를 사용 )

임의 비트를 메시지에 첨부함으로 세제곱근 공격을 방지

Note: e = 216 + 1 도 대중적으로 사용 ( 중국인 나머지 정리 공격 방지 )

Page 20: I 부

2020

4 장 . 공개키 암호

디피 - 헬먼

Page 21: I 부

21

디피 - 헬먼

윌리럼슨 (GCHQ), 그리고 독립적으로 디피와

헬먼 (Stanford) 에 의해 발명

“ 키 교환” 알고리즘

공유하는 대칭키를 설정하기 위해 사용

암호화나 서명을 위해 사용되지 않음

안전성은 이산 로그 문제에 기반

주어진 g, p, 그리고 gk mod p 에서 k 를 찾아라 !

Page 22: I 부

22

디피 - 헬먼 p 를 소수 g 를 생성자라고 하자 .

어떤 x {1,2,…,p-1} 대해서도 x = gn mod p 를 만족하는 n 이 존재

앨리스가 비밀값 a 를 선정

밥이 비밀값 b 를 선정

앨리스가 ga mod p 을 밥에게 전송

밥이 gb mod p 를 앨리스에서 전송

둘 모두 공유 비밀값 gab mod p 를 계산

공유 비밀값은 대칭키로 사용

Page 23: I 부

23

디피 - 헬먼

밥과 앨리스가 gab mod p 를 대칭키로

사용한다고 가정

트루디는 ga mod p 와 gb mod p 를 볼수

있음

참고 : ga gb mod p = ga+b mod p gab mod p

만약 트루디가 a 또는 b 를 찾으면 , 체계는

해독

만약 트루디가 이산로그 문제를 풀 수 있으면 a

또는 b 를 찾을 수 있음

Page 24: I 부

24

디피 - 헬먼 공개 : g 와 p

비밀 : 앨리스의 지수 a, 밥의 지수 b

앨리스 , a 밥 , b

ga mod p

gb mod p

앨리스는 (gb)a = gba = gab mod p 를 계산 밥은 (ga)b = gab mod p 를 계산 K = gab mod p 는 대칭키로 사용 가능

Page 25: I 부

25

디피 - 헬먼

중간자 공격 (MiM) 에 취약

앨리스 , a 밥 , b

ga mod p

gb mod p

트루디 , t

gt mod p

gt mod p

트루디가 비밀값 gat mod p 를 앨리스와 공유

트루디가 비밀값 gbt mod p 를 밥과 공유

앨리스와 밥은 트루디의 존재를 알지 못함 !

Page 26: I 부

26

디피 - 헬먼

MiM 공격을 어떻게 방지할 수 있나 ?

대칭키로 DH 교환 값을 암호화

공개키로 DH 교환 값을 암호화

DH 교환 값을 개인키로 서명

또 다른 방법은 ?

디피 - 헬먼 에서는 MiM 공격에 대해 잘 알고 있어야만 함 .

Page 27: I 부

2727

4 장 . 공개키 암호

타원곡선 암호

Page 28: I 부

28

타원곡선 암호 (ECC)

“ 타원곡선”은 암호체계가 아니다 .

타원곡선은 공개키 체계를 수학적으로 수행하는 한 가지 다른 방법

타원곡선에는 DH, RSA 버전 등이 있다

타원곡선은 다른 체계에 비해 효율적 일 수 있다 같은 비밀성을 위해 더 적은 비트를 사용 그러나 연산들은 더욱 복잡

Page 29: I 부

29

타원곡선이란 무엇인가 ?

타원 곡선 E 는 아래 방정식의 그래프

y2 = x3 + ax + b

“ 무한대의 점”도 포함

타원곡선은 무엇처럼 보이는가 ?

다음 슬라이드를 보자 !

Page 30: I 부

30

타원곡선 그림

타원곡선

E: y2 = x3 - x + 1

만약 P1 과 P2 가 E

상에 있으면 , 그림에서 보는 바와 같이 다음을 정의할 수 있다 .

P3 = P1 + P2

덧셈이 필요한 모든 것

P1

P2

P3

x

y

Page 31: I 부

31

타원곡선상의 점

y2 = x3 + 2x + 3 (mod 5) 을 고려해 보자

x = 0 y2 = 3 no solution (mod 5)

x = 1 y2 = 6 = 1 y = 1,4 (mod 5)

x = 2 y2 = 15 = 0 y = 0 (mod 5)

x = 3 y2 = 36 = 1 y = 1,4 (mod 5)

x = 4 y2 = 75 = 0 y = 0 (mod 5)

그러면 타원곡선 상의 점들은

(1,1) (1,4) (2,0) (3,1) (3,4) (4,0) 과 무한점 :

Page 32: I 부

32

타원곡선 수학 덧셈 : y2 = x3 + ax + b (mod p)

P1=(x1,y1), P2=(x2,y2)

P1 + P2 = P3 = (x3,y3)

여기서

x3 = m2 - x1 - x2 (mod p)

y3 = m(x1 - x3) - y1 (mod p)

그리고m = (y2-y1)(x2-x1)-1 mod p, if P1P2

m = (3x12+a)(2y1)-1 mod p, if P1 = P2

특수한 경우 : 만약 m 이 무한대인 경우P3 = , 그리고 + P = P 모든 P에 대해

Page 33: I 부

33

타원곡선 덧셈

y2 = x3 + 2x + 3 (mod 5) 를 생각해 보자 .곡선상의 점들은 (1,1) (1,4) (2,0) (3,1) (3,4) (4,0) 그리고

(1,4) + (3,1) = P3 = (x3,y3)?

m = (1-4)(3-1)-1 = -32-1

= 2(3) = 6 = 1 (mod 5)

x3 = 1 - 1 - 3 = 2 (mod 5)

y3 = 1(1-2) - 4 = 0 (mod 5)

이 곡선상에서는 , (1,4) + (3,1) = (2,0)

Page 34: I 부

34

ECC 디피 - 헬먼 공개 : 타원곡선과 곡선상의 점 (x,y)

비밀 : 앨리스의 A 와 밥의 B

앨리스 , A 밥 , B

A(x,y)

B(x,y)

앨리스가 A(B(x,y)) 를 계산

밥이 B(A(x,y)) 를 계산

AB = BA 이므로 이들 값은 동일

Page 35: I 부

35

ECC 디피 - 헬먼

공개 : 곡선 y2 = x3 + 7x + b (mod 37) 과 점 (2,5) b = 3

앨리스의 비밀 : A = 4

밥의 비밀 : B = 7

앨리스가 밥에게 전송 : 4(2,5) = (7,32)

밥이 앨리스에게 전송 : 7(2,5) = (18,35)

앨리스가 계산 : 4(18,35) = (22,1)

밥이 계산 : 7(7,32) = (22,1)

Page 36: I 부

3636

4 장 . 공개키 암호

공개키의 용도

Page 37: I 부

37

공개키의 용도들

비밀성

데이터를 안전하지 않은 채널로 전송

안전하지 않은 미디어에 안전하게 저장

인증 ( 나중에 )

전자 서명은 무결성과 부인봉쇄를 제공

대칭키로 부인봉쇄는 불가

Page 38: I 부

38

부인봉쇄 - 부정

앨리스는 밥으로 부터 100 장의 주식을 주문

앨리스는 대칭키를 이용하여 MAC 을 계산

주식값 폭락 , 앨리스는 주문하지 않았다고 주장

밥이 앨리스의 주문을 증명할 수 있는가 ?

할 수 없다 ! 밥도 역시 대칭키를 알고 있기 때문에 메시지를 속일 수가 있다

문제 : 밥은 앨리스가 주문을 한 것을 알고 있지만 증명할 수가 없다 .

Page 39: I 부

39

부인 봉쇄

앨리스가 100 장의 주식을 밥에게서 주문

앨리스는 그녀의 개인키로 주문을 서명

주식값 폭락 , 앨리스는 주문하지 않았다고 주장

밥이 앨리스의 주문을 증명할 수 있는가 ?

할 수 있다 ! 앨리스의 개인키를 가진 사람만이 그 주문에 서명할 수 있다 .

위의 경우 앨리스의 비빌키가 도난 당하지 않았다고 가정 ( 폐기 문제 )

Page 40: I 부

4040

4 장 . 공개키 암호

선서명 후암호화vs.

선암호화 후서명

Page 41: I 부

41

공개키 표기법

서명 : 앨리스의 개인키로 메시지 M

서명 : [M] 앨리스

암호화 : 앨리스의 공개키로 메시지 M

암호화 : {M} 앨리스

그러면

{[M] 앨리스 } 앨리스 = M

[{M} 앨리스 ] 앨리스 = M

Page 42: I 부

42

비밀성과 부인봉쇄

비밀성과 부인봉쇄 둘 다 원한다고 가정

공개키 암호로 두 가지 모두 가능한가 ?

앨리스가 밥에게 메시지 전송

선서명 후암호화 {[M] 앨리스 } 밥

선암호화 후서명 [{M} 밥 ] 앨리스

순서가 의미가 있는 것인가 ?

Page 43: I 부

43

Sign and Encrypt

앨리스 밥

{[M] 앨리스 } 밥

문제 : 무엇이 문제인가 ?

답 : 챨리는 암호를 잘못 이해한다 !

챨리

{[M] 앨리스 } 챨리

M = “ 나는 당신을 죽도록 사랑합니다 .”

Page 44: I 부

44

선암호 후서명

앨리스 밥

[{M} 밥 ] 앨리스

찰리는 M 을 복호화 할 수 없음에 유의 문제 : 문제가 무엇인가 ? 답 : 밥은 암호를 잘못 이해하고 있다 !

챨리

[{M} 밥 ] 챨리

M = “ 이성과 열정은…”

Page 45: I 부

4545

4 장 . 공개키 암호

공개키 기반체계

Page 46: I 부

46

공개키 인증서

사용자의 성명과 공개키를 포함 ( 다른

정보도 포함 가능 )

인증서는 이 증서를 보증할 발행자가

서명 ( 예 : VeriSign 회사 )

인증서의 서명은 서명자의 공개키로 확인

Page 47: I 부

47

인증기관

인증기관은 인증서에 서명하고 그 인증서를 발행하는 제 3 의 신뢰성 있는 기관 서명을 확인하는 것은 해당되는 개인키의 소유자의

동일성 여부를 확인 서명을 확인하는 것이 인증서의 공급원을 확인하는

것이 아님 !

인증서는 공개 !

만약 CA 가 잘못하면 큰 문제가 발생 ( 예를 들면 CA 가 다른 사람에게 마이크로 소프트의 인증을 발행 !)

인증서의 일반 양식은 X.509

Page 48: I 부

48

PKI

공개키 기반체계는 공개키 암호를 안전하게 사용하는데 필요한 모든 요소들로 구성 키 생산과 관리 인증 기관 인증 폐기 등

PKI 일반적인 표준을 없음

몇 가지 “신뢰 모텔들”을 검토

Page 49: I 부

49

PKI 신뢰 모델

완전 독점 모텔

모든 분야의 신뢰 조직은 하나의 CA 만을

사용

VeriSign 을 가장 선호 ( 당연한 이유 )

만약 CA 가 손상되면 큰 문제

만약 CA 를 신뢰하지 못하면 큰 문제 !

Page 50: I 부

50

PKI 신뢰 모델

소수 독점 모델

다수의 신뢰받는 CA

이 접근 방법이 현재 브라우즈에서 사용

브라우저는 서명들을 확인하기 위해 80 개

이상의 인증서를 보유 !

사용자는 신뢰하는 CA 를 결정할 수 있음

Page 51: I 부

51

PKI 신뢰 모델

완전 자유 모델 모든 사람이 하나의 CA!

사용자가 어떤 “ CAs” 를 신뢰할 것인지 결정

이 접근 방법은 PGP ( 신뢰의 웹 ) 에서 사용

왜 이 방법을 “완전 자유” 모델이라고 부르는가 ? 인증서가 프랭크에 의해 서명되었고 A 는 프랭크를 모른다고 가정 . 그러나 A 는 밥을 신뢰하고 밥은 앨리스를 신뢰하고 앨리스는 프랭크를 보증한다면 , A 는 프랭크를 신뢰해야 하는가 ?

많은 다른 PKI 신뢰 모델들 존재

Page 52: I 부

5252

4 장 . 공개키 암호

실세계에서 보안성

Page 53: I 부

53

대칭키 대 공개키

대칭키

속도

공개키 기반체계 (PKI) 불필요

공개키 Public Key

서명 ( 부인봉쇄 )

키 공유 불필요

Page 54: I 부

54

표기법 재정리

공개키 암호 표기 앨리스의 개인키로 메시지 M 서명

[M] 앨리스

앨리스의 공개키로 메시지 암호화 {M} 앨리스

개인키 암호 표기 평문 P를 대칭키 K로 암호화

C = E(P,K)

암호문 C 를 대칭키 K로 복호화 P = D(C,K)

Page 55: I 부

55

실세계 보안성 혼합 암호체계

키 설정을 위한 공개키 암호 데이터 암호를 위한 대칭키 암호 다음의 경우

앨리스 밥

{K} 밥

E( 밥의 데이터 , K)

E( 앨리스의 데이타 , K)

밥이 앨리스와 안전하게 대화할 수 있는가 ?