Introduzione alla codifica RollingCode

Si sa, al giorno d’oggi la comodità regna sovrana e una tra le invenzioni più apprezzate è proprio il telecomando e, anche se non ce ne rendiamo conto, oramai gran parte degli elettrodomestici o dispositivi di uso comune possono essere pilotati attraverso l’utilizzo di un telecomando, semplice o complesso che sia.

Una parte di questi elettrodomestici utilizzano come mezzo di comunicazione delle trasmissioni ad infrarossi (come per esempio il telecomando della televisione) mentre, una bella fetta utilizzano radiocomandi che sfruttano le onde elettromagnetiche per trasmettere le informazioni.

Dopo il telecomando della televisione, uno dei radiocomandi più usati è proprio quello che permette l’automazione di sistemi di Home Automation come per esempio un cancello (anche se si stanno diffondendo gli apricancello gsm ), le tende o le tapparelle presenti nella nostra casa. Solitamente questi dispositivi sono pilotati da una centralina che pilota, con sistemi più o meno complessi, i motori e che riceve i comandi anche da un radiocomando che solitamente si trova in macchina o sopra un mobile della casa.

Come accennato in precedenza, questi radiocomandi trasmettono informazioni attraverso le onde elettromagnetiche o meglio attraverso la trasmissione di una portante (onda elettromagnetica ad una frequenza determinata) che, per il mercato europeo, solitamente è di 433,92 MHz o di 868,3 MHz; esistono anche portanti a frequenza più basse (ad esempio a 306 MHz) ma attualmente stanno cadendo in disuso.

 

 

Esistono radiocomandi che adottano altri tipi di modulazione come per esempio la FSK ma sono più rari rispetto a quelli che utilizzano la OOK per motivi sia di costi che di “praticità”.

 

 

Oltre a dover distinguere un bit “0” da un bit “1”, la ricevente deve poter distinguere una trasmissione da un’altra e per far questo solitamente viene inserita una sorta di pausa, più lunga dei tempi utilizzati per la trasmissione dei bit, che serve proprio a distinguere l’invio di un pacchetto di informazioni da l’invio di un altro pacchetto:

 

 

Anche per la codifica di canale, si hanno dispositivi che adottano altri tipi di codifiche, come quella Manchester, ma la gran parte dei radiocomandi che si trovano in commercio adottano la codifica di canale appena descritta.

Si capisce subito però che le informazioni trasmesse, se vengono trasmesse semplicemente tramite questa codifica, risultano essere “in chiaro” e qualsiasi persona male intenzionata e un po’ esperta nel settore, appostandosi nei pressi di un’abitazione o di un’auto, è in grado di catturare il codice attraverso un semplice ricevitore e quindi di riprodurlo al fine di portare a termine obbiettivi poco nobili.

Proprio per ovviare a questo problema esistono metodi di crittografia sufficientemente robusti che garantiscono la sicurezza delle informazioni trasmesse, le quali, anche se registrate da qualche male intenzionato, non sono riproducibili a meno che non si è in possesso dell’algoritmo di decrittografia ma soprattutto della giusta chiave.

Uno degli algoritmi più famosi è proprio l’algoritmo RollingCode della Microchip. Questo algoritmo prevede una codifica di canale sempre di tipo PWM e un pacchetto di informazioni composto da:

  • Preambolo formato da un’alternanza di stati logici alto-basso, utili alla sincronizzazione del ricevitore con la sorgente.
  • Un tempo di pausa prima dell’inizio della trasmissione dei bit di informazioni.
  • 66 bit che trasportano l’informazione.
  • Tempo di pausa prima dell’invio di un altro pacchetto.

 

 

Come si può intuire già dalla precedente immagine, i bit che trasportano l’informazione possono essere suddivisi in due parti: la prima parte è composta da bit criptati e che contengono l’informazione necessaria a verificare se il codice è corretto; la seconda è composta da bit in chiaro utili anche a determinare se il processo di decrittografia è andato a buon fine, come possiamo vedere dalla seguente immagine:

 

 

 

Abbiamo i primi 32 bit che compongono la parte criptata e che sono formati da:

  • 16 bit di “Sync Counter”: questi bit sono di fondamentale importanza per la sicurezza della trasmissione, infatti questi bit rappresentano un contatore che viene incrementato ogni pressione del radiocomando e quindi memorizzato dal ricevitore ogni volto che il codice viene ricevuto. In questo modo, se un male intenzionato volesse copiare e ritrasmettere il codice che si sta trasmettendo, la centralina si accorge se il codice che riceve è già stato utilizzato (essendo un contatore non è necessario che vengano tenuti in memoria tutti i valori ma è sufficiente controllare il valore ricevuto con l’ultimo memorizzato tramite un’opportuna finestra).
  • 10 bit di DISC che sarebbero i primi 10 bit del Serial Number presente nella parte del pacchetto trasmesso in chiaro. Questa parte è utile per verificare se la decrittografia operata dalla ricevente è stata eseguita in modo corretto.
  • 2 bit di OVR per identificare quando il Sync Counter va in Overflow
  • 4 bit di Button Status per identificare lo stato dei pulsanti premuti.

 

I successivi 34 bit trasmessi in chiaro, contengono:

  • 28 bit di Serial Number per identificare univocamente il radiocomando dagli altri (solitamente quando vengono prodotti sono serializzati).
  • 4 bit di Button Status per identificare lo stato dei pulsanti premuti (solitamente questi due bit vengono considerati insieme al Serial Number per avere un numero identificativo di 32 bit totali).
  • 1 bit per indicare se la batteria del trasmettitore è scarica.
  • 1 bit per indicare se il pacchetto che si sta trasmettendo è il primo della trasmissione (bit a 0) oppure sono ripetizioni dovute alla pressione prolungata del pulsante del radiocomando (bit a 1).

Letture consigliate: http://ww1.microchip.com/downloads/en/devicedoc/21143b.pdf

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend