Chapter 4 공개키 암호 Knapsack RSA Diffie-Hellman key exchange

Slides:



Advertisements
Similar presentations
최성락 최인석 나주한. 특징 : 공개키 n, g 를 사용하여 키 분배가 가능. (g 는 Zn 의 primitive element) Discrete logarithm 에 기반. 두 명 이상의 경우에도 적용가능. 키 교환 없이도.
Advertisements

HTTPS Packet Capture Tutorial
Chapter 10 비대칭 키 암호 Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Chapter 8 네트워크 보안 Computer Networking: A Top Down Approach , 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
Lecture 9 프로그램 실행의 비용 computation cost – 시간 time, 메모리 memory – tractable vs intractable problems.
(c) Byoungcheon Lee, Joongbu Univ.
암호-4장. 공개키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
Chapter 3 Symmetric Key Crypto
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
Secure Socket Layer.
제 5 장 암호학의 수학기초 Network Security Lab Mun Hyung Jin.
컴퓨터 프로그래밍 기초 [Final] 기말고사
자바 암호 프로그래밍 Java Cryptography Programming
A SMALL TRUTH TO MAKE LIFE 100%
CUDA Setting : Install & Compile
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Chapter 9 Simple Authentication Protocols
Chapter 10 네트워크 보안.
교과목 소개 정보보호.
암호학 응용 Applied cryptography
I부 암호.
File Depender 중간 발표.
공개키 암호화 프로그래밍 전자상거래보안.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
정보화 사회와 컴퓨터 보안.
Modulo 연산.
A SMALL TRUTH TO MAKE LIFE 100%
Chap 4. 공개키 암호.
제9장 공개키 암호 (I) Public-key Cryptography
암호화 및 인증.
1.4 중첩된 한정기호 (Nested Quantifiers) 이산수학 (Discrete Mathematics)
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
연구실 소개 서울대학교 수리과학부 교수 천정희.
2. CONCEPTS 컴퓨터 네트워크 실험실 석사 1학기 강 동 호.
16 장 네트워크 보안 : 방화벽과 VPN 16.1 개요 16.2 기밀성 16.3 전자 서명 16.4 인터넷 보안
Frequency distributions and Graphic presentation of data
제 5장 공개키 암호.
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
비대칭 암호화 알고리즘 공개키 암호화 알고리즘 소속 : 한세사이버보안고등학교 조장 : 안도현
알고리즘 알고리즘이란 무엇인가?.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
바넘효과 [Barnum effect] 사람들이 보편적으로 가지고 있는 성격이나 심리적 특징을 자신만의 특성으로 여기는 심리적 경향. 19세기 말 곡예단에서 사람들의 성격과 특징 등을 알아 내는 일을 하던 바넘(P.T. Barnum)에서 유래하였다. 1940년대 말 심리학자인.
Chapter 4 공개키 암호 Knapsack RSA Diffie-Hellman 키 교환 방식
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Modulo 연산.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
점화와 응용 (Recurrence and Its Applications)
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
이산수학(Discrete Mathematics)
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
상관계수.
Numerical Analysis Programming using NRs
제 3장. Regular Languages 와 Regular Grammars
(c) Byoungcheon Lee, Joongbu Univ.
이산수학(Discrete Mathematics)  술어와 한정기호 (Predicates and Quantifiers)
정보보호 개론 Chapter 04 암호화 기술.
수치해석 ch3 환경공학과 김지숙.
암호 시스템 (Crypto system) 신효철
A SMALL TRUTH TO MAKE LIFE 100%
13. 포인터와 배열! 함께 이해하기.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
Exporting User Certificate from Internet Explorer
암호-3장. 대칭키 암호 ㅎㅎ 정보보호 기능의 가장 핵심적 기술인 암호를 다룬다. 흥미로운 암호의 역사를 소개하고, 고전적인 암호체계로부터 현대적인 디지털 암호체계에 이르는 기술의 발전을 살펴보고 현대의 고급 암호분석 기법을 소개한다. 한빛미디어(주)
진리표를 이용한 타당성 증명 진리표(truth table) : 단순 문장들이 진리값을 상이하게 가질 수 있는 가능한 모든 경우를 남김없이 열거한 표 (ex) 오늘은 날씨가 맑거나 비가 올 것이다. 오늘은 날씨가 맑다 비가 온다 오늘은 날씨가 맑거나 비가 올 것이다. T.
BRITNEY SPEARS.
(c) Byoungcheon Lee, Joongbu Univ.
자바 암호 프로그래밍 Java Cryptography Programming
Presentation transcript:

