Spiegazione del codice a rotazione


13

Qualcuno potrebbe spiegare come funzionano i protocolli rolling code come KeeLoq? Capisco la premessa di base che usano ogni volta un codice diverso, quindi non puoi semplicemente usare l'attacco di replay, ma non capisco come una parte verifica il codice corretto ecc.

Inoltre, come eseguono una sincronizzazione iniziale se l'indice nei codici rolling non è noto / condiviso in anticipo?

Se devi usare Keeloq come esempio per spiegare che va bene, ma preferirei una spiegazione generale dei codici rolling.


Risposte:


10

I codici a rotazione richiedono più parti per funzionare correttamente. Qui descriverò un'implementazione generica che utilizza tutte le parti in un modo specifico. Altri sistemi sono variazioni su questo tema, ma generalmente impiegano molte delle stesse tecniche in modo simile. Piuttosto che tentare di descrivere l'implementazione completa e come funziona in una volta, descriverò un sistema semplice e aggiungerò complessità mentre procediamo fino a raggiungere un sistema crittograficamente sicuro.

Un rolling code non crittografico è semplicemente un trasmettitore e un ricevitore che utilizzano entrambi lo stesso generatore di numeri pseudo casuali (PRNG). Questo generatore ha due informazioni importanti: un calcolo e il numero precedentemente generato. Il calcolo è generalmente un'equazione di feedback lineare che può essere rappresentata da un singolo numero. Alimentando il PRNG con il numero precedente e mantenendo lo stesso numero di feedback viene generata una specifica sequenza di numeri. La sequenza non ha sequenze ripetute fino a quando non passa attraverso ogni numero che può generare, quindi ricomincia da capo con la stessa sequenza.

Se sia il telecomando che il trasmettitore conoscono il numero di feedback e il numero corrente, quindi quando il telecomando trasmette il numero successivo, il ricevitore può testarlo sul proprio generatore. Se corrisponde, si attiva. In caso contrario, scorre la sequenza finché non trova il numero inviato dal telecomando. Se premi di nuovo il telecomando, dovrebbe corrispondere e si attiverà perché la trasmissione precedente ha già sincronizzato i generatori di numeri. Questo è il motivo per cui a volte è necessario premere due volte il pulsante di sblocco: il ricevitore o il trasmettitore non sono sincronizzati.

Questa è la parte mobile del codice. Se il PRNG è abbastanza lungo, è molto difficile scoprire il numero di feedback senza molti numeri nella sequenza consecutiva, che è difficile da ottenere nell'uso normale. Ma non è crittograficamente sicuro.

Inoltre aggiungi la crittografia tipica. Il costruttore del veicolo utilizza una chiave segreta specifica per il trasmettitore e il ricevitore. A seconda del produttore, potresti scoprire che ogni modello e anno hanno un codice diverso oppure potrebbero condividere il codice tra più modelli di veicoli e per diversi anni. Il compromesso è che ognuno richiede quindi un telecomando diverso per essere rifornito, ma il problema con la condivisione di un codice su molti modelli è che se è rotto allora più auto sono vulnerabili.

Dietro la crittografia ci sono le informazioni sul pulsante, il numero generato dal PRNG e alcune informazioni sul numero di feedback. Non abbastanza per rendere il PRNG da zero, ma abbastanza che dopo un determinato numero di pulsanti e con alcune informazioni interne sullo spazio limitato un numero di feedback può comportare (di nuovo, produttore, specifico della linea), il ricevitore può, dopo diversi allenamenti trasmissioni, determinare il numero di feedback e iniziare a tracciare il PRNG per quel telecomando.

Il rolling code ha lo scopo di bloccare gli attacchi di riproduzione. La crittografia ha lo scopo di proteggere il rolling code per evitare che venga rotto. Con solo l'uno o l'altro il sistema sarebbe troppo facile da rompere. Dal momento che il produttore controlla sia il trasmettitore che il ricevitore, la formazione non implica la crittografia a chiave pubblica o qualcosa di particolarmente coinvolto. Impedisce inoltre alle ventole aftermarket di funzionare in auto con questo tipo di sistema.

