ChannelBinding
ChannelBinding (채널 바인딩)
호출자가 제공하는 채널 바인딩 정보의 개념을 캡슐화하는 클래스입니다.
본문
채널 바인딩은 컨텍스트를 수립하는 과정에서 피어 엔티티 인증의 품질을 강화하는 데 사용됩니다. GSS-API 호출자가 보안 컨텍스트 수립을 주소 같은 관련 특성이나 애플리케이션별 데이터에 묶을 수 있게 해 주기 때문이에요. 보안 컨텍스트를 시작하는 호출자는 GSSContext 객체에 설정할 적절한 채널 바인딩 값을 정해야 하고, 수락 측은 수신한 토큰이 올바른 채널 관련 특성을 갖는지 검증하기 위해 동일한 바인딩을 제공해야 합니다.
채널 바인딩 사용은 GSS-API에서 선택적입니다. initSecContext나 acceptSecContext를 처음 호출하기 전에 setChannelBinding 메서드로 GSSContext에 바인딩을 설정할 수 있고, 설정하지 않으면 null 바인딩이 가정됩니다.
개념적으로 GSS-API는 시작자와 수락자의 주소 정보와 애플리케이션이 제공한 바이트 배열을 이어 하나의 옥텟 문자열을 만듭니다. 메커니즘은 이 옥텟 문자열에 MIC를 계산하고, 그 MIC를 initSecContext가 내보내는 컨텍스트 수립 토큰에 묶어요. 수락 측도 같은 방식으로 MIC를 계산해 토큰에 담긴 값과 비교하며, MIC가 다르면 acceptSecContext는 메이저 코드가 BAD_BINDINGS로 설정된 GSSException을 던지고 컨텍스트는 수립되지 않습니다.
일부 메커니즘은 MIC 대신 실제 채널 바인딩 데이터를 토큰에 포함할 수도 있으므로, 애플리케이션은 기밀 데이터를 채널 바인딩 구성 요소로 사용하지 말아야 해요. 또 개별 메커니즘은 채널 바인딩에 나타날 수 있는 주소에 추가 제약을 가할 수 있습니다. 예를 들어 시작자 주소 필드에 호스트 시스템의 올바른 네트워크 주소가 들어 있는지 검증할 수 있어요. 따라서 휴대성 좋은 애플리케이션은 주소 필드에 올바른 정보를 주거나, 주소 정보 설정을 아예 생략해야 합니다.
public ChannelBinding(InetAddress initAddr, InetAddress acceptAddr, byte[] appData)
public InetAddress getInitiatorAddress()
public InetAddress getAcceptorAddress()
public byte[] getApplicationData()