Chapter 4 공개키 암호 Knapsack RSA Diffie-Hellman key exchange Elliptic Curve Cryptography Uses for Public Key Crypto

공개키(PKC) 암호 또 다른 이름 공개키 암호는 비교적 새로운 개념이다. 비대칭 암호(asymmetric cryptography) 대칭키 암호에 대응해서 비대칭 암호라고도 함 두 개의 키를 사용 공개키 암호는 비교적 새로운 개념이다. 1960년대 후반 영국의 GCHQ(Government Communication Headquaters)에 의해 소개됨 이와도 별도로 1970년도 초반 대학의 연구자들에 의해서도 소개되었다. GCHQ; British intelligence agency responsible for providing signals intelligence (SIGINT) and information assurance to government and armed forces as required under the guidance of the Joint Intelligence Committee. Chapter 4 -- Public Key Cryptography

PKC에 대한 오해 PKC는 대칭키 암호보다 더 안전하다. PKC는 대칭키 암호를 쓸모없는 것으로 만들었다. 두 방식 모두 암호의 안전성은 이것을 깨기 위한 계산의 양에 달려 있다. PKC는 대칭키 암호를 쓸모없는 것으로 만들었다. PKC가 요구하는 계산의 양은 대칭키 보다 훨씬 많기 때문에 PKC를 사용하는데 있어서 장애물이 되고 있다. PKC의 키 분배는 사소한 일이다. PKC의 절차는 대칭키 암호 보다 더 간단하거나 효율적이지 않다. PKC의 키 분배를 위해서 공개키 구조(PKI)가 필요하다. Chapter 4 -- Public Key Cryptography

PKC의 키 메시지는 공개키(public key)로 암호화하고 개인키(private key)로 복호화한다. 키 생성 트랩 도어 단방향 함수(trap door one way function)에 기반을 둔다. Trap door 한 방향으로의 계산은 쉬우나 다른 방향으로의 계산은 힘들다. 예: p와 q가 주어졌을 때, N=pq의 계산은 용이하다. 하지만 N이 주어졌을 때 p와 q를 찾는 것은 쉽지 않다. 메시지는 공개키(public key)로 암호화하고 개인키(private key)로 복호화한다. Chapter 4 -- Public Key Cryptography

PKC의 활용(1): 메시지 암호화 메시지 M은 Alice의 공개키로 암호화한다. 공개키를 가질 수 있다. M 하지만 Alice의 개인키는 Alice만 갖고 있다. M Chapter 4 -- Public Key Cryptography

PKC의 활용(2): 전자 서명 전자 서명(Digital Signature) Alice는 자신의 개인키로 암호화하여 서명한다 (Sign). 손으로 서명하는 것과 같다. Bob은 Alice의 공개키로 복호화하여 Alice의 서명을 증명한다. Alice의 개인키는 Alice만 갖고 있으므로 Alice 이외에는 서명을 할 수 없다. Chapter 4 -- Public Key Cryptography

이 책에서 PKC와 관련하여 다룰 주제 Knanpsack RSA Diffie-Hellman Key Exchange 안전하지는 않다(insecure) RSA PKC의 대명사처럼 사용됨 Diffie-Hellman Key Exchange 키 교환(key exchange) 알고리즘 ECC(Elliptic Curve Cryptography) Chapter 4 -- Public Key Cryptography

배낭(Knapsack) Chapter 4 -- Public Key Cryptography

