디피-헬만 키 교환 정리, 작은 숫자로 직접 계산해 보고 중간자 공격에 약한 이유까지

처음 만난 두 사람이 모두가 듣고 있는 자리에서 대화하면서도 둘만 아는 비밀 키를 만들 수 있을까요. 디피-헬만 키 교환이 바로 그 방법입니다. 1976년 Diffie와 Hellman이 발표한 공개키 암호의 출발점이고, 오늘날 TLS, IPsec(IKE), SSH의 키 합의에 쓰입니다. 정보보안기사 필기·실기 모두에서 계산 문제와 취약점 서술로 나옵니다.

디피-헬만은 공개된 값만 주고받아 같은 비밀 키를 만드는 키 합의 방식

정의: 공개된 큰 소수 p와 생성원 g를 정해 두고, 각자 비밀값을 골라 g의 거듭제곱을 p로 나눈 나머지만 교환한 뒤, 상대 값에 자기 비밀값을 지수로 적용해 같은 공유 비밀을 얻는 키 합의(Key Agreement) 프로토콜입니다.

  • 핵심 키워드: 이산 로그 문제, 키 합의, 모듈러 거듭제곱, 중간자 공격, DHE·ECDHE, 전방 비밀성
  • 주의: 데이터를 암호화하는 알고리즘이 아니라 대칭키를 만들어 내는 절차입니다. 실제 데이터 암호화는 합의한 키로 AES 등이 맡습니다.

p=23, g=5로 직접 계산해 보면

Alice와 Bob은 8과 19만 공개적으로 주고받고도 같은 값 2를 얻습니다.
  1. 공개 값: p = 23, g = 5
  2. Alice는 비밀값 a = 6을 골라 A = 5^6 mod 23 = 8을 보낸다.
  3. Bob은 비밀값 b = 15를 골라 B = 5^15 mod 23 = 19를 보낸다.
  4. 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) 공지를 확인하세요. 그림은 이해를 돕기 위한 개념도와 예시이며, 설정 예시는 운영 환경에 그대로 적용하기 전에 검토가 필요합니다.

zerg96

Share
Published by
zerg96

Recent Posts

블룸 필터(Bloom Filter) 원리와 거짓 양성률, 원소당 10비트로 오탐 0.8%가 나오는 이유와 쿠쿠 필터 비교

블룸 필터(Bloom Filter)는 "이 값을 본 적이 있는가"라는 질문에 아주 적은 메모리로 답하는 확률적 자료구조다.…

4시간 ago

0/1 배낭 문제와 동적계획법 정리, DP 표를 직접 채워 보고 탐욕법이 실패하는 이유까지

정해진 무게만 담을 수 있는 가방에 가치가 가장 크도록 물건을 고르는 문제는 예산 배분, 서버…

6시간 ago

서울 집값 89주째 상승인데 강남·서초는 -0.3%, 지금 어디가 오르나

서울 아파트값이 89주째 올랐다는 소식과 강남구·서초구가 11주째 내렸다는 소식이 같은 주에 나왔습니다. 모순처럼 보이지만 둘…

11시간 ago

다익스트라 알고리즘 정리, 최단 경로를 한 단계씩 따라가 보고 음수 가중치에서 틀리는 이유까지

내비게이션이 가장 빠른 길을 찾고, 라우터가 패킷을 보낼 경로를 정할 때 바탕에 있는 생각은 같습니다.…

17시간 ago

스래싱(Thrashing) 원인과 해결, CPU 이용률이 갑자기 꺾이는 이유와 워킹셋·PFF 비교

서버에 작업을 하나 더 얹었을 뿐인데 갑자기 전체가 느려지고, 정작 CPU 사용률은 바닥으로 떨어지는 경우가…

18시간 ago

2026년 11월 DIAT 시험 일정 (접수·시험·발표)

11월에 일정이 있는 DIAT 시험을 정리했습니다. 접수, 시험, 합격 발표 날짜를 한 번에 볼 수…

1일 ago