Il rolling code non è tuttavia impervio. Il vecchio sistema keeloq è stato attaccato con successo solo pochi anni fa (dopo un decennio di utilizzo) in modo da poter trovare il codice di crittografia del produttore e trovare i codici rolling più facilmente. In precedenza è stato attaccato in modi che hanno permesso alle persone di prendere veicoli senza effettivamente infrangere il codice. In risposta, la nuova chiave di crittografia è di 60 bit. Non così sicuro come molti sistemi di crittografia moderni, ma abbastanza sicuro che probabilmente durerà molti altri anni prima che si rompa.


Ah, devo aver dimenticato la parte "nessuna sequenza ripetuta" del PRNG, questo è molto importante. Qual è il vantaggio di trasmettere informazioni che consentono al destinatario di determinare il codice di feedback? Sembra meno sicuro che semplicemente scegliere un codice di feedback e produrre sia il trasmettitore che il ricevitore con esso noto ...
NickHalden,

@NickHalden il codice di feedback è diverso per ciascun telecomando e i clienti vorranno aggiungere più telecomandi in seguito o sostituire i telecomandi mancanti. È necessario solo per l'allenamento. Alcune versioni leggermente più sicure richiedono una specifica sequenza di pressioni di pulsanti sul telecomando prima che emetta le informazioni di feedback extra, ma in generale il sistema complessivo è abbastanza sicuro che anche se si interrompe la crittografia è ancora necessaria molta più informazione prima di quel piccolo un po 'di informazioni è sufficiente per ottenere l'intero codice di feedback.
Adam Davis,

8

Ho incontrato KeeLoq per la prima volta durante la ricerca del chip in un apriporta da garage. Il foglio dati Microchip fa un buon lavoro nel spiegare come funziona.

In breve:

  • il ricevitore mantiene un database di tutti i trasmettitori, digitato sul loro numero seriale.
  • ogni trasmettitore è associato a una chiave di crittografia simmetrica (64 bit), che si trova sul chip, e anche nel database del ricevitore.
  • a ciascun trasmettitore è associato un numero di sequenza ciclico a 16 bit, anch'esso memorizzato nel chip e nel database.
  • quando il trasmettitore è attivato, incrementa il suo numero di sequenza modulo 65536 (avvolgente 16 bit) e invia un pacchetto costituito da una maschera di bit che rappresenta quali pulsanti vengono premuti, il suo ID seriale e una versione crittografata del numero seriale.
  • il ricevitore corrisponde al numero seriale nel database, estrae la chiave e decodifica il numero seriale.
  • il numero di serie deve essere nuovo; non può essere un numero seriale usato di recente, che protegge dagli attacchi di riproduzione. (Vedi Fig. 7.3 nel foglio dati).
  • se il numero seriale viene verificato, il ricevitore può attivare la funzionalità in base alla maschera di bit dei pulsanti premuti.
  • se il nuovo numero seriale è in anticipo di oltre 16 valori (l'utente ha premuto più volte i pulsanti accidentalmente mentre si è allontanati dal ricevitore), è necessario un ulteriore movimento della mano per risincronizzare, che richiede una pressione aggiuntiva del pulsante. (L'utente eseguirà la pressione del pulsante extra, ritenendo che la ricezione sia errata).

L'aggiunta di un nuovo trasmettitore al database dei ricevitori è vagamente analoga, ad alto livello, al metodo di configurazione a pressione di pulsanti per l'aggiunta di client a un punto di accesso Wi-Fi. Al ricevitore viene detto in qualche modo messo in una modalità per cui accetta un nuovo trasmettitore.

Un nuovo trasmettitore può essere accettato dalle informazioni trasmesse nei normali messaggi di attivazione, se il ricevitore e il trasmettitore condividono lo stesso ID produttore segreto. Questo perché la chiave di crittografia a 64 bit deriva dall'ID del produttore e dalle informazioni seriali del ricevitore. (Vedi Sez. 7.1).

Esiste un'alternativa più sicura a questo: il "Secure Learn". Questo viene avviato in modo speciale sul trasmettitore (tre pulsanti premuti contemporaneamente). Il trasmettitore invia un pacchetto speciale: un valore seed di 60 bit da cui deriva la chiave di crittografia, presumibilmente non dipendente dall'ID del produttore o dal numero di serie.

Quando il ricevitore non è in modalità di apprendimento, ovviamente rifiuta le trasmissioni dai trasmettitori di cui non è a conoscenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.