29
3.5 공개키 암호 알고리즘 3. 공개키 암호와 메시지 인증 목포해양대 해양컴퓨터공학과 1

제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

3.5 공개키 암호 알고리즘

제3장. 공개키 암호와 메시지 인증

목포해양대 해양컴퓨터공학과 1

Page 2: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 공개키 암호 알고리즘

목포해양대 해양컴퓨터공학과 2

Page 3: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA

송신자와 수신자 모두는 𝑛 과 𝑒 를 알고 있어야 하고, 오직 수신자만이 𝑑 값을 알고 있어야 한다.

공개키 𝑃𝑈 = {𝑒, 𝑛}

개인키 𝑃𝑅 = {𝑑, 𝑛}

목포해양대 해양컴퓨터공학과 3

Page 4: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 공개키 암호 요구 조건

1. 𝑛 보다 작은 모든 정수 𝑀 에 대해서 𝑀 = 𝑀𝑒𝑑 𝑚𝑜𝑑 𝑛 을 만족하는 값 𝑒, 𝑑, 𝑛 을 구할 수 있어야 한다.

2. 𝑛 보다 작은 모든 정수 𝑀 에 대해서 𝑀𝑒와 𝐶𝑑를 구하는 것이 비교적 쉬워야 한다.

3. 𝑒 와 𝑛 이 주어졌을 때 𝑑 를 구하는 것이 불가능해야 한다.

목포해양대 해양컴퓨터공학과 4

Page 5: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 알고리즘(키 생성)

𝜙(𝑛): 오일러(Euler) 함수로서 𝑛 보다 작으면서 𝑛 과 서로소인 양의 정수의

개수를 나타낸다.

목포해양대 해양컴퓨터공학과 5

Page 6: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 알고리즘(암호화/복호화)

목포해양대 해양컴퓨터공학과 6

Page 7: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 알고리즘 예

1. 두 소수 𝑝 = 17과 𝑞 = 11을 선택한다.

2. 𝑛 = 𝑝𝑞 = 17 × 11 = 187을 계산한다.

3. 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1) = 16 × 10 = 160을 계산한다.

4. 𝜙(𝑛) = 160보다 작으면서 𝜙(𝑛) 과 서로 소인 수 𝑒 를 선택한다. 여기서는 𝑒 = 7을 선택한다.

5. 𝑑<160이면서 𝑑𝑒 𝑚𝑜𝑑 160 = 1인 수 𝑑 를 결정한다. 여기에 적합한 수는 𝑑 = 23이다. 왜냐하면 23 × 7 = 161 = 1 × 160 + 1이기 때문이다.

목포해양대 해양컴퓨터공학과 7

Page 8: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 알고리즘 예

공개키:𝑃𝑈 = {7, 187}

개인키:𝑃𝑅 = {23, 187}

평문 𝑀 = 88을 암호화 해보자

𝐶 = 887 𝑚𝑜𝑑 187을 계산

목포해양대 해양컴퓨터공학과 8

Page 9: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

암호화 단계

1. 887 𝑚𝑜𝑑 187 = [(884 𝑚𝑜𝑑 187) ×(882 𝑚𝑜𝑑 187) × (881 𝑚𝑜𝑑 187)] 𝑚𝑜𝑑 187

2. 881 𝑚𝑜𝑑 187 = 88

3. 882 𝑚𝑜𝑑 187 = 7744 𝑚𝑜𝑑 187 = 77

4. 884 𝑚𝑜𝑑 187 = 59,969,536 𝑚𝑜𝑑 187 = 132

5. 887 𝑚𝑜𝑑 187 = (88 × 77 × 132) 𝑚𝑜𝑑 187 = 894,432 𝑚𝑜𝑑 187 = 11

목포해양대 해양컴퓨터공학과 9

Page 10: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

복호화

복호화

𝑀 = 1123 𝑚𝑜𝑑 187를 계산

목포해양대 해양컴퓨터공학과 10

Page 11: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

복호화 단계

1. 1123 𝑚𝑜𝑑 187 = [(111 𝑚𝑜𝑑 187) ×(112 𝑚𝑜𝑑 187) × (114 𝑚𝑜𝑑 187) ×(118 𝑚𝑜𝑑 187) × (118 𝑚𝑜𝑑 187)] 𝑚𝑜𝑑 187

2. 111 𝑚𝑜𝑑 187 = 11

3. 112 𝑚𝑜𝑑 187 = 121

4. 114 𝑚𝑜𝑑 187 = 14,641 𝑚𝑜𝑑 187 = 55

5. 118 𝑚𝑜𝑑 187 = 214,358,881 𝑚𝑜𝑑 187 = 33

6. 1123 𝑚𝑜𝑑 187 = (11 × 121 × 55 × 33 ×33) 𝑚𝑜𝑑 187 = 79,720,245 𝑚𝑜𝑑 187 = 88

