Key Locator
Key Locator는 디지털 서명 및 암호화를 위해 키를 검색하는 메커니즘의 요약입니다. JAAS(Java™ Authentication and Authorization Service) 로그인 모듈 구현은 생성자 측에서 보안 토큰을 작성하고 이용자 측에서 보안 토큰의 유효성을 검증(인증)하는 데 사용됩니다.
- Java 키 저장소 파일
- 데이터베이스
- Kerberos KDC 서버(JAX-WS를 사용하는 WebSphere® Application Server 전용)
- 신뢰 서비스는 보안 컨텍스트 토큰 및 키 제공 가능(JAX-WS를 사용하는 WebSphere Application Server 전용)
- API(Application Programming Interface)를 통해 명시적으로 전달된 키의 문자열 레이블. 각 키와 그 이름(문자열 이름) 간의 관계는 Key Locator 내에서 유지보수됩니다.
- Key Locator의 구현 컨텍스트, 명시적 정보는 Key Locator로 전달되지 않습니다. Key Locator는 구현 컨텍스트에 따라 적절한 키를 판별합니다.
WebSphere Application Server 버전 6 이상은 HMAC-SHA1이라는 비밀 키 기반 서명을 지원합니다. HMAC-SHA1을 사용하는 경우, SOAP 메시지는 2진 보안 토큰을 포함하지 않습니다. 이 경우, 메시지의 키 정보에 키 저장소 내 기밀 키를 지정하는데 사용하는 키 이름이 들어 있다고 간주합니다.
Key Locator는 공개 키 기반 서명을 지원하기 때문에 확인할 키는 수신 메시지에서 <BinarySecurityToken> 요소로서 X.509 인증에 임베디드됩니다. 예를 들어, Key Locator는 컨텍스트에서 발신자 ID를 구할 수 있고 응답 암호화를 위해 발신자의 공개 키를 검색할 수 있습니다.
이 섹션에서는 Key Locator의 사용법 시나리오에 대해 설명합니다.
서명:
서명 키의 이름은 웹 서비스 보안 구성에 지정되어 있습니다. 이 값은 Key Locator에 전달되고 실제 키가 리턴됩니다. 해당하는 X.509 인증이 리턴될 수도 있습니다.
검증:
- KeyStoreKeyLocator
- 키 저장소를 사용하여 디지털 서명 및 유효성 검증 또는 암호화와 복호화에 사용하는 키를 검색합니다.
- X509CertKeyLocator
- 메시지의 X.509 인증을 사용하여 확인 또는 암호화할 키를 검색합니다.
- SignerCertKeyLocator
- 요청 메시지의 X.509 인증을 사용하여 응답 메시지에서 암호화에 사용할 키를 검색합니다.
암호화:
암호화 키의 이름은 웹 서비스 보안 구성에 지정되어 있습니다. 이 값은 Key Locator에 전달되고 실제 키가 리턴됩니다. 서버 측에서 SignerCertKeyLocator를 사용하여 요청 메시지의 X.509 인증에서 응답 메시지에 암호화할 키를 검색할 수 있습니다.
복호화:
웹 서비스 보안 스펙은 키 이름 대신 키 ID를 사용하는 것이 좋습니다. 그러나 공개 키의 ID 계산을 위한 알고리즘이 IETF(Internet Engineering Task Force) RFC(Request for Comment) 3280에 정의되어 있지만 비밀 키의 알고리즘에 대한 합의는 없습니다. 그러므로 현재 웹 서비스 보안의 구현은 공개 키 기반 암호화가 수행될 때에만 ID를 사용합니다. 그렇지 않으면, 원래 키 이름이 사용됩니다.
공개 키 기반 암호화를 사용할 때 키 ID 값은 수신되는 암호화된 메시지에 임베드됩니다. 그런 다음 웹 서비스 보안 구현은 Key Locator가 관리하는 모든 키를 검색하고 ID 값이 메시지의 ID 값과 일치하는 키를 사용하여 메시지를 복호화합니다.
비밀 키 기반 암호화를 사용할 때 키 이름의 값은 수신되는 암호화된 메시지에 임베드됩니다. 웹 서비스 보안 구현은 이름이 메시지의 이름과 일치하는 키의 Key Locator를 요청하고 해당 키를 사용하여 메시지를 복호화합니다.