FIDO keys, used for 2 factor authentication are based on a challenge-response mechanism.
Besides generating a common 1-time-key using diffie-hellman, or transferring all data over TLS, how can they prevent reflection attacks?
Challenge: Alice -> Eve -> Bob
Response (even if encrypted): Bob -> Eve -> Alice
Eve <-> Alice initiates a secure connection.