La crittografia leggera è necessaria per garantire la confidenzialità, integrità ed autenticità dei messaggi tra sensori/tag e hub di molti di quegli apparecchi ed oggetti connessi a internet che dispongono di un’energia molto limitata. Ragion per cui gli schemi crittografici devono essere il più ‘leggeri’ possibile, cioè devono funzionare minimizzando quanto possibile il consumo di risorse (e garantendo – ovviamente – un adeguato livello di sicurezza). Vediamo cos’è, quali sono le caratteristiche, i vincoli e come vengono classificati gli schemi cosiddetti leggeri.
Crittografia leggera e IoT
La sempre più crescente diffusione di apparecchi ed oggetti connessi a internet, comunemente conosciuti come l’Internet of Things (IoT), implica – tra le altre cose – l’estrema eterogeneità di tali apparecchi, che vanno da server dotati di potenti processori a microcontrollori con ridotte capacità computazionali, o addirittura tag RFID. Pertanto, è lecito assumere che una significativa frazione degli apparecchi che costituiscono (o andranno a costituire) l’Internet of Things non ha a disposizione la capacità computazionale richiesta dagli schemi crittografici utilizzati usualmente (ad esempio AES): il tempo di latenza potrebbe essere troppo elevato, così come il consumo energetico richiesto.
Ad esempio, consideriamo una rete di sensori: tale rete collega una moltitudine di (relativamente) semplici sensori ad un hub centralizzato. I sensori operano grazie a batterie e/o sorgenti di energia autonoma (ad esempio, pannelli solari). In aggiunta, consideriamo uno scenario con vincoli ancora maggiori: i tag RFID vengono utilizzati per identificare apparecchi, oggetti, animali e persone. Per prevenire la loro identificazione da parte di soggetti non autorizzati, l’informazione trasmessa da tali tag è crittografata con schemi crittografici ad-hoc, date le estreme limitazioni hardware dei tag stessi.
Per garantire la confidenzialità, integrità ed autenticità dei messaggi tra sensori/tag e hub è prassi comune impiegare opportuni schemi crittografici. Dal momento che l’energia a disposizione è molto limitata, tali schemi devono essere il più ‘leggeri’ possibile, cioè devono funzionare minimizzando quanto possibile il consumo di risorse (e garantendo – ovviamente – un adeguato livello di sicurezza).
Negli anni recenti, sono stati proposti moltissimi schemi crittografici (per lo più simmetrici) che possono essere considerati leggeri, pur variando moltissimo le scelte progettuali su cui sono basati (in realtà, l’unico comune denominatore sembra essere la limitata potenza computazionale richiesta), tale varietà fa sì che vengono considerati leggeri schemi e algoritmi che hanno proprietà molto differenti e che operano in contesti altrettanto differenti. Come conseguenza, è molto difficile dare una definizione chiara e condivisa del termine ‘leggero’ e di cosa tale definizione comporta. Ad esempio: è sensato richiedere che uno schema crittografico leggero è sicuro rispetto ad attacchi che necessitano di grandi quantità di dati? Se il device in questione è un tag RFID, probabilmente no. Al contrario, se il device è connesso ad internet e – ad esempio – scarica aggiornamenti software ad intervalli regolari, allora tale livello di protezione è desiderabile. Approfondiremo questo punto nelle conclusioni.
Crittografia leggera, i vincoli hardware e software
Precisiamo ora quali sono i vincoli progettuali hardware e software che caratterizzano uno schema leggero. Se le operazioni che formano lo schema sono implementate direttamente in hardware, allora la grandezza del circuito corrispondente (memoria più porte logiche), insieme al throughput (byte processati per secondo), sono le misure principali impiegate per stimare la complessità dell’implementazione stessa. Altri vincoli relativi all’hardware riguardano il consumo energetico e la latenza, ossia il tempo impegnato per completare una data operazione.
Se lo schema è implementato in software (come nella maggior parte degli schemi impiegati su microcontrollori), allora i parametri rilevanti sono la memoria impiegata, la grandezza del codice eseguibile ed il throughput.
Crittografia leggera, sicurezza e obiettivi
Riguardo alla sicurezza (indipendentemente dall’approccio implementativo adottato) uno schema crittografico leggero deve fornire un’elevata protezione riguardo agli attacchi side-channel (attacchi in cui viene sfruttata informazione specifica riguardante l’implementazione ed il suo funzionamento; ad esempio la conoscenza del consumo energetico di un processore che sta eseguendo una cifratura con lo schema AES può rivelare informazioni sul numero di bit settati a 1 durante la cifratura stessa). Gli attacchi side-channel richiedono che l’attaccante può fisicamente accedere all’apparecchio attaccato. Questa condizione è particolarmente facile da soddisfare nel contesto dell’IoT, a differenza di quanto succede in scenari più classici, in cui è più semplice prevenire l’accesso fisico a grandi server, ad esempio.
Pertanto, gli obiettivi di uno schema crittografico leggero sono
- minimizzare la grandezza della memoria e del circuito/codice eseguibile,
- massimizzare il throughput e
- garantire la sicurezza, specialmente riguardo ad attacchi side-channel.
Tali obiettivi sono chiaramente in conflitto tra di loro e questo ha favorito l’introduzione di trade-off riguardanti la grandezza dei blocchi e delle chiavi (che nella maggior parte degli schemi leggeri è pari a 64 bit) e sul numero di operazioni che compongono uno schema (ad esempio, il numero di round, che in molti casi è uguale a 1).
Queste considerazioni potrebbero indurre a pensare che per ottenere uno schema crittografico leggero è sufficiente partire da uno schema ‘classico’ (ad esempio AES) per poi ‘alleggerire’ la corrispondente implementazione. Tuttavia, questo approccio rende gli schemi ‘alleggeriti’ suscettibili ad attacchi side-channel: l’esempio paradigmatico è un attacco side-channel ideato da Adi Shamir ed i suoi collaboratori nel 2016 in cui la procedura di update del software utilizzato da lampadine smart è stata utilizzata per infettare tali lampadine con software malevolo. L’attacco ha sfruttato il fatto che la procedura di update autentica il nuovo software utilizzando una funzione MAC basata su AES con chiave di cifratura costante su tutti le lampadine. In generale, è frequente il caso in cui i vincoli hardware e software (ad esempio, microcontrollori ad 8 bit o funzioni hash crittografiche) è tale da escludere implementazioni leggere di schemi classici sufficientemente sicure.
Gli schemi leggeri più noti
Al momento presente, non esiste uno schema crittografico leggero standard, come AES o SHA nel caso classico. Al contrario, come accennato in precedenza sono stati ideati più di un centinaio di schemi leggeri sia in ambito accademico, sia in ambito industriale e governativo. I più noti sono RC5, XTEA, GOST, Present, Clefia, Skipjack, SIMON (schemi di cifratura a blocchi), Blake2s/b, SipHash, Armadillo (funzioni hash), Chacha20, Salsa20, Snow 2.0/3g (schemi di cifratura basati su stream). Di particolare rilievo per per applicazioni in ambito Iot risultano essere le librerie Tinysec e mbedTLS.
Definizione e classificazione degli schemi leggeri
Concludiamo sottolineando di nuovo l’estrema varietà degli schemi crittografici che possono essere dichiarati leggeri e la conseguente difficoltà nel definire il termine ‘leggero’. Come esempio di tale varietà facciamo notare che, da un lato, esistono schemi che – ad esempio – operano su piccoli blocchi di 64 bit con chiavi di cifratura di 80 bit; dall’altro lato, sono stati definiti schemi con caratteristiche simili a quelle di schemi classici, che operano su blocchi di 256 bit e che utilizzano operazioni costose (in termini computazionali) come addizioni modulari, trasposizioni, etc. Negli ultimi anni, due linee di ricerca sono quindi emerse, cercando di classificare più efficacemente le caratteristiche degli schemi leggeri di quanto non fatto in passato:
- schemi crittografici ultraleggeri: operano su device economici con scarsissime risorse hardware e software (ad esempio, tag RFID). Tali device non sono connessi ad internet.
- schemi crittografici per IoT: operano su device più potenti di quelli considerati al punto precedente, ma le loro risorse computazionali sono molto limitate, ad esempio da vincoli riguardanti il consumo energetico. Tali device sono connessi ad Internet.
La sistematizzazione nelle due classi sopra descritte appare essere proficua, tenendo in considerazione il fatto che ad esse corrispondono differenti esigenze dal punto di vista della sicurezza. Infatti, connettere ad internet un insieme di device protetti da uno schema con chiave di 80 bit non appare essere una soluzione desiderabile, e questo viene rimarcato dal fatto che è stato impiegato uno schema ultraleggero al posto di uno schema per IoT.