처음 만난 두 사람이 모두가 듣고 있는 자리에서 대화하면서도 둘만 아는 비밀 키를 만들 수 있을까요. 디피-헬만 키 교환이 바로 그 방법입니다. 1976년 Diffie와 Hellman이 발표한 공개키 암호의 출발점이고, 오늘날 TLS, IPsec(IKE), SSH의 키 합의에 쓰입니다. 정보보안기사 필기·실기 모두에서 계산 문제와 취약점 서술로 나옵니다.
디피-헬만은 공개된 값만 주고받아 같은 비밀 키를 만드는 키 합의 방식
정의: 공개된 큰 소수 p와 생성원 g를 정해 두고, 각자 비밀값을 골라 g의 거듭제곱을 p로 나눈 나머지만 교환한 뒤, 상대 값에 자기 비밀값을 지수로 적용해 같은 공유 비밀을 얻는 키 합의(Key Agreement) 프로토콜입니다.
- 핵심 키워드: 이산 로그 문제, 키 합의, 모듈러 거듭제곱, 중간자 공격, DHE·ECDHE, 전방 비밀성
- 주의: 데이터를 암호화하는 알고리즘이 아니라 대칭키를 만들어 내는 절차입니다. 실제 데이터 암호화는 합의한 키로 AES 등이 맡습니다.
p=23, g=5로 직접 계산해 보면

- 공개 값: p = 23, g = 5
- Alice는 비밀값 a = 6을 골라 A = 5^6 mod 23 = 8을 보낸다.
- Bob은 비밀값 b = 15를 골라 B = 5^15 mod 23 = 19를 보낸다.
- Alice: K = 19^6 mod 23 = 2, Bob: K = 8^15 mod 23 = 2. 둘 다 g^(ab) mod p이므로 같다.
위 값은 코드로 검산했습니다. 도청자는 p, g, 8, 19를 알지만 8에서 a=6을 거꾸로 구하려면 이산 로그 문제를 풀어야 합니다. 예시처럼 작은 수는 쉽게 풀리지만, 실제로 쓰는 2048비트 이상의 소수에서는 현실적으로 불가능하다고 봅니다.
안전성의 근거와 가장 큰 약점
| 구분 | 내용 |
|---|---|
| 안전성 근거 | 이산 로그 문제(DLP)와 g^a, g^b로부터 g^ab를 구하기 어렵다는 계산 디피-헬만 가정 |
| 가장 큰 약점 | 상대가 누구인지 확인하는 인증이 없어 중간자 공격(MITM)에 취약 |
| 기타 위험 | 너무 작은 p 사용, 검증되지 않은 파라미터, 구현상 부채널 공격 |
중간자 공격은 이렇게 성립한다
공격자 Mallory가 중간에서 Alice에게는 Bob인 척, Bob에게는 Alice인 척 자기 공개값을 보냅니다. 그러면 Alice-Mallory, Mallory-Bob 두 개의 키가 따로 생기고, Mallory는 오가는 내용을 복호화해 읽거나 바꾼 뒤 다시 암호화해 전달할 수 있습니다. 양쪽 모두 정상 통신이라고 믿게 됩니다.
실제 프로토콜은 인증과 일회성 키로 보완한다
| 대응 | 방법 | 효과 |
|---|---|---|
| 인증된 DH | 공개값에 전자서명, 인증서(PKI)로 상대 확인 | 중간자 공격 차단 |
| DHE / ECDHE | 세션마다 비밀값을 새로 생성(Ephemeral) | 전방 비밀성(PFS): 장기 키가 유출돼도 과거 세션 보호 |
| ECDH | 타원곡선 위에서 같은 원리 적용 | 짧은 키로 같은 수준 보안, 연산 효율 |
TLS 1.3은 정적 RSA 키 교환을 없애고 (EC)DHE 기반 키 합의만 남겨 전방 비밀성을 기본으로 제공합니다.
답안에서 놓치기 쉬운 포인트
- RSA는 암호화·서명이 가능하지만 DH는 키 합의 전용이라는 차이를 분명히 쓰세요.
- 중간자 공격 대응으로 암호 강도를 올리는 것은 답이 아닙니다. 핵심은 인증입니다.
- 양자 컴퓨터가 실용화되면 이산 로그 기반 방식이 위협받기 때문에 양자 내성 암호(PQC) 키 합의로의 전환이 논의된다는 점을 덧붙이면 깊이가 생깁니다.
시험 직전 한 줄 요약
디피-헬만은 g^a mod p, g^b mod p만 교환해 g^ab mod p를 공유하는 키 합의로 이산 로그 문제에 안전성을 두며, 인증이 없어 중간자 공격에 약하므로 서명·인증서와 DHE·ECDHE로 보완합니다.
학습용 정리이며 실제 시험 문항과 다를 수 있습니다. 출제 기준은 한국인터넷진흥원(KISA) 공지를 확인하세요. 그림은 이해를 돕기 위한 개념도와 예시이며, 설정 예시는 운영 환경에 그대로 적용하기 전에 검토가 필요합니다.