키 분배 문제 (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을 함께 쓰는 하이브리드 키 합의가 브라우저와 서버에 도입되고 있습니다.
쉽게 말하면
금고 열쇠를 멀리 있는 친구에게 보내야 하는데, 열쇠를 안전하게 보낼 상자를 잠그려면 또 다른 열쇠가 필요한 상황입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.