Knapsack 문제 (기술적으로, 이것은 “subset sum” 문제이다.) 예 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이 되는 subset을 찾으라. 답: 62+26+166+48=302 (general) knapsack (GK)문제는 NP-complete In computational complexity theory, the complexity class NP-complete (abbreviated NP-C or NPC, NP standing for Nondeterministic Polynomial time) is a class of problems having two properties: 1. Any given solution to the problem can be verified quickly (in polynomial time); the set of problems with this property is called NP. 2. If the problem can be solved quickly (in polynomial time), then so can every problem in NP. Although any given solution to such a problem can be verified quickly, there is no known efficient way to locate a solution in the first place; indeed, the most notable characteristic of NP-complete problems is that no fast solution to them is known. That is, the time required to solve the problem using any currently known algorithm increases very quickly as the size of the problem grows. As a result, the time required to solve even moderately large versions of many of these problems easily reaches into the billions or trillions of years, using any amount of computing power available today. As a consequence, determining whether or not it is possible to solve these problems quickly is one of the principal unsolved problems in computer science today. While a method for computing the solutions to NP-complete problems using a reasonable amount of time remains undiscovered, computer scientists and programmers still frequently encounter NP-complete problems. An expert programmer should be able to recognize an NP-complete problem so that he or she does not unknowingly waste time trying to solve a problem which so far has eluded generations of computer scientists. Instead, NP-complete problems are often addressed by using approximation algorithms in practice. Chapter 4 -- Public Key Cryptography

Knapsack 문제 일반적인 Knapsack(GK) 문제는 풀기 힘들다. 하지만 superincreasing knapsack (SIK) 문제는 풀기 쉽다. SIK: 가중치는 모든 이전의 가중치의 합 보다 크다. 예 가중치 (2,3,7,14,30,57,120,251) 문제: 합이 S=186이 되는 subset을 찾으라. 가장 큰 가중치부터 가장 작은 가중치로 순서대로 비교해 나간다. 답: 120+57+7+2=186 Chapter 4 -- Public Key Cryptography

Knapsack 암호 체계 1. superincreasing knapsack (SIK)을 생성한다. 2. SIK을 “general” knapsack (GK)으로 변환한다. 공개키: GK 개인키: SIK와 conversion factors GK로 암호화한다(용이) 개인키로 복호화하는 것은 용이하다. (암호문을 SIK로 변환한다.) 개인키가 없다면, GK를 풀어야 한다(???) Chapter 4 -- Public Key Cryptography

Knapsack 암호체계 1. SIK: (2,3,7,14,30,57,120,251) m = 41, n = 491 N은 SIK 원소들의 합 보다 크다. 그러면 GK는 다음과 같이 계산할 수 있다; 2 x 41 mod 491 = 82 3 x 41 mod 491 = 123 7 x41 mod 491 = 287 14 x 41 mod 491 = 83 30 x 41 mod 491 = 248 57 x 41 mod 491 = 373 120 x 41 mod 491 = 10 251 x 41 mod 491 = 471 3. GK : (82,123,287,83,248,373,10,471)

Knapsack 암호화 예 개인키: (2,3,7,14,30,57,120,251) m=41, n=491, m1 mod n = 411 mod 491 = 12 공개키: (82,123,287,83,248,373,10,471) 예: 평문 10010110 을 암호화 82 + 83 + 373 + 10 = 548 복호화 S’ · m1 = 548 · 12 = 193 mod 491 = S S = 193인 SIK를 구한다.(쉽다) 120+57+14+2 = 193 평문 10010110 Chapter 4 -- Public Key Cryptography

Knapsack 약점 Trapdoor: modular arithmetic을 사용하여 SIK를 “general” knapsack(GK)으로 변환한다. 단방향: GK로 암호화하기는 쉽지만 반대로 푸는 것은 힘들다; SIK로 푸는 것은 쉽다. knapsack cryptosystem은 안전하지 않다. 1983년에 Apple II 컴퓨터로 해독되었다. 공격은 lattice reduction을 사용하였다. SIK로부터 유도해 내는 “General knapsack”은 충분히 “general”하다고 말 할 수 없다. 이러한 특별한 knapsack은 풀기가 쉽다. Chapter 4 -- Public Key Cryptography

Ron Rivest It’s me!!! RSA Chapter 4 -- Public Key Cryptography

