웹 서비스 보안을 위한 WS Security 확장 및 프로토콜 구현
초록
본 논문은 WS‑Security 표준에 이름 유형, 키 및 난수 토큰을 추가하는 확장을 제안하고, 이를 ISO‑9798, Kerberos, BAN‑Lowe와 같은 기존 인증·키 교환 프로토콜에 적용한다. 확장된 토큰을 이용하면 연결‑지향이 아닌 웹 서비스 환경에서도 종단‑간 보안을 구현할 수 있다.
상세 분석
WS‑Security는 SOAP 메시지에 보안 정보를 삽입하기 위한 토큰 기반 메커니즘을 제공하지만, 기존 토큰 집합은 복잡한 인증·키 교환 프로토콜을 직접 표현하기에는 한계가 있다. 논문은 이러한 한계를 극복하기 위해 세 가지 핵심 확장을 설계한다. 첫째, NameType 확장은 사용자·서버·서비스 등 다양한 엔터티를 구분할 수 있는 식별자를 정의한다. 기존 WS‑Addressing의 URI 기반 식별에 비해, 인증 프로토콜에서 요구되는 “principal”, “realm”, “session” 등 구체적인 역할 구분을 가능하게 한다. 둘째, KeyToken 확장은 대칭키, 비대칭키, 키 파생값 등을 XML 구조로 캡슐화하고, 키 식별자와 키 사용 목적(예: 암호화, 서명, 인증)을 메타데이터로 명시한다. 이는 ISO‑9798‑2와 같은 공개키 기반 인증에서 공개키 교환 단계와 Kerberos의 티켓 암호화 단계 모두를 동일한 토큰 형식으로 표현할 수 있게 한다. 셋째, RandomNumberToken은 프로토콜에서 요구되는 nonce, timestamp, challenge 값을 안전하게 전달하기 위한 구조를 제공한다. 이 토큰은 XML Signature와 연계되어 무결성을 보장하면서도, 프로토콜 흐름 내에서 재사용 방지를 위한 유효 기간 정보를 포함한다.
이러한 확장은 기존 WS‑Security 헤더(UsernameToken, BinarySecurityToken 등)와 호환성을 유지하도록 설계되었으며, SOAP 메시지의 Header 섹션에 삽입될 때 기존 파싱 로직을 크게 변경하지 않는다. 논문은 세 가지 실제 프로토콜을 구현 사례로 제시한다. ISO‑9798‑2에서는 인증 단계에서 NameType과 RandomNumberToken을 사용해 챌린지‑응답을 표현하고, KeyToken을 통해 세션키를 교환한다. Kerberos에서는 AS‑REQ/AS‑REP, TGS‑REQ/TGS‑REP 메시지를 각각 WS‑Security 헤더에 매핑하고, 티켓 자체를 BinarySecurityToken 형태가 아니라 KeyToken(암호화된 세션키)과 NameType(클라이언트·서버 식별)으로 대체한다. BAN‑Lowe 프로토콜은 양자 내성 인증을 목표로 하는데, 논문은 해당 프로토콜의 라운드‑트립을 WS‑Security 메시지 흐름으로 재구성하고, RandomNumberToken을 이용해 임시 비밀값을 안전히 전달한다.
보안 분석에서는 토큰의 XML 서명·암호화가 기존 WS‑Security 보안 모델과 동일한 수준의 기밀성·무결성을 제공함을 증명한다. 또한, 토큰 기반 구현이 전통적인 바이너리 프로토콜에 비해 플랫폼 독립성, 서비스 지향 아키텍처(SOA)와의 자연스러운 통합, 다중 도메인·다중 레이어 환경에서의 종단‑간 보안을 강화한다는 장점을 강조한다. 성능 평가에서는 토큰 직렬화·역직렬화 비용이 전체 프로토콜 실행 시간의 5~10% 수준에 불과함을 실험적으로 보여주며, 기존 바이너리 구현과 비교해 네트워크 레이어에서의 추가 오버헤드가 제한적임을 입증한다.
결론적으로, 논문은 WS‑Security 확장이 복잡한 인증·키 교환 프로토콜을 웹 서비스 환경에 자연스럽게 이식할 수 있는 실용적 방법임을 제시하고, 향후 표준화 작업을 통해 이러한 토큰 타입이 공식 사양에 포함될 가능성을 논의한다.
댓글 및 학술 토론
Loading comments...
의견 남기기