Qual è l'implicazione energetica della crittografia del traffico del mio sensore?


13

Considerando un tipo tipico di applicazione, un sensore alimentato a batteria che rileva letture (valore a 32 bit) ogni 10 minuti, qual è il probabile impatto sulla durata della batteria se scelgo un semplice protocollo on-air non crittografato, rispetto a una trasmissione crittografata?

Supponiamo che i miei dati non siano particolarmente segreti, ma secondo questa domanda probabilmente dovrei prendere in considerazione la crittografia, a condizione che non ci sia un costo di progettazione significativo.

Per semplicità, supponiamo che io stia usando un SoC nRF51822 che supporta uno stack BLE e anche un protocollo 2.4 GHz più semplice.

Dal momento che sto pensando a un'applicazione di prodotto commerciale piuttosto che a un'installazione una tantum, la crittografia deve essere intensiva per il calcolo per essere interrotta (diciamo almeno $ 500 del 2016 cloud computing), piuttosto che una semplice offuscamento. Qualcosa che rimane sicuro anche con l'accesso al firmware del dispositivo.


2
"Qualcosa che rimane sicuro anche con l'accesso al firmware del dispositivo." significa che è necessario utilizzare la crittografia asimmetrica che è computazionalmente costosa da invertire, oppure è necessario memorizzare una chiave simmetrica in cui non può essere recuperata o esercitata al recupero (noto attacco in chiaro, ecc.). Tipicamente in quest'ultimo caso, ogni copia del prodotto ha una chiave univoca in modo che il recupero da un campione non rompa l'intero sistema; ma questo significa che il ricevitore deve memorizzare tutte quelle chiavi.
Chris Stratton,

Risposte:


8

La maggior parte della tua energia sarà probabilmente spesa per la trasmissione RF, non per i cicli della CPU spesi nelle routine di crittografia. Ogni bit aggiuntivo trasmesso ti costerà più potenza della crittografia che stai proponendo. Ciò significa che se si adotta un approccio ingenuo, come l'utilizzo di AES in modalità CBC, si rischia di aumentare la dimensione del messaggio per trasportare i bit extra in ciascun blocco.

Se ritieni che la tua azienda abbia bisogno che i dati vengano crittografati, considera l'utilizzo di AES in modalità CTR per generare bit di cifratura del flusso. La modalità contatore è pratica per gestire i casi in cui la ricezione può essere inaffidabile e i pacchetti potrebbero andare persi. Dovrai mantenere sincronizzati i contatori, quindi tieni presente che la trasmissione periodica del valore del contatore aggiungerà al sovraccarico. E dovrai riservare alcuni byte di stato per contenere il contatore, perché il riutilizzo di un flusso di bit crittografato può portare direttamente al recupero dei dati.


Sembra convincente e pone un problema alquanto diverso sul problema, che questa volta non avevo pensato troppo.
Sean Houlihane,

2
Attenzione che CTR non fornisce autenticità dei dati. È necessario utilizzare una modalità di crittografia autenticata a meno che non si capisca perché l'autenticità non è un problema nell'applicazione.
Gilles 'SO- smetti di essere malvagio' il

10

Esistono una varietà di metodi di crittografia che è possibile utilizzare per proteggere il traffico e ognuno ha un consumo di energia leggermente diverso, quindi sceglierò un paio di scelte popolari. La metodologia che utilizzo per valutare ciascun metodo dovrebbe essere applicabile a qualsiasi altro codice che trovi e desideri confrontare.

AES

AES è uno dei più popolari algoritmi di crittografia a chiave simmetrica (il che significa che si utilizza la stessa chiave per crittografare e decrittografare). In termini di sicurezza, AES è una scommessa sicura:

La migliore crittoanalisi pubblica

Sono stati pubblicati attacchi che sono computazionalmente più veloci di un attacco di forza bruta completa, anche se nessuno dal 2013 è fattibile dal punto di vista computazionale.

- Wikipedia

Il documento Bicypt Cryptanalysis of the Full AES descrive che AES-128 richiede 2 126,1 operazioni, AES-192 richiede 2 189,7 operazioni e AES-256 richiede 2 254,4 operazioni da interrompere. Su un processore da 2,9 GHz, supponendo che ogni 'operazione' sia 1 ciclo della CPU (probabilmente non vero), la rottura di AES-128 richiederebbe molto tempo . Con 10.000 di loro in esecuzione, ci vorrà ancora quasi per sempre . Quindi, la sicurezza non è un problema qui; consideriamo l'aspetto del potere.

Questo documento mostra (a pagina 15) che la crittografia di un blocco con AES ha utilizzato 351 pJ. Lo confronterò un po 'più tardi dopo aver parlato di alcuni altri algoritmi comuni.

SIMON

Ho fatto una domanda su SIMON e SPECK in precedenza, che vale la pena leggere. Dove SIMON eccelle è nelle situazioni in cui è necessario crittografare un po 'di dati, frequentemente . Il documento che ho collegato in precedenza afferma che SIMON 64/96 utilizza 213 pJ per 64 bit, il che è pratico quando è necessario inviare solo 32 bit di payload.

