350 likes | 751 Views
공개열쇠 암호. 2001. 11. 단국대학교 이민섭 E-Mail : msrhee@dankook.ac.kr . 목 차. 1. 서론 2. 일방향함수 3. 일방향함수의 예 4. 부분집합의 합 문제를 이용한 암호 5. 소인수분해의 어려움을 이용한 암호 6. 이산대수 문제를 이용한 암호 7. 타원곡선 암호 8. 공개열쇠 암호의 응용. A. B. F. E. C. D. 서 론. 대칭키 분배 문제 대칭키 관리 문제 n 명이 상호통신을 하려면 개의 열쇠 필요
E N D
공개열쇠 암호 2001. 11. 단국대학교 이민섭 E-Mail : msrhee@dankook.ac.kr
목 차 • 1. 서론 • 2. 일방향함수 • 3. 일방향함수의 예 • 4. 부분집합의 합 문제를 이용한 암호 • 5. 소인수분해의 어려움을 이용한 암호 • 6. 이산대수 문제를 이용한 암호 • 7. 타원곡선 암호 • 8. 공개열쇠 암호의 응용 www.anseo.dankook.ac.kr/~cryptec
A B F E C D 서 론 • 대칭키 분배 문제 • 대칭키 관리 문제 • n명이 상호통신을 하려면 개의 열쇠 필요 • W.Diffie와 M.Hellman이 새로운 방안 제시(1976년) • “New Directions in Cryptography” • 암호화 열쇠와 복호화 열쇠 사이의 관계가 독립적인 비대칭 암호 설계 • Trapdoor 일방향함수를 이용하여 암호시스템 설계 • Merkle-Hellman, RSA, ElGamal, ECC 등 www.anseo.dankook.ac.kr/~cryptec
f x f(x)= y easy f-1 f-1 x= f-1 (y) x= f-1 (y) y y easy difficult trapdoor 일방향함수(One Way Function) • 일방향함수(one way function) • 덫문 일방향 함수(trapdoor one way function) www.anseo.dankook.ac.kr/~cryptec
f(m1,m2 ,…, mn)= y (m1,m2 ,m3 ,…, mn) easy f-1 : y (m1,m2 ,m3 ,…, mn) (?) difficult 초증가수열 S* (trapdoor) 일방향함수(One Way Function) • 부분집합의 합 문제 • 많은 큰 수들의 집합에서 선택된 수들의 합을 구하는 일은 쉽지만, 주어진 합으로부터 선택된 수를 찾기 어려운 점을 이용하는 이론 • 양의 정수들의 집합 S={x1,x2 ,x3 ,…, xn}에 대하여 www.anseo.dankook.ac.kr/~cryptec
일방향함수(One Way Function) • 부분집합의 합 문제의 예 • S={x1,x2 ,x3 ,…, x8} • 이진수열 (m1,m2 ,m3 ,…, mn )이 주어진 경우 m1x1+ m2x2+…+ mnxn = y • Y가 주어진 경우 y=m1x1+ m2x2+…+ mnxn = y 를 만족하는 이진벡터 (m1,m2 ,m3 ,…, mn )를 구하는 문제 • S={x1,x2 ,x3 ,…, x8} = {1078,684,201,497,683,1428,1197,31} • (01101110)이 주어진 경우 x2+ x3 +x5+ x6+ x7 = 684+ 201 + 683 +1428 +1197 = 4199 을 쉽게 수할 수 있다 • 4199가 주어진 경우 (01101110)을 구하는 것은 어렵다 (28 가지 모두 시행) easy www.anseo.dankook.ac.kr/~cryptec
일방향함수(One Way Function) • 초증가수열 S* • 양의 정수들의 집합 S*={d1,d2 ,d3 ,…, dn}가 임의의 j>1에 대하여 dj>d1+d2+…+dj-1를 만족하는 수열 • 초증가수열의 예 • 공비가 2이상인 등비수열 : S*={1,2,22,23, …, 2n} • 예 : S={6,15,31,55,112,243,529,1015} : 초증가 수열의 집합 • 합이 930인 경우 (1) 1015는 없다 m8 = 0 (2) 529는 반드시 있어야 한다 : m7= 1 (3) 930-529=4 이므로 243은 반드시 있어야 한다. m6= 1 같은 방법으로 계속 시행하면 (01101110)을 얻을 수 있다 • 초증가수열을 이용한 암호의 예 : Merkle-Hellman www.anseo.dankook.ac.kr/~cryptec
f : 135979 x 115979 f -1 135979 115979 ? 135979x115979=15770708441 15770708441 easy difficult 소인수분해 문제 • 소인수분해 문제(factorization problem) • 큰 두 소수의 곱을 구하기는 쉽지만, 큰 두 소수의 곱인 합성수의 소인수 분해가 어려운 점을 이용하는 이론 • 예 : RSA, Rabin, LUC 등 www.anseo.dankook.ac.kr/~cryptec
f (x) 10xmod19 f -1 10 Ind109=x f(10) 1010 9mod19 10 x9mod19 easy difficult 이산대수문제 • 이산대수 문제(discrete logarithm problem) • 큰 수 n을 법으로 하는 지수승 y kx mod n은 계산하기 쉽지만, 주어진 y와 k에 대하여 식 y kx mod n을 만족하는 x를 구하기 어려운 점을 이용하는 이론 • Diffie- Hellman, ElGamal, Massey-Omura, ECC www.anseo.dankook.ac.kr/~cryptec
19를 법으로 하는 지수•로그표 www.anseo.dankook.ac.kr/~cryptec
B의 개인키 DB = 복호화 열쇠 (비공개) B의 공개키 EB = 암호화 열쇠 (공개) Trapdoor을 이용하여 EB 로 부터 DB를 구함 평문 P 평문 P 암호 알고리즘 복호 알고리즘 사용자 A 암호문 C=EB (p) 사용자 B 덫문일방향함수와 공개열쇠암호 • 공개열쇠암호 • 암호화 열쇠로부터 복호화 열쇠를 얻기가 거의 불가능한 암호계 www.anseo.dankook.ac.kr/~cryptec
Merkle-Hellman 암호계 • 열쇠생성과정 • 양의 정수들의 초증가수열 집합 S*={d1,d2 ,…, dk} 선택 • 소수 p와 1<n<p를 만족하는 정수 n선택 • p를 법으로 한 n의 역원n-1을 계산 • gcd(n,p) =1= n-1•n + p•t, t는 적당한 정수 • 각 di에 대하여 ei ndimod p를 계산, 초증가수열이 아닌 집합 S={e1,e2 ,…, ek}를 구함 • 공개열쇠(공개) : S={e1,e2 ,…, ek} • 개인열쇠(비공개) : (p,n, n-1,S*) www.anseo.dankook.ac.kr/~cryptec
Merkle-Hellman 암호계 • 암호화 과정 • 평문을 이진벡터 (m1,m2 ,m3 ,…, mk)로 표현 • 열쇠집합 S={e1,e2 ,…, ek}를 이용하여 C=m1e1+ m2e2+…+ mkek 를 계산하여 암호문 C를 생성 • 복호화 과정 • n-1를 이용하여 D n-1• Cmod p를 계산. 즉 D n-1• Cmod p m1n-1e1+m2n-1e2+…+mkn-1ek m1e1+ m2e2+…+ mkek • 초증가수열집합 S*={d1,d2 ,…, dk} 를 이용하여 평문을 이진벡터 (m1,m2 ,m3 ,…, mk)를 얻음 www.anseo.dankook.ac.kr/~cryptec
Merkle-Hellman 암호계의 예 공개(키서버에 등록) S={e1,e2 ,…, ek} ={1078,684,207,497,683,1428,1197,31} 사용자 A 사용자 B S*={d1,d2 ,d3 ,…, d8} ={6,15,31,55,112,243,529,1015} P=2001 , n=850 , n-1 = 1914 S={e1,e2 ,…, ek} ={1078,684,207,497,683,1428,1197,31} 평문 P=(0,1,1,0,1,1,1,0) C=m1e1+ m2e2+…+ m8e8 =684+207+683+1428+1197 =4199 D n-1• Cmod p 1914x4199 mod 2001 930 mod 2011 암호문 C=4199 평문 P=(0,1,1,0,1,1,1,0) www.anseo.dankook.ac.kr/~cryptec
f(x)xe mod n x f(x)= y easy f-1(y)x (xe)d mod n x= f-1(y) y difficult (n) =(p-1)(q-1) Trapdoor RSA 암호 • RSA 암호 • 1978년, 미국 M.I.T대학의 Rivest, Shamir 그리고 Adleman에 의해서 고안된 공개열쇠 암호 • 소인수분해의 어려움에 기반 • n=pq • ed1 mod (n)을 만족하는 양의 정수 • (n)=(p-1)(q-1) www.anseo.dankook.ac.kr/~cryptec
공개(키서버에 등록) n, e n=pq을 계산(소수 p,q 선택) (n)과 서로소인 e를 선택 (즉, (e, (n))=1) d : ed1 mod (n)을 만족하는 양의 정수를 계산(단, (n)=(p-1)(q-1)) 공개 열쇠 : n,e 개인열쇠 : d 사용자 A 사용자 B 사용자 B가 전문P를 보낼 때 P=D(C) Cd (Pe)d mod n C=E(P) Pe mod n C=E(P) 사용자 A가 서명S을 보낼 때 S=E(P) Pdmod n P=D(S) Se mod n (Pd)e mod n S=E(P) RSA 공개열쇠 암호 www.anseo.dankook.ac.kr/~cryptec
공개 : n=2173 e=207 n=pq을 계산(소수 p,q 선택) (n)과 서로소인 e를 선택 (즉, (e, (n))=1) d : ed1 mod (n)을 만족하는 양의 정수를 계산(단, (n)=(p-1)(q-1)) 공개 열쇠 : n,e 개인열쇠 : d 사용자 A 사용자 B RSA 암호 예 p=41 q=53 선택 n= 2173 , (n)=2083 ,d=623, e=207 d=623 이므로 1566623 594 mod 2173, 1963623 80 mod 2173 1150623 1156 mod 2173 … 11자리 블록: 01001010010 00001010000 … 이진수: 0100 1010 0100 0001 0100 0010 … ASCII: 4A 41 42 42 45 52 57 49 43 4B 59 전 문: J A B B E R W I C K Y 전 문: J A B B E R W I C K Y ASCII: 4A 41 42 42 45 52 57 49 43 4B 59 이진수: 0100 1010 0100 0001 0100 0010 … 11자리 블록: 01001010010 00001010000 … 10진수: 594, 80, 1156, 1109, 299, 1317,105,857 암호화: 594207 1566 mod 2173 80207 1963 mod 2173 , 1156207 1150 mod 2173 … B가 전문을 보낼때 www.anseo.dankook.ac.kr/~cryptec
RSA의 이론적 배경 • 좋은 RSA암호계가 되기 위한 p,q,d의 조건 • p,q는 같지 않고 거의 같은 크기의 자리 수이어야 한다. • 100자리 이상의 소수 • p-1과 q-1은 매우 큰 소인수를 가져야 한다. • gcd(p-1, q-1)은 작은 값이어야 한다. • Max{p,q}+1<d<n-1이 되도록 d를 선택해야 한다. • RSA암호의 해독문제 • 공개열쇠 e와 n을 이용하여 ed1 mod (n)를 만족하는d를 구하는 문제 • 임의의 자연수 e와 k가 서로소이면 ed1 mod k인 d는 존재하며 Lame의 정리와 Euclid호제법을 이용하여 구함 • n의 소인수분해 문제 ⇔ (n)=(p-1)(q-1)을 구하는 문제 www.anseo.dankook.ac.kr/~cryptec
소인수분해문제 • 인수분해의 효율적인 알고리즘 • 이차선별법 • 1983년, 69자리의 10진수 소인수분해 • 1989년, 106자리의 10진수 소인수분해 • 1994년, 129자리(428비트)의 10진수 소인수분해(RSA-129) • 수체선별법 • 이차선별법보다 더 효율적(120자리 이상의 합성수) • 1996년, 130자리의 10진수 소인수분해(RSA-130) • 타원곡선법 • 소인수분해 예측시간 MIPS년 =초당 1,000,000회 시행하여 1년간 시행 = 3.1X1013 회 시행 www.anseo.dankook.ac.kr/~cryptec
공개(키서버에 등록) n, B n=pq (p≡3mod 4, q≡3mod 4인 소수) 사용자 A 사용자 B 사용자 B가 사용자A에게 전문을 보낼 때 복호변환 함수 암호변환 함수 C=E(P)P(P+B)mod n Rabin암호 • Rabin암호 • 소인수 분해의 어려움에 기반 www.anseo.dankook.ac.kr/~cryptec
공개열쇠 : p, g (단, p는 소수이고 g는 Fp의 생성원) 송신자 A A 와 B의 암호열쇠(ga)bmod p 수신자 B 비밀열쇠 : a 선택 공개열쇠 : ga mod p 비밀열쇠: b 선택 공개열쇠 : gb mod p 이산로그를 이용한 공개열쇠 암호들 • Diffie-Hellman 열쇠 교환시스템 • 원리 : 체 Fp위에서 ga과 gb을 가지고 gab를 얻기 어려움 • 1984년 Coppersmith에 의하여 p = 2n인 경우로 일반화 www.anseo.dankook.ac.kr/~cryptec
Massey-Omura 암호계 • 1983 년 Massey 와 Omura 에 의하여 개발된 암호계 • 원리 • Galois 체 Fq만 공개되고 각 사용자 X는 임의의 수 eX를 gcd(eX,q-1)=1 이 되도록 선택하고 dX eX 1 mod q이 되는dX를 구하고, (eX, dX)을 공개하지 않는다. • 개인(비밀)열쇠 • 사용자 A : (eA, dA)사용자 B : (eB, dB) www.anseo.dankook.ac.kr/~cryptec
공개 : Fq 송신자 A 수신자 B 비밀열쇠 : (eA, dA) 평문 : P peAmod q 를 계산 peAmod q peAeBdA peBmod q 를 계산 peAeBmod q peBdB pmod q를 계산 peBmod q Massey-Omura 암호계 비밀열쇠 : (eB, dB) peAeBmod q를 계산 www.anseo.dankook.ac.kr/~cryptec
공개 원시다항식 x5+x2+1로 가지는 체 F32 송신자 A 수신자 B 비밀열쇠 : (eA=15, dA=29) 평문 : P=10110= 24+22+2 peA = (24+22+2)15 = 24+2+1=10011를 계산 비밀열쇠 : (eB=7, dB=9) peAeB=(24+2+1)7 =24+22+2+1=10111 을 계산 peA=10011 peAeB=10111 peB =(24+22+2+1)29 = 24+1=10001를 계산 peB=10001 peBdB =(24+1)9=24+22+2=10110를 계산 Massey-Omura 암호계의 예 www.anseo.dankook.ac.kr/~cryptec
공개 : g, gamod q 수신자 A 송신자 B (gk)agak mod q 계산 Pgak / gak P 계산 (gk ,Pgak) 임의의 k 선택 Pgakmod q 를 계산 ElGamal 암호 • ElGamal 암호 • 1985년 ElGamal이 Galois 체 Fq 위에서 제안한 암호 • 큰 위수를 가지는 임의의 원소 g를 공개하고 각 사용자 A는 자신이 임의의 수 a (0<a<q-1)를 선택해서, gamod q 를 계산하고, a는 공개하지 않고, gamod q 는 공개한다. www.anseo.dankook.ac.kr/~cryptec
원시다항식: x13 + x5+ x4+ x2+1을 이용한 체 F8192 공개 : g = x +1, ga = x11+ x9+ x8+ x7+x6 + x5+ x3+ x2+x 수신자 A 송신자 B ElGamal 암호 예 P= x12+ x10+ x9+ x7+x6 + x5+ x3+ x2+x+1 을 보내기 위해 k=5192선택 gk = (x +1)5192 = x10+ x9+ x5+x+1 (ga)k = x11 + x3 + 1 Pgak = x10+ x9+x6 + x5+ x4+ x3+x 개인열쇠 : a=200 (gk)ax11 + x3 + 1 Pgak / gak x12+ x10+ x9+ x7+x6 + x5+ x3+ x2+x+1 (gk ,Pgak ) 전송 www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호 • 타원곡선의 정의 • E = {(x,y) : y2 = x3 + ax + b}U{O} • 실수체 R 위에서의 타원곡선 E의 임의의 점 P와 Q에 대하여 덧셈을 다음과 같이 정의한다. (1) P + O = O + P (O는 무한원점) (2) – O = O (3) P = (x1 , y1) ≠ O 이면 P + Q = (x1 , - y1) (4) Q = –P 이면 P + Q = O (5) P ≠ O, Q ≠ O, Q ≠ - P 일 때, P ≠ O 이면, 선분 와 그 곡선 E와의 교점을 R이라 할 때 P + Q = - R로, P = O 이면, P에서의 곡선의 접선과 그 곡선 E와의 교점을 R이라 할 때 P + Q = - R로 정의 A 2A www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호계 • 타원곡선에서의 덧셈 • 실수체 위의 타원곡선 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 • 타원곡선에서의 덧셈 예 • 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) www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호 • 유한체 위에서의 타원곡선 예 • 체 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 www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호 • 타원곡선 암호의 예 • 타원곡선을 이용한 Massey-Omura 암호계 • 공개사항 : Fq, E, N • 1단계 : A와 B는 각각 eA와 eB를 선택하고 각각 dA ≡ eA-1 modN 과 dB ≡ eB-1 modN을 계산. • 2단계 : A는 eAP를 계산하여 사용자 B에게 보낸다. • 3단계 : B는 eB(eAP)를 계산하여 사용자 A에게 보낸다. • 4단계 : A는 dA(eBeAP) = eBP를 계산하여 B에게 보낸다. • 5단계 : B는 dB(eBP) = P를 계산하여 A에게 보낸다. www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호 • 타원곡선 암호의 예 • 타원곡선을 이용한 ElGamal 암호계 • 공개사항 : Fq, E, Q • 1단계 : A와 B는 각각 aA∈Z와 aB ∈Z를 선택하여 개인열쇠로 하고 aAQ와 aBQ를 계산하여 공개. • 2단계 : A는 k ∈Z를 선택하고 (kQ, P+k(aBQ))를 계산, B에게 보냄. • 3단계 : B는 aB(kQ) = aBkQ를 계산, P +kaBQ – aBkQ =P를 얻음. www.anseo.dankook.ac.kr/~cryptec
타원곡선 암호 • 타원곡선의 안전성 www.anseo.dankook.ac.kr/~cryptec
공개열쇠 암호의 응용 • 서명 • 컴퓨터 통신망을 통하여 전달되는 전자적 형태로 저장된 서류에 서명 • 위조불가(Unforgeable), 서명자인증(Authentic), 부인불가(Nonrepudiation) 변경불가(Unalterable), 재사용불가(Not Reusable) • Hash 함수 • 임의의 길이의 입력 메세지를 고정된 길이의 출력값으로 압축시키는 함수 • 데이타의 무결성 검증, 메세지 인증에 사용 • 충돌회피함수 • 열쇠분배 및 공유 • 사용자 또는 기관이 비밀열쇠를 설정하여 다른 사용자에게 전달하는 • 신원확인 • 개인의 신원을 전자적으로 증명 www.anseo.dankook.ac.kr/~cryptec
공개열쇠 암호의 응용 • 비밀분산 • 비밀을 분산시키는 방법으로 열쇠를 분산 • 영지식증명 • 한 사람이 다른 사람에게 사실의 증명에 관한 어떤 정보도 보이지 않고, 사실의 증명을 알고 있음을 확신하도록 만드는 방법 • 전화로 동전던지기 www.anseo.dankook.ac.kr/~cryptec