PromleeBlog
sitemap
aboutMe
Menu
Welcome to
✨ Promlee Blog ✨
View 📈
Total: -
Today: -
추천 포스트
개인학습
정보보호이론
공개 키 암호화
디피-헬만 키 교환
디피-헬만 키 교환
Diffie-Hellman Key Exchange
📅
🚀 키 교환
🚀 디피-헬만 키 교환
✅ 예시
🚀 디피-헬만 키 교환의 보안성
🚀 중간자 공격 시나리오
🚀 중간자 공격 설명 & 예방
✅ 설명
✅ 예방
🚀
키 교환 (Key Exchange)
🔗
통신을 위한 공통 키를 안전하게 교환하는 방법
앨리스와 밥은
공개 채널
을 통해 데이터 교환을 사용하여 공유된 비밀 키 생성
앨리스와 밥을 제외한 제3자는 공개 채널을 통해 전송된 데이터를 가로채도 키를 알 수 없음
🚀
디피-헬만 키 교환 (Diffie-Hellman Key Exchange)
🔗
공개 키 암호화 방식 중 하나로, 비밀 키를 안전하게 교환하는 방법
사전 공유된 매개변수: 소수
p
p
p
, 원시근
g
g
g
이 있는 유한 군
Z
p
∗
\mathbb{Z}_p^*
Z
p
∗
앨리스와 밥의 행동
앨리스
비밀 키
a
a
a
를 생성
A
=
g
a
(
m
o
d
p
)
A = g^a \pmod{p}
A
=
g
a
(
mod
p
)
를 계산하여 밥에게 전송
B
B
B
를 수신
K
A
B
=
B
a
(
m
o
d
p
)
K_{AB} = B^a \pmod{p}
K
A
B
=
B
a
(
mod
p
)
를 계산
밥
비밀 키
a
a
a
를 생성
B
=
g
b
(
m
o
d
p
)
B = g^b \pmod{p}
B
=
g
b
(
mod
p
)
를 계산하여 앨리스에게 전송
B
B
B
를 앨리스에게 전송
A
A
A
를 수신
K
B
A
=
A
b
(
m
o
d
p
)
K_{BA} = A^b \pmod{p}
K
B
A
=
A
b
(
mod
p
)
를 계산
K
A
B
=
B
a
=
(
g
b
)
a
=
g
a
b
=
(
g
a
)
b
=
A
b
=
K
B
A
K_{AB} = B^a = (g^b)^a = g^{ab} = (g^a)^b = A^b = K_{BA}
K
A
B
=
B
a
=
(
g
b
)
a
=
g
ab
=
(
g
a
)
b
=
A
b
=
K
B
A
✅
예시 (디피-헬만 키 교환)
🔗
p
=
31
p = 31
p
=
31
,
g
=
3
g = 3
g
=
3
앨리스
비밀 키
a
=
6
a = 6
a
=
6
를 생성
A
=
3
6
(
m
o
d
31
)
=
729
(
m
o
d
31
)
=
16
A = 3^6 \pmod{31} = 729 \pmod{31} = 16
A
=
3
6
(
mod
31
)
=
729
(
mod
31
)
=
16
를 계산하여 밥에게 전송
B
=
20
B = 20
B
=
20
를 수신,
K
A
B
=
20
6
(
m
o
d
31
)
=
64000000
(
m
o
d
31
)
=
4
K_{AB} = 20^6 \pmod{31} = 64000000 \pmod{31} = 4
K
A
B
=
2
0
6
(
mod
31
)
=
64000000
(
mod
31
)
=
4
를 계산
밥
비밀 키
b
=
8
b = 8
b
=
8
를 생성
B
=
3
8
(
m
o
d
31
)
=
4
,
294
,
967
,
296
(
m
o
d
31
)
=
4
B = 3^8 \pmod{31} = 4,294,967,296 \pmod{31} = 4
B
=
3
8
(
mod
31
)
=
4
,
294
,
967
,
296
(
mod
31
)
=
4
를 계산하여 앨리스에게 전송
A
=
16
A = 16
A
=
16
를 수신,
K
B
A
=
16
8
(
m
o
d
31
)
=
4
,
294
,
967
,
296
(
m
o
d
31
)
=
4
K_{BA} = 16^8 \pmod{31} = 4,294,967,296 \pmod{31} = 4
K
B
A
=
1
6
8
(
mod
31
)
=
4
,
294
,
967
,
296
(
mod
31
)
=
4
를 계산
키 교환 결과
K
A
B
=
4
K_{AB} = 4
K
A
B
=
4
K
B
A
=
4
K_{BA} = 4
K
B
A
=
4
🚀
디피-헬만 키 교환의 보안성 (Security of Diffie-Hellman Key Exchange)
🔗
중간자 공격
이브는 앨리스와 밥 사이의 비밀 키를 알고 싶어한다.
K
A
B
=
K
B
A
K_{AB} = K_{BA}
K
A
B
=
K
B
A
이브는
(
p
,
g
)
,
(
A
=
g
a
m
o
d
p
)
,
(
B
=
g
b
m
o
d
p
)
(p, g), (A = g^a \mod p), (B = g^b \mod p)
(
p
,
g
)
,
(
A
=
g
a
mod
p
)
,
(
B
=
g
b
mod
p
)
를 가지고 있다.
이브가 앨리스의 비밀 키
a
a
a
또는 밥의 비밀 키
b
b
b
를 알고 있다면
K
A
B
=
B
a
=
(
g
b
)
a
=
g
a
b
=
(
g
a
)
b
=
A
b
=
K
B
A
K_{AB} = B^a = (g^b)^a = g^{ab} = (g^a)^b = A^b = K_{BA}
K
A
B
=
B
a
=
(
g
b
)
a
=
g
ab
=
(
g
a
)
b
=
A
b
=
K
B
A
위의 식으로 인해 이브는
K
A
B
K_{AB}
K
A
B
를 계산할 수 있다.
DLP(Diffie-Hellman Problem)이 어려운 문제이기 때문에 이브는
a
a
a
또는
b
b
b
를 계산할 수 없다.
👨💻
디피-헬만 계산 문제 (CDH, Computational Diffie-Hellman)
(
g
,
g
a
,
g
b
)
(g, g^a, g^b)
(
g
,
g
a
,
g
b
)
가 주어졌을 때
g
a
b
g^{ab}
g
ab
를 계산하는 문제
비공식적으로, CDH 문제의 어려움은 DLP의 어려움과 동등하며, 기본 군의 차수가 소수일 때 적용된다.
🚀
중간자 공격 시나리오 (Man-in-the-Middle Attack Scenario)
🔗
앨리스와 밥이 키 교환을 수행
이브는 앨리스와 밥 사이에 있음
앨리스에게
g
e
g^e
g
e
를 전송
밥에게
g
f
g^f
g
f
를 전송
앨리스와 밥은
g
e
f
g^{ef}
g
e
f
를 계산
이브는
g
e
f
g^{ef}
g
e
f
를 계산하여 앨리스와 밥 사이의 통신을 가로챔
🚀
중간자 공격 설명 & 예방 (Man-in-the-Middle Attack Description & Prevention)
🔗
✅
설명 (중간자 공격)
🔗
이브가 개인 키
e
e
e
를 생성하고
E
=
g
e
m
o
d
p
E = g^e \mod p
E
=
g
e
mod
p
를 계산
앨리스와 밥이 각각
A
A
A
와
B
B
B
를 서로에게 전송
이브는 이를 가로채고, 모두에게
E
E
E
를 전송
앨리스와 밥은
E
E
E
를 수신하고,
K
A
E
=
E
a
=
g
e
a
m
o
d
p
K_{AE} = E^a = g^{ea} \mod p
K
A
E
=
E
a
=
g
e
a
mod
p
,
K
B
E
=
E
b
=
g
e
b
m
o
d
p
K_{BE} = E^b = g^{eb} \mod p
K
BE
=
E
b
=
g
e
b
mod
p
를 계산
나중에 앨리스가
C
=
Enc
(
K
A
E
,
M
)
C = \text{Enc}(K_{AE}, M)
C
=
Enc
(
K
A
E
,
M
)
을 밥에게 보내면, 밥은 이를 해독할 수 없음
이브는
K
E
A
=
A
e
=
(
g
a
)
e
m
o
d
p
K_{EA} = A^e = (g^a)^e \mod p
K
E
A
=
A
e
=
(
g
a
)
e
mod
p
를 사용하여
M
M
M
을 얻을 수 있다.
✅
예방 (중간자 공격)
🔗
인증서 사용
예를 들어, 앨리스와 밥이 서로의 공개 키 서명과 함께 보내서 서로의 공개 키를 확인할 수 있도록 함
➡️
정리 (중간자 공격)
🔗
디피-헬만 키 교환은 중간자 공격에 취약
이브가 앨리스와 밥 사이의 통신을 가로챌 수 있음
중간자 공격을 방지하기 위해 인증서를 사용