Crittografia
Come già detto, il sistema deve poter lavorare in modalità sicura, usando quindi pesantemente la crittografia.
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!]
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 |