Costruire una difesa approfondita contro gli attacchi informatici

Nodo di origine: 1600298

Poiché il numero e il tipo di attacchi informatici, dal "semplice ed economico" al "costoso e sofisticato", continua a crescere a un ritmo drammatico, la protezione di chip e dispositivi deve impiegare una strategia di difesa approfondita. In questo modo, se un utente malintenzionato aggira con successo un meccanismo di protezione, dovrà affrontare un altro livello di difesa, piuttosto che un percorso chiaro verso le risorse che cerca di sfruttare. In questo blog parleremo di alcune delle protezioni che gli architetti della sicurezza possono organizzare per creare una difesa approfondita.

Protezione dell'integrità del firmware

Uno dei vettori di attacco logico più semplici è sostituire il firmware del dispositivo originale con un firmware canaglia. La protezione più semplice è avere tutto il firmware nella ROM incorporata. Per vari motivi, inclusi gli aggiornamenti di sicurezza sul campo, questo non viene più accettato. Sono necessari meccanismi di aggiornamento del firmware per consentire l'aggiornamento sul campo e l'aggiornamento dei dispositivi, comprese le patch di sicurezza. I flussi di avvio tipici iniziano con un piccolo caricatore di avvio nella ROM che estrae le fasi di avvio successive e il codice dell'applicazione da Flash esterno o tramite altri meccanismi. Un robusto schema di firma digitale crittografica può convalidare le immagini firmate digitalmente prima di consentirne l'avvio. I meccanismi estesi forniscono anche la riservatezza del firmware e meccanismi anti-rollback.

Protezione della memoria di runtime

La protezione della memoria di runtime è un servizio di sicurezza che può essere utilizzato per verificare l'integrità del codice dell'applicazione e dei dati in fase di esecuzione. I controlli di integrità delle memorie vengono avviati periodicamente o attivati ​​tramite eventi. Il servizio può essere utilizzato per proteggere codice e dati da modifiche non autorizzate non solo all'avvio come nella protezione dell'integrità del firmware sopra, ma durante l'intero runtime dell'applicazione. La protezione della memoria di runtime può essere utilizzata per verificare l'integrità del codice o dei dati dell'applicazione critica. In generale, la protezione della memoria di runtime ha senso per le memorie il cui contenuto rimane invariato per lunghi periodi di tempo. Esempi a cui ciò può applicarsi includono il codice del sistema operativo, le tabelle dei vettori di interrupt, i gestori di interrupt o il software di monitoraggio. Un ulteriore livello di protezione della memoria sarebbe la riservatezza, il rilevamento degli errori e la protezione anti-rollback delle aree di dati dell'applicazione della memoria.

Protezione della lettura

Oltre ad essere vitale per l'integrità del sistema, il firmware è una risorsa di alto valore che può richiedere la protezione della riservatezza oltre alla protezione dell'integrità e dell'autenticità, ad esempio per impedirne l'utilizzo nei cloni. Nei dispositivi che archiviano il firmware in un'area flash su chip, il firmware deve essere protetto da molti attacchi non invasivi tramite la protezione della lettura e dagli attacchi invasivi contro flash su chip. Quando viene utilizzata una flash esterna, il sottosistema di sicurezza potrebbe dover fornire meccanismi di protezione aggiuntivi come servizi di crittografia/decrittografia al volo e verifica per proteggere l'integrità del firmware archiviato in questa memoria non volatile (NVM).

Protezione dell'integrità del runtime

Potrebbero essere necessari meccanismi di protezione aggiuntivi per mantenere uno stato sicuro dopo l'avvio, ovvero durante l'esecuzione dell'applicazione per assicurarsi che il codice non solo venga letto correttamente dalla memoria, come con la protezione della memoria di runtime, ma anche eseguito correttamente. I moderni sottosistemi di sicurezza possono quindi essere dotati di meccanismi di protezione dell'integrità di runtime come la verifica regolare del corretto flusso di esecuzione del codice per convalidare l'integrità della piattaforma o, per una sicurezza di livello base, disporre di sensori di sicurezza ambientale per monitorare l'IC.

Isolamento dell'ambiente di lavorazione/sandboxing

Per ridurre la superficie di attacco, le attività complesse vengono suddivise in sottoattività più piccole, che vengono poi isolate l'una dall'altra in vari modi. Inoltre, limitare i diritti di accesso alle risorse IC che non sono richieste dall'attività è un modo per ridurre la superficie di attacco di tale attività.

Protezione contro gli attacchi dei canali laterali

Esiste una pletora di contromisure per combattere gli attacchi dei canali laterali. Questi vanno da progetti hardware speciali che bilanciano il consumo energetico indipendentemente da ciò che viene calcolato esattamente a un'ampia gamma di contromisure software che spesso coinvolgono sofisticate matematiche. Per i dispositivi costruiti con componenti hardware standard, l'attenzione per le contromisure di attacco del canale laterale si basa su metodi software. In sostanza, tutti questi metodi cercano di decorrelare l'informazione digitale logica (es. materiali preziosi per chiavi crittografiche) dalla sua rappresentazione fisica di bit. Allo stesso modo, l'obiettivo è di decorrelare i passaggi logici algoritmici eseguiti su queste chiavi dall'effettiva esecuzione fisica di operazioni su bit e byte. In un modo o nell'altro, ciò comporta spesso l'aggiunta della randomizzazione all'implementazione di un algoritmo crittografico. Le parole chiave qui sono mascherare, nascondere, accecare, ecc.

Protezione contro gli attacchi di fault injection

Il rimedio di base contro gli attacchi di iniezione di errori consiste nell'aggiungere ridondanza e resilienza all'hardware e al software a tutti i livelli. In alcuni casi, questo può essere semplice come definire i codici di ritorno in modo che siano valori diversi da tutti zeri o tutti uno, ma piuttosto due byte non banali. Ciò rende più difficile per un attacco glitch creare il valore di ritorno corretto desiderato. Aiuta anche ad aggiungere misure che monitorano se determinati blocchi di codice critici sono stati eseguiti e eseguiti nell'ordine corretto. Le contromisure varieranno anche a seconda che il guasto sia transitorio (ossia presente solo per un breve momento) o quasi permanente.

Uno degli aspetti più sorprendenti dell'esecuzione di un tale elenco di protezioni è che progettare una sicurezza di successo per un chip o un dispositivo può essere un compito arduo. Fortunatamente, ci sono esperti con soluzioni pronte all'uso che possono aiutarti. In Rambus, abbiamo quasi tre decenni di esperienza nella sicurezza e un ampio portafoglio di soluzioni IP di sicurezza. Possiamo aiutarti a salvaguardare i tuoi progetti sia che si rivolgano all'IoT di consumo o alle applicazioni militari più sensibili.

Risorse addizionali:

Bart Stevens

Bart Stevens

  (tutti i post)
Bart Stevens è direttore senior della gestione dei prodotti per la crittografia presso Rambus.

Fonte: https://semiengineering.com/building-a-defense-in-depth-against-cyberattacks/

Timestamp:

Di più da Ingegneria dei semiconduttori