Progetto di un sistema hacker di intrusione al CAN-BUS di un veicolo con Arduino e la scheda CAN-BUS Shield V2

car hacking

I veicoli moderni sono dotati di un sistema di controllo basato sulla rete CAN-BUS. Questa rete di comunicazione intelligente consente di evitare una moltitudine di cavi di collegamento dei numerosi dispositivi presenti in un’autovettura. In questo articolo, faremo una panoramica introduttiva sul sistema CAN-BUS e descriveremo un progetto/tutorial per accedere al sistema CAN-BUS di un’auto utilizzando Arduino e lo Shield CAN-BUS di Seeed Studio.

Introduzione - La rete CAN

La rete CAN (Controller Area Network) viene utilizzata per consentire ai microcontrollori e ai dispositivi di comunicare tra loro all'interno di un veicolo senza la necessità di un computer host di controllo e acquisizione dei dati. Questi dispositivi sono anche chiamati unità di controllo elettronico (ECU) e consentono la comunicazione tra tutte le parti di un veicolo. Attualmente, in un'auto moderna, tra le numerose ECU si possono trovare unità di controllo del motore, airbag, sistema audio, ecc. In sostanza, CAN è un bus di comunicazione seriale progettato per applicazioni industriali e automobilistiche. Oltre all’interno degli autoveicoli, si trova ad esempio nelle attrezzature agricole, negli ambienti industriali, e in altri ambienti ancora.

Il dispositivo di controllo del livello di carburante, i sensori delle portiere, il contachilometri e molte altre parti di un'auto devono comunicare tra loro in qualche modo e CAN-BUS è proprio questa funzione che svolge. Questi componenti compatibili con CAN, chiamati “nodi”, sono collegati senza l’utilizzo del router centrale per gestire il flusso di dati. Ogni nodo può “ascoltare” i messaggi di ogni altro nodo. Ogni nodo ha un ID; quelli con l'ID di priorità più alta possono “parlare” per primi mentre gli altri “ascoltano”. Questo, per garantire che non ci siano mai due nodi che parlano contemporaneamente. Il vantaggio più grande del CAN-BUS è la possibilità di collegare semplicemente i componenti senza doversi preoccupare del routing del segnale.

La Figura 1 riporta uno schema a blocchi semplificato di un collegamento di unità ECU al bus CAN.

Schema a blocchi semplificato di ECU collegate al bus CAN

Figura 1: Schema a blocchi semplificato di ECU collegate al bus CAN

Il vantaggio di utilizzare il protocollo CAN rispetto all’UART, SPI e I2C

Rispetto ad altri protocolli di comunicazione come UART, SPI e I2C, l'utilizzo del protocollo CAN è molto più affidabile in quanto è un protocollo di comunicazione automobilistico standard utilizzato per trasmettere dati vitali, come ad esempio la posizione dell'acceleratore in un veicolo. Se si verificano problemi di comunicazione o perdita di dati, potrebbero verificarsi guasti critici. In un veicolo, la sicurezza e l’affidabilità sono le due caratteristiche più apprezzate. CAN-BUS è quindi il protocollo ideale per l'utilizzo veicolare. Lo standard CAN-BUS viene utilizzato praticamente in tutti i veicoli e in molti macchinari grazie ai seguenti vantaggi chiave.

Economico - Il cablaggio multiplex che combina segnali analogici e digitali e la loro trasmissione su un mezzo condiviso, riduce la quantità di cavi necessari, gli errori e il peso. Quando si aggiungono o si riducono alcune apparecchiature, è possibile gestirle facilmente e non è necessario effettuare una trasformazione su larga scala del sistema, con un notevole risparmio di manodopera e costi.

Centralizzato - Poiché CAN-BUS supporta il controllo centralizzato sui dispositivi elettronici collegati alla rete, consente la diagnostica centrale, la registrazione dei dati e la configurazione. Anche la gestione degli errori è integrata nel protocollo CAN in cui i nodi possono verificare la presenza di errori nella trasmissione mantenendo il proprio contatore di errori. Ad esempio, il protocollo supporta diverse funzionalità di rilevamento degli errori come l’errore di bit, errore di conferma, errore di modulo, errore CRC, ecc.

