본문 바로가기

CS/정보보호

[정보보호] Diffie-Hellman Key exchange

Diffie-Hellman 방식은 public key distribution scheme이지, arbitrary message를 교환하는데에 사용할 수 없지만 대신 common key를 생성할 수 있다. 이 common key 값은 participant에 달려있으며, 키를 교환하는 두 participant만 값을 서로 알 수 있다. finite Galois field 내에서 exponentiation으로 생성된 암호들은 풀기 쉽지만, Diffie-hellman 방식은 discrete logarithm이 풀기 어렵다는 것에 착안하여 만들어진 키 교환 방식이기 때문에 풀기 어렵다. 

 

이는 1 session 과정으로, 브라우저 접속 후 웹사이트 접속 시 브라우저와 서버가 통신하여 key exchange를 한다. 그 후 접속을 다시 하면 이 과정을 반복하여 "새로운 session key" 를 얻는데, 이를 ephimeral 하다고 한다. 


Attacker이 알 수 있는 정보에는 YA, YB, q, α가 있다. 

decrypt를 위해서는 최소 XA나 XB가 필요한데, 이 둘을 모른다면 discrete logarithm이나 brute force를 해야 하는데 이는 infeasible 하다. 

 

<예시>

 

Key Exchange Protocols

1. communicate 할 때마다 private/public DH key 생성

2. private/public DH key를 생성한 후 directory에 publish. -> group of users의 경우

 

두 방법 모두 man-in-the middle attack에 취약하므로, 교환된 키의 authentication이 필수적이다. 

중간자는 앨리스와 밥 간의 모든 메시지를 가로채고, 앨리스와 함께 session key 계산 / 밥과 함께 session key 계산을 한다. 즉, 중간자는 앨리스와 밥 간의 모든 메시지를 가로채고, 해독하여 내용을 확인하거나 변경한 후 전달할 수 있다.

Man-in-the-middle attack은 두개의 public-private key pair이 있을 때 일어나는 protocol attack이다. 1개의 key pair이 사용되는 경우에는, 앨리스나 밥 중 어느 한 쪽에 대한 공격은 성공할지 몰라도, 양쪽을 동시에 제어하는 데에는 어려움이 있을 것이다.