RSA 가장 어려운 계산은? Addition Multiplication Factorization Easy Difficult 123 + 654 -------- 777 Multiplication x 654 --------- 492 615 738 ----------- 80442 Factorization 221 = ?x? 221/2 = 221/3 = 221/5 = 221/7 = 221/11 = 221/13 = 221 = 13 x 17 Easy Difficult Chapter 4 -- Public Key Cryptography

RSA GCHQ의 Cocks에 의해 만들어졌으며, 이와는 독립적으로 MIT의 Rivest, Shamir, Adleman에 의해서도 만들어졌다. P와 q: 두 개의 큰 소수(prime numbers) N = pq : modulus (p-1)(q-1)와 “서로 소수”인 e를 선택한다. ed = 1 mod (p-1)(q-1)인 d를 찾는다. 공개키 : (N,e) 개인키 : d Chapter 4 -- Public Key Cryptography

RSA e 와 N은 공개되어있다. 메시지 M의 암호화 암호문 C의 복호화 C = Me mod N 암호문 C의 복호화 M = Cd mod N e 와 N은 공개되어있다. 만약 N이 소수 분해(factoring)할 수 있다면, 공격자는 ed = 1 mod (p1)(q1)이므로 e를 사용하여 d를 찾아낼 수 있다. N을 소수 분해할 수 있다면 RSA를 깰 수 있다. 소수분해 이외에 RSA를 깨는 방법이 존재하는지는 아직 알려져 있지 않다. Chapter 4 -- Public Key Cryptography

Does RSA Really Work? 오일러 정리(Euler’s Theorem) 그렇다면 다음이 성립한다: C = Me mod N이 주어질 때, 다음과 같이 되는 것을 보여야 한다. M = Cd mod N = Med mod N where M < N 오일러 정리(Euler’s Theorem) 만약 M과 N이 “서로 소”라면, M(N) = 1 mod N 그렇다면 다음이 성립한다: ed = 1 mod (p  1)(q  1) “mod”의 정의에 의해서 ed = k(p  1)(q  1) + 1 (N) = (p  1)(q  1) 그러면 ed  1 = k(p  1)(q  1) = k(N) Med = M(ed  1) + 1 = MMed  1 = MMk(N) = M(M(N))k mod N = M1k mod N = M mod N Chapter 4 -- Public Key Cryptography

간단한 RSA 사용 예(1) 큰 소수 선택: p = 11, q = 3 그러면 N = pq = 33, (p1)(q1) = 20 e = 3 (20과 서로 소수) 선택 ed = 1 mod 20 가 되는 d = 7를 찾음 공개키: (N, e) = (33, 3) 개인키: d = 7 Chapter 4 -- Public Key Cryptography

간단한 RSA 사용 예(2) 공개키: (N, e) = (33, 3) 개인키: d = 7 메시지 M = 8을 암호화하자. 암호문 C는 다음과 같이 계산된다. C = Me mod N = 83 = 512 = 17 mod 33 암호문 C를 다음과 같이 복호화하여 메시지 M을 구한다. M = Cd mod N = 177 = 410,338,673 = 12,434,505  33 + 8 = 8 mod 33 Chapter 4 -- Public Key Cryptography

Diffie-Hellman Chapter 4 -- Public Key Cryptography

Diffie-Hellman 이것의 안전성은 discrete log problem에 달려있다. GCHQ의 Williamson이 만들었고, 또한 독자적으로 Stanford의 Diffie와 Hellman도 만들었다. “키 교환(key exchange)” 알고리즘 대칭키를 공유하는데 사용한다. 암호화나 서명을 위한 것은 아니다. 이것의 안전성은 discrete log problem에 달려있다. given g, p, and gk mod p → find k Chapter 4 -- Public Key Cryptography

Discrete Logarithm Problem 공개된 값: 큰 소수 p, generator g gk mod p = x Discrete logarithm problem: x, g, p가 주어졌을 때 k를 구하라. Table g=2, p=11 k 1 2 3 4 5 6 7 8 9 10 gk nth element 1st element Cyclic Group G Generator α α1 α2 α3 … αx = β