목포해양대 해양컴퓨터공학과 11

Page 12: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

RSA 알고리즘을 깨는 방법

전수공격

가능한 모든 개인키를 시도

𝑒와 𝑑의 비트 수가 크면 클수록 알고리즘은 안전

𝑛을 두 개의 소인수의 곱으로 인수분해

효과적 인수분해 방법 없음

대부분의 RSA 응용에 1024-비트 키(대략 300자리 10진수)를 사용하고 있어서 충분히 안전

목포해양대 해양컴퓨터공학과 12

Page 13: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie-Hellman 키교환

Diffie-Hellman 키교환(key exchange)

두 사용자가 비밀키(대칭키)를 안전하게 교환해서 메시지를 암호화하려는 목적

이산 대수 문제(discrete logarithms problem)를 푸는 것이 어렵다는 데 근거

목포해양대 해양컴퓨터공학과 13

Page 14: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

이산대수문제

소수 𝑝의 원시근(primitive root)

자신의 거듭제곱을 이용하면 1부터 𝑝 −1까지의 정수를 모두 생성해 낼 수 있는 수

어떤 수 𝑎가 소수 𝑝의 한 원시근 이라면, 다음 수

𝑎 mod 𝑝, 𝑎2 mod 𝑝, … , 𝑎𝑝−1mod 𝑝

은 서로 다르고 정수 1부터 𝑝 − 1까지의 수를 치환해놓은 것과 같다.

목포해양대 해양컴퓨터공학과 14

Page 15: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

이산대수문제

𝑝보다 작은 임의의 정수 𝑏와 𝑝의 원시근 𝑎에 대해서 다음을

만족하는 유일한 지수 𝑖를 찾을 수 있다.

𝑏 = 𝑎𝑖mod 𝑝, 여기서 0 ≤ 𝑖 ≤ 𝑝 − 1

여기에서 지수(exponent) 𝑖를 밑수 𝑎를 갖는 𝑏의

이산대수(discrete logarithm) 혹은 지수(index)라고 한다. 이

수를

𝑖 = dlog𝑎,𝑝(𝑏)

라고 쓴다.

목포해양대 해양컴퓨터공학과 15

Page 16: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie Hellman 알고리즘

양측 A와 B에게 주어진 정보:

하나의 소수 𝑞와 𝑞의 한 원시근 𝛼

A는 한 랜덤넘버 𝑋𝐴 < 𝑞를 선택하고𝑌𝐴 =𝛼𝑋𝐴mod 𝑞 를 계산

B는 한 랜덤넘버 𝑋𝐵 < 𝑞를 선택하고𝑌𝐵 =𝛼𝑋𝐵mod 𝑞 를 계산

양측은 𝑋를 개인값으로 보관하고 𝑌를 상대방이 사용할 수 있도록 공개

목포해양대 해양컴퓨터공학과 16

Page 17: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie Hellman 알고리즘 A는 𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞를 이용해서 키 계산 B는 𝐾 = (𝑌𝐴)𝑋𝐵mod 𝑞를 이용해서 키 계산

𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞 = (𝛼𝑋𝐵mod 𝑞)𝑋𝐴mod 𝑞

= (𝛼𝑋𝐵)𝑋𝐴 mod 𝑞 = 𝛼𝑋𝐵𝑋𝐴 mod 𝑞 = 𝛼𝑋𝐴𝑋𝐵 mod 𝑞

= (𝛼𝑋𝐴)𝑋𝐵 mod 𝑞 = (𝛼𝑋𝐴mod 𝑞)𝑋𝐵mod 𝑞

= (𝑌𝐴)𝑋𝐵mod 𝑞=K

목포해양대 해양컴퓨터공학과 17

Page 18: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie-Hellman 키 교환 알고리즘

목포해양대 해양컴퓨터공학과 18

Page 19: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

공격자에게 주어지는 정보

알 수 없는 정보: 𝑋𝐴, 𝑋𝐵

알 수 있는 정보: 𝑞, 𝛼, 𝑌𝐴, 𝑌𝐵

A, B의 비밀값 𝑋𝐴, 𝑋𝐵 를 알려면 공격자는 반드시 이산대수문제를 풀어야 한다.

𝑋𝐴 = dlog𝛼,𝑞(𝑌𝐴)

𝑋𝐵 = dlog𝛼,𝑞(𝑌𝐵)

아는 값 알고 싶은 값

목포해양대 해양컴퓨터공학과 19

Page 20: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie Hellman 키교환 예

하나의 소수 𝑞 = 353, 𝑞의 한 원시근 𝛼 = 3

A는 한 랜덤넘버 𝑋𝐴 = 97 < 353 선택𝑌𝐴 =𝛼𝑋𝐴mod 𝑞 = 397mod 353 = 40 계산