SIMON 64/96 è significativamente più facile da interrompere rispetto ad AES; il documento che ho collegato suggerisce 2 63,9 operazioni, quindi la nostra configurazione di 10.000 CPU potrebbe decifrare la crittografia in pochi anni , a differenza di milioni di millenni.

Importa davvero?

Alla velocità che prevedi di trasmettere, la risposta è quasi certamente no ; l'utilizzo di energia dalla crittografia sarà del tutto trascurabile. Per AES, utilizzeresti 50 544 pJ al giorno , quindi una batteria AA al carbonio-zinco economica con 2340 J di energia durerebbe ben oltre la durata del dispositivo . Se rivaluti i calcoli con SIMON, scopri che ha anche una durata molto lunga

In breve, a meno che non si stia trasmettendo molto frequentemente, la radio è molto più preoccupante per il potere . Wikipedia cita il consumo di energia tra 0,01 e 0,5 W. Se trasmetti per 1 secondo a 0,01 W , hai già usato più potenza di AES durante l'intera giornata .

Per BLE, però, probabilmente stai bene affidandoti alla sicurezza predefinita; BLE utilizza AES-CCM per impostazione predefinita per la sicurezza a livello di collegamento :

La crittografia in Bluetooth a bassa energia utilizza la crittografia AES-CCM. Come BR / EDR, il controller LE eseguirà la funzione di crittografia. Questa funzione genera dati crittografati a 128 bit da una chiave a 128 bit e dati in testo normale a 128 bit utilizzando il cifrario a blocchi AES-128 bit come definito in FIPS-1971.

Tuttavia, vi sono alcune preoccupazioni in merito alla presenza di difetti di sicurezza nell'implementazione di BLE della sicurezza a livello di collegamento; questo non è un difetto in AES; piuttosto Bluetooth SIG ha deciso di implementare il proprio meccanismo di scambio di chiavi in ​​4.0 e 4.1 . Il problema è ora risolto in 4.2 poiché la curva ellittica Hellman-Diffie è ora supportata.


1
"Su un processore da 2,9 GHz, supponendo che ogni 'operazione' sia 1 ciclo della CPU (probabilmente non vero)" - probabilmente compensato da processori paralleli (come le GPU) che funzionano a velocità inferiori ma che producono più risultati per ciclo [e persino su CPU IIRC puoi raggiungere quasi 1 operazione / orologio su single core]. Non cambia troppo gli ordini di grandezza.
Maciej Piechotka,

@MaciejPiechotka Questo è un buon punto. Come suggerisci, l'ordine di grandezza non dovrebbe essere influenzato troppo, e alle scale su cui stiamo lavorando, un fattore 10 è ancora abbastanza insignificante (10 ^ 33 giorni contro 10 ^ 32 giorni non contano un terribile!).
Aurora0001

1
Un sistema simmetrico come AES è problematico a meno che ogni dispositivo non abbia una chiave univoca, altrimenti estrarlo da un solo campione sezionato rompe l'intero sistema.
Chris Stratton,

4

A meno che non si stia eseguendo una crittografia con accelerazione hardware, è probabile che il costo dell'energia sia elevato quando si arriva a un processore che è essenzialmente sopraffatto per le esigenze di base (non crittografiche). Tuttavia, nella maggior parte dei casi è comunque l'uso della radio a consumare più energia.

Dal momento che stai specificamente guardando un SOC bluetooth, considera il BGM-111 , che ha crittografia con accelerazione hardware sul chip. Ho giocato con questo chip e sembra buono, anche se non ho esaminato le funzioni crittografiche in modo specifico.

Un altro percorso, e forse il percorso "migliore" se si desidera assicurarsi che nessuno possa ottenere le chiavi anche se smontano il dispositivo. Comprende un chip TPM, come OPTIGA TPM , che ha chip TPM I2C e SPI supportati dai kernel Linux.

In breve, brucerai le batterie senza crittografia hardware specifica. Costruisci una scheda con un chip TPM o scegli un SoC più moderno con crittografia hardware già integrata.


2
La domanda suggerisce un SoC a 2,5 GHz e l'invio di un valore a 32 bit ogni 10 minuti. La quantità di calcolo necessaria per crypto è assolutamente trascurabile. Certo, quel SoC sembra sopraffatto per il compito. Ma per 32 bit ogni 10 minuti, il processore base più economico che puoi trovare sarà più che sufficiente.
Gilles 'SO- smetti di essere cattivo'

3
Con intervalli di 10 minuti, non importa quanto tempo ci vuole per crittografare, conta solo quanta energia . Devi guardare i dettagli dell'implementazione come i carichi parassiti per capire se un chip veloce che lo fa in 1 ms o uno lento che impiega 500ms vincerà sul consumo energetico, supponendo che entrambi dormano effettivamente quando non sono occupati. Un motore hardware potrebbe essere migliore del software, ma per l'efficienza energetica - che il lavoro più veloce sia irrilevante.
Chris Stratton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.