Diffie-Hellman P는 소수, g는 발생기(generator)라고 하자. Alice는 비밀 값 a를 선택한다. 어떤 x  {1,2,…,p-1}에 대해서 x = gn mod p인 n이 존재한다. Alice는 비밀 값 a를 선택한다. Bob는 비밀 값 b를 선택한다. Alice는 Bob에게 ga mod p를 보낸다. Bob은 Alice에게 gb mod p를 보낸다. 둘 다 비밀 값 gab mod p을 계산하다. 이 비밀 값을 대칭 키(symmetric key)로 사용한다. Chapter 4 -- Public Key Cryptography

Diffie-Hellman Bob과 Alice가 gab mod p을 대칭키로 사용할 때, Trudy는 ga mod p와 gb mod p를 알고 있다. 주의: ga gb mod p = ga+b mod p  gab mod p 만약Trudy가 a와 b를 찾아낼 수 있으면 시스템은 깨진다. 만약 Trudy가 discrete log 문제를 풀 수 있으면, 그는 a 혹은 b를 찾아낼 수 있다. Chapter 4 -- Public Key Cryptography

Diffie-Hellman 공개: g와 p 비밀: Alice의 a, Bob의 b ga mod p gb mod p Alice, a Bob, b Alice의 계산: (gb)a = gba = gab mod p Bob의 계산: (ga)b = gab mod p 비밀키 K: K = gab mod p Chapter 4 -- Public Key Cryptography

man-in-the-middle (MiM) 공격 Diffie-Hellman은 MiM 공격의 위험에 놓인다. ga mod p gt mod p gt mod p gb mod p Alice, a Trudy, t Bob, b Trudy는 Alice와 비밀키를 공유: gat mod p Trudy는 Bob과 비밀키를 공유: gbt mod p Alice와 Bob은 Trudy의 존재를 모른다! Chapter 4 -- Public Key Cryptography

man-in-the-middle (MiM) 공격 해법 교환하는 값(ga mod p, gb mod p)을 대칭키로 암호화하여 보낸다. 교환하는 값을 공개키로 암호화하여 보낸다. 교환하는 값을 개인키로 서명한다. 다른 방법은? Diffie-Hellman에서는 MiM 공격이 가능하다는 것을 명심해야 한다. Chapter 4 -- Public Key Cryptography

ECC: 타원 곡선 암호 (Elliptic Curve Cryptography) Chapter 4 -- Public Key Cryptography

Elliptic Curve Crypto (ECC) “타원 곡선”은 암호 체계가 아니다. 타원 곡선은 공개키 시스템에서 수학을 하는 다른 방법이다. 타원 커브를 이용한 DH, RSA등이 존재한다. 타원 커브는 더 효율적일 수 있다. 동일한 안전성을 위해 더 적은 비트로서 동일한 안전성을 얻을 수 있다. 그러나 연산은 더 복잡하다. Chapter 4 -- Public Key Cryptography

타원 곡선이란 무엇인가? 타원 곡선 E은 다음과 같은 수식의 그래프이다. y2 = x3 + ax + b 또한 “point at infinity” (∞)를 포함한다. 타원 곡선은 어떤 모양인가? Chapter 4 -- Public Key Cryptography

타원 곡선의 모양 다음과 같은 타원 곡선에서 만약 P1과 P2가 E위에 있으면, 다음과 같이 정의할 수 있다. E: y2 = x3 - x + 1 만약 P1과 P2가 E위에 있으면, 다음과 같이 정의할 수 있다. P3 = P1 + P2 필요한 것은 덧셈! EC에 “mod p”를 더한다. y P2 P1 x P3 Chapter 4 -- Public Key Cryptography

Points on Elliptic Curve 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) 그리고 the point at infinity:  Chapter 4 -- Public Key Cryptography

Elliptic Curve Math 덧셈: y2 = x3 + ax + b (mod p) P1=(x1,y1), P2=(x2,y2), P1 + P2 = P3 = (x3,y3) where x3 = m2 - x1 - x2 (mod p) y3 = m(x1 - x3) - y1 (mod p) and m = (y2-y1)(x2-x1)-1 mod p, if P1P2 m = (3x12+a)(2y1)-1 mod p, if P1 = P2 Special cases: If m is infinite, then P3 =  and  + P = P for all P Chapter 4 -- Public Key Cryptography