B는 한 랜덤넘버 𝑋𝐵 = 233 < 353 선택𝑌𝐵 = 𝛼𝑋𝐵mod 𝑞 = 3233mod 353 =248 계산

A와 B는 𝑌𝐴 와 𝑌𝐵를 교환

목포해양대 해양컴퓨터공학과 20

Page 21: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie Hellman 키교환 예

A가 하는 계산:

𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞 = (248)97mod 353 = 160

B가 하는 계산 :

𝐾 = (𝑌𝐴)𝑋𝐵mod 𝑞 = (40)233mod 353 = 160

목포해양대 해양컴퓨터공학과 21

Page 22: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie Hellman 키교환 예에 대한 공격

공격자가 가진 정보: 𝑞 = 353; 𝛼 = 3; 𝑌𝐴 = 40; 𝑌𝐵 = 248

공격자가 할 수 있는 계산

3𝑎mod 353 = 40

3𝑏mod 353 = 248

의 해를 구한다. 즉, 다음 이산대수를 구한다 𝑎 = dlog3,353(40)

𝑏 = dlog3,353(243)

목포해양대 해양컴퓨터공학과 22

Page 23: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

Diffie-Hellman 키 교환 절차

목포해양대 해양컴퓨터공학과 23

Page 24: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

키교환 프로토콜

A: (𝑋𝐴, 𝑌𝐴)

LAN 사용자 그룹

모든 LAN 사용자에게 공개

비밀

공개

Z: (𝑋𝑍, 𝑌𝑍)

B: (𝑋𝐵 , 𝑌𝐵) C: (𝑋𝐶 , 𝑌𝐶)

공개

비밀

소수 𝑞, 𝑞의 한 원시근 𝛼

목포해양대 해양컴퓨터공학과 24

Page 25: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

중간자 공격 (1) 1. 다츠는 공격을 위해 두 개의 랜덤 개인 키 𝑋𝐷1과 𝑋𝐷2 를

생성한 다음 여기에 해당되는 공개키인 𝑌𝐷1 과 𝑌𝐷2 를 구한다.

2. 앨리스는 𝑌𝐴를 밥에게 전송한다.

3. 다츠는 𝑌𝐴 를 가로채고 𝑌𝐷1 을 밥에게 보낸 다음 𝐾2 =(𝑌𝐴)𝑋𝐷2mod 𝑞를 계산한다.

4. 밥은 𝑌𝐷1 을 받고 𝐾1 = (𝑌𝐷1)𝑋𝐵mod 𝑞를 계산한다.

5. 밥은 𝑌𝐵를 앨리스에게 보낸다.

6. 다츠는 𝑌𝐵 를 가로채고 𝑌𝐷2 를 앨리스에게 보낸다. 다츠는 𝐾1 = (𝑌𝐵)𝑋𝐷1mod 𝑞 를 계산한다.

7. 앨리스는 𝑌𝐷2 를 받고 𝐾2 = (𝑌𝐷2)𝑋𝐴mod 𝑞 를 계산한다.

목포해양대 해양컴퓨터공학과 25

Page 26: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

중간자 공격 (2)

밥과 앨리스는 자신이 공통의 비밀키를 공유하고 있다고 생각한다.

밥과 다츠가 공유하는 것: 비밀키 K1

앨리스와 다츠가 공유하는 것: 비밀키 K2

목포해양대 해양컴퓨터공학과 26

Page 27: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

중간자 공격 (3)

목포해양대 해양컴퓨터공학과 27

Page 28: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

중간자 다츠의 실제 공격

앨리스는 암호화된 메시지 𝑀: 𝐸(𝐾2, 𝑀) 을 밥에게 보낸다.

다츠는 암호화된 이 메시지를 가로챈 다음 복호화하여 𝑀 을 얻는다.

다츠는 밥에게 𝐸(𝐾1, 𝑀) 혹은 𝐸(𝐾1, 𝑀′) 를 보낸다. 여기서 𝑀′는 𝑀과는 다른 메시지

도청 또는 변조

목포해양대 해양컴퓨터공학과 28

Page 29: 제3장 공개키 암호와 3.5 공개키 암호 알고리즘lily.mmu.ac.kr/lecture/16is/ch03-5.pdf · 보다 작은 임의의 정수 와 의 원시근 에 대해서 다음을 만족하는

기타 공개키 암호 알고리즘

디지털 서명 표준

(DSS: Digital Signature Standard)

서명기능만 제공

암호나 키 교환에 사용 못함

타원곡선 암호

(ECC: Elliptic-Curve Cryptography)

비트 수가 적어서 계산속도가 빠르다

신뢰성이 RSA보다 낮다

목포해양대 해양컴퓨터공학과 29