# 키 분배 문제 (Key Distribution Problem)

키 분배 문제는 대칭 키 암호를 쓰기 전에 같은 비밀 키를 통신 상대에게 안전하게 전달해야 한다는 근본적인 어려움입니다. 비밀 채널을 만들려면 먼저 비밀 키가 필요하고, 비밀 키를 보내려면 비밀 채널이 필요하다는 순환이 생깁니다.

## 자세히 알아보기

공개 키 암호가 나오기 전에는 키를 직접 만나서 건네거나, 믿을 수 있는 전달자(쿠리어)를 쓰거나, 이미 있는 암호 채널로 새 키를 보내는 방법뿐이었습니다. 앞의 두 방법은 느리고 비싸며 전달 과정에서 키가 노출될 수 있고, 세 번째 방법은 기존 키가 안전해야만 의미가 있습니다.

규모도 문제입니다. n명이 서로 1:1로 비밀 통신을 하려면 키가 n(n−1)/2개 필요합니다. 100명이면 4,950개, 1,000명이면 약 50만 개입니다. 각 키를 안전하게 만들고, 나눠 주고, 보관하고, 주기적으로 교체하는 일이 곧 키 관리 부담입니다.

해결책은 크게 세 가지입니다.

- **키 분배 센터(KDC)**: 모든 사용자가 신뢰하는 센터와만 키를 공유하고, 센터가 필요할 때 세션 키를 발급합니다(예: Kerberos). 센터가 단일 실패 지점이 됩니다.
- **키 합의**: 1976년 Diffie와 Hellman이 제안한 방식처럼, 공개 채널에서 값을 주고받아 양쪽이 같은 비밀을 계산합니다. 오늘날에는 타원곡선 기반 ECDH(X25519 등)가 널리 쓰입니다.
- **키 전송**: 상대의 공개 키로 세션 키를 암호화해 보냅니다. 양자 컴퓨터 대비로는 NIST가 2024년 표준화한 ML-KEM(FIPS 203) 같은 키 캡슐화 방식이 도입되고 있습니다.

공개 키 방식에도 "이 공개 키가 정말 상대의 것인가"라는 인증 문제가 남습니다. 이를 확인하지 않으면 중간자 공격에 당할 수 있어, 인증서(PKI)나 서명으로 공개 키를 검증합니다.

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

블록체인 주소는 공개 키에서 만들어지므로, 송금받기 위해 비밀을 미리 나눌 필요가 없습니다. 키 분배 문제를 공개 키 암호로 풀어낸 대표적인 사례입니다. 대신 거래소 입금 주소를 바꿔치기하는 악성코드처럼, 상대 주소(공개 키)를 올바르게 받았는지 확인하는 문제가 남습니다.

## 예시

10명으로 이루어진 팀이 서로 1:1로 비밀 대화를 하려면 대칭 키가 10×9/2 = 45개 필요합니다. 팀원이 한 명 늘면 새 팀원을 위해 키 10개를 더 만들어 각자에게 안전하게 전달해야 합니다. 반면 공개 키 방식에서는 각자 키 쌍 하나씩, 즉 공개 키 11개만 공개하면 누구나 서로 키 합의를 할 수 있습니다.

### 오늘날의 해결 방식

웹사이트 접속(HTTPS)이 좋은 예입니다. 브라우저와 서버는 처음 만나지만, TLS 1.3 핸드셰이크에서 임시 ECDHE로 세션 키를 합의하고, 서버 인증서로 상대가 진짜 서버인지 확인합니다. 미리 비밀을 나눌 필요가 없으므로 키 분배 문제는 사실상 인증서 체계를 믿는 문제로 바뀌었습니다.

대규모 조직에서는 여전히 대칭 키 관리가 중요합니다. 클라우드 키 관리 서비스는 데이터 키를 마스터 키로 감싸 보관하고, 필요한 서비스에만 복호화 권한을 줍니다. 양자 컴퓨터가 현재의 RSA·타원곡선 키 합의를 위협할 수 있다는 우려 때문에, 최근에는 기존 ECDH와 ML-KEM을 함께 쓰는 하이브리드 키 합의가 브라우저와 서버에 도입되고 있습니다.

## 쉽게 말하면

금고 열쇠를 멀리 있는 친구에게 보내야 하는데, 열쇠를 안전하게 보낼 상자를 잠그려면 또 다른 열쇠가 필요한 상황입니다.

---
출처: https://achivx.kr/glossary/key-distribution-problem-%ED%82%A4-%EB%B6%84%EB%B0%B0-%EB%AC%B8%EC%A0%9C/ · ACHIVX 용어 사전 · 수정일 2026-10-20
