Station-to-Station 프로토콜 (STS)
수정된 인증 키 교환 프로토콜인 STS와 SSH 및 IKE에서의 활용을 학습합니다.
Station-to-Station 프로토콜 (STS)은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
STS의 동기
Station-to-Station (STS) 프로토콜(Diffie, van Oorschot, Wiener, 1992)은 신뢰할 수 있는 제3자 없이 인증된 키 합의를 제공하도록 설계되었습니다. 순수 DH 키 교환은 인증되지 않으므로, 중간자가 자신의 DH 값을 대신 전달하여 서로 키를 공유한다고 믿는 각 당사자와 별도의 세션을 설정할 수 있습니다. STS는 DH와 디지털 서명 및 공개 키 인증서를 결합하여 상호 인증을 제공합니다. 당사자들은 DH 트랜스크립트에 서명하여 인증하며, 이로써 세션 키를 각자의 신원에 결합합니다. STS는 IKE(인터넷 키 교환)와 SSH의 설계에 직접적인 영향을 주었습니다.
STS 프로토콜 단계
STS 프로토콜은 다음과 같이 진행됩니다. Alice와 Bob은 DH 그룹(소수 p, 생성자 g)에 합의합니다. (1) Alice가 g^a mod p를 Bob에게 보냅니다. (2) Bob이 g^b mod p, Cert_B, Sig_B{g^b, g^a}를 Alice에게 보냅니다. Bob은 두 DH 값의 연결을 자신의 개인 키로 서명합니다. (3) Alice는 Bob의 인증서와 서명을 검증한 다음, 세션 키 K = (g^ab mod p)로 암호화한 Cert_A, Sig_A{g^a, g^b}를 보냅니다. Alice의 신원과 서명은 암호화되므로 Alice의 신원이 보호됩니다. 수동 도청자는 Alice를 이 세션과 연결할 수 없습니다. 두 당사자는 K = g^ab mod p를 계산하고 서명을 통해 상호 인증됩니다.
STS와 인증되지 않은 DH 비교
STS를 인증되지 않은 DH와 비교하면 인증이 무엇을 추가하는지 알 수 있습니다. 일반 DH에서 Mallory는 g^a와 g^b를 가로채고, Alice에게는 g^m을, Bob에게는 g^m을 대신 전달하여 K1 = g^am과 K2 = g^bm을 설정합니다. Mallory는 모든 통신을 복호화합니다. STS에서는 Bob이 {g^b, g^a}에 서명하며, 이 서명은 이 세션의 정확한 DH 값에 대한 것입니다. Mallory가 g^b 대신 g^m을 전달하더라도 Bob의 인증서 키로 유효한 서명을 위조할 수 없습니다. Alice는 세션을 거부합니다. 핵심은 키 교환의 인증이 단순히 신원 주장만이 아니라 DH 트랜스크립트를 포함해야 한다는 점입니다.
STS의 순방향 비밀성
STS는 세션 키가 세션 후 폐기되는 임시 DH 값(g^a, g^b)에서 파생되므로 완전 순방향 비밀성(PFS)을 제공합니다. Bob의 장기 서명 키가 나중에 손상되더라도 이전에 기록된 STS 세션은 복호화할 수 없습니다. 공격자에게는 임시 DH 지수 a와 b가 필요하지만, 이 값들은 한 번도 저장되지 않았기 때문입니다. 이는 ECDHE 암호 스위트를 사용하는 TLS에서도 중요하게 여기는 속성입니다. 임시 DH를 사용하지 않는 경우(예: 서버의 정적 RSA 키로 세션 키를 암호화하는 RSA 키 전송을 사용하는 경우), 장기 키가 손상되면 과거의 모든 세션이 복호화됩니다.
신원 보호
STS는 3단계에서 Alice의 인증서와 서명을 암호화하여 수동 도청자로부터 응답자의 신원을 보호합니다. 수동 관찰자는 Alice의 DH 값과 Bob이 2단계에서 평문으로 보내는 인증서만 볼 수 있습니다. 따라서 Alice의 신원은 수동 도청으로부터 숨겨집니다. MITM을 수행하는 능동적 공격자는 서명 검증 실패로 탐지됩니다. 이러한 비대칭성(시작자의 신원은 능동적 공격자에게 드러나고 응답자의 신원은 수동 도청자로부터 보호됨)은 의도적인 설계상의 절충입니다. 능동적 공격자에 대한 양측의 완전한 신원 보호에는 추가적인 프로토콜 복잡성이 필요합니다(DH 값을 미리 공유하거나 익명 그룹 원소를 사용해야 합니다).
IKEv1과 IKEv2에서의 STS
IPsec의 키 관리 프로토콜인 IKE(인터넷 키 교환)는 STS에서 직접 파생되었습니다. IKEv1(RFC 2409)은 주 모드에서 STS 방식의 서명 인증을 구현했습니다. IKEv2(RFC 7296)는 네 가지 메시지 흐름을 사용하는 더 깔끔한 재설계입니다. IKE_SA_INIT(DH 교환, 논스), IKE_AUTH(신원, 인증서, IKE_SA_INIT 트랜스크립트에 대한 서명)으로 구성됩니다. 서명 형식은 PSK의 경우 AUTH = PRF(SK_pi, transcript)이고, 인증서 인증의 경우 IKE_SA_INIT 옥텟에 대한 디지털 서명입니다. IKEv2는 기존 비밀번호 기반 인증을 위한 확장 가능한 인증 프로토콜(EAP)도 지원하며, 이는 STS가 다양한 인증 방식을 지원하는 것과 유사합니다.
SSH에서의 STS
SSH 키 인증은 STS 3단계와 유사한 메커니즘을 사용합니다. DH 키 교환 후(SSH_MSG_KEXDH_REPLY에는 서버의 공개 키, DH 값, 교환 해시에 대한 서명이 포함됩니다) 클라이언트는 서버의 호스트 키를 검증합니다. 클라이언트 인증(SSH_MSG_USERAUTH_REQUEST에서 방식은 publickey)의 경우 클라이언트는 개인 키를 사용하여 {session_id, username, service, method, key_algo, public_key}에 서명합니다. session_id는 DH 트랜스크립트에서 파생되므로 인증이 이 특정 세션에 결합됩니다. 이를 통해 NS를 괴롭혔던 세션 간 위조를 방지합니다. SSH는 기본적으로 인증서를 사용하지 않지만, 대규모 배포 환경에서는 ssh-keygen -s(인증서 서명)를 통해 인증서를 지원합니다.
SIGMA 프로토콜 계열
STS는 Hugo Krawczyk가 형식화한 SIGMA(서명 및 MAC) 인증된 키 교환(AKE) 프로토콜 계열의 구성원입니다. SIGMA는 STS에 MAC을 추가합니다. 각 당사자는 트랜스크립트에 서명하고 세션 키를 사용하여 자신의 신원에 MAC을 계산합니다: MAC(K, identity). MAC은 신원을 세션 키에 결합하여, 공격자가 서로 다른 세션의 서명을 연결할 수 있는 특정 공격을 방지합니다. SIGMA-I(시작자 신원 보호), SIGMA-R(응답자 신원 보호), SIGMA-0(신원 보호 없음)은 변형입니다. IKEv2와 Signal의 X3DH는 SIGMA 계열 프로토콜입니다. SIGMA 형식 체계는 STS와 유사한 설계에 엄밀한 보안 증명을 제공합니다.
KCI 공격과 STS 변형
STS는 KCI(Key Compromise Impersonation)에 취약합니다. Alice의 장기 키가 손상되면 공격자는 새로운 세션에서 Alice를 상대로 어떤 당사자라도 사칭할 수 있습니다(공격자가 모든 트랜스크립트에 대해 Alice의 서명을 위조할 수 있기 때문입니다). 즉, 한 당사자의 키가 손상되면 공격자가 그 당사자를 상대로 다른 당사자를 사칭할 수 있습니다. KCI는 서명 기반 AKE 프로토콜에 내재된 문제입니다. 이에 대응하려면 손상된 당사자가 다른 값을 대신 사용하지 못하도록 세션 키가 양측의 기여에 의존하게 해야 합니다. HMQV(해시된 Menezes-Qu-Vanstone)와 NAXOS는 추가적인 복잡성을 감수하고 KCI 저항성을 제공합니다.
부인 가능성과 Off-the-Record 메시징
STS는 부인 방지를 제공합니다. 서명은 누가 무엇을 말했는지를 암호학적으로 확실하게 입증합니다. 그러나 이는 때때로 바람직하지 않습니다. 사적인 대화에서 참여자들은 자신의 발언에 대한 암호학적 증거가 법정에서 제시될 수 있기를 원하지 않을 수 있습니다. Off-the-Record (OTR) 메시징과 Signal의 Double Ratchet은 부인 가능성을 제공합니다. 메시지에 서명하는 대신 발신자와 수신자가 모두 보유하는 MAC 키를 사용합니다. 대화가 끝난 후에는 양측 모두 상대방이 메시지를 조작했다고 주장할 수 있습니다. 각자가 MAC을 생성할 수 있는 키를 가지고 있기 때문입니다. 절충점은 부인 가능성을 얻는 대신 부인 방지를 포기한다는 것입니다. STS와 유사한 설계는 책임성이 필요한 경우에 적합하고, OTR/Signal은 부인 가능성이 중요한 경우에 적합합니다.
STS 보안 증명
STS의 보안은 원 논문에서 비공식적으로 분석되었지만, Bellare와 Rogaway(1993, 1994)가 획기적인 AKE 보안 모델에서 형식적으로 증명했습니다. 이들은 키 교환 프로토콜이 안전하다는 것이 무엇을 의미하는지 정의했습니다. 즉, 공격자가 당사자를 등록하고, 세션 키를 공개하고, 대상 세션을 제외한 장기 키를 공개하며, 네트워크를 제어할 수 있더라도 세션 키가 무작위 값과 구별되지 않아야 한다는 것입니다. 이 시뮬레이션 기반 보안 모델은 Canetti-Krawczyk에 의해 확장되었고 이후 UC(범용 조합 가능성)로 발전했으며, 현재 AKE 프로토콜을 증명하는 표준이 되었습니다. TLS 1.3, Signal, Noise는 모두 이 모델의 변형에서 형식적 증명을 갖추고 있습니다.
STS 서명 바인딩 퀴즈
STS에서는 왜 서명된 트랜스크립트에 두 DH 값(g^a와 g^b)을 모두 포함해야 합니까?
STS 프로토콜 복습
STS는 TTP 없이 인증된 키 교환을 제공하기 위해 임시 DH 키 교환과 디지털 서명을 결합합니다. 양쪽 당사자는 DH 트랜스크립트에 서명하여 인증을 세션에 결속합니다. STS는 순방향 비밀성(임시 DH), 상호 인증(서명), 응답자 신원 보호(전송 전에 Alice의 데이터를 암호화함)를 달성합니다. STS는 IKEv2와 SSH 키 인증에 직접 영향을 미쳤습니다. SIGMA는 신원 메시지 인증 코드와 보안 증명을 사용하여 STS를 형식화합니다. KCI는 HMQV/NAXOS로 완화되는 STS의 고유한 약점입니다. 부인 가능성(Signal에서와 같음)을 확보하려면 메시지 수준의 진위성을 위해 서명을 메시지 인증 코드로 대체해야 합니다.
자주 묻는 질문
“Station-to-Station 프로토콜 (STS)” 강의는 무료인가요?
네 — “Station-to-Station 프로토콜 (STS)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Station-to-Station 프로토콜 (STS)”에서 뭘 배우나요?
수정된 인증 키 교환 프로토콜인 STS와 SSH 및 IKE에서의 활용을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“Station-to-Station 프로토콜 (STS)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Needham-Schroeder 프로토콜과 공격
- Station-to-Station 프로토콜 (STS)
- Noise 프로토콜 프레임워크
- 보안 프로토콜 설계 원칙