제 8 장 키 관리 및 ecc public-key cryptography and ecc
DESCRIPTION
제 8 장 키 관리 및 ECC Public-key Cryptography and ECC. 200 7. 11. 26. 목 차. 8.1 키 관리 (Key Management) 8.2 Diffie-Hellman 키 교환 (Diffie-Hellman Key Exchange) 8.3 타원곡선 연산 (Elliptic Curve Arithmetic) 8.4 타원곡선 암호 (Elliptic Curve Cryptography). 8.1 키 관리. 8.1.1 공개키의 분배 - PowerPoint PPT PresentationTRANSCRIPT
http://www.ezpia.biz[[email protected]]
정보보호기초강의정보보호기초강의정보보호기초강의정보보호기초강의
제제 88 장 키 관리 및 장 키 관리 및 ECCECC Public-key Cryptography and ECC
2002007. 11. 267. 11. 26
2007-02 정보보호기초 2
목 차목 차
8.1 키 관리 (Key Management)
8.2 Diffie-Hellman 키 교환 (Diffie-Hellman Key Exchange)
8.3 타원곡선 연산 (Elliptic Curve Arithmetic)
8.4 타원곡선 암호 (Elliptic Curve Cryptography)
2007-02 정보보호기초 3
8.1 8.1 키 관리키 관리
8.1.1 공개키의 분배
8.1.2 공개키에 의한 비밀키 분배
2007-02 정보보호기초 4
8.1.1 8.1.1 공개키의 분배공개키의 분배
공개키의 분배 방식 공개 발표 (Public announcement)
공개적으로 사용 가능한 디렉토리 이용 (Pubicly available directory)
공개키 기관 (Public-key authority)
공개키 인증서 (Public-key certificates)
2007-02 정보보호기초 5
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
1) 공개 발표 자신의 공개키를 다른 사용자에게 전송 등의 방법으로 공개 문제점
어떤 사용자가 다른 사용자 A 로 위장하여 공개 가능 A 로 전송되는 암호화 메시지를 읽을 수 있게 되고 , 인증에도 사용 가능
2007-02 정보보호기초 6
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
2) 공개적으로 사용 가능한 디렉토리
2007-02 정보보호기초 7
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
디렉토리의 필요 사항 기관은 각 가입자의 공개키 관련 정보 공개디렉토리 유지 각 가입자는 디렉토리 기관에 공개키를 등록 가입자는 필요시 새로운 것으로 교체 가능 기관은 디렉토리를 공표 가입자는 전자적으로 디렉토리에 접근 가능
문제점 디렉토리 기관으로 위장하여 공포 및 갱신 배포 교란 제 3 자가 다른 가입자의 공개키 정보를 수정
2007-02 정보보호기초 8
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
3) 공개키 기관 공개키 기관에서 공개키 발행 , 보관 분배 제어
2007-02 정보보호기초 9
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
공개키의 배분 단계 1 단계
A 가 B 의 공개키에 대한 요구를 타임 스탬프와 함께 기관으로 전송
2 단계 공개키 기관은 B 의 공개키와 1 단계의 메시지를 자신의 개인키로 암호화하여 전송 A 의 요구 내용으로부터 자신의 요구가 수정되지 않았음을 확인 가능 타임스탬프로부터 B 의 공개키가 최신 것이라는 확인 가능
3 단계 B 의 공개키를 저장하고 , A 의 식별자 (IDA) 와 임시비표 (N1) 을 B 의 공개키로
암호화하여 전송
4, 5 단계 B 는 1, 2 단계와 같은 방법으로 A 의 공개키 획득
2007-02 정보보호기초 10
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
인증 단계
6 단계 B 는 임시비표 N1, N2를 A 의 공개키로 암호화하여 전송
A 는 N1 의 존재로부터 통신 상대가 B 임을 확신
7 단계 A 는 N2를 B 의 공개키로 암호화하여 전송
B 는 N2 의 존재로부터 통신 상대가 A 임을 확신
문제점 공개키 기관의 디렉토리 수정에 취약
공개키 기관의 온라인 응답 한계와 시스템의 병목 현상
2007-02 정보보호기초 11
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
4) 공개키 인증서 인증기관이 공개키 인증서를 발행하여 공개키의 소유자 , 유효기간 , 무결성을
보증
2007-02 정보보호기초 12
8.1.1 8.1.1 공개키의 분배공개키의 분배 (cont(cont’’))
인증서 방식을 위한 요구 사항 임의의 가입자는 인증서의 내용 ( 이름 , 공개키 ) 확인 가능 임의의 가입자는 인증서의 정당성 확인 가능 인증 기관만이 인증서 생성과 갱신 가능 임의의 가입자는 인증서의 유효성 확인 가능 ( 타임스탬프 이용 )
절차 가입자 A 는 인증기관에 공개키 (KUa) 를 제시하고 인증서 발급을 신청 ( 안전한
방법을 이용하여야 함 )
기관은 인증서 (CA) 를 공급하며 , 이 인증서를 통신 상대인 B 에게 전달함
CA = EKRauth[T, IDA, KUa]
2007-02 정보보호기초 13
8.1.2 8.1.2 공개키에 의한 비밀키의 분배공개키에 의한 비밀키의 분배
공개키는 느리기 때문에 길이가 짧은 관용 암호를 위한 비밀키 분배에 많이 사용됨1) 단순 비밀키 분배
1 단계 A 는 키 쌍 {KUa, KRa} 을 생성하고 , 식별자 IDA 와 함께 공개키 Kua 를 전송
2 단계 B 는 관용 암호를 위한 비밀키 Ks 를 생성하고 A 의 공개키로 암호화하여 전송
2007-02 정보보호기초 14
8.1.2 8.1.2 공개키에 의한 비밀키의 분배공개키에 의한 비밀키의 분배 (cont(cont’’))
문제점 : 적극적인 공격에 취약함 (E 는 적 )1. A 는 공개키 쌍 {KUa, KRa} 을 생성하고 , 공개키 전송
2. E 가 메시지를 가로채고 , 자신의 공개키 (KUe) 를 IDA 와 함께 전송
3. B 는 비밀키 Ks 를 생성하고 E 의 공개키로 암호화하여 전송
EKUe[Ks]
4. E 는 메시지를 가로채어 Ks 를 획득
DKRe[EKUe [Ks]] = Ks
5. E 는 A 에게 EKUe [Ks] 전송
⇒ E 는 A 와 B 가 모르게 비밀값 Ks 획득 ( 도청 공격 )
2007-02 정보보호기초 15
8.1.2 8.1.2 공개키에 의한 비밀키의 분배공개키에 의한 비밀키의 분배 (cont(cont’’))
2) 기밀성과 인증을 가지는 비밀키 분배 적극적 , 소극적 공격에 대한 해결 방안
2007-02 정보보호기초 16
8.1.2 8.1.2 공개키에 의한 비밀키의 분배공개키에 의한 비밀키의 분배 (cont(cont’’))
공개키를 교환했다고 가정한 분배 절차1) 단계
A 의 식별자와 임시비표 (N1) 를 B 의 공개키로 암호화하여 전송
2) 단계 B 는 새로운 임시비표 (N2) 와 N1 을 A 의 공개키로 암호화하여 전송
N1 은 통신 상대가 B 임을 A 에게 보증
3) 단계 A 는 A 임을 보증하기 위해 B 의 공개키로 암호화한 N2 을 반환
4) 단계 A 는 비밀키 Ks 를 선택하여 M = EKUb[EKRe[Ks]] 를 B 에게 전송 ( 인증과 기밀성 동시에
보장 )
5) 단계 B 는 M 을 복호화하여 Ks 를 얻음
2007-02 정보보호기초 17
8.1.2 8.1.2 공개키에 의한 비밀키의 분배공개키에 의한 비밀키의 분배 (cont(cont’’))
3) 공개키와 대칭키의 혼합 방식 IBM에서 사용하는 방식
개념 각 사용자에게 비밀의 마스타키를 배분 키 분배 센터 (KDC)를 이용하여 마스타키로 암호화한 비밀 세션키를 분배
공개키 암호방식 체계를 기존의 비밀키 암호방식의 KDC 위에 추가로 배치 3 계층 암호화 체계 : [공개키 ]=>[마스터키 ]=>[세션키 ]=>[데이터 ]
공개키 방식은 마스터키 갱신시에만 사용
하나의 KDC가 넓게 분포된 사용자 집단을 서비스하는 구조에서 유리
2007-02 정보보호기초 18
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환
공개키 알고리즘 1976 년 Diffie 와 Hellman 발표 ( 일반적으로 Diffie-Hellman (DH) 키
교환으로 언급됨 )
공개키 암호방식의 시초
공개키 알고리즘의 목적 두 사용자가 안전하게 키를 교환
메시지의 암호화에 사용
DH 알고리즘의 안전성은 이산 대수 (discrete logarithm) 계산의 어려움에 의존 y=gx 형태에서 y 를 알더라도 x 를 계산하기는 불가능
2007-02 정보보호기초 19
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
이산대수 임의의 소수 p 에 대하여 근의 멱승이 1 부터 p-1까지의 모든 정수를
생성하는 원시근을 a 라 함 .
원시근 : 거듭제곱을 해나가면서 그 수와 서로소인 모든 나머지가 나타나는 수
소수는 항상 원시근을 가짐 a 의 멱승에 대한 p 모듈로 계산 결과
a mod p, a2 mod p, ....., ap-1 mod p 는 1 부터 p-1까지의 각각 다른 정수를 생성
지수 i : 밑수 a, 모듈로 p 에서의 b 에 대한 이산대수 또는 색인 (index)이라 부름
임의의 정수 b, 소수 p 의 원시근 a 에 대하여 b = ai mod p, 0 ≤ i ≤ (p-1)
2007-02 정보보호기초 20
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
이산대수의 예 솟수 p=7, 원시근 a =3 일 때 , b = a i mod p 에서
2007-02 정보보호기초 21
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
DH 키 교환 알고리즘 사용자 A 와 B 가 키 교환을 한다고 가정 소수 p 와 그의 원시근 a 는 공개
A : 난수 Xa < p 을 선택 , Ya= aXa mod p 을 계산 , Ya 를 B 에 전송
B : 난수 Xb < p 을 선택 , Yb= aXb mod p 을 계산 , Yb 를 A 에 전송
A : K = Yb(Xa) mod p 를 계산
B : K = Ya(Xb) mod p 를 계산
A 와 B 양쪽의 K 값 계산결과는 동일하므로 A 와 B 가 동일한 비밀키 K 를 교환하게 됨
2007-02 정보보호기초 22
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
K 값의 동일함 검증
2007-02 정보보호기초 23
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
DH 키 교환의 안전성 Xa 와 Xb 는 비 공개됨
공개된 p, a, Ya, Yb 만을 갖고 공격
키를 결정하기 위해 침입자는 다음의 이산대수를 계산하여야 함 Xb = inda,p (Yb)
큰 소수에 대한 Xb 를 찾는 것은 실행 불가능한것으로 간주됨
임의의 정수 Yb 와 소수 p 의 원시근 a 에 대하여 다음과 같은 유일한 지수 Xb 존재
Yb = aXb mod p ; 0 ≤ Xb ≤ (p-1)
지수 Xb 를 밑수 a 와 모듈로 p 에 대한 Xb 의 이산대수 또는 인덱스라 하며 , 이 값을 inda,p(Yb) 로 표현
2007-02 정보보호기초 24
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
키 교환의 예
• 공격자는 {2, 6}으로부터 1 의 계산이 어려움
• 공격자는 {9, 8}으로부터 7 의 계산이 어려움
2007-02 정보보호기초 25
8.2 Diffie-Hellman 8.2 Diffie-Hellman 키교환키교환 (cont(cont’’))
DH 알고리즘의 응용 각자가 장기간 사용할 Xa 를 생성하고 공개값 Ya 를 계산
이 공개값들과 솟수 p 와 그의 원시근 α 을 중앙 디렉토리에 저장 사용자 B 는 사용자 A 의 공개값을 구하여 비밀키를 계산하고 이를 이용하여
메시지를 암호화하여 A 에게 전송 가능 이 방식은 중앙 디렉토리의 신뢰가 전제되어야 함
사용자 A 와 B 만이 키를 계산할 수 있기 때문에 기밀성을 제공 단지 사용자 B 만이 암호화된 메시지를 생성가능으로 인증 제공 ( 강한 인증기능 필요 ) 신분 위장이나 재전송 공격 ( 키의 재사용 ) 의 방어는 불가
2007-02 정보보호기초 26
8.3 8.3 타원곡선 연산타원곡선 연산
8.3.1 타원형 곡선
8.3.2 유한체 상에서 타원형 곡선
8.3.3 타원형 곡선에서의 암호
8.3.4 타원형 곡선 암호의 안전성
공개키 암호방식 표준 및 제품은 대부분 RSA를 사용
안전한 RSA 를 위하여 지속적으로 키의 길이를 증가
2007-02 정보보호기초 27
8.3 8.3 타원곡선 연산타원곡선 연산
타원곡선 암호란 ? 타원곡선 위의 이산대수문제를 기반으로 한 공개키 암호 1985 년 Koblitz 와 Miller 에 의해 독립적으로 제안
타원곡선 암호의 장점 작은 키 크기 ( 메모리 , 전력 측면에서 우수 )
빠른 속도 높은 안전성 : 해독에 지수승 시간이 걸림 . 확률적 암호 응용 분야 : 키 교환 , 서명 , 인증 , 암호화
타원곡선 암호의 단점 구현의 어려움 ( 유한체 이론 및 정수론에 기반 )
메시지 확장이 두 배
2007-02 정보보호기초 28
8.3.1 8.3.1 타원형 곡선타원형 곡선
타원형 곡선의 3 차 방정식 ( 타원은 아니며 , 3차원 곡선 ) 타원곡선 형태 : y2 + axy + by = x3 + cx2 + dx +e
a, b, c, d, e : 실수
가장 높은 지수가 3 이기때문에 3 차원이라고 한다 .
타원형 곡선의 정의 E = {(x,y) : y2 = x3 + ax + b}U{O} (a, b : 실수 )
O 는 무한원점 (point at infinity)
타원형 곡선에서 3 점이 일직선상에 있다면 , 그들의 합은 O 으로 정의한다 .
2007-02 정보보호기초 29
8.3.1 8.3.1 타원형 곡선타원형 곡선 (cont(cont’’))
실수 체 R 위에서의 타원곡선 E 의 임의의 점 P 와 Q 에 대하여 덧셈을 다음과 같이 정의한다 (1) P + O = P (O 는 무한원점 )
(2) – O = O
(3) P = (x1 , y1) ≠ O 이면 -P = (x1 , - y1)
(4) Q = –P 이면 P + Q = O
(5) P ≠ O, Q ≠ O, Q ≠ - P 일 때 ,
P ≠ Q 이면 , 선분 와 그 곡선 E 와의 교점을 R 이라 할 때 P + Q = - R 로 ,
P = Q 이면 , P 에서의 곡선의 접선과 그 곡선 E 와의 교점을 R 이라 할 때 P + Q =2P = - R 로 정의
PQ
2007-02 정보보호기초 30
8.3.1 8.3.1 타원형 곡선타원형 곡선 (cont(cont’’))
R
- R
2007-02 정보보호기초 31
8.3.1 8.3.1 타원형 곡선타원형 곡선 (cont(cont’’))
타원곡선에서의 덧셈 실수체 위의 타원곡선 y2 = x3 + ax + b 의 점 P, Q, P + Q 의 좌표
(x1, y1), (x2, y2), (x3, y3) 라 하면 ,
(1) x1≠x2 : x3 = {(y2 - y1)/(x2 - x1)}2 – x1 – x2,
y3 = - y1 + {(y2 - y1)/(x2 - x1)}(x1 - x3)
(2) P = Q : x3 = {(3x12 + a)/(2y1)}2 – 2x1,
y3 = - y1 + (3x12 + a)/(2y1)(x1 - x3)
(3) P = - Q : P + Q = O
2007-02 정보보호기초 32
8.3.1 8.3.1 타원형 곡선타원형 곡선 (cont(cont’’))
타원곡선에서의 덧셈 예y2 = x3 - 36x 의 점 P = (-3, 9), Q = (-2, 8)
P,Q 를 지나는 직선 : y = - x + 6 직선과 곡선의 교점의 x 좌표는 (- x + 6)2 = x3-36x 의 근 => x = -3, - 2, 6 이므로 R = (6, 0) => P + Q = - R = (- 6, 0)
2007-02 정보보호기초 33
8.3.1 8.3.1 타원형 곡선타원형 곡선 (cont(cont’’))
2007-02 정보보호기초 34
8.3.2 8.3.2 유한체 상에서 타원형 곡선유한체 상에서 타원형 곡선
유한체 (finite field) 타원곡선이 정의되어 있는 유한체에 따라서 타원곡선은 서로 다른 형태를 갖게 되며
구현방법도 차이가 있다 . 크게 유한체의 표수 (characteristic) 에 따라 Fp ,F2m
와 Fpm 으로 구분한다
유한체 : 원소의 개수가 유한개인 Field
유한체를 Galois field 라고도 부름
2007-02 정보보호기초 35
8.3.2 8.3.2 유한체 상에서 타원형 곡선유한체 상에서 타원형 곡선
유한체 (finite field)
2007-02 정보보호기초 36
8.3.2 8.3.2 유한체 상에서 타원형 곡선유한체 상에서 타원형 곡선 (cont(cont’’))
“ 타원형 그룹 mod p” 의 정의 4a3 + 27b2 (mod p) ≠ 0
p 는 소수 , p 보다 작은 두 개의 음이 아닌 a 와 b 를 선택
Ep(a, b) 는 타원형 그룹 mod p 를 나타냄 원소 (x, y) 는 zero point O 와 함께 y2 ≡x3 + ax + b (mod p) 를 만족하는 p 보다
작은 음이 아닌 정수의 쌍
예 : p = 23 인 경우 타원형 곡선 y2 = x3 + x + 1 의 검토 a = b = 1
4×13 + 27×12 (mod 23) = 8 ≠ 0 를 얻음으로써 “ 타원형 그룹 mod 23” 에 대한 조건을 만족 그림 10.10 : 타원곡선의 식을 만족하는 모든 정수의 점을 표시함
2007-02 정보보호기초 37
8.3.2 8.3.2 유한체 상에서 타원형 곡선유한체 상에서 타원형 곡선 (cont(cont’’))
유한체 위에서의 타원곡선 예 체 Z11 위에서 y2= x3+x+6 에 의하여 정의되는 타원곡선군
E(Z11) = {O} ∪{(2,4), (2,7), (3,5), (3,6), (5,2), (5,9),
(7,2), (7,9), (8,3), (8,0), (10,2), (10,9)}
점 P = (2,4), Q = (3,5) 에 관한 P+Q=(7,2) 이고 2P = (5,9)
실제 P + Q = (7,2) 의 x 좌표는
x3 = [(5-4) / (3-2)]2 – 2 – 3 = -4 ≡ 7 mod 11
2007-02 정보보호기초 38
8.3.2 8.3.2 유한체 상에서 타원형 곡선유한체 상에서 타원형 곡선 (cont(cont’’))
2007-02 정보보호기초 39
8.4.1 8.4.1 타원형 곡선에서의 키 교환타원형 곡선에서의 키 교환
방정식 Q = kP ; 여기서 Q, P ∈ EP (a, b) 이고 k < p 주어진 k 와 P 로 Q 를 계산하는 것은 쉽지만 , 주어진 Q 와 P 로 k 를 결정하는
것은 어려움 .
1) 키 교환 준비
소수 p 2180 와 a, b 를 선택하여 점 EP(a, b) 의 타원형 그룹을 정의
nG = O 를 만족하는 n (G 의 order) 이 매우 큰 소수가 되는 EP(a, b) 에서의 생성점 G(x1, y1) 을 선택하여 EP(a, b) 와 G 는 공개
A 는 개인키로서 na < n 을 선택하고 , 공개키 PA = na × G 를 계산 ( 공개키는 EP(a, b) 에서의 점 )
B 는 유사하게 개인키 nb 를 선택하고 공개키 PB 를 계산
비밀키 Ka = na × PB = na × na × G=nb × PA = Kb
2007-02 정보보호기초 40
8.4.2 8.4.2 타원 곡선에서의 암타원 곡선에서의 암 //복호화복호화
암 /복호화 시스템 인자로써 생성점 G 와 타원형 그룹 EP (a,b) 를 요구
암호화 평문 메시지 m 을 점 Pm 으로 변환
B 는 A 에게 줄 공개키 Pb = nb × G 를 생성하여 A 에게 전송
B 에게 메시지 Pm 을 보내기 위해 난수 k 을 선택
A 는 B 의 공개키 Pb 와 난수 k 를 이용하여 암호문 Cm 생성
암호문 Cm = {kG, Pm + kPB }A 는 kPB 을 Pm 에 더함으로써 메시지 Pm 을 감춤
복호화 Pm+kPB-nB (kG)=Pm+k(nBG)-nB (kG)=Pm
2007-02 정보보호기초 41
8.4.2 8.4.2 타원형 곡선에서의 암호타원형 곡선에서의 암호 (cont(cont’’))
적용 예 가정
p 는 751, 방정식은 y2 = x3 – x + 188 (Ep(-1,188)), G = (0,376)
A 는 B 에게 타원형 점 Pm = (561,201)을 암호화하여 보내고자 함 A 가 난수 386을 k 로 선택
B 의 공개키 PB = (201,5) 임
Cm = {kG, Pm + kPB } kG = 386(0,376) = (676, 558) Pm + kPB = (561,201) + 386(201,5) = (385, 328)
암호문 Cm = {(676, 558), (385, 328)}
2007-02 정보보호기초 42
8.4.3 8.4.3 타원형 곡선 암호의 안전성타원형 곡선 암호의 안전성
타원형 곡선 이산대수문제에 기반한 암호 주어진 kP 와 P 로 k 을 결정하는 것이 얼마나 어려운가에 의존
타원형 곡선 대수와 소인수 분해의 계산량 비교 : 표 10.2
1 MIPS-Years : 초당 백만 개의 명령어 처리할 수 있는 프로세서가 1 년간 행할 수 있는 계산량