Quello che stai descrivendo è l'autenticazione a più fattori, il primo fattore è la vicinanza dei 2 dispositivi. Pertanto non viola i principi stabiliti, ma sta diventando una pratica standard piuttosto che una risposta ad un attacco di alto profilo. I dispositivi coinvolti devono sapere che la comunicazione viene eseguita quando solo l'utente vuole che sia, e che siano davvero i dispositivi che dicono di essere. Ciò è ottenuto attraverso protocolli e metodi sicuri per rilevare l'interazione dell'utente legittimo.
La prossimità può essere simulata su alcuni dispositivi con protocolli progettati in modo scorretto tramite relè, i più pubblici sono quelli sui telecomandi (amplificazione del segnale) e gli apriporta del garage (jam / steal 2 e replay 1st, memorizzandone 2 per dopo).
L'aggiunta di un secondo fattore non è difficile, di solito è una questione di costi. Gli attacchi jam / steal bloccano il segnale dal trasmettitore al dispositivo mentre fanno una copia, due volte, quindi invia il primo segnale al dispositivo attivandolo. La seconda copia viene quindi utilizzata per attivare il dispositivo sotto il controllo dell'aggressore. In questo modo si bypassano entrambi i trasmettitori rolling code e quelli con contatori incrementali crittografati. Un codice temporale sincronizzato su entrambi i dispositivi e come parte del codice generalmente sconfigge questo attacco. La sincronizzazione di un codice temporale e il suo mantenimento richiede orologi ad alta precisione (e costosi) su entrambi i dispositivi, maggiore potenza e ulteriore sforzo da parte dell'utente.
Un time code tuttavia non aiuta di solito con un attacco di amplificazione del segnale. Un modo migliore per rilevare gli aiuti di prossimità, ad esempio una misurazione accurata del tempo necessario per elaborare l'handshake del dispositivo, al fine di stimare la distanza. Un tempo di risposta eccessivo potrebbe indicare un attacco attivo. La ventitreenne Mercedes Benz di mio padre aveva un trasmettitore IR sul telecomando oltre a RF, così la macchina poteva assicurarsi che il telecomando fosse puntato verso di esso e non fosse premuto in una tasca per sbaglio. Ha anche sbloccato la porta specifica (o il bagagliaio) a cui era puntata, per impedire a qualcuno di entrare di soppiatto nell'auto attraverso una delle altre porte. Questo ha anche impedito gli attacchi a relè RF, aumentando i costi e gli sforzi delle attrezzature degli hacker.
Altri metodi per rilevare l'interazione dell'utente legittimo includono il time-fencing (come suggerito), la geo-scherma, il rilevamento delle mani (utilizzando il tocco capacitivo), il rilevamento dei movimenti, il rilevamento della temperatura (per rilevare gli attacchi che modificano la velocità di clock e processori)
Un protocollo di dispositivo più ottimale includerebbe handshake autenticati crittograficamente con chiavi grandi, timecode, contatori e risposta ricevuta dei messaggi. Questo tipo di protocollo utilizza grandi quantità di energia per un dispositivo incorporato, quindi è necessario un maggiore risparmio energetico e batterie di capacità superiore prima che qualcosa del genere possa essere adottato su larga scala. L'implementazione su un telefono è facile, ma non così su dispositivi a bassissimo consumo (BTLE, IOT, smartcard, ecc.). Almeno non al momento, ma l'efficienza è in costante aumento.
Il costo di implementazione deve essere ponderato rispetto allo sforzo di un attacco riuscito durante la vita del dispositivo, e contro i possibili costi di un simile attacco, sotto forma di cattiva PR, cause legali, ecc.
Non sono riuscito a tenerlo corto e sono andato un po 'fuori tema, sperando che tutte le informazioni siano pertinenti alla domanda.
Ecco un protocollo di base che utilizzo per il controllo dei servizi IRC, è breve e semplice e può essere applicato a molti scenari di utilizzo.
A: Hello B, I am A, I would like you to do X<br>
A: B + A + H_1 + X + T_A + C_A + MAC_A(msg)
B: Hello A, you are authorized for X<br>
B: A + B + H_2 + X + T_B + C_B + MAC_B(msg + Z_A)
A: Thanks B, please do X now, over<br>
A: B + A + H_3 + X + T_A + C_A + MAC_A(msg + Z_B)
B: Ok A, I will do X now, over and out<br>
B: A + B + H_4 + X + T_B + C_B + MAC_B(msg + Z_A)
Dove A e B sono numeri seriali o identificativi del dispositivo, C_x è un contatore incrementale specifico per il dispositivo x, T_x è il codice temporale corrente del dispositivo x, H_x è un identificatore per la parte x dell'handshake e Z_x è l'ultimo MAC risposta del dispositivo x. I messaggi sono crittografati e autenticati con grandi chiavi già condivise, ma per qualcosa come un telecomando o un apriporta per garage è necessaria solo l'autenticazione.