난스(nonce), 랜덤 생성 토큰

난스(nonce)는 임의로 생성되는 암호화 토큰으로 재생 공격을 방지하는 데 사용됩니다. nonce는 SOAP 메시지의 임의의 위치에 삽입될 수 있지만 일반적으로 <UsernameToken> 요소에 삽입됩니다.

Nonce가 없으면, UsernameToken이 하나의 시스템에서 HTTP와 같은 비보안 전송을 사용하는 다른 시스템으로 전달될 때, 재생 공격에서 토큰을 가로채거나 사용할 수 있습니다. 사용자 이름 토큰을 클라이언트와 서버 간에 전송할 때 동일한 비밀번호를 다시 사용할 수 있는데, 이것은 공격받기 쉽게 만듭니다. 사용자 이름 토큰은 XML 디지털 서명과 XML 암호화를 사용하는 경우에도 훔칠 수 있습니다. 그러나 비보안 전송에서 사용되는 난스(nonce)만으로는 재생 문제점을 충분히 다룰 수 없습니다. 난스(nonce)는 SOAP 메시지가 전송 레벨 또는 메시지 레벨에서 보안되는 통신 채널을 통해 전송될 때 가장 유용합니다.

이러한 재생 공격을 없애기 위해 <wsse:UsernameToken> 요소 내에서 <wsse:Nonce> 및 <wsu:Created> 요소를 생성하고 메시지의 유효성을 검증하는 데 사용합니다. 서버는 <wsu:Created> 요소로 지정된 Nonce 작성 시간과 지정된 시간 내에서 현재 시간 간의 차이를 확인하여 메시지의 갱신 여부를 확인합니다. 또한 서버가 사용한 난스(Nonce)의 캐시를 검사하여 수신된 SOAP 메시지의 사용자 이름 토큰이 지정한 기간에 처리되지 않았는지를 확인합니다. 이러한 두 기능은 사용자 이름 토큰이 재생 공격에 사용될 가능성을 줄이기 위해 사용됩니다.

UsernameToken의 난스(nonce)를 추가하기 위해 사용자 이름 토큰의 토큰 생성자에 이를 지정할 수 있습니다. UsernameToken의 토큰 생성자가 지정되면 사용자 이름 토큰에 난스(nonce)를 포함하려는 경우 Nonce 추가 옵션을 선택할 수 있습니다.