키 교환 프로토콜
1. 개요
1. 개요
키 교환 프로토콜은 통신 당사자 사이에 암호화 통신에 사용할 대칭키를 안전하게 공유하기 위한 절차와 규칙의 집합이다. 이 프로토콜은 제3자가 도청할 수 있는 불안전한 공개 네트워크를 통해 비밀 키를 설정하는 것을 가능하게 한다. 대칭키 암호는 효율적이지만, 통신을 시작하기 전에 양측이 같은 키를 안전하게 보유해야 한다는 문제가 있다. 키 교환 프로토콜은 바로 이 초기 키 공유 문제를 해결한다.
주요 접근 방식은 비대칭키 암호를 활용하는 것이다. 디피-헬먼 키 교환이나 RSA 암호와 같은 알고리즘을 사용하여, 공개적으로 교환되는 정보만으로도 양측이 동일한 비밀 값을 독립적으로 도출할 수 있다. 이렇게 생성된 공유 비밀은 이후 대칭키 암호화의 세션 키로 사용된다. 또한, 하이브리드 암호 시스템에서는 공개키 암호로 세션 키를 암호화하여 전송하는 방식도 널리 쓰인다.
키 교환 프로토콜의 핵심 목표는 키의 기밀성과 무결성을 보장하는 것이다. 단순히 키를 전달하는 것을 넘어, 상대방의 신원을 인증하고 교환 과정에서 발생하는 데이터가 변조되지 않았음을 확인하는 기능을 포함하기도 한다. TLS, IPsec, SSH와 같은 현대의 보안 프로토콜은 모두 그 핵심에 강력한 키 교환 메커니즘을 갖추고 있다.
구분 | 설명 | 대표 예시 |
|---|---|---|
비대칭키 기반 교환 | 수학적 문제를 기반으로 공개 채널을 통해 비밀 값을 공유 | |
비대칭키 기반 전달 | 공개키로 세션 키를 암호화하여 전송 | RSA를 이용한 키 전송 |
하이브리드 방식 | 위 두 방식을 조합하여 안전성과 효율성을 동시에 확보 |
2. 키 교환의 필요성과 목표
2. 키 교환의 필요성과 목표
키 교환 프로토콜은 통신 당사자 사이에 암호화 통신에 사용할 대칭키를 안전하게 공유하는 절차이다. 이 프로토콜이 필요한 근본적인 이유는 대칭키 암호화 방식의 효율성과 공개키 암호화 방식의 안전한 키 배포 문제를 해결하기 위함이다. 대칭키 암호는 데이터 암호화 속도가 빠르지만, 사전에 동일한 키를 안전하게 공유해야 한다는 문제가 있다. 반면, 공개키 암호는 키 배포 문제는 해결하지만 연산 속도가 느리다. 따라서 키 교환 프로토콜은 주로 효율적인 대칭키를 안전하게 설정하는 데 초점을 맞춘다.
키 교환의 주요 목표는 다음과 같다. 첫째, 기밀성 확보이다. 교환 과정에서 생성되거나 전달되는 키 정보가 제삼자에게 노출되지 않도록 보장한다. 둘째, 인증과 무결성이다. 통신 상대방이 자신이 주장하는 당사자임을 확인하고, 교환 중인 메시지가 변조되지 않았음을 검증한다. 이는 중간자 공격을 방지하는 데 필수적이다. 셋째, 전달 키의 안전성이다. 최종적으로 합의된 세션 키는 예측 불가능해야 하며, 공격자가 과거에 훔친 암호문으로부터 키를 유추할 수 없어야 한다.
이러한 목표를 달성하지 못하면, 이후의 모든 암호화 통신이 위험에 처하게 된다. 따라서 키 교환 프로토콜은 암호 시스템의 초기 신뢰를 구축하는 핵심적인 단계로, 현대 네트워크 보안의 토대를 이룬다.
2.1. 기밀성 확보
2.1. 기밀성 확보
키 교환 프로토콜의 핵심 목표 중 하나는 통신 당사자 간에 기밀성을 확보하는 것이다. 기밀성은 승인되지 않은 제삼자가 통신 내용을 이해할 수 없도록 보호하는 것을 의미한다. 이를 위해 대칭키 암호 방식이 널리 사용되지만, 안전한 통신을 시작하려면 먼저 암호화에 사용할 동일한 대칭키를 양측이 안전하게 공유해야 한다. 키 교환 프로토콜은 이 공유 키를 안전하게 생성하고 교환하는 메커니즘을 제공함으로써, 이후의 모든 통신이 암호화되어 기밀성을 유지할 수 있는 토대를 마련한다.
기밀성 확보를 위한 키 교환은 단순히 키를 전달하는 것을 넘어, 키 자체가 노출되지 않도록 해야 한다. 예를 들어, Diffie-Hellman 키 교환 프로토콜은 공개 채널을 통해 정보를 교환하지만, 수학적 난제(이산 로그 문제[1])를 기반으로 하여 교환되는 정보만으로는 최종적인 공유 비밀 키를 제삼자가 계산해내기 어렵게 설계되었다. 따라서 중간에 통신이 도청당하더라도 실제 세션 키는 유출되지 않으며, 이를 통해 파생된 암호화 채널의 기밀성은 보장된다.
접근 방식 | 기밀성 확보 메커니즘 | 특징 |
|---|---|---|
사전에 공유된 비밀키나 KDC를 통해 세션키를 암호화하여 전달 | 키 배포 인프라가 필요하며, 사전 공유 키의 관리가 중요하다. | |
수신자의 공개키로 세션키를 암호화하거나, Diffie-Hellman 방식으로 공유 비밀 생성 | 사전 비밀 공유 없이 기밀 세션 키를 수립할 수 있다. | |
비대칭키로 세션키를 암호화하여 전달한 후, 대칭키 암호로 통신 | 효율성과 안전성을 결합한 현대적 방식이다. |
최종적으로, 성공적인 키 교환은 이후 적용될 암호 알고리즘의 강도와 무관하게 통신의 기밀성을 좌우하는 첫 번째 관문이다. 키 교환 단계에서 유출된 키는 이후 모든 암호화된 메시지를 복호화할 수 있는 열쇠가 되므로, 프로토콜 설계 시 기밀성 요구사항은 가장 우선적으로 고려된다.
2.2. 인증과 무결성
2.2. 인증과 무결성
키 교환 프로토콜의 주요 목표 중 하나는 통신 당사자 간의 인증을 확립하고, 교환되는 데이터의 무결성을 보장하는 것이다. 단순히 비밀 키를 안전하게 전달하는 것만으로는 충분하지 않다. 공격자가 통신 경로에 개입하여 자신을 합법적인 당사자로 속이거나, 전송 중인 키 데이터를 변조할 수 있기 때문이다.
인증은 통신 상대방이 자신이 주장하는 정당한 당사자임을 확인하는 과정이다. 예를 들어, 공개키 기반구조를 사용할 경우, 한쪽이 자신의 개인키로 서명한 데이터를 상대방이 미리 알고 있는 공개키로 검증함으로써 신원을 증명한다[2]. 이 과정이 없으면 중간자 공격에 취약해져, 공격자가 비밀 키를 가로채고 조작된 키를 양측에 전달할 수 있다.
무결성 보장은 키 또는 관련 협상 데이터가 전송 중에 변조되지 않았음을 의미한다. 일반적으로 메시지 인증 코드나 디지털 서명을 활용하여 달성한다. 키 교환 메시지에 이러한 무결성 검증 값을 첨부하면, 수신측은 메시지가 원본 그대로이며 위조되지 않았음을 확인할 수 있다. 인증과 무결성은 상호 보완적이며, 안전한 키 교환을 위해서는 둘 모두가 반드시 결합되어야 한다.
2.3. 전달 키의 안전성
2.3. 전달 키의 안전성
키 교환 프로토콜의 핵심 목표는 통신 당사자 사이에 대칭키 암호 방식에 사용될 세션 키를 안전하게 생성하고 공유하는 것이다. 이 과정에서 생성되거나 전달되는 키의 안전성은 전체 통신의 기밀성과 직접적으로 연결된다. 키가 제3자에게 노출되거나 탈취당하면, 해당 키로 암호화된 모든 메시지는 해독될 수 있기 때문이다.
키의 안전성을 보장하기 위한 주요 원칙은 키가 평문 상태로 네트워크를 통해 전송되어서는 안 된다는 점이다. 이를 위해 두 가지 주요 접근법이 사용된다. 첫째는 Diffie-Hellman 키 교환과 같은 수학적 문제를 기반으로 하여, 양측이 공개적으로 정보를 교환하더라도 제3자는 동일한 공유 비밀값을 계산할 수 없도록 설계된 방식이다. 둘째는 RSA와 같은 공개키 암호를 이용하여, 수신자의 공개키로 세션 키를 암호화한 후 전송하는 방식이다. 이 경우 암호화된 키는 오직 해당 비밀키를 가진 수신자만 복호화할 수 있다.
또한, 단순히 키를 안전하게 전달하는 것뿐만 아니라, 키 자체의 품질도 중요하다. 예측 가능하거나 낮은 엔트로피를 가진 키는 무차별 대입 공격에 취약하다. 따라서 현대적인 키 교환 프로토콜은 암호학적으로 안전한 난수 생성기를 사용하여 강력한 키를 생성하도록 요구한다. 생성된 키의 수명(라이프타임)도 관리되어, 일정 시간 또는 일정량의 데이터 암호화 후에는 폐기되고 새로운 키로 교체된다. 이는 키가 장시간 사용될 경우 노출될 위험을 줄이는 중요한 보안 조치이다.
안전성 요구사항 | 설명 | 대응 기법 예시 |
|---|---|---|
비밀성 | 키가 제3자에게 노출되지 않아야 함. | Diffie-Hellman 키 교환, 공개키 암호화 |
무결성 | 키가 전송 중 변조되지 않아야 함. | 메시지 인증 코드(MAC) 또는 디지털 서명 |
신선도 | 재전송 공격으로 오래된 키가 사용되지 않아야 함. | 난스(Nonce), 타임스탬프, 시퀀스 번호 |
강력한 생성 | 추측하기 어려운 암호학적으로 안전한 키여야 함. | 안전한 난수 생성기(CSPRNG) 사용 |
3. 대칭키 기반 키 교환
3. 대칭키 기반 키 교환
대칭키 기반 키 교환은 동일한 대칭키를 통신 당사자들이 공유하는 것을 목표로 한다. 이 방식은 암호화와 복호화에 같은 키를 사용하기 때문에, 키가 안전하게 전달되어야만 기밀 통신이 가능해진다. 주요 접근법으로는 키를 사전에 공유하는 방식과 제3의 신뢰 기관을 통해 배포하는 방식이 있다.
가장 기본적인 방법은 키 사전 공유 방식이다. 통신을 시작하기 전에 두 당사자가 비밀 채널(예: 대면 회의, 등기 우편 등)을 통해 키를 미리 교환하고 안전하게 저장해두는 것이다. 이 방법은 구현이 단순하고 추가적인 프로토콜 오버헤드가 없지만, 대규모 네트워크에서는 모든 사용자 쌍마다 고유한 키를 관리해야 하므로 확장성이 매우 떨어진다. 또한 키를 갱신하거나 새 사용자를 추가할 때마다 사전 배포 과정이 반복되어야 하는 실용적인 어려움이 있다.
확장성 문제를 해결하기 위해 등장한 모델이 키 배포 센터(KDC)를 이용하는 것이다. 이 모델에서는 모든 사용자와 KDC 사이에만 사전 공유 키가 존재한다. 사용자 A가 B와 통신을 원할 때, A는 KDC에 세션 키 발급을 요청한다. KDC는 A와 B 각각이 알 수 있도록 암호화된 세션 키를 생성하여 A에게 전달하면, A는 자신의 메시지를 해독하고 B에게 전달할 부분을 B에게 보낸다. 이를 통해 N명의 사용자가 있을 때 관리해야 할 장기 키의 수는 O(N)으로 줄어들며, 각 세션마다 일회용 세션 키를 사용할 수 있어 보안성이 향상된다. 대표적인 프로토콜로는 Kerberos가 있다.
방식 | 핵심 메커니즘 | 장점 | 단점 |
|---|---|---|---|
키 사전 공유 | 통신 전 비밀 채널로 키 직접 교환 | 구현 단순, 프로토콜 오버헤드 없음 | 확장성 낮음, 키 관리 부담 큼 |
KDC 모델 | 신뢰된 제3기관이 세션 키 생성 및 배포 | 확장성 좋음, 세션 키 사용 가능 | KDC에 대한 절대적 신뢰 필요, 단일 장애점 존재 |
이러한 대칭키 기반 방식은 계산 효율이 높지만, 키를 사전에 안전하게 배포하거나 항상 가용한 신뢰 기관을 필요로 한다는 근본적인 한계를 지닌다. 이 한계는 이후 비대칭키 기반 키 교환 프로토콜의 발전으로 이어지는 동기가 되었다.
3.1. 키 사전 공유 방식
3.1. 키 사전 공유 방식
키 사전 공유 방식은 가장 기본적인 키 교환 방법이다. 이 방식에서는 통신을 시작하기 전에, 두 당사자(예: 클라이언트와 서버)가 비밀 대칭키를 안전한 채널을 통해 미리 공유하고 저장해 둔다. 이후 실제 통신 세션이 시작되면, 사전에 공유된 이 키를 사용하여 세션 데이터를 암호화하고 복호화한다.
이 방식의 가장 큰 장점은 단순함과 효율성이다. 키 교환을 위한 별도의 프로토콜 실행이나 복잡한 계산이 필요 없기 때문에 통신 설정이 빠르고 시스템 부하가 적다. 또한, 공개키 기반구조(PKI)와 같은 복잡한 인프라가 필요하지 않다. 따라서 제한된 환경(예: 특정 두 장치 간의 고정된 연결)이나 보안 요구사항이 단순한 경우에 적합하다.
그러나 키 사전 공유 방식은 확장성과 관리 측면에서 심각한 한계를 가진다. 통신 당사자의 수가 증가할수록 관리해야 할 키의 수가 기하급수적으로 늘어난다. N개의 사용자가 서로 안전하게 통신하려면 N(N-1)/2개의 독립적인 키 쌍이 필요하다[3]. 각 키는 생성, 분배, 저장, 주기적 갱신, 폐기되어야 하므로, 대규모 네트워크에서는 실질적으로 관리가 불가능해진다. 또한, 키가 한 번 유출되면 해당 키로 암호화된 모든 과거 및 미래 통신이 위험에 처하게 된다.
주요 사용 사례는 다음과 같다.
사용 사례 | 설명 |
|---|---|
WPA2-PSK | 가정이나 소규모 사무실 무선 네트워크에서 사용되는 방식으로, 미리 설정한 암호(프리셰어드 키)를 기반으로 키를 유도한다. |
특정 서버-에이전트 통신 | 모니터링 시스템의 에이전트와 중앙 서버 간에 설정 파일에 키를 하드코딩하여 사용한다. |
초기 장치 페어링 | 일부 IoT 장치의 초기 설정 과정에서 일회성 코드나 QR 코드를 통해 키를 공유한다. |
이 방식의 보안은 전적으로 키를 분배하고 저장하는 초기 "안전한 채널"에 의존한다. 물리적 전달, 신뢰할 수 있는 직원을 통한 배포, 또는 매우 제한된 초기 설정 기간에만 활성화되는 보안 프로토콜을 통해 키가 교환된다.
3.2. 키 배포 센터(KDC) 모델
3.2. 키 배포 센터(KDC) 모델
키 배포 센터 모델은 네트워크 내에 신뢰할 수 있는 제3자인 키 배포 센터를 두어 대칭키를 안전하게 분배하는 중앙 집중식 방식을 말한다. 이 모델에서 각 사용자나 호스트는 KDC와만 장기적인 대칭키를 사전에 공유한다. 두 당사자가 통신을 원할 때, 각자는 KDC에 세션 키를 요청하고, KDC는 양측을 인증한 후 그들만이 알 수 있는 새로운 임시 세션 키를 생성하여 각자의 장기 키로 암호화하여 전달한다.
이 방식의 대표적인 예는 커버로스 프로토콜이다. 커버로스에서는 사용자가 인증 서버에 접근하여 티켓 부여 티켓을 얻은 후, 이 티켓을 사용해 티켓 부여 서버로부터 특정 서비스에 대한 세션 키가 담긴 서비스 티켓을 발급받는다. 이 과정을 통해 사용자는 매번 비밀번호를 입력하지 않고도 다양한 네트워크 서비스에 안전하게 접근할 수 있다.
KDC 모델의 주요 장점과 단점은 다음과 같이 정리할 수 있다.
장점 | 단점 |
|---|---|
사용자가 관리해야 할 장기 키의 수가 적다(각자 KDC와의 키만 관리). | KDC가 단일 실패 지점이 되어 가용성 문제가 발생할 수 있다. |
세션 키의 생성과 분배가 중앙에서 효율적으로 관리된다. | 대규모 네트워크에서 KDC에 대한 부하가 집중될 수 있다. |
사용자 인증과 키 분배를 통합적으로 처리할 수 있다. | KDC 자체가 공격의 주요 표적이 될 수 있어 매우 강력하게 보호되어야 한다. |
이 모델은 기업 내부망이나 캠퍼스 네트워크와 같이 중앙 관리가 가능한 폐쇄적인 환경에서 널리 사용되었다. 그러나 KDC의 보안 침해는 전체 시스템의 위협으로 이어질 수 있기 때문에, KDC의 물리적 보안과 운영 체제 보안은 매우 중요하게 고려되어야 한다.
4. 비대칭키(공개키) 기반 키 교환
4. 비대칭키(공개키) 기반 키 교환
비대칭키 기반 키 교환은 공개키 암호 방식을 활용하여 두 당사자가 사전에 비밀 정보를 공유하지 않고도 안전하게 공유 비밀키를 생성하거나 전달하는 방법이다. 이 방식의 핵심은 공개적으로 알려진 정보만으로는 계산하기 어려운 수학적 문제에 기반한다. 대표적으로 큰 소수의 인수 분해 문제나 이산 로그 문제가 사용된다[4]. 이 접근법은 키 배포의 편의성과 확장성을 크게 높였으며, 현대 인터넷 보안의 근간을 이룬다.
가장 유명한 비대칭키 키 교환 프로토콜은 Diffie-Hellman 키 교환(DH)이다. DH 프로토콜은 통신 당사자 양측이 각자의 비밀값과 공개적으로 합의된 파라미터(큰 소수 p와 원시근 g)를 사용하여 공유 비밀을 계산한다. 구체적인 과정은 다음과 같다.
1. 앨리스는 비밀 정수 a를 선택하고, A = g^a mod p를 계산하여 밥에게 전송한다.
2. 밥은 비밀 정수 b를 선택하고, B = g^b mod p를 계산하여 앨리스에게 전송한다.
3. 앨리스는 받은 B를 이용해 S = B^a mod p를 계산한다.
4. 밥은 받은 A를 이용해 S = A^b mod p를 계산한다.
양측이 계산한 S 값은 g^(ab) mod p로 동일하며, 이 값이 공유 비밀이 된다. 중요한 점은 네트워크를 통해 오가는 A와 B만으로는 비밀값 a, b 또는 공유 비밀 S를 계산하기가 계산상 극히 어렵다는 것이다.
다른 주요 방식은 RSA 암호 방식을 이용한 키 전달이다. 이 방법은 키 교환보다는 키 전송에 가깝다. 통신을 시작하려는 당사자(예: 클라이언트)가 세션 키로 사용할 대칭키를 생성한 후, 수신자(예: 서버)의 공개키로 그 대칭키를 암호화하여 전송한다. 수신자는 자신만이 알고 있는 개인키로 암호문을 복호화하여 세션 키를 얻는다. 이 방식은 DH에 비해 계산 부하가 클 수 있지만, 서버의 공개키가 인증서로 보호받는 경우 키 교환 과정에 인증을 자연스럽게 결합할 수 있는 장점이 있다.
프로토콜/방식 | 수학적 기반 | 주요 특징 |
|---|---|---|
이산 로그 문제 | 완전 순방향 비밀성 제공 가능, 키 합의 프로토콜 | |
RSA 키 전송 | 큰 수의 소인수분해 문제 | 공개키로 세션키 암호화, 인증과 결합 용이 |
이들 비대칭키 방식은 안전한 채널이 없는 상황에서도 키를 설정할 수 있게 하지만, 교환되는 공개값이 위조될 수 있는 중간자 공격에 취약할 수 있다. 따라서 이러한 프로토콜은 대개 디지털 인증서와 같은 인증 메커니즘과 결합되어 사용된다.
4.1. Diffie-Hellman 키 교환
4.1. Diffie-Hellman 키 교환
Diffie-Hellman 키 교환(DH)은 휫필드 디피와 마틴 헬먼이 1976년 제안한 최초의 실용적인 공개키 암호 방식 키 합의 프로토콜이다. 이 방식은 통신 당사자들이 사전에 비밀 정보를 공유하지 않은 상태에서, 공개된 채널을 통해 안전하게 공유 비밀 키를 생성할 수 있게 한다. 그 핵심 원리는 이산 로그 문제(DLP)의 계산적 난이도에 기반한다. 즉, 공개된 정보로부터 비밀 키를 계산해내는 것이 현실적으로 불가능하다는 가정 위에 설계되었다.
동작 과정은 다음과 같다. 먼저, 통신을 원하는 두 당사자(앨리스와 밥)는 큰 소수 p와 그에 대한 원시근 g를 공개적으로 합의한다. 이후 각자는 자신만의 비밀 정수(앨리스는 a, 밥은 b)를 선택한다. 앨리스는 g^a mod p를 계산하여 밥에게 보내고, 밥은 g^b mod p를 계산하여 앨리스에게 보낸다. 마지막으로, 앨리스는 밥으로부터 받은 값에 자신의 비밀 지수 a를 적용하여 (g^b)^a mod p를 계산하고, 밥은 앨리스로부터 받은 값에 자신의 비밀 지수 b를 적용하여 (g^a)^b mod p를 계산한다. 수학적으로 (g^b)^a mod p = (g^a)^b mod p = g^(ab) mod p 이므로, 양측은 공통의 값 K를 공유 비밀로 획득한다. 이 과정에서 공개 채널을 오가는 값은 g^a mod p와 g^b mod p 뿐이며, 이를 통해 비밀 값 a나 b, 또는 최종 키 K를 유추하는 것은 이산 로그 문제를 푸는 것과 같아 매우 어렵다.
Diffie-Hellman 키 교환은 몇 가지 중요한 변형과 모드가 존재한다. 전통적인 방식은 두 당사자 간에 설명되었으나, 세 명 이상의 그룹에서 키를 합의할 수 있는 그룹 Diffie-Hellman도 있다. 또한, 타원곡선 암호(ECC)의 원리를 적용한 타원곡선 Diffie-Hellman(ECDH)은 동일한 수준의 보안성을 제공하면서 더 짧은 키 길이를 사용하여 효율성을 높였다. 그러나 DH는 기본적으로 상대방의 신원을 확인하는 인증 메커니즘을 포함하지 않기 때문에, 중간자 공격에 취약할 수 있다. 따라서 실제 응용에서는 디지털 서명이나 공개키 인증서와 결합하여 사용하는 것이 일반적이다.
특성 | 설명 |
|---|---|
발명 연도 | 1976년 |
기반 문제 | |
주요 목적 | 사전 비밀 공유 없이 안전한 공유 키 생성 |
인증 제공 | 기본 모드에서는 제공하지 않음 |
대표적 변형 | 타원곡선 Diffie-Hellman(ECDH) |
주요 용도 |
4.2. RSA를 이용한 키 전달
4.2. RSA를 이용한 키 전달
RSA를 이용한 키 전달은 공개키 암호 방식의 대표적인 알고리즘인 RSA의 특성을 활용하여 세션 키를 안전하게 공유하는 방법이다. 이 방식은 암호화와 복호화에 서로 다른 키 쌍(공개키와 개인키)을 사용하는 비대칭키 암호의 원리를 키 교환에 적용한다. 통신을 시작하려는 당사자 중 한쪽이 생성한 대칭키를 상대방의 공개키로 암호화하여 전송하면, 상대방은 자신만이 가지고 있는 개인키로 이를 복호화하여 동일한 대칭키를 얻는다.
구체적인 절차는 다음과 같다. 먼저, 수신자(Bob)는 자신의 RSA 공개키와 개인키 쌍을 생성하여 공개키를 공개적으로 배포한다. 송신자(Alice)는 이후의 대칭키 암호 통신에 사용할 세션 키(예: AES 키)를 임의로 생성한다. Alice는 Bob의 공개키를 이용해 이 세션 키를 암호화하여 Bob에게 전송한다. 암호화된 메시지는 Bob의 개인키를 가진 Bob만이 복호화할 수 있으므로, 중간에 도청당하더라도 세션 키는 안전하게 보호된다. Bob은 자신의 개인키로 메시지를 복호화하여 세션 키를 획득한 후, 양측은 이 키를 사용해 빠른 대칭키 암호로 실제 데이터 통신을 시작한다.
이 방식의 주요 장점은 키를 사전에 공유할 필요가 없으며, 공개키 인프라(PKI)와 결합될 경우 상대방의 신원을 디지털 인증서를 통해 확인할 수 있다는 점이다. 그러나 RSA 연산은 계산 비용이 크기 때문에, 일반적으로 용량이 큰 데이터 자체를 암호화하는 데 사용되기보다는 본격적인 통신에 쓰일 짧은 세션 키를 암호화하는 데 주로 활용된다. 이는 하이브리드 암호 시스템의 전형적인 사례이다.
특성 | 설명 |
|---|---|
기반 기술 | RSA 공개키 암호 알고리즘 |
교환 대상 | 대칭키 암호화에 사용될 세션 키 |
보안 근거 | 공개키로 암호화된 내용은 해당 개인키로만 복호화 가능 |
주요 용도 |
RSA 키 전달 방식은 중간자 공격에 취약할 수 있다는 단점을 지닌다. 공격자가 처음부터 Bob을 사칭하여 Alice에게 자신의 공개키를 건네주면, Alice는 공격자의 공개키로 세션 키를 암호화하게 되어 키가 유출될 수 있다. 따라서 이 방식을 안전하게 사용하기 위해서는 공개키의 진위를 확인할 수 있는 공개키 인증서와 같은 신뢰할 수 있는 인증 메커니즘이 반드시 동반되어야 한다.
5. 하이브리드 키 교환
5. 하이브리드 키 교환
하이브리드 키 교환은 대칭키 암호 방식과 비대칭키 암호 방식을 조합하여 각 방식의 장점을 취하고 단점을 보완하는 접근법이다. 이 방식은 현대 네트워크 보안 프로토콜의 표준적인 설계 패턴으로 자리 잡았다.
주요 동작 원리는 다음과 같다. 먼저, 비대칭키 암호 알고리즘(예: RSA, Diffie-Hellman 키 교환, 타원곡선 암호)을 사용하여 두 통신 당사자 간에 안전하게 세션 키를 협상하거나 전달한다. 이 단계에서는 공개키 암호의 강력한 인증과 키 합의 기능을 활용하지만, 상대적으로 느린 연산 속도의 부담을 받는다. 협상이 완료되면, 생성된 세션 키는 이후 모든 데이터 암호화에 사용되는 대칭키 암호 알고리즘(예: AES, ChaCha20)의 키로 활용된다. 이렇게 함으로써 초기 연결 설정 시의 보안 강점과 데이터 대량 전송 시의 높은 성능을 동시에 확보할 수 있다.
방식 | 사용 시기 | 주요 목적 | 예시 알고리즘 |
|---|---|---|---|
비대칭키 암호 | 연결 초기 핸드셰이크 단계 | 세션 키의 안전한 협상 또는 전송, 상대방 인증 | RSA, DH, ECDH |
대칭키 암호 | 데이터 통신 단계 | 협상된 세션 키로 실제 데이터 암호화 및 복호화 | AES, ChaCha20 |
이 방식은 TLS/SSL, SSH, IPsec을 비롯한 대부분의 현대 보안 프로토콜에서 채택하고 있다. 예를 들어, TLS 핸드셰이크에서는 RSA나 ECDH를 통해 pre-master secret을 교환한 후, 이를 바탕으로 AES나 ChaCha20에 사용할 대칭 마스터 키를 유도한다. 이는 공개키 암호만 사용할 때의 성능 저하 문제와 대칭키 암호만 사용할 때의 키 배포 문제를 한 번에 해결하는 효율적인 해법을 제공한다.
6. 대표적인 키 교환 프로토콜
6. 대표적인 키 교환 프로토콜
TLS/SSL 핸드셰이크는 웹 보안의 핵심으로, 클라이언트와 서버 간 안전한 통신 채널을 수립한다. 핸드셰이크 과정에서 클라이언트와 서버는 지원하는 암호 스위트를 협상하고, 서버의 신원을 공개키 인증서를 통해 검증한다. 이후 Diffie-Hellman 키 교환이나 RSA 암호화를 이용해 세션 키를 생성하여, 이후의 모든 통신을 대칭키 암호로 암호화한다. 이 프로토콜은 HTTPS의 기반이 된다.
IPsec 프로토콜 제품군에서 보안 연관을 설정하고 키를 교환하는 역할은 IKE가 담당한다. IKE는 두 단계로 진행된다. 1단계에서는 인증 방식과 암호 알고리즘을 합의하고, Diffie-Hellman 키 교환을 수행하여 안전한 채널을 만든다. 이 채널을 통해 2단계에서 실제 데이터 암호화에 사용할 키를 협상한다. IKE는 터널 모드와 전송 모드 모두를 지원한다.
SSH 프로토콜은 원격 접속 시 안전한 키 교환을 수행한다. 클라이언트가 서버에 접속하면, 서버는 자신의 호스트 키를 제공한다. 이후 클라이언트와 서버는 Diffie-Hellman 키 교환을 통해 공유 비밀값을 생성하고, 이를 해시하여 세션 키를 도출한다. 이 과정에서 서버의 호스트 키는 교환 메시지의 무결성을 보증하는 데 사용된다. SSH는 주로 패스워드 기반 인증이나 공개키 인증과 결합되어 사용된다.
프로토콜 | 주요 사용 목적 | 핵심 키 교환 메커니즘 | 특징 |
|---|---|---|---|
웹 통신 보안 (HTTPS) | RSA 키 전송 또는 Diffie-Hellman 키 교환 | 공개키 인증서를 통한 서버/클라이언트 인증 지원 | |
VPN 터널 구축 | 2단계 Diffie-Hellman 키 교환 | 양방향 인증 후 데이터 암호화용 키 협상 | |
안전한 원격 쉘 접속 | Diffie-Hellman 키 교환 | 호스트 키 검증 및 세션 키 도출 |
6.1. TLS/SSL 핸드셰이크
6.1. TLS/SSL 핸드셰이크
TLS/SSL 핸드셰이크는 하이브리드 키 교환 방식을 사용하여 클라이언트와 서버 간에 안전한 통신 채널을 수립하는 과정이다. 이 프로토콜은 웹 브라우징(HTTPS), 이메일, 인스턴트 메시징 등 다양한 애플리케이션에서 데이터의 기밀성과 무결성을 보장한다. 핸드셰이크의 주요 목표는 통신 당사자를 인증하고, 사용할 대칭키를 안전하게 협상하며, 이후의 모든 통신을 암호화하는 데 필요한 매개변수를 합의하는 것이다.
핸드셰이크 과정은 일반적으로 다음과 같은 단계로 진행된다. 먼저, 클라이언트는 지원하는 암호 스위트 목록과 클라이언트 무작위값을 서버에 보내는 'ClientHello' 메시지를 전송한다. 서버는 'ServerHello' 메시지로 협상된 암호 스위트와 서버 무작위값을 응답한다. 이어서 서버는 자신의 디지털 인증서(공개키 포함)를 보내고, 필요시 클라이언트 인증서를 요청할 수 있다. 서버의 'ServerHelloDone' 메시지로 이 단계가 끝난다. 클라이언트는 서버 인증서를 검증한 후, 'pre-master secret'이라는 무작위 값을 생성하여 서버의 공개키로 암호화해 'ClientKeyExchange' 메시지에 담아 전송한다. 이 시점부터 양측은 클라이언트 무작위값, 서버 무작위값, pre-master secret을 이용해 동일한 'master secret'을 독립적으로 도출할 수 있다. 이 master secret은 세션 키를 생성하는 데 사용된다.
단계 | 주요 메시지 | 목적 |
|---|---|---|
1. 협상 | ClientHello, ServerHello | 프로토콜 버전, 암호 스위트, 무작위값 교환 |
2. 인증 | Certificate, ServerKeyExchange(선택), CertificateRequest(선택), ServerHelloDone | 서버(및 선택적 클라이언트) 신원 확인과 공개키 전달 |
3. 키 교환 | ClientKeyExchange, CertificateVerify(선택) | pre-master secret의 안전한 전송과 클라이언트 인증 증명 |
4. 완료 | ChangeCipherSpec, Finished | 협상된 매개변수 활성화와 핸드셰이크 무결성 검증 |
마지막으로, 클라이언트와 서버는 'ChangeCipherSpec' 메시지를 보내 협상된 암호 스위트를 활성화한다. 이후 'Finished' 메시지를 교환하여 지금까지의 핸드셰이크 메시지 전체의 무결성을 검증하고, 핸드셰이크가 중간자 공격을 받지 않았음을 확인한다. 이 'Finished' 메시지는 새로 협상된 세션 키로 암호화되어 전송되는 첫 번째 메시지이다. 핸드셰이크가 성공적으로 완료되면, 양측은 인증되었고 공유된 세션 키를 보유한 상태가 되어, 효율적인 대칭키 암호화를 통한 실제 애플리케이션 데이터 교환 단계로 넘어간다.
6.2. IPsec의 IKE
6.2. IPsec의 IKE
IPsec은 네트워크 계층에서 암호화와 인증을 제공하는 프로토콜 모음이다. IPsec을 사용하여 안전한 통신 채널을 구축하려면, 양측이 사용할 암호화 알고리즘, 키, 그리고 보안 매개변수에 대해 사전에 합의해야 한다. 이 합의 과정을 자동화하고 관리하는 핵심 프로토콜이 IKE(Internet Key Exchange)이다. IKE는 통신 당사자 간에 보안 연관을 협상하고, 인증된 방식으로 암호화 키를 안전하게 생성 및 교환하는 역할을 담당한다.
IKE는 두 단계의 교환 절차를 통해 동작한다. 1단계에서는 통신 당사자들을 상호 인증하고, 그들 사이에 안전한 채널(ISAKMP SA[5])을 수립한다. 이 채널은 2단계 협상을 보호하는 데 사용된다. 1단계는 주 모드와 공격 모드라는 두 가지 방법으로 수행될 수 있다. 2단계에서는 1단계에서 수립된 안전한 채널을 통해 실제 데이터 전송을 보호할 구체적인 암호화 키와 매개변수(IPsec SA)를 협상한다. 이 단계는 빠른 모드를 사용하여 수행된다.
IKE의 주요 버전은 IKEv1과 IKEv2가 있다. IKEv1은 복잡하고 여러 교환 모드를 포함하는 반면, IKEv2는 프로토콜을 단순화하고 효율성을 개선했다. IKEv2는 메시지 수를 줄이고, DoS 공격에 대한 저항성을 강화하며, 모바일 환경을 더 잘 지원한다[6]. 현재는 IKEv2가 표준으로 널리 권장되고 채택된다.
특징 | IKEv1 | IKEv2 |
|---|---|---|
표준 문서 | RFC 2407, 2408, 2409 | RFC 7296 |
교환 단계 | 2단계(1단계: 메인/어그레시브 모드, 2단계: 퀵 모드) | 2단계(초기 교환, 생성 교환) |
메시지 수 | 상대적으로 많음(1단계 메인 모드: 6개, 퀵 모드: 3개) | 상대적으로 적음(초기 교환: 4개) |
내장 기능 | NAT 통과 등이 별도 확장 | NAT 통과, 구성 페이로드 등이 핵심에 내장 |
모바일 지원 | 제한적 | MOBIKE 확장을 통해 우수한 지원 |
IKE는 VPN 터널 설정, 원격 접근, 사이트 간 보안 연결 등 IPsec 기반 보안 인프라의 필수 구성 요소로 사용된다.
6.3. SSH 키 교환
6.3. SSH 키 교환
SSH 연결 수립 과정에서 사용되는 키 교환 알고리즘은 클라이언트와 서버가 안전하게 세션 키를 협상하는 절차이다. 이 과정은 TLS 핸드셰이크와 유사하지만, 주로 IKE나 IPsec보다는 단일 TCP 연결 내에서 직접 수행된다는 특징이 있다. SSH 프로토콜은 버전 2(SSH-2)에서 강력한 키 교환 메커니즘을 도입하여 초기 버전의 취약점을 해결했다.
키 교환은 클라이언트와 서버가 지원하는 알고리즘 목록을 교환한 후, 상호 합의된 하나의 방법을 선택하여 실행한다. 일반적으로 Diffie-Hellman 키 교환을 기반으로 한 방법들이 널리 사용된다. 대표적인 키 교환 알고리즘은 다음과 같다.
알고리즘 이름 | 기반 기술 | 주요 특징 |
|---|---|---|
| 2048비트 모듈러 소수 그룹을 사용하는 표준 방법이다. | |
| [[타원곡선 디피-헬만 | ECDH]] |
| 현대적이고 안전한 타원곡선으로 설계되어 널리 권장된다. |
교환 과정이 완료되면, 생성된 공유 비밀값으로부터 대칭 세션 키와 초기화 벡터(IV)가 파생된다. 이 키들은 이후의 모든 통신 암호화와 MAC 계산에 사용된다. SSH-2에서는 키 교환 후 서버 인증이 필수적으로 수행되며, 이는 서버의 공개키를 통해 이루어진다. 이 전체 과정은 중간자 공격으로부터 보호되며, 완료된 후에는 양방향으로 안전한 암호화 채널이 구축된다.
7. 키 교환 프로토콜의 보안 고려사항
7. 키 교환 프로토콜의 보안 고려사항
키 교환 프로토콜은 설계 및 구현 과정에서 여러 보안 위협을 고려해야 한다. 가장 대표적인 공격으로는 중간자 공격이 있다. 이 공격에서는 공격자가 통신 경로 상에 침입하여 교환되는 메시지를 가로채거나 변조한다. 피해 당사자들은 정상적인 키 교환을 수행했다고 믿지만, 실제로는 공격자와 각각의 키를 공유하게 되어 모든 통신 내용이 공격자에게 노출된다. 이를 방지하기 위해서는 교환되는 공개키나 메시지에 대한 인증이 필수적이다. 인증은 공개키 인증서나 사전 공유 비밀키 등을 통해 이루어진다.
또 다른 주요 위협은 재전송 공격이다. 공격자가 합법적인 키 교환 메시지를 도청한 후, 나중에 동일한 메시지를 통신 당사자에게 다시 보내는 방식이다. 이 공격은 세션 키를 재사용하게 만들어 보안성을 떨어뜨린다. 대부분의 현대 키 교환 프로토콜은 난수나 타임스탬프, 일회성 넌스와 같은 신선도 증거를 메시지에 포함하여 재전송 공격을 방어한다.
공격 유형 | 주요 위협 | 일반적인 방어 기법 |
|---|---|---|
키 자료의 변조 및 도청 | ||
이전 세션 키의 재사용 | ||
키 유출 공격 | 장기간 사용으로 인한 키 추측 | 완전 순방향 비밀성 도입 |
장기적인 보안을 위해서는 완전 순방향 비밀성이 중요한 고려사항이다. 이 개념은 장기적인 비밀키가 유출되더라도, 과거에 교환된 세션 키들은 안전하게 보호되는 특성을 의미한다. Diffie-Hellman 키 교환과 같은 일회성 디지털 서명을 사용하는 프로토콜은 이 특성을 제공한다. 반면, 세션 키를 장기키로 암호화하여 전송하는 방식은 완전 순방향 비밀성을 보장하지 않는다.
미래의 위협으로는 양자 컴퓨팅의 발전이 있다. 쇼어 알고리즘과 같은 양자 알고리즘은 현재 널리 사용되는 RSA나 타원곡선 암호 기반의 공개키 암호 체계를 무력화할 수 있다. 이에 대비하여 양자 내성 암호 또는 양자 키 분배와 같은 포스트-양자 암호학 기술을 키 교환 프로토콜에 통합하는 연구가 활발히 진행되고 있다.
7.1. 중간자 공격(MITM)
7.1. 중간자 공격(MITM)
중간자 공격은 통신하는 두 당사자(앨리스와 밥) 사이에 공격자가 자신을 끼워 넣어, 양쪽 모두에게 상대방인 것처럼 위장하는 공격 방식이다. 공격자(이브)는 양측의 통신을 모두 가로채어 독립적인 세션을 각각 수립하고, 중계하는 과정에서 정보를 도청하거나 변조한다. 피해자들은 정상적인 직접 통신을 하고 있다고 믿지만, 실제로는 모든 메시지가 공격자를 경유하게 된다.
이 공격은 특히 초기 키 교환 단계에서 효과적이다. 예를 들어, 디피-헬먼 키 교환에서 공격자는 양측에 보내지는 공개값을 각각 가로채어 자신의 공개값으로 대체한다. 그 결과, 앨리스는 공격자와만 공유 키를 생성하고, 밥도 공격자와만 공유 키를 생성하게 된다. 이후의 모든 암호화된 통신은 공격자가 양쪽의 키를 모두 알고 있으므로 복호화, 검토, 재암호화한 후 상대방에게 전달할 수 있다.
공격 단계 | 앨리스의 관점 | 공격자(이브)의 행동 | 밥의 관점 |
|---|---|---|---|
1. 키 교환 시작 | 밥에게 공개값 A를 전송 | A를 가로채고, 밥에게는 자신의 공개값 E1을 전송 | 앨리스로부터 E1을 수신(앨리스의 것이라고 믿음) |
2. 응답 | 공격자로부터 E2를 수신(밥의 것이라고 믿음) | 앨리스에게 자신의 공개값 E2를 전송 | 앨리스에게 공개값 B를 전송 |
3. 키 생성 | A와 E2로 키 K1 생성 | A와 자신의 비밀값으로 K1 생성, B와 자신의 비밀값으로 K2 생성 | E1과 B로 키 K2 생성 |
4. 결과 | 앨리스-이브 간 키 K1 사용 | 앨리스와는 K1으로, 밥과는 K2로 통신 가능 | 이브-밥 간 키 K2 사용 |
중간자 공격을 방지하기 위한 핵심 수단은 인증이다. 교환되는 공개키나 메시지가 진짜 상대방으로부터 왔음을 확인해야 한다. 이는 공개키 인증서와 같은 신뢰할 수 있는 제3자(CA)를 통한 디지털 서명, 사전에 안전하게 공유된 비밀키(PSK), 또는 암호학적 해시 함수를 이용한 지문 확인 등의 방법으로 이루어진다. TLS/SSL 프로토콜에서는 서버의 공개키가 신뢰된 CA에 의해 서명된 인증서로 제공되어 중간자 공격을 방어한다[7].
7.2. 재전송 공격
7.2. 재전송 공격
재전송 공격은 공격자가 합법적인 통신 세션에서 캡처한 키 교환 메시지를 나중에 재전송하여 시스템을 속이는 공격 방식이다. 이 공격의 주요 목표는 새 세션을 열거나 인증 과정을 우회하여 권한을 획득하는 것이다. 공격자는 메시지의 내용을 해독하거나 수정할 필요 없이, 단순히 과거의 유효한 메시지를 그대로 다시 보내는 것으로 공격을 수행한다.
이 공격을 방어하기 위한 핵심 메커니즘은 넌스와 같은 일회성 임의 값의 사용이다. 키 교환 프로토콜은 각 세션마다 고유하고 예측 불가능한 넌스를 생성하여 메시지에 포함시킨다. 수신 측은 이전에 사용된 넌스를 기록해 두고, 재전송된 메시지에 포함된 넌스가 이미 사용된 것임을 감지하면 해당 메시지를 거부한다. 타임스탬프를 활용하는 방법도 있으나, 이는 통신 참여자 간의 시계 동기화가 정확해야 한다는 전제 조건이 필요하다.
재전송 공격에 취약한 프로토콜을 개선한 사례로는 Kerberos 인증 프로토콜이 있다. 초기 버전은 재전송 공격에 취약했으나, 이후 버전에서는 타임스탬프와 함께 시퀀스 번호를 도입하여 각 메시지의 신선도를 보장하도록 강화되었다. 현대의 주요 키 교환 프로토콜인 TLS/SSL과 IKE는 핸드셰이크 과정에서 난수를 교환하고 이를 기반으로 세션 키를 생성함으로써 재전송 공격을 효과적으로 차단한다.
7.3. 양자 컴퓨팅 대비
7.3. 양자 컴퓨팅 대비
양자 컴퓨팅의 발전은 기존 공개키 암호 체계의 안전성에 근본적인 위협을 제기한다. 특히 Diffie-Hellman 키 교환이나 RSA와 같이 큰 수의 소인수분해나 이산 로그 문제의 난이도에 기반한 프로토콜들은 쇼어 알고리즘 같은 양자 알고리즘에 의해 다항 시간 내에 해독될 수 있다[8]. 이는 현재 널리 사용되는 대부분의 키 교환 방식의 보안 기반을 무너뜨릴 수 있다.
이에 대응하기 위해 양자 내성 암호(Post-Quantum Cryptography, PQC) 연구가 활발히 진행되고 있다. 양자 내성 암호는 양자 컴퓨터로도 해결하기 어려운 새로운 수학적 문제, 예를 들어 격자 기반 암호, 코드 기반 암호, 다변량 다항식 암호 등을 활용한 키 교환 및 암호화 방식을 개발하는 것을 목표로 한다. 주요 표준화 기관인 NIST(미국 국립표준기술연구소)는 2016년부터 양자 내성 암호 표준화 프로젝트를 진행해 왔으며, 2022년에 제1라운드 표준 알고리즘들을 선정했다.
접근 방식 | 설명 | 대표 알고리즘 예시 |
|---|---|---|
격자 기반 | 다차원 격자에서의 최단 벡터 문제 등의 난이도에 기반 | |
코드 기반 | 오류 정정 코드의 복호화 문제 난이도에 기반 | Classic McEliece |
다변량 기반 | 다변량 2차 방정식 시스템 풀이의 난이도에 기반 | Rainbow |
해시 기반 | 암호학적 해시 함수의 안전성에 기반 | SPHINCS+ |
현실적인 적용을 위해서는 하이브리드 방안이 제안된다. 하이브리드 키 교환은 기존의 공개키 방식(예: RSA 또는 ECDH)과 새로운 양자 내성 방식을 함께 사용하여 키를 협상한다. 이렇게 하면 두 체계 중 하나만 안전하게 남아 있어도 전체 통신의 기밀성을 보장할 수 있으며, 표준이 완전히 전환되기까지의 과도기적 보안을 제공한다. 주요 프로토콜인 TLS/SSL 핸드셰이크 1.3이나 IKEv2 등에는 이미 이러한 하이브리드 방식을 도입하기 위한 확장 기능이 논의되고 있다.
8. 표준화와 규격
8. 표준화와 규격
키 교환 프로토콜의 설계와 구현은 국제 표준화 기구와 산업 컨소시엄이 제정한 규격에 따라 이루어진다. 이는 상호운용성을 보장하고, 보안 취약점을 최소화하며, 전 세계적으로 통용되는 안전한 통신 체계를 구축하는 데 필수적이다.
표준화 작업은 주로 국제 표준화 기구(ISO)와 국제 전기 통신 연합(ITU-T), 인터넷 기술 특별 위원회(IETF) 같은 기관에서 주도한다. IETF는 인터넷 프로토콜 스위트의 보안을 담당하는 핵심 규격을 발행하는데, 대표적으로 TLS 프로토콜은 RFC 5246(1.2 버전)과 RFC 8446(1.3 버전)로 표준화되었다. IPsec 프로토콜 스위트의 키 교환을 담당하는 IKE는 IKEv1(RFC 2409)과 IKEv2(RFC 7296)로 정의된다. SSH 프로토콜의 키 교환 메커니즘은 RFC 4253에 명시되어 있다.
표준화 기관 | 주요 관련 규격/표준 | 설명 |
|---|---|---|
인터넷 기술 특별 위원회(IETF) | RFC 문서군 (TLS, IKE, SSH 등) | 인터넷 프로토콜의 사실상(de facto) 표준을 정의한다. |
국제 표준화 기회(ISO)/국제 전기 표준 회의(IEC) | ISO/IEC 11770 시리즈 | 키 관리에 대한 일반적인 프레임워크와 메커니즘을 제공한다. |
미국 국립표준기술연구소(NIST) | FIPS 140-3, SP 800-56 시리즈 | 암호 모듈 검증 기준과 특정 키 교환 방식을 위한 지침을 발행한다. |
국제 전기 통신 연합(ITU-T) | X.509, X.800 시리즈 | 공개키 인프라(PKI)와 보안 체계에 관한 권고안을 제시한다. |
또한, 미국 국립표준기술연구소(NIST)는 연방 정보 처리 표준(FIPS)과 특별 출판물(SP)을 통해 구체적인 키 교환 방식을 규정한다. 예를 들어, SP 800-56A는 디피-헬먼 키 교환을 이용한 키 파생에 대한 지침을, SP 800-56B는 RSA를 이용한 키 교환에 대한 지침을 제공한다. 이러한 규격은 암호 알고리즘의 사용, 키 길이, 안전한 구현 방법 등을 상세히 기술하여 프로토콜 개발자와 구현자에게 명확한 기준을 제시한다.
