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.