Elliptic Curve Addition y2 = x3 + 2x + 3 (mod 5) 곡선 상의 점들은 (1,1) (1,4) (2,0) (3,1) (3,4) (4,0) and  (1,4) + (3,1) = P3 = (x3,y3) ? m = (1-4)(3-1)-1 = -32-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) Chapter 4 -- Public Key Cryptography

EC Discrete Log Problem 주어진 조건 E: an EC over (field of modulo p), p:prime P: a point in E(Fp), and suppose that P has prime order n 키 생성(Key generation) Private key d: selected in random in [1,n-1] Public key Q =dP ECDLP: The problem of finding d given the domain parameters and Q Chapter 4 -- Public Key Cryptography

ElGamal EC Encryption Input OutPut EC domain para (p,E,P,n), Public key Q, Plaintext m OutPut Ciphertext (C1, C2) Represent the message m as a point M in E Select k in [1,n-1], Computer C1 = kP, Compute C2 = M + kQ Return(C1, C2) Chapter 4 -- Public Key Cryptography

ElGamal EC Decryption Input Output: Plaintext (m) EC domain para (p,E,P,n), private key d, ciphertext (C1, C2) Output: Plaintext (m) Compute M = C2 - d∙C1 where C2 = M + kQ and C1 = kP Extract m from M Return(m) Chapter 4 -- Public Key Cryptography

ECC Diffie-Hellman Key Ex Public: Elliptic curve and point (x,y) on curve Secret: Alice’s A and Bob’s B A(x,y) B(x,y) Alice, A Bob, B Alice computes A(B(x,y)) Bob computes B(A(x,y)) These are the same since AB = BA Chapter 4 -- Public Key Cryptography

ECC Diffie-Hellman Public: Curve y2 = x3 + 7x + b (mod 37) and point (2,5)  b = 3 Alice’s secret: A = 4 Bob’s secret: B = 7 Alice sends Bob: 4(2,5) = (7,32) Bob sends Alice: 7(2,5) = (18,35) Alice computes: 4(18,35) = (22,1) Bob computes: 7(7,32) = (22,1) Chapter 4 -- Public Key Cryptography

공개키 암호의 적용 Chapter 4 -- Public Key Cryptography

공개키 암호의 적용 기밀성 안전하지 않은 채널로 데이터를 전송할 때 안전하지 않은 미디어를 안전한 저장소에 보관할 때 인증 (추후 논의) 전자서명(Digital signature)은 무결성과 부인 봉쇄(non-repudiation)를 제공한다. 대칭키로는 부인 봉쇄가 가능하지 않다. 비밀키로 서명한 사람은 나중에 자신이 서명한 것을 부인할 수 없다. Chapter 4 -- Public Key Cryptography

부인 봉쇄(non-repudiation) Alice는 Bob으로부터 주식 100주를 주문했다. Alice는 대칭키로 MAC을 계산했다. 그런데 주식값이 떨어지자, Alice는 자신이 주문한 것을 부인했다. Bob은 Alice가 주문한 것을 증명할 수 있을까? No! Bob역시 대칭키를 알고 있기 때문에 주문을 조작할 수 있다. 문제: Bob은 Alice가 주문한 것을 알고 있다. 하지만 그것을 증명할 수 없다. Chapter 4 -- Public Key Cryptography

부인 봉쇄(Non-repudiation) Alice는 Bob으로부터 주식 100주를 주문했다. Alice는 자신의 개인키로 주문에 서명을 했다. 그런데 주식값이 떨어지자, Alice는 자신이 주문한 것을 부인했다. Bob은 Alice가 주문한 것을 증명할 수 있을까? Yes! Alice의 개인키를 갖고 있는 사람 만이 주문에 서명을 할 수 있다. 물론 Alice의 개인키가 도난당하지 않았다는 가정을 해야 한다.(키 폐기 문제) Chapter 4 -- Public Key Cryptography

서명하고 암호화 vs 암호화하고 서명 Chapter 4 -- Public Key Cryptography

