제3장 공개키 암호와 3.5 공개키 암호...
TRANSCRIPT
3.5 공개키 암호 알고리즘
제3장. 공개키 암호와 메시지 인증
목포해양대 해양컴퓨터공학과 1
RSA 공개키 암호 알고리즘
목포해양대 해양컴퓨터공학과 2
RSA
송신자와 수신자 모두는 𝑛 과 𝑒 를 알고 있어야 하고, 오직 수신자만이 𝑑 값을 알고 있어야 한다.
공개키 𝑃𝑈 = {𝑒, 𝑛}
개인키 𝑃𝑅 = {𝑑, 𝑛}
목포해양대 해양컴퓨터공학과 3
RSA 공개키 암호 요구 조건
1. 𝑛 보다 작은 모든 정수 𝑀 에 대해서 𝑀 = 𝑀𝑒𝑑 𝑚𝑜𝑑 𝑛 을 만족하는 값 𝑒, 𝑑, 𝑛 을 구할 수 있어야 한다.
2. 𝑛 보다 작은 모든 정수 𝑀 에 대해서 𝑀𝑒와 𝐶𝑑를 구하는 것이 비교적 쉬워야 한다.
3. 𝑒 와 𝑛 이 주어졌을 때 𝑑 를 구하는 것이 불가능해야 한다.
목포해양대 해양컴퓨터공학과 4
RSA 알고리즘(키 생성)
𝜙(𝑛): 오일러(Euler) 함수로서 𝑛 보다 작으면서 𝑛 과 서로소인 양의 정수의
개수를 나타낸다.
목포해양대 해양컴퓨터공학과 5
RSA 알고리즘(암호화/복호화)
목포해양대 해양컴퓨터공학과 6
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
RSA 알고리즘 예
공개키:𝑃𝑈 = {7, 187}
개인키:𝑃𝑅 = {23, 187}
평문 𝑀 = 88을 암호화 해보자
𝐶 = 887 𝑚𝑜𝑑 187을 계산
목포해양대 해양컴퓨터공학과 8
암호화 단계
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
복호화
복호화
𝑀 = 1123 𝑚𝑜𝑑 187를 계산
목포해양대 해양컴퓨터공학과 10
복호화 단계
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
RSA 알고리즘을 깨는 방법
전수공격
가능한 모든 개인키를 시도
𝑒와 𝑑의 비트 수가 크면 클수록 알고리즘은 안전
𝑛을 두 개의 소인수의 곱으로 인수분해
효과적 인수분해 방법 없음
대부분의 RSA 응용에 1024-비트 키(대략 300자리 10진수)를 사용하고 있어서 충분히 안전
목포해양대 해양컴퓨터공학과 12
Diffie-Hellman 키교환
Diffie-Hellman 키교환(key exchange)
두 사용자가 비밀키(대칭키)를 안전하게 교환해서 메시지를 암호화하려는 목적
이산 대수 문제(discrete logarithms problem)를 푸는 것이 어렵다는 데 근거
목포해양대 해양컴퓨터공학과 13
이산대수문제
소수 𝑝의 원시근(primitive root)
자신의 거듭제곱을 이용하면 1부터 𝑝 −1까지의 정수를 모두 생성해 낼 수 있는 수
어떤 수 𝑎가 소수 𝑝의 한 원시근 이라면, 다음 수
𝑎 mod 𝑝, 𝑎2 mod 𝑝, … , 𝑎𝑝−1mod 𝑝
은 서로 다르고 정수 1부터 𝑝 − 1까지의 수를 치환해놓은 것과 같다.
목포해양대 해양컴퓨터공학과 14
이산대수문제
𝑝보다 작은 임의의 정수 𝑏와 𝑝의 원시근 𝑎에 대해서 다음을
만족하는 유일한 지수 𝑖를 찾을 수 있다.
𝑏 = 𝑎𝑖mod 𝑝, 여기서 0 ≤ 𝑖 ≤ 𝑝 − 1
여기에서 지수(exponent) 𝑖를 밑수 𝑎를 갖는 𝑏의
이산대수(discrete logarithm) 혹은 지수(index)라고 한다. 이
수를
𝑖 = dlog𝑎,𝑝(𝑏)
라고 쓴다.
목포해양대 해양컴퓨터공학과 15
Diffie Hellman 알고리즘
양측 A와 B에게 주어진 정보:
하나의 소수 𝑞와 𝑞의 한 원시근 𝛼
A는 한 랜덤넘버 𝑋𝐴 < 𝑞를 선택하고𝑌𝐴 =𝛼𝑋𝐴mod 𝑞 를 계산
B는 한 랜덤넘버 𝑋𝐵 < 𝑞를 선택하고𝑌𝐵 =𝛼𝑋𝐵mod 𝑞 를 계산
양측은 𝑋를 개인값으로 보관하고 𝑌를 상대방이 사용할 수 있도록 공개
목포해양대 해양컴퓨터공학과 16
Diffie Hellman 알고리즘 A는 𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞를 이용해서 키 계산 B는 𝐾 = (𝑌𝐴)𝑋𝐵mod 𝑞를 이용해서 키 계산
𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞 = (𝛼𝑋𝐵mod 𝑞)𝑋𝐴mod 𝑞
= (𝛼𝑋𝐵)𝑋𝐴 mod 𝑞 = 𝛼𝑋𝐵𝑋𝐴 mod 𝑞 = 𝛼𝑋𝐴𝑋𝐵 mod 𝑞
= (𝛼𝑋𝐴)𝑋𝐵 mod 𝑞 = (𝛼𝑋𝐴mod 𝑞)𝑋𝐵mod 𝑞
= (𝑌𝐴)𝑋𝐵mod 𝑞=K
목포해양대 해양컴퓨터공학과 17
Diffie-Hellman 키 교환 알고리즘
목포해양대 해양컴퓨터공학과 18
공격자에게 주어지는 정보
알 수 없는 정보: 𝑋𝐴, 𝑋𝐵
알 수 있는 정보: 𝑞, 𝛼, 𝑌𝐴, 𝑌𝐵
A, B의 비밀값 𝑋𝐴, 𝑋𝐵 를 알려면 공격자는 반드시 이산대수문제를 풀어야 한다.
𝑋𝐴 = dlog𝛼,𝑞(𝑌𝐴)
𝑋𝐵 = dlog𝛼,𝑞(𝑌𝐵)
아는 값 알고 싶은 값
목포해양대 해양컴퓨터공학과 19
Diffie Hellman 키교환 예
하나의 소수 𝑞 = 353, 𝑞의 한 원시근 𝛼 = 3
A는 한 랜덤넘버 𝑋𝐴 = 97 < 353 선택𝑌𝐴 =𝛼𝑋𝐴mod 𝑞 = 397mod 353 = 40 계산
B는 한 랜덤넘버 𝑋𝐵 = 233 < 353 선택𝑌𝐵 = 𝛼𝑋𝐵mod 𝑞 = 3233mod 353 =248 계산
A와 B는 𝑌𝐴 와 𝑌𝐵를 교환
목포해양대 해양컴퓨터공학과 20
Diffie Hellman 키교환 예
A가 하는 계산:
𝐾 = (𝑌𝐵)𝑋𝐴mod 𝑞 = (248)97mod 353 = 160
B가 하는 계산 :
𝐾 = (𝑌𝐴)𝑋𝐵mod 𝑞 = (40)233mod 353 = 160
목포해양대 해양컴퓨터공학과 21
Diffie Hellman 키교환 예에 대한 공격
공격자가 가진 정보: 𝑞 = 353; 𝛼 = 3; 𝑌𝐴 = 40; 𝑌𝐵 = 248
공격자가 할 수 있는 계산
3𝑎mod 353 = 40
3𝑏mod 353 = 248
의 해를 구한다. 즉, 다음 이산대수를 구한다 𝑎 = dlog3,353(40)
𝑏 = dlog3,353(243)
목포해양대 해양컴퓨터공학과 22
Diffie-Hellman 키 교환 절차
목포해양대 해양컴퓨터공학과 23
키교환 프로토콜
A: (𝑋𝐴, 𝑌𝐴)
LAN 사용자 그룹
모든 LAN 사용자에게 공개
비밀
공개
Z: (𝑋𝑍, 𝑌𝑍)
B: (𝑋𝐵 , 𝑌𝐵) C: (𝑋𝐶 , 𝑌𝐶)
공개
비밀
소수 𝑞, 𝑞의 한 원시근 𝛼
목포해양대 해양컴퓨터공학과 24
중간자 공격 (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
중간자 공격 (2)
밥과 앨리스는 자신이 공통의 비밀키를 공유하고 있다고 생각한다.
밥과 다츠가 공유하는 것: 비밀키 K1
앨리스와 다츠가 공유하는 것: 비밀키 K2
목포해양대 해양컴퓨터공학과 26
중간자 공격 (3)
목포해양대 해양컴퓨터공학과 27
중간자 다츠의 실제 공격
앨리스는 암호화된 메시지 𝑀: 𝐸(𝐾2, 𝑀) 을 밥에게 보낸다.
다츠는 암호화된 이 메시지를 가로챈 다음 복호화하여 𝑀 을 얻는다.
다츠는 밥에게 𝐸(𝐾1, 𝑀) 혹은 𝐸(𝐾1, 𝑀′) 를 보낸다. 여기서 𝑀′는 𝑀과는 다른 메시지
도청 또는 변조
목포해양대 해양컴퓨터공학과 28
기타 공개키 암호 알고리즘
디지털 서명 표준
(DSS: Digital Signature Standard)
서명기능만 제공
암호나 키 교환에 사용 못함
타원곡선 암호
(ECC: Elliptic-Curve Cryptography)
비트 수가 적어서 계산속도가 빠르다
신뢰성이 RSA보다 낮다
목포해양대 해양컴퓨터공학과 29