Upload
julian-cooper
View
68
Download
0
Embed Size (px)
DESCRIPTION
제 9 장 공개키 암호 (I) Public-key Cryptography. 200 7. 11. 목 차. 9.1 공개키 암호시스템 원리 (Principles of Public-Key Cryptosystems) 9.2 RSA 알고리즘 (The RSA Algorithm) 9.3 ElGamal 암호알고리즘 (The ElGamal Algorithm) 9.4 Knapsack 암호 알고리즘 (The Knapsack Algorithm). 9.1 공개키 암호 시스템의 원리. 9.1.1 공개키 암호 시스템 - PowerPoint PPT Presentation
Citation preview
http://www.ezpia.biz[[email protected]]
정보보호기초강의정보보호기초강의정보보호기초강의정보보호기초강의
제제 99 장 공개키 암호 장 공개키 암호 (I) (I) Public-key Cryptography
2002007. 11. 7. 11.
22007-02 정보보호기초
목 차목 차
9.1 공개키 암호시스템 원리 (Principles of Public-Key Cryptosystems)
9.2 RSA 알고리즘 (The RSA Algorithm)
9.3 ElGamal 암호알고리즘 (The ElGamal Algorithm)
9.4 Knapsack 암호 알고리즘 (The Knapsack Algorithm)
32007-02 정보보호기초
9.1 9.1 공개키 암호 시스템의 원리공개키 암호 시스템의 원리
9.1.1 공개키 암호 시스템
9.1.2 공개키 암호 시스템의 응용
9.1.3 공개키 암호를 위한 요구사항
9.1.4 공개키 암호 분석
42007-02 정보보호기초
9.1 9.1 공개키 암호 시스템의 원리공개키 암호 시스템의 원리
암호학 역사에서 최대의 혁명적 발견 1976년 Diffie 와 Hellman 에 의해 제기
대칭키 암호 방식의 문제점 치환과 순열기법을 기본방법으로 사용
키 분배의 어려움과 디지털 서명이 불가능
공개키 암호 방식 정수론의 소인수 분해와 이산대수 어려움 근거
키 분배문제 해결
디지털서명 용이 : 문서 서명효과 , 발신처 인증 , 부인봉쇄
52007-02 정보보호기초
9.1 9.1 공개키 암호 시스템의 원리공개키 암호 시스템의 원리
공개키 암호방식에 대한 오해관용 ( 대칭키 ) 암호방식보다 안전
안전성은 키 길이와 암호해독 계산시간의 문제
관용 ( 대칭키 ) 암호를 무력화시킬 범용 기술 키 관리와 서명에 효과적 응용 관용 ( 대칭키 ) 방식보다는 계산 부하가 큼
키 분배 문제 해결 간단하거나 효율적이라고 단정 불가 별도의 관리 프로토콜 필요
62007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템
알고리즘 두 개의 다른 키 사용
공개키 : 모든 사람이 접근 가능한 키 ( 공개 ) 개인키 : 각 사용자 자신만이 소유 ( 비밀 )( 관용 암호에 사용되는 키는 대칭키 또는 비밀키라고 함 )
공개키 알고리즘의 특징암호 알고리즘과 암호화 키를 알고 복호화 키계산 불가능두 개의 키 중 하나는 암호에 , 다른 하나는 복호에 사용
72007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
공개키 암호의 단순 모델 A 가 B 에게 암호화 메시지를 보내는 경우
1. 각 사용자는 공개키와 개인키 쌍을 생성
2. 공개키는 공개하고 개인키는 개인이 비밀로 소유
3. A는 B 의 공개키로 메시지를 암호화
4. B는 자신의 개인키로 메시지 복호화
(B의 개인키를 모르는 제 3 자는 메시지 복호 불가능 )
암호 알고리즘 복호 알고리즘
사용자 A 사용자 B
평문 암호문 평문
B 의 공개키 B 의 개인키
82007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
92007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
102007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
관용 암호화 공개키 암호 비교
관용 ( 대칭키 ) 암호 공개키 암호
암호 /복호에 동일키와 동일 알고리즘을 사용
수신자와 송신자간의 키 교환이 필요
비밀키는 비밀로 유지하여야 함
키 분배의 어려움과 디지털 서명이 불가능함
계산 속도가 빠름
암호 /복호에 서로 다른 키를 , 알고리즘은 동일 사용
수신자와 송신자는 연관된 키 쌍 중 하나를 알아야 함
키 쌍 중 개인키는 비밀로 유지하여야 함
디지털 서명 가능
계산 속도가 느림
112007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
공개키 암호 시스템의 보안 서비스
기밀성 : 그림 9.2 수신자의 공개키를 이용하여 암호화
인증 : 그림 9.3 (기밀성은 보장되지 않음 ) 송신자의 비밀키를 이용하여 암호화
기밀성과 인증 : 그림 9.4 송신자의 비밀키를 이용하여 암호화한 후 수신자의 비밀키를 이용하여
암호화
122007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
공개키 암호 시스템 : 기밀성 수신자의 공개키로 암호화함으로써 메시지 기밀성 제공
132007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
공개키 암호 시스템 : 인증 송신자의 개인키로 서명함으로써 송신자 인증 제공
142007-02 정보보호기초
9.1.1 9.1.1 공개키 암호 시스템공개키 암호 시스템 (cont’)(cont’)
공개키 암호 시스템 : 기밀성과 인증 송신자의 개인키로 서명 , 수신자의 공개키로 암호화하여 기밀성과 인증 제공
152007-02 정보보호기초
9.1.2 9.1.2 공개키 암호 시스템 응용공개키 암호 시스템 응용
공개키 암호 시스템의 사용 분야암호 / 복호 ( 수신자의 공개키로 메시지 암호 )
A: C = EKUb[P] B: P =
DKPb[C]
디지털 서명 ( 송신자의 개인키로 메시지 서명 )
A: C = EKPa[P] B: P =
DKUa[C]
키 교환 ( 세션키를 교환하기 위해 사용 )
공개키 암호 알고리즘의 응용
162007-02 정보보호기초
9.1.3 9.1.3 공개키 암호를 위한 요구 사항공개키 암호를 위한 요구 사항
공개키 알고리즘의 조건 (Diffie와 Hellman)키 쌍 ( 공개키 KU, 개인키 KR)의 생성이 쉽다 .
암호문의 생성이 쉽다 . C = EKub(M)
암호문의 복호화가 쉽다 . M = DKRb(C) = DKRb [EKub(M)]
공개키 KUb 로부터 개인키 KRb 를 결정하는 것은 어렵다 .
공개키 KUb 와 암호문 C 로부터 메시지 M 의 복구가 어렵다 .
암호와 복호 기능이 다음과 같이 적용 가능하다 . M = EKub[DKRb(M)]
172007-02 정보보호기초
9.1.4 9.1.4 공개키 암호 분석공개키 암호 분석
전사적 공격에 취약 키의 크기를 크게 함으로써 방지 상대적으로 속도가 느려지므로 실제 사용을 위하여는 적절히 작아야 함
⇒ 현재 응용이 서명과 키 관리로 한정되는 이유임
공개 키로부터 개인 키를 계산하는 방법 수학적으로 계산이 상대적으로 어렵거나 불가능 해야 함
가능한 메시지 추측 공격 ( 메시지 길이가 작을 때 )
182007-02 정보보호기초
9.2 RSA 9.2 RSA 알고리즘알고리즘
9.2.1 알고리즘의 설명
9.2.2 계산적 측면
9.2.3 RSA 의 안전성
192007-02 정보보호기초
9.2 RSA 9.2 RSA 알고리즘알고리즘
특징 미국 MIT 의 Ron Rivest, Adi Shamir 과 Leonard Adleman
가 공동 개발공개키 암호방식의 요구사항을 만족하는 최초방식1978 년에 공포된 블록 암호 방식평문과 암호문은 어떤 정수 n 에 대하여 0 ~ (n-1) 사이의 정수임평문 블록은 키 길이보다 작아야 함비밀키 암호방식 (DES) 보다 계산이 늦음소인수 분해의 어려움에 근거
202007-02 정보보호기초
9.2.1 9.2.1 알고리즘의 설명알고리즘의 설명
RSA 암복호화 방식각 블록은 어떤 수 n 보다 작은 이진 값을 가짐
블록 사이즈는 log2(n) 과 같거나 작음 실제 블록 사이즈 : 2k 비트임 (2k < n ≤ 2k+1)
공개키 : KU = {e, n}, 개인키 : KR = { d, n }
암호화와 복호화
C = Me mod n
M = Cd mod n = (Me)d mod n = Med mod n
알고리즘의 조건∀ M<n, M = Med mod n 를 만족하는 e, d, n 을 찾는 것이 가능∀ M<n, Cd 와 Me 의 계산이 용이주어진 e 와 n 에 대하여 d 를 찾기 어려움
212007-02 정보보호기초
9.2.1 9.2.1 알고리즘의 설명알고리즘의 설명 (cont’)(cont’)
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 과 서로소인 양의 정수가 되는 오일러 totient 함수
( p,q 가 솟수일 경우 , ф(pq) = (p-1)(q-1) )
ed = k ф(n) + 1
ed = 1 mod ф(n)
d = e-1 mod ф(n)
⇒ e 와 d 는 mod ф(n) 에 곱셈 역원
(e 와 d 가 ф(n) 에 서로소인 경우에만 참 )
222007-02 정보보호기초
9.2.1 9.2.1 알고리즘의 설명알고리즘의 설명 (cont’)(cont’)
RSA 알고리즘키 생성
p, q 선택 ( p, q 는 솟수 ) n = pq 계산 정수 e 선택 ( gcd(ф(n), e) = 1, 1 < e < ф(n) ) d 계산 ( d = e-1 mod ф(n) ) 공개키 ( KU = {e, n} ) 개인키 ( KR = {d, n} )
암호화 C = Me ( mod n )
복호화 M = Cd ( mod n )
232007-02 정보보호기초
9.2.1 9.2.1 알고리즘의 설명알고리즘의 설명 (cont’)(cont’)
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}
242007-02 정보보호기초
9.2.1 9.2.1 알고리즘의 설명알고리즘의 설명 (cont’)(cont’)
2) 2) 암호화와 복호화 평문 메시지 M = 19 일 경우 암호문 : 195 = 2476099 = 66 mod 119 66
복호문 : 6677 = 19 mod 119 19
252007-02 정보보호기초
9.2.2 9.2.2 계산적인 측면계산적인 측면
1) 암호화와 복호화
계산량을 줄이는 방법 모듈러 연산의 특징 이용
[(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 번의 곱셈
ab mod n 계산 알고리즘 : 그림 9.7
262007-02 정보보호기초
9.2.2 9.2.2 계산적인 측면계산적인 측면 (cont’)(cont’)
2) 키 생성
키 생성시 소요 작업 충분히 큰 두 소수 p 와 q 의 결정 e 와 d 중 하나를 선택하고 나머지 하나를 계산
랜덤한 큰 솟수를 찾는 방법 ( 확률적 검사법 )
1. 랜덤하게 홀수 n 을 선택
2. 랜덤하게 a<n 인 정수 a 를 선택
3. Miller-Rabin 과 같은 확률적 소수 판정법을 수행
4. n 이 충분한 횟수의 검사에 통과하면 n 을 수용 ,
소수 생성을 위한 검사 횟수 N 에 가까운 소수는 (ln N) 에 대하여 평균 1 회 나타남 예 : 2200 범위의 소수 ln(2200)/2 = 70 회 정도 검사를 시행
272007-02 정보보호기초
9.2.3 RSA9.2.3 RSA 의 안전성의 안전성
전사적 공격 큰 키를 사용하여 방지
인수 n 를 두 소인수로 인수 분해 큰 값에 대한 두 소수의 곱을 인수 분해하는 적당한 알고리즘이
없음
p 와 q 을 결정하지 않고 직접 ф(n) 을 추측하여 결정 인수 분해만큼 어려움
ф(n) 을 결정하지 않고 직접 e, d 를 추측하여 결정 인수 분해만큼 어려움
282007-02 정보보호기초
9.2.3 RSA9.2.3 RSA 의 안전성의 안전성 (cont’)(cont’)
인수분해 시간
제안 사항 ( 인수 분해를 어렵게 )n = 10150 ~ 10200
p, q = 1075 ~ 10100
(p-1), (q-1) 은 큰 솟수
gcd(p-1,q-1) 은 작아야
e <n 이고 d<n1/4 일 때 d 는 쉽게 결정되므로 유의 필요
292007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식암호 방식
이산대수 문제 이용
y gx mod p
g : 원시원소
p : 소수
302007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 암호 방식 (( 계속계속 ))
이산대수 문제 예 Z23
51 5 58
16 515 19 mod 23
52 2 59
11 516 3 mod 23
53 10 510
9 517 15 mod 23
54 4 511
22 518 6 mod 23
55 20 512
18 519 7 mod 23
56 8 513
21 520 12 mod 23
57 17 514
13 521 14 mod 23
312007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 암호 방식 (( 계속계속 ))
암호화
k RZp (p : 소수 )
K yBk (yB g XB mod p)
C1 g k mod p
C2 KM mod p (M : 평문 )
C = C1 || C2
322007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 암호 방식 (( 계속계속 ))
복호화
K (g k) XB mod p
C1 XB mod p
M C2 / K mod p
332007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 암호 방식 (( 계속계속 ))
ElGamal 암호 방식의 구성
가입자 A공개정보
g , p, yA, yB가입자 B
y A gXA mod pk R Zp – 1
K yBk mod p
C1 gk mod p C2 KM mod p C = C1 || C2
yB gXB mod p
K C1XB mod p
M C2 /K mod p
C
342007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 예암호 방식 예
송신자 A
공개정보 p = 23, g = 7 ,
yA = 17, yB = 15 수신자 B
X A = 5y A gXA = 75 17 mod 23
r = 3 R Z22
K yBr = 153 17 mod 23
C1 gr = 73 21 mod 23M = 20
C2 KM = 17 20 18 mod 23 C = (C1 , C2) = (21, 18)
XB = 9yB gXB = 79 15 mod 23
C1 = 21C2 = 18
K C1XB 219
17 mod 23M C2 /K = C2 K –1
18 19 20 mod 23
C = (21, 18)
352007-02 정보보호기초
9.3 ElGamal 9.3 ElGamal 암호 방식 예암호 방식 예
362007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호암호
Markle 과 Hellman 에 의해 최초로 공개키 암호기법 적용
S=a1x1+a2x2+…+anxn 에서 X=(x1,x2,…,xn) 값을 구하기 .
Positive integer a=(a1,a2, …,an) &Positive integer S, 즉 S 가 a 의 어떤 원소들의 합이 S 가 되는가의 문제이다 .
예1) 3x1+5x2+9x3+19x4+37x5=45
X=(1,1,0,0,1) 해가 1 개 존재 .
2) 5x1+14x2+15x3+27x4+11x5=23
해가 없음 .
3) 3x1+5x2+8x3+13x4+21x5=34
X=(0,0,0,1,1) , (0,1,1,0,1) 해가 2 개 존재 .
n=5 정도는 쉽게 풀 수 있다 . n=100 정도라면 결코 쉬운 문제 아니다 .
372007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
1. 2x1+5x2+9x3+19x4+37x5=45
예를 들어 a=(3,5,7,9,19,37) 이라면
3<5
3+5<9
3+5+9<19
3+5+9+19<37
이런관계가 되는 것을 ‘ a 가 초증가한다 ' 라고 한다 .
즉 a1+…+ai-1< aj ,where 2≤j≤7 이다 .
382007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
knapsack 벡터가 초증가하는 성질을 가졌을때의 해 xn= 1, if s≥an
0, if otherwise
xj= 1, if s – (aj+1xj+1+…+anxn) >=aj
0, otherwise
392007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
예 ) 3x1+5x2+9x3+19x4+37x5=45
①초증가 성질을 지니는가를 확인 !
②3+5+9+19<=37<45 (yes) → x5=1
3+5+9+19<=45-37=8 (no)→ x4= 0
3+5+9<=8 (no) → x3= 0
3+5<=8 (yes) → x2= 1
3<=8-5=3 (yes) → x1= 1
3-3=0
∴x=(1,1,0,0,1)
402007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
Knapsack 문제 A B
B A 47 mod 58
6
5
4
3
2
1
1cm
2cm
4cm
8cm
16cm
32cm 6
5
4
3
2
1
47cm
2 47 36cm
14cm
28cm
56cm
54cm
412007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
Knapsack 문제 ( 계속 )
3 5 6 4+16+32=52cm
14+56+54=124cm
A
B 3 5 6
422007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
Knapsack 암호의 구성 B A K mod Q gcd(K, Q) = 1
공개 암호화 키 B
비밀 복호화 키 K, Q
432007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
암호화M B
1
0
1
0
1
1
C = 47 + 14 + 56 + 54 = 171
47cm
36cm14cm
28cm
56cm
54cm
442007-02 정보보호기초
9.4 Knapsack 9.4 Knapsack 암호 암호 (( 계속계속 ))
복호화 Y C K–1 mod Q (K K–1 1 (mod 58) 이 되는 K–1 는 21 이다 .)
171 21 mod 58
(58 2+55) 21 mod 58
53 mod 58
초증가 수열의 막대 합
53-32 1
21-16 1
5- 8 0
5- 4 1
1- 2 0
1- 1 1
∴M = 101011 ( 반대로 내려오면서 쓴다 . 즉 53 를 이진수로 표현 )
452007-02 정보보호기초
관용 암호방식과 공개키 암호방식의 비교관용 암호방식과 공개키 암호방식의 비교
관용 암호방식 공개키 암호방식
암호키 관계 암호화키 = 복호화키 암호화키 복호화키
암호화 키 비밀 공개
복호화 키 비밀 비밀
암호 알고리즘 비밀 /공개 공개
비밀키 수 nC2 2n
안전한 인증 곤란 용이
암호화 속도 고속 저속