공개키 표기법 메시지 M을 Alice의 개인키로 서명(Sign) Alice’s private key: [M]Alice 메시지 M을 Alice의 공개키로 암호화 Alice’s public key: {M}Alice 그러면 {[M]Alice}Alice = M [{M}Alice]Alice = M Chapter 4 -- Public Key Cryptography

기밀성과 부인 봉쇄 기밀성과 부인 봉쇄를 동시에 하고 싶다고 하자. 공개키 암호는 이 두 가지 목표를 이룰 수 있을까? Alice는 Bob에게 다음의 메시지를 보낸다. 서명하고 임호화 {[M]Alice}Bob 암호화하고 서명 [{M}Bob]Alice 어떤 순서로 하는가에 따라서 달라질까? Chapter 4 -- Public Key Cryptography

서명하고 암호화 M = “I love you” Q: 무엇이 문제인가? A: Charlie는 암호를 오해한다! {[M]Alice}Bob {[M]Alice}Charlie Alice Bob Charlie Q: 무엇이 문제인가? A: Charlie는 암호를 오해한다! Chapter 4 -- Public Key Cryptography

암호화하고 서명 M = “My theory, which is mine….” Charlie는 M을 복호화할 수 없다. [{M}Bob]Alice [{M}Bob]Charlie Alice Charlie Bob Charlie는 M을 복호화할 수 없다. Q: 무엇이 문제인가? A: Bob은 암호를 오해한다! Chapter 4 -- Public Key Cryptography

공개키 구조(PKI) Chapter 4 -- Public Key Cryptography 51

공개키 인증서(Certificate) Bob은 어떻게 Alice의 공개키를 알 수 있는가? Alice는 자신이 개인키와 공개키를 만들어서 Bob에게 이것이 나의 공개키라고 알려 주는가? 그러면 Bob은 그것이 Alice의 공개키라고 신뢰할 수 있을까? 인증서에는 Alice의 이름과 Alice의 공개키(그리고 다른 정보)를 포함하고 있다. 인증서를 제공하는 발행자(Certificate Authority)가 이것을 보증하기 위해서 인증서에 서명을 한다.(예를 들면 VeriSign) Bob은 발행자의 공개키를 사용하여 인증서의 서명을 증명할 수 있다. Chapter 4 -- Public Key Cryptography 52

인증 기관(Certificate Authority) 인증기관 (CA)은 신뢰할 수 있는 제3자(TTP)로 인증서를 발행하고 서명한다. 인증서의 서명을 증명하는 것은 이에 대응하는 개인키 소유자의 존재를 증명하는 것이다. 인증서는 공개되어 있다! CA가 실수를 한다면 큰 문제이다.(CA는 이전에 Microsoft 인증서를 다른 사람에게 발행한 적이 있다!) 인증서의 형식은 X.509으로 정해져 있다. Chapter 4 -- Public Key Cryptography 53

X.509 인증서 예(1) 다음 그림은 www.freesoft.org의 공개키를 인증하는 인증서이다. 인증 기관은 Thwate Thwate는 인증서를 인증하기 위해서 인증서의 마지막 부분에 자신의 개인키로 sign을 하였다(signature). 이 인증서를 받는 사람은 Thwate의 공개키로 인증서의 마지막 부분의 signature를 확인할 수 있다.

X.509 인증서 예(2) 그러면, 사용자는 Thwate의 공개키를 어떻게 알 수 있는가?

X.509 인증서 예(3) 그러면 이 인증서를 받은 사용자는 Thwate가 신뢰할 수 있는 인증 기관인지 어떻게 확신할 수 있는가? 신뢰할 수 있는 기관의 Root certificate는 브라우저에 사전에 설치되어 있다. 이러한 인증 기관들은 브라우저에 사전에 설치될 수 있는 특권을 사게 된다.

PKI 공개키 구조 (PKI)는 공개키 암호 방식을 안전하게 사용하기 위해 필요한 모든 요소로 구성된다. 키 생성과 관리 인증 기관(CA) 인증 폐기 (CRLs), 등등 PKI에 대한 일반적인 표준은 없다. 몇가지 “신뢰 모델(trust model)”을 검토해 보자. Chapter 4 -- Public Key Cryptography

