키교환 알고리즘과 Kerberos 인증의 동작 원리

Diffie-Hellman과 Kerberos의 키 분배 방식, 보안 특성, ECDH·양자내성 키교환 동향 및 구현 시 고려사항을 정리한다.

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

공개 채널에서 공유 비밀키를 만드는 방법

키교환 알고리즘은 신뢰할 수 없는 통신 경로를 거쳐 암호화 키를 공유하기 위한 암호학적 프로토콜이다. 통신 당사자는 이 과정을 통해 공유 비밀키를 만들고, 이후 대칭 암호화에 사용한다. 전자상거래와 금융거래, 기업 네트워크의 보안 통신도 이 기반 위에서 동작한다.

Diffie-Hellman으로 공유키를 계산하는 과정

1976년 Whitfield Diffie와 Martin Hellman이 개발한 Diffie-Hellman은 최초의 공개 키교환 프로토콜이다. 이산대수 문제(Discrete Logarithm Problem)를 계산하기 어렵다는 성질을 이용하므로, 당사자들이 사전에 비밀을 공유하지 않았어도 안전한 통신 채널을 확립할 수 있다.

먼저 Alice와 Bob은 큰 소수 p와 원시근(primitive root) g를 공개 매개변수로 합의한다. 이때 1 < g < p다. Alice는 비밀값 a를, Bob은 비밀값 b를 각각 선택한다.

Alice는 A = g^a mod p를 계산해 Bob에게 보내고, Bob은 B = g^b mod p를 계산해 Alice에게 보낸다. 교환이 끝나면 Alice는 s = B^a mod p = (g^b)^a mod p = g^(ab) mod p를, Bob은 s = A^b mod p = (g^a)^b mod p = g^(ab) mod p를 계산한다. 두 결과는 같은 공유 비밀키 s가 된다.

BobAliceBobAlice공개 매개변수: p(소수), g(원시근)양쪽 모두 s = g^(ab) mod p를 얻음비밀값 a 선택비밀값 b 선택A = g^a mod p 계산B = g^b mod p 계산A 전송B 전송공유키 s = B^a mod p 계산공유키 s = A^b mod p 계산

공격자가 공개값 AB를 획득하더라도 비밀값 ab를 쉽게 계산할 수 없다는 점이 핵심이다. 다만 Diffie-Hellman 자체는 중간자 공격(MITM)에 취약할 수 있으므로, 인증 메커니즘과 함께 사용하는 것이 권장된다.

HTTPS(TLS/SSL)의 세션키 교환, SSH(Secure Shell), VPN(Virtual Private Network) 연결 설정, IPsec(Internet Protocol Security) 프로토콜이 이 방식의 활용 영역이다.

티켓으로 인증과 키 분배를 연결하는 Kerberos

Kerberos는 MIT에서 개발된 네트워크 인증 프로토콜이다. 안전하지 않은 네트워크에서도 제3자 인증 서비스를 매개로 클라이언트와 서비스 사이의 신뢰관계를 구축하며, 티켓 기반 인증으로 암호화 키를 안전하게 분배한다.

인증 서버(Authentication Server, AS)는 사용자의 초기 인증을 처리하고 티켓 부여 티켓(TGT)을 발급한다. 티켓 부여 서버(Ticket Granting Server, TGS)는 특정 서비스에 접근하기 위한 서비스 티켓을 발급한다. 키 분배 센터(Key Distribution Center, KDC)는 AS와 TGS를 포함하는 신뢰 기관이며 비밀키 데이터베이스를 유지한다. 클라이언트와 서비스 서버는 네트워크에서 실제 통신을 수행하는 주체다.

클라이언트는 사용자 ID를 포함한 AS_REQ로 인증 서버에 요청한다. AS는 사용자 비밀번호 기반 키로 암호화된 세션키와 TGT를 AS_REP로 제공한다. TGT는 TGS의 키로 암호화되므로 클라이언트는 그 내용을 확인할 수 없다.

