Reflection attack


In computer security, a reflection attack is a method of attacking a challenge-response authentication system that uses the same protocol in both directions. That is, the same challenge-response protocol is used by each side to authenticate the other side. The essential idea of the attack is to trick the target into providing the answer to its own challenge.

Attack

The general attack outline is as follows:
  1. The attacker initiates a connection to a target.
  2. The target attempts to authenticate the attacker by sending it a challenge.
  3. The attacker opens another connection to the target, and sends the target this challenge as its own.
  4. The target responds to the challenge.
  5. The attacker sends that response back to the target on the original connection.
If the authentication protocol is not carefully designed, the target will accept that response as valid, thereby leaving the attacker with one fully authenticated channel connection.

Solution

Some of the most common solutions to this attack are described below:
  1. Alice initiates a connection to Bob
  2. Bob challenges Alice by sending a nonce. B -> A: N
  3. Alice responds by sending back her identifier and the nonce encrypted using the shared key Kab. A -> B: Kab
  4. Bob decrypts the message, makes sure it's from Alice and not a message he had sent in the past by finding A in it and not B, and if the nonce is the same as the one he sent in his challenge, then he accepts the message.