- Elettronica Open Source - https://it.emcelettronica.com -

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 [1]), 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 [2]. Questo algoritmo prevede una codifica di canale sempre di tipo PWM e un pacchetto di informazioni composto da:

 

 

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:

 

I successivi 34 bit trasmessi in chiaro, contengono:

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