3.2.5.2 Proximity Detection Details

The receiver MUST perform proximity detection using the following steps:

  1. The receiver MUST send the transmitter a proximity start message that contains the session ID that it received in the registration response message.

  2. After the receiver receives the proximity challenge message from the transmitter, it MUST verify the session ID. Then the receiver MUST send a proximity response message containing the following: the session ID, the sequence number, and the nonce encrypted using the content encryption key that was computed from the registration response message.

  3. Because of possible packet loss on the network, the receiver SHOULD react to all of the following:

    • Every proximity challenge message it receives.

    • Missing proximity challenge messages. The receiver MAY choose to send a new proximity start message.

    • Not receiving a proximity challenge message at all, which MAY be caused by a transient or persistent problem. A transient problem can be a temporary failure in the transmitter, while a persistent problem can be an invalid network topology (for example, the receiver is further than two routers from the transmitter).

  4. After receiving a proximity result message, the receiver MUST check whether the proximity detection procedure was completed successfully. If proximity detection was a success, then the result code is 0. If it was a failure, then result code is 106 (Unable to Verify Proximity). The error codes are defined in section 2.3.

  5. After the receiver successfully completes proximity detection, it is registered and can request a license for any protected content that the user wants to play.

Because of possible packet loss on the network, the receiver SHOULD react to a missing proximity result message. In this case, the receiver SHOULD send a new proximity start message, which can result in the transmitter responding directly with a proximity result message, in case the proximity detection had already succeeded.

If the round trip time is greater than 7 milliseconds (ms) or if the receiver sends a proximity response message with a nonce that is not encrypted correctly, the transmitter MUST fail the proximity detection procedure and report an error code in the proximity result message. If proximity detection has failed, the receiver MAY repeat the proximity detection procedure until it confirms that the proximity detection succeeded. It is recommended that receivers wait 30 to 50 ms between retries, and the receiver MUST send the messages from the same IP address and port number as the original proximity start message. The session ID that the transmitter provided in the registration response message is valid for only a limited period of time--typically two minutes--so the receiver MAY need to restart the registration procedure after that to obtain a new session ID.