이후 클라이언트는 TGT와 목표 서비스 ID를 담은 TGS_REQ를 TGS에 전달한다. TGS는 서비스 티켓과 서비스 세션키를 TGS_REP로 발급하며, 서비스 티켓은 서비스 서버의 키로 암호화된다. 클라이언트는 인증자(Authenticator)와 서비스 티켓을 AP_REQ로 서비스 서버에 전송해 티켓 소유를 증명한다. 필요하면 서비스 서버는 AP_REP로 응답해 상호 인증을 수행한다.

ServerTicket Granting ServerAuthentication ServerClientServerTicket Granting ServerAuthentication ServerClient1. AS_REQ: 사용자 ID2. AS_REP: {세션키}User_Key, {TGT}TGS_Key3. TGS_REQ: {Authenticator}세션키, TGT, 서비스 ID4. TGS_REP: {서비스 세션키}세션키, {서비스 티켓}Server_Key5. AP_REQ: {Authenticator}서비스_세션키, 서비스 티켓6. AP_REP: {타임스탬프+1}서비스_세션키 (선택적)

이 구조는 비밀번호가 네트워크로 전송되는 것을 막고, 세션키 기반 통신 암호화를 지원한다. 티켓에 유효 기간을 명시해 재사용 공격을 방지하며 상호 인증(Mutual Authentication)도 지원한다.

Windows Active Directory 도메인 인증, 대규모 기업 네트워크의 사용자 관리, 단일 로그온(Single Sign-On) 시스템, Unix/Linux 시스템의 인증 메커니즘에서 활용된다.

양자내성 방식과 ECDH의 확장

양자내성 키교환(Post-Quantum Key Exchange)은 양자 컴퓨팅 위협에 대응하기 위해 개발되는 새로운 키교환 알고리즘이다. Diffie-Hellman은 Shor 알고리즘으로 양자 컴퓨터에 취약하며, NIST는 양자내성 암호의 표준화를 진행 중이다. 대표적 후보로 NTRU, CRYSTALS-Kyber, SIKE 등이 있다.

타원곡선 Diffie-Hellman(ECDH)은 전통적 Diffie-Hellman을 발전시킨 형태다. 타원곡선 암호화를 사용해 더 짧은 키 길이로 동등한 보안을 제공하므로, 모바일 기기처럼 제한된 환경에서 효율적이다. TLS 1.3과 Signal 프로토콜 등에서도 광범위하게 활용된다.

인증된 키교환 프로토콜은 중간자 공격 방지를 위해 인증 메커니즘을 통합한다. SIGMA(SIGn-and-MAc) 프로토콜과 IKE(Internet Key Exchange)가 대표적이며, 디지털 서명과 MAC을 결합해 키교환 과정의 무결성을 보장한다.

구현 단계에서 확인할 보안 조건

키 길이가 길수록 보안성은 높아지지만 계산 부담도 증가한다. 최소 권장 사항은 Diffie-Hellman 2048비트와 ECDH 256비트이며, 애플리케이션 요구사항과 보안 요구사항 사이에서 균형을 잡아야 한다.

구현에서는 부채널 공격(Side-channel Attack)에 대한 방어가 필요하다. 키를 생성할 때는 안전한 난수 생성기(CSPRNG)를 사용하고, 메모리 안의 키 자료를 보호할 조치도 구현해야 한다.

상호운용성도 설계 조건에 포함된다. 표준을 준수해 다양한 시스템과의 호환성을 확보하고, TLS나 SSH처럼 검증된 프로토콜 안에서 구현하는 편이 권장된다. 레거시 시스템과의 호환성 역시 고려 대상이다.

키교환은 현대 암호 시스템을 구성하는 핵심 요소다. Diffie-Hellman과 Kerberos는 서로 다른 방식으로 키 분배와 신뢰 형성을 다루며, 보안 요구사항의 변화에 맞춰 새로운 키교환 방식도 계속 발전하고 있다. 양자 컴퓨팅 시대를 대비한 양자내성 키교환과 함께, 구현 과정의 보안 모범 사례 및 취약점 방지에 주의해야 한다.

키교환Diffie-HellmanKerberos암호화인증