Shine's dev log

Diffie-Hellman 알고리즘 본문

보안

Diffie-Hellman 알고리즘

dong1 2020. 5. 28. 00:53

1. Diffie-Hellman 알고리즘이란?

 

DH 알고리즘은 다음과 같이 설명할 수 있다.

 

상대방의 공개키와 나의 개인키를 이용해 둘만의 세션키를 만드는 것

 

즉, 키교환 알고리즘으로 사용되며, 직접적으로 메시지를 암호화하거나 인증을 할 때 사용하는 것은 아니다.

 

 

DH 알고리즘의 가장 핵심적인 부분은, Discrete Logarithm Problem이다.

 

 

Discrete Logarithm 문제는 만약 g, x, p를 안다면 y를 구하기는 쉽지만

 

y, g, p를 안다면 x를 구하기는 어렵다는 문제이다.

 

 

 

2. Diffie-Hellman 알고리즘의 원리

 

우선 이 영상을 보면 DH 알고리즘에대해 감을 잡을 수 있을 것이다.

 

https://www.youtube.com/watch?time_continue=271&v=MsqqpO9R5Hc&feature=emb_title

 

 

DH의 알고리즘은 다음과 같이 동작한다.

 

Alice와 Bob이 통신을 한다고 가정하자.

 

1. 소수 Ng는 이미 모두에게 공개되어있다고 하자. (N과 g는 공개키이다.)

 

2. Alice는 4를 고르고, Bob는 3을 고른다. (4와 3은 비밀키이다.)

 

3. 

 

이제, Alice와 Bob은 N,g 그리고 자신의 비밀키로 계산하여 결과값 5, 8을 얻는다.

 

그리고 마지막으로 서로의 결과값을 공유하고, 자신의 비밀키로 한번 더 계산하여 같은 값을 얻을 수 있다.

 

여기서 중요한 점은, 공격자는 mod연산의 결과인 5와 8을 가지고 Alice와 Bob의 비밀키인 4와 3, 혹은 세션키를 얻기 힘들다는 descrete logarithm Problem 을 이용했다는 것이다.

 

공격자 입장에서는 MitM attack을 통해 중간에 메시지를 가로챈다고 해도 g^a mod p와 g^b mod p 밖에 얻을 수 없을 것이다. 따라서 실제 세션키인 g^ab mod p는 얻지 못하고, 가로챈 값 두개를 곱할경우 g^(a+b) mod p 까지는 구할 수 있지만 이는 세션키가 아니다.

 

 

오늘 배운 내용을 정리해보면,

 

1. DH는 상대방의 공개키와 나의 개인키로 세션키를 만드는 과정이다.

 

2. DH는 실제 메시지를 암호화할때 사용하지않고, 세션키를 만들 때 사용한다 (느려서)

 

3. DH는 descrete Logarithm problem을 이용한다.

 

 

본 내용은 공부하며 정리한 것으로 오류가 있을 수 있습니다.