Diffie-Hellman 키 교환과 공개 채널의 공유 비밀

Diffie-Hellman 키 교환의 이산 로그 기반 원리, 공유키 계산 과정, 중간자 공격 위험과 ECDH·인증 결합 방식을 정리한다.

2026-08-14 · 최초 발행 2025-05-23

공개 채널에서 키를 보내지 않는 방식

Diffie-Hellman 알고리즘은 안전하지 않은 통신 채널에서도 두 당사자가 암호화 키를 합의하도록 만든 공개키 암호 시스템이다. 1976년 화이트필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)이 개발했다.

이 방식에서 전송하는 것은 비밀키가 아니다. 각자가 가진 비밀값으로 계산한 공개 정보를 주고받고, 상대의 공개 정보와 자신의 비밀값을 결합해 같은 공유키를 얻는다. 이 구조의 보안 기반은 이산 로그 문제의 계산적 복잡성이다.

이산 로그의 비대칭성이 만드는 보안 경계

충분히 큰 소수 p와 원시근 g가 있을 때, g^x mod p = y라는 식에서 y를 구하는 계산은 가능하지만 x를 역으로 찾는 것은 계산적으로 매우 어렵다. 이산 로그 문제는 바로 이 역방향 계산의 어려움을 말한다.

Diffie-Hellman은 이 차이를 이용한다. 공개된 값만 관찰하는 제3자는 개인 비밀값을 알아내기 어렵고, 교환 당사자는 자신의 비밀값을 사용해 공유 비밀을 계산할 수 있다.

공개값을 교환해 동일한 비밀을 계산하는 과정

앨리스앨리스공개 파라미터: 소수 p, 원시근 g양쪽 모두 동일한 공유키 = g^(ab) mod p 보유개인키 a 선택개인키 b 선택A = g^a mod p 계산B = g^b mod p 계산A 값 전송B 값 전송공유키 = B^a mod p 계산공유키 = A^b mod p 계산

두 당사자는 먼저 큰 소수 p와 원시근 g를 공개 파라미터로 합의한다. 앨리스는 개인 비밀키 a를, 밥은 개인 비밀키 b를 선택한다.

각자는 공개키를 계산한다. 앨리스의 공개키는 A = g^a mod p이고, 밥의 공개키는 B = g^b mod p다. 이후 A와 B만 서로 전송한다.

공개키를 받은 뒤 앨리스는 K = B^a mod p = (g^b)^a mod p = g^(ab) mod p를 계산한다. 밥도 K = A^b mod p = (g^a)^b mod p = g^(ab) mod p를 계산한다. 두 결과가 같으므로, 두 사람은 같은 비밀키를 갖게 된다.

작은 수로 보는 계산 예시

실제 환경에서는 매우 큰 값을 사용하지만, 계산 구조는 작은 수로도 확인할 수 있다.

  • 공개 파라미터: p = 23, g = 5
  • 앨리스의 개인키: a = 6
  • 밥의 개인키: b = 15

앨리스의 공개키는 A = 5^6 mod 23 = 15,625 mod 23 = 8이다. 밥의 공개키는 B = 5^15 mod 23 = 30,517,578,125 mod 23 = 19가 된다.

앨리스는 19^6 mod 23 = 47,045,881 mod 23 = 2를 계산한다. 밥 역시 8^15 mod 23 = 35,184,372,088,832 mod 23 = 2를 계산한다. 공개 채널을 사용했어도 두 사람은 비밀키 2를 공유한다.

인증이 없을 때 생기는 중간자 공격

Diffie-Hellman 자체는 상대가 누구인지 확인하지 않는다. 이 때문에 중간자 공격(Man-in-the-Middle Attack)에 노출될 수 있다.

이브(공격자)앨리스이브(공격자)앨리스앨리스와 이브의 공유키: g^(ae) mod p이브와 밥의 공유키: g^(be) mod pA = g^a mod pE_A = g^e mod pB = g^b mod pE_B = g^e mod p

앨리스가 밥에게 공개키 A를 보내는 사이 이브가 메시지를 가로챈다고 가정한다. 이브는 밥에게 자신의 공개키 E_A를 보내고, 앨리스에게도 자신의 공개키 E_B를 보낸다.

앨리스는 밥과 g^(ab) mod p를 공유한다고 생각하지만 실제로는 이브와 g^(ae) mod p를 공유한다. 밥도 앨리스가 아닌 이브와 g^(be) mod p를 공유하게 된다. 이브는 앨리스의 메시지를 자신의 키 g^(ae) mod p로 해독한 뒤, 밥의 키 g^(be) mod p로 다시 암호화해 전달할 수 있다.

Diffie-Hellman에서 이어진 암호 기술

ElGamal 암호 시스템은 Diffie-Hellman의 개념을 확장해 암호화와 복호화를 가능하게 한 방식이다. 이산 로그 문제를 기반으로 하며, 공개키 암호화와 디지털 서명에 활용된다. 무작위성을 더해 동일한 평문도 서로 다른 암호문으로 암호화한다.

타원곡선 Diffie-Hellman(ECDH)은 타원곡선 암호화(ECC)를 적용한 키 교환 방식이다. 타원곡선 위의 이산 로그 문제를 활용하며, RSA나 기존 Diffie-Hellman보다 짧은 키 길이로 동등한 보안을 제공한다. 모바일 장치처럼 자원이 제한된 환경에 적합하고 TLS, SSH 등 다양한 보안 프로토콜에서 활용된다.

중간자 공격을 막기 위해서는 키 교환에 인증을 결합해야 한다. Station-to-Station 프로토콜과 MQV(Menezes-Qu-Vanstone) 프로토콜이 그 예이며, 디지털 서명이나 인증서를 이용해 상대의 신원을 확인한다.

보안 통신에서의 활용 위치

Diffie-Hellman 키 교환은 TLS/SSL에서 HTTPS 세션 키를 교환할 때 사용된다. IPsec에서는 VPN 연결 설정에, SSH에서는 원격 서버 접속 보안에 활용된다.

Signal 프로토콜은 WhatsApp, Signal 등의 E2E 암호화 메시징 앱에서 사용되며, 블록체인에서는 암호화폐 거래 보안에도 활용된다.

키 교환의 수학적 안전성만으로 통신 전체가 보호되지는 않는다. 인증 메커니즘 없이 사용하면 중간자 공격이 가능하며, 충분히 큰 키 크기와 적절한 매개변수 선택도 보안 강도를 결정한다.

Diffie-Hellman키 교환공개키 암호이산 로그중간자 공격ECDH