PKI 신뢰 모델 완전 독점 모델(Monopoly model) 하나의 보편적인 신뢰 기관이 CA로서 모든 것을 관장한다. 당연히 VeriSign 같은 기관이 가장 선호할 것이다. 만약 CA가 손상되면 큰 문제 만약 이 CA를 신뢰하지 못하면 큰 문제! Chapter 4 -- Public Key Cryptography

PKI 신뢰 모델 소수 독점 모델(Oligarchy) 다수의 신뢰할 수 있는 CA들이 존재 오늘날 브라우저에서 사용하는 접근 방법 브라우저는 단순히 서명을 증명하기 위해서 80개 이상의 인증서를 가질 수 있다! 사용자는 어떤 CA들을 신뢰할 수 있는지 결정해야 한다. Chapter 4 -- Public Key Cryptography

PKI 신뢰 모델 완전 자유 모델(Anarchy model) 이외에 많은 다른 신뢰 모델에 존재할 수 있다. 모두가 CA가 될 수 있다! 사용자는 어떤 “CA들”을 신뢰할 수 있는지 결정해야 한다. 이 방법은 PGP에서 사용되고 있다.(Web of trust) 왜 이것을 “무정부(anarchy)”라고 부르는가? Frank가 어떤 인증서를 서명했는데 나는 Frank를 모른다. 하지만 나는 Bob을 신뢰하고 Bob은 Alice를 믿을 수 있다고 하고 Alice는 Frank를 보증한다. 나는 Frank를 신뢰해야 하는가? 이외에 많은 다른 신뢰 모델에 존재할 수 있다. Chapter 4 -- Public Key Cryptography

현실 세계에서의 기밀성 Chapter 4 -- Public Key Cryptography

대칭키 vs 공개키 대칭키의 장점 공개키의 장점 속도 공개키 구조 (PKI)가 필요없다. 서명 (부인 봉쇄) 공유된 비밀키가 필요없다. Chapter 4 -- Public Key Cryptography

대칭키 vs 공개키 암호화 비교 공개키 암호 대칭키 암호 믿을 수 있는(authentic) 공개키 필요 공유하는 비밀키가 필요 고도의 안전을 위해서 2048 bit key (RSA) 필요 (year 2010) ~100 signatures/s ~1000 verify/s (RSA) on 1GHz processor ~10x speedup in HW 대칭키 암호 공유하는 비밀키가 필요 고도의 안전을 위해서 80 bit key 필요 (year 2010) ~1,000,000 ops/s on 1GHz processor >100x speedup in HW

RSA로 큰 파일을 암호화한다면? 1024-bit RSA 암호화할 때 시간 1024-bit RSA 복호화할 때 시간 ~1 ms on 1 GHz Pentium 1024-bit RSA 복호화할 때 시간 ~10 ms on 1 GHz Pentium 1 Mbyte file을 암호화하는 시간은? Encrypt 1024 bits / RSA operation = 128 bytes 1 Mbyte = 220 Time: 220 / 27 * 1ms = 213 ms = 8 seconds! Better approach? First, pick random key, encrypt key with RSA, then encrypt file with block cipher.

표기법 재정리 공개키 표기법 대칭키 표기법 [M]Alice {M}Alice C = E(P,K) P = D(C,K) 메시지 M을 Alice의 개인키(private key)로 암호화 [M]Alice 메시지 M을 Alice의 공개키(public key)로 암호화 {M}Alice 대칭키 표기법 평문 P를 대칭키 K로 암호화 C = E(P,K) 암호문 C를 대칭키 K로 복호화 P = D(C,K) Chapter 4 -- Public Key Cryptography

현실 세계에서의 기밀성 혼합된 암호 체계 Bob은 Alice와 말하고 있다고 확신할 수 있는가? {K}Bob 공개키는 키를 설정(교환)하기 위해서 사용한다. 대칭키는 데이터를 암호화하는데 사용한다. {K}Bob [{K}Bob]Bob E(Bob’s data, K) E(Alice’s data, K) Alice Bob Bob은 Alice와 말하고 있다고 확신할 수 있는가? Chapter 4 -- Public Key Cryptography