Nonce, una señal generada aleatoriamente
Nonce es una señal criptográfica generada aleatoriamente que se utiliza para evitar ataques de reproducción. Aunque nonce se puede insertar en cualquier lugar del mensaje SOAP, se inserta normalmente en el elemento <UsernameToken>.
Sin Nonce, cuando se pasa un UsernameToken de una máquina a otra utilizando un transporte no seguro como HTTP, la señal se puede interceptar y utilizar en un ataque de reproducción. Cuando se transmite la señal de nombre de usuario entre el cliente y el servidor se puede volver a utilizar la misma contraseña, por lo que queda vulnerable ante los ataques. La señal de nombre de usuario se puede robar aunque se utilice la firma digital XML y el cifrado XML. Sin embargo, solo nonce, utilizado en un transporte no seguro, no puede solucionar correctamente el problema de respuesta. Nonce es más útil cuando se transmite el mensaje SOAP a través de un canal de comunicación seguro, sea al nivel de transporte o al nivel de mensaje.
Para eliminar estos ataques de reproducción, se generan los elementos <wsse:Nonce> y <wsu:Created> en el elemento <wsse: UsernameToken> y se utilizan para validar el mensaje. El servidor comprueba si el mensaje es reciente comprobando si la diferencia entre la hora de creación de nonce, que se especifica en el elemento <wsu:Created> y la hora actual entra dentro de un período de tiempo especificado. Asimismo, el servidor comprueba una memoria caché de los nonce utilizados para verificar que la señal de nombre de usuario del mensaje SOAP recibido no se ha procesado dentro del período de tiempo especificado. Estas dos características se utilizan para reducir la probabilidad de que se utilice una señal de nombre de usuario en un ataque de reproducción.
Para añadir nonce a UsernameToken, puede especificarlo en el generador de señales de la señal de nombre de usuario. Cuando se ha especificado el generador de señales de UsernameToken, puede seleccionar la opción Añadir nonce si desea incluir nonce en la señal de nombre de usuario.