# 디피-헬만 키 교환 (Diffie-Hellman Key Exchange)

디피-헬만 키 교환(Diffie-Hellman Key Exchange)은 도청될 수 있는 공개 채널에서 두 당사자가 비밀을 직접 주고받지 않고도 같은 공유 비밀 키를 계산하는 방법입니다. 1976년 휫필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)이 논문 「New Directions in Cryptography」에서 발표했으며, 공개적으로 발표된 최초의 공개 키 프로토콜이자 공개 키 암호의 출발점으로 평가됩니다.

## 자세히 알아보기

양쪽은 먼저 공개 파라미터(군과 생성원 g)를 합의합니다. 앨리스는 비밀 a를 골라 A = gᵃ를, 밥은 비밀 b를 골라 B = gᵇ를 상대에게 보냅니다. 앨리스는 Bᵃ = gᵃᵇ, 밥은 Aᵇ = gᵃᵇ를 계산하므로 같은 값을 얻습니다. 도청자는 g, A, B를 모두 보지만 gᵃᵇ를 계산하려면 이산 로그 문제(또는 계산 디피-헬만 문제)를 풀어야 합니다. 이렇게 얻은 공유 비밀은 보통 HKDF 같은 키 유도 함수를 거쳐 AES-GCM이나 ChaCha20-Poly1305의 세션 키가 됩니다.

오늘날에는 타원곡선 위에서 같은 원리를 쓰는 ECDH가 주로 쓰이며, 특히 X25519(RFC 7748)가 사실상 표준입니다. 매 세션마다 새 키 쌍을 만드는 '임시(ephemeral)' 방식(ECDHE)을 쓰면, 나중에 장기 키가 유출되어도 과거 대화를 복호화할 수 없는 순방향 비밀성(forward secrecy)을 얻습니다. TLS 1.3은 정적 RSA·정적 DH 키 교환을 없애, 공개 키 기반 키 교환은 모두 임시(EC)DHE 방식으로만 이루어집니다.

기본 디피-헬만은 상대가 누구인지 인증하지 않습니다. 중간에서 양쪽과 각각 키를 교환하는 중간자 공격(MITM)에 취약하므로, 인증서나 전자서명으로 공개 값을 인증해야 합니다. 또한 받은 공개 값이 올바른 군의 원소인지 검사하지 않으면 작은 부분군·무효 곡선 공격으로 비밀이 샐 수 있습니다.

## 블록체인·암호화폐에서는

Bitcoin 라이트닝 네트워크의 노드 간 암호화 연결(BOLT 8, Noise 프로토콜)은 secp256k1 위 ECDH로 키를 합의합니다. Ethereum의 스텔스 주소 표준(ERC-5564)과 Monero의 일회용 주소도 송신자의 임시 키와 수신자의 공개 키로 ECDH를 계산해 수신자만 알아볼 수 있는 주소를 만듭니다. 거래소와 지갑 앱의 HTTPS 연결 역시 ECDHE로 세션 키를 정합니다.

## 쉽게 말하면

두 사람이 각자 비밀 물감을 공통 물감에 섞어 교환한 뒤, 받은 색에 자기 비밀 물감을 다시 섞으면 같은 색이 나옵니다. 중간에서 섞인 색만 본 사람은 원래 비밀 물감을 분리해 내지 못합니다.

---
출처: https://achivx.kr/glossary/diffie-hellman-key-exchange-%EB%94%94%ED%94%BC-%ED%97%AC%EB%A7%8C-%ED%82%A4-%EA%B5%90%ED%99%98/ · ACHIVX 용어 사전 · 수정일 2026-10-20
