Crittografia

Come già detto, il sistema deve poter lavorare in modalità sicura, usando quindi pesantemente la crittografia.

Algoritmi da tenere in considerazione
Algoritmo Key (bits) Block (bits) Note Miglior attacco
DES 56 64 Vecchio Crackato in 3 giorni con HW dedicato, 22h con distributed.net
SKIPJACK 80 64 Ancora poco analizzato dalla comunità; doveva essere usato nel Clipper-chip 31 su 32 round con impossible differentials
TEA 128 64 Chiavi equivalenti a gruppi di 4 (quindi 126 bit di keyspace reale); varie versioni per reagire ad attacchi Crackabile con 223 chosen plaintext + 1 related-key query; esiste un attacco a 17 dei 32 round
Khazad 128 64 Molto interessante; finalista NESSIE 5 su 8 round
Blowfish 32-448 64 Alcune chiavi deboli note; usa quasi 2KB per le chiavi N/A
AES(Rijndael) 128 128 Ottimo algoritmo, ma un po' ingombrante e lento su PIC N/A
Serpent 256 128 Secondo posto in AES, più lento ma usa meno memoria 9 di 32 round crackabili con amplified boomerang technique, 2110 chosen plaintexts, 2212 bytes di RAM e ˜2252 trial encryptions... ROFLASTC!
TwoFish 128/192/256 128 Altro finalista AES; complesso N/A
MARS 128-1248 128 Altro finalista AES, by IBM N/A

Per il PIC sono disponibili liberamente varie cryptolib. Ho reperito senza problemi quelle per DES (Microchip AN583), AES(Rijndael)-128 (Microchip AN821) e TEA (16 e 17).

Sono comunque disponibili, a pagamento, anche librerie per crittografia asimmetrica. Microchip fornisce queste per i dsPIC a 40MIPS. Se non c'è altro modo, si può implementare una libreria simile su chip diversi. Se anche "presentare" un sensore alla centrale richiedesse 2-3 secondi di elaborazione, sarebbe comunque un tempo accettabile (in fondo è un'operazione da effettuare una volta sola... e se non si vuole essere paranoici e si sceglie di fidarsi del costruttore, l'operazione diventa molto più rapida: basta caricare nella centrale il file contenente le chiavi pubbliche e gli ID dei sensori, firmato dal costruttore al momento della fabbricazione). [Questa soluzione mi piace pochissimo! Tra la fabbricazione e l'installazione un attaccante ha tutto il tempo di crackare un modulo di comunicazione, estrarne la chiave e duplicarla in un nuovo modulo tenendosi quella segreta a disposizione!]

Algoritmi di hashing da tenere in considerazione
Algoritmo Block (bits) Hash (bits) Note Miglior attacco
SHA-1 512 160 Si vocifera di collisioni generate
MD5 128 128 Vecchio Pare ci siano vari metodi per generare collisioni