Questo post mi ha fatto trovare due articoli sulle debolezze di due memory stick USB che dovrebbero cifrare i dati memorizzati. Parlando di smartphone dicevamo che gli errori si ripetono. Qui naturalmente rivediamo gli errori attraverso cui sono già passate le smart card. La cosa deprimente di questi tre prodotti in particolare non è che sia stata trovata una vulnerabilità, ma la banalità della vulnerabilità e la grossolanità del progetto. A lezione dico sempre che alla fine un’autenticazione si riduce a un if..then piazzato da qualche parte nel codice: se la condizione è vera, l’autenticazione ha successo, se la condizione fallisce l’autenticazione fallisce. Poter intervenire su quel piccolo frammento di codice vuole dire aggirare l’intero meccanismo di autenticazione. Per questo, quella parte di codice deve essere assolutamente protetta. I memory stick analizzati invece portano l’autenticazione nel programma sul PC, ovvero in un contesto che dal punto di vista dello stick dovrebbe essere untrusted. Se lo scopo è cifrare le informazioni, allora non dovrebbe servire alcuna autenticazione: dovrebbe servire una chiave. In questo contesto, è facile che la chiave sia derivata da una “password” utente, di cui eredita i limiti; comunque, come dice giustamente l’autore dei test, sia non ci dovrebbe essere nessuna informazione di autenticazione memorizzata sullo stick: se l’utente fornisce la chiave giusta, decifra i dati, altrimenti ottiene garbage. Se c’è un’autenticazione con impronta digitale, ovviamente le cose non sono così semplici, e sia la copia di confronto che la routine di autenticazione dovrebbero restare sullo stick. Per inciso, dà da pensare il fatto che tre stick analizzati su tre presentino lo stesso problema.
Chiaramente, il problema non è che esistano prodotti scadenti: il problema è che l’utente medio, che comprende generalmente anche chi si occupa del procurement per grosse aziende, non ha strumenti per riconoscerli. Questo tipo di prodotti è quello per il quale ha più senso l’uso dei Common Criteria, ed infatti per le smart card esistono dei protection profile che affrontano attacchi ben più complessi, come la possibilità di agire fisicamente sui circuiti e la loro alimentazione, fino ad arrivare al bombardamento con raggi X: tutte tecniche già sperimentate con le smart card e che rappresentano un’ordalia attraverso la quale questi stick devono ancora passare. Anche qui si arriverà, credo, a dei protection profile e certificazioni di uso comune, ma nuovamente passando attraverso la ripetizione di errori già fatti.
Un’ultima nota. In realtà ci può essere un motivo per avere la chiave di cifratura memorizzata da qualche parte sullo stick: è quando il produttore dello stick, pur avendo assicurato per dritto e per rovescio che senza la chiave i dati non sono recuperabili, vuole mantenere comunque una via per recuperare i dati quando il cliente nel panico per aver perso la chiave è disposto a tutto per riaverli: si chiamano backdoor 😉 Ma quando vengono scoperte, la sicurezza sparisce…