Flessibile - Dato che ogni ECU collegata al CAN può ricevere tutti i messaggi trasmessi, può anche decidere se sono rilevanti e agire di conseguenza. Il protocollo CAN è anche un protocollo di comunicazione basato su messaggi in cui i nodi sul bus non hanno informazioni identificative. Con le funzionalità di cui sopra, i nodi possono essere facilmente aggiunti, rimossi e modificati. Pertanto, sarà facile integrare nuovi dispositivi elettronici nella rete CAN-BUS senza notevoli capacità e costi di programmazione.

Robusto - Quando si sceglie un protocollo di comunicazione, la durata e l'affidabilità sono molto importanti. Con il CAN-BUS il sistema è resistente ai disturbi elettrici e alle interferenze elettromagnetiche, quindi è ideale per applicazioni critiche per la sicurezza.

Efficiente - I frame dei messaggi CAN hanno la priorità in base all'ID in cui la priorità massima otterrà l'accesso al bus e senza interruzione dei frame. La programmazione flash consente inoltre di risparmiare tempo unitamente a un cablaggio ridotto e semplice.

Il ruolo del CAN-BUS

Senza il protocollo CAN, i moduli elettronici nei veicoli dovranno comunicare tra loro utilizzando linee di segnale analogico dirette da punto a punto. Ciò, non è solo dispendioso in termini di tempo, ma comporta anche una quantità eccessiva di cablaggio se ciascun modulo richiede una linea diretta per la comunicazione. Inoltre, potrebbe esserci una comunicazione inaffidabile tra i dispositivi. Un numero eccessivo di cavi può richiedere apparecchiature aggiuntive, il che crea anche problemi di costi. Con il protocollo CAN si elimina la necessità di tutti questi cablaggi consentendo ai dispositivi elettronici di comunicare tra loro con un unico cavo multiplex garantendo al tempo stesso che ogni modulo elettronico nei veicoli riceva dati da sensori e attuatori. Ciò consente all'utente di collegare un numero qualsiasi di ECU nel veicolo tramite il bus a due fili. Consente, inoltre, di aggiungere diverse funzionalità tramite software. Oltre a ciò, una ECU è in grado di utilizzare i dati di un'altra ECU eliminando la necessità di installare gli stessi sensori in più dispositivi.

Le connessioni del CAN-BUS

Come abbiamo visto in Figura 1, il bus CAN è costituito da due fili per la trasmissione dati bidirezionale: CAN_H (CAN positivo) e CAN_L (CAN negativo). I fili agiscono come una linea differenziale, il che significa che il segnale CAN può essere 0 o 1, può essere rappresentato dalla differenza di potenziale tra i due fili. Quando il bus CAN è in modalità inattiva, entrambe le linee sono allo stesso potenziale di 2,5 V. Quando vengono trasmessi i bit di dati, la linea CAN_H passa a 3,75 V e la linea CAN_L scende a 1,25 V, generando così una tensione differenziale di 2,5 V tra le due linee. Per la terminazione del bus CAN, viene generalmente utilizzato un singolo resistore da 120 Ohm collegato alle due estremità del bus della rete CAN.

Velocità e portata del protocollo CAN

Le velocità di comunicazione del protocollo CAN vanno da 10kpbs a 1Mbps. La velocità dipende anche dalla lunghezza delle linee utilizzate. Più sono corte, maggiore è la velocità di comunicazione. Ad esempio, per una lunghezza di 40 metri, la velocità sarà di 1Mbps. A 1000 metri, la velocità può scendere a 50 Kbps.

Il Messaggio CAN

Il messaggio CAN contiene molti segmenti di cui i principali sono l’identificatore e i dati. L'identificatore viene utilizzato per identificare i dispositivi in una rete CAN, mentre i dati saranno i dati del sensore o di controllo che devono essere inviati da un dispositivo ad un altro. L'identificatore, o CAN ID, ha una lunghezza di 11 bit per il CAN standard o 29 bit per il CAN esteso. I dati possono essere costituiti da 0 a 8 byte.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2442 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend