Question first: Is there any remediation for passive MITM?

I've come across examples of NFC relay attacks which use phones to get around the proximity requirement for NFC payments.

It looks something as this: [card | phone1] ----------------------> [phone2 | terminal] (normal operation would be [card | terminal]).

Many papers list this as a vulnerability, but I haven't seen any decent way to mitigate against this. One mitigation that I see described is to have stricter timings on transactions, but that would easily be defeated with specialized equipment, instead of off the shelf phones. I guess if you push this, you could in theory limit response times so much that it'd make it physically impossible to do relaying (but then good luck making this cheap and reliable).

TL;DR: Is there any possible mitigation, or are proximity requirements in various technologies basically rubbish?


2 Answers 2


For NFC technology, the main solution that has been offered to date is distance bounding, in which a tightly timed exchange of challenges and responses persuades the verfier that the prover cannot be further away than a certain distance. This solution, however, has some drawbacks:

It still won't say whether the specific endpoint the verifier is talking to is the intended one or not. It will only tell the verifier whether the real prover is nearby.
It involves hard real time processing to measure the transfer time and deduce the distance.

  • Thanks for giving my description a name. However, this does not convince me - time for EM to travel 15cm both ways is 1ns. NFC transactions take tens of ms. 1ms is equivalent of about 150km distance then, and it'd probably be within error margins.
    – domen
    Commented Nov 12, 2014 at 13:17
  • 2
    If you're dealing with parts of transaction (ie. just bits), then it might become more plausible. I see cheap microcontrollers deal with timings in range of 10ns+, so with some specialized circuit, it seems plausible.
    – domen
    Commented Nov 12, 2014 at 13:20

This also applies to normal chip cards. Its not limited to NFC. If you manage to social engineer a user into using the card at a fake terminal, then the relay attack can happen too.

One solution of distance bounding, is to apply logic on the server side that would check if a specific authentication attempt can be logically correct.

Lets say you have 2 Buildings. One in New York and one in Washington DC. The minimum travel distance by car or public transit is 3 hours and 35 minutes. All employees have access to both Buildings.

Now you can apply logic such as if theres a recent authentication attempt with a specific card at building A, any authentication attempt with the same card at building B within 3 hours and 15 minutes will cause the card to be permanently blocked and have to be unblocked by admin after a investigation. This also gives a 20 minutes leeway to compensate for Clock desync and someone would arrive faster with the train or car.

Same can be applied inside a building (Walking speed calculation), or in payment card network, to ensure that the transaction does "look right" (eg, the cardholder didnt teleport to the other side of the Earth in less than 1 hour).

This is what the payment card network does today, uses behaviour sensing to detect fraudulent transactions. Thats why your bank can call you up to approve a transaction Before it clears at the merchant.

  • Payment network does use location info, but I think your train of thought went a bit too far as it doesn't relate to distance bounding (in best case <100ms to get the signal to the other side of the Earth; your example would be location bounding). And my original question had an example of close proximity, just extending the 5cm to 5m or so. Nice explanation of distance bounding there.
    – domen
    Commented Nov 19, 2014 at 9:14
  • Even for Close proximity you could use this form of location/distance bounding. Inside a building you could use a factor that is based on Walking speed. Another thing that is good to do is track the location and restrict the card usage in other locations. For example, if you use the card on the meeting room door, you will from now only be able to use the card at any reader in meeting room, not any elsewhere. This is basically called anti-passback in many access Control systems. Such a system could also raise a alert once a violation is done, Commented Nov 20, 2014 at 7:23
  • so if a attacker for example does the relay attack on a employee, and the employee then decides to use the card for real. The attacker cannot stop the employee from using the card because that would reveal the attack. Thus the employee uses the card. Since the card was just relayed to lets say the other side of the building, the location bounding system will trigger now on the genuine usage of the card, causing a alert and investigation, and thus the admin will see that a "collision" was found on 2 access attempts, and a investigation can be done, leading to a solution. Commented Nov 20, 2014 at 7:26
  • Good solution to this problem with access cards. Attack would need to be quite organized to succeed. Usability issues might be a worry, but critical. Not so confident this would work reliably for payments (but definitely would as an additional source of info). Is payment terminal location transmitted with the payment? This also doesn't take into account off-line payments.
    – domen
    Commented Nov 20, 2014 at 9:21
  • Payment terminal location is registred with the aquirer, so its not really "transmitted" in that sense, its not a GPS in a fixed terminal. Rather, the registred adress of the merchant is available for the aquirer and VISA/Mastercard. Thus VISA/Mastercard can use this to judge if a transaction looks good or not. Mobile terminals like iZettle do however rely on GPS. Commented Nov 21, 2014 at 3:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .