Matematica, processori, criptoanalisi e backdoor NSA

E chi più ne ha più ne metta. Due articoli, uno riguardo a debolezze in un algoritmo per la generazione di numeri (pseudo?)casuali proposto da NSA e standardizzato dal NIST, un altro contenente considerazioni sugli effetti che la complessità dei processori può avere sugli algoritmi di crittografia. Pertiamo dal secondo, più complesso come concetto ma più semplice per me da affrontare. Adi Shamir suggerisce che l’aumento di complessità dei processori, che probabilmente (certamente?) porterà ad un aumento degli errori di progetto e realizzazione dei processori stessi, potrebbe avere come conseguenza l’introduzione di errori nel calcolo degli algoritmi crittografici, con conseguente indebolimento delle protezioni. Vediamo prima di tutto il rapporto fra errori e crittografia. Prenderò come esempio un attacco alle smart card (così mi ricollego ad una recente discussione su Sikurezza). Tempo fa ci si è resi conto che salvare su una smart card la chiave privata sempre allo stesso indirizzo di memoria vuole dire di fatto salvarla sempre nella stessa area fisica della memoria, ovvero della smart card. Questo vuole dire che si può “guardare” il chip sapendo che lì, in un punto preciso, c’è la chiave privata. Gli algoritmi a chiave pubblica si basano su relazioni fra chiave pubblica e privata dovute a precise proprietà dei numeri coinvolti, ad esempio, in qualche caso, l’essere primi. Sapendo dove si trova esattamente la chiave sul chip, è possibile bombardare con raggi X quella specifica area del chip (sembra fantascienza, vero?), causando il “salto” di qualche bit (possibilmente uno) da 0 a 1 o viceversa. Questo vuole dire che la chiave privata presente non è più quella originale ma un numero che differisce di un bit, e soprattutto che non ha più le caratteristiche particolari che aveva la chiave originaria, ad esempio non è più un numero primo ed è facilmente fattorizzabile. Cifrando qualcosa con quella chiave diventa quindi facile scoprirla, e da quella chiave diventa banale trovare la chiave originaria. La soluzione al problema è randomizzare la posizione della chiave nella memoria della smart card, e quindi sul chip. Tutto questo per dire che gli algoritmi crittografici sono estremamente delicati dal punto di vista matematico, e l’introduzione di un minimo errore nel calcolo può minarne completamente la robustezza (oltre ovviamente a fornire un risultato sbagliato). Quindi, un processore che ogni tanto introduca degli errori è un rischio. Fin qui il ragionamento fila. La mia perplessità deriva dal fatto che, per quanto ne so, gli algoritmi crittografici si basano principalmente su oprazioni sugli interi, che non mi sembra la parte che più facilmente può essere influenzata dall’aumento di complessità dei processori moderni. O, se vogliamo, errori nelle oprazioni sugli interi avrebbero probabilmente tali e tanti effetti spiacevoli sui risultati di qualsiasi computazione che gli “occasionali” errori sugli algoritmi crittografici sarebbero il meno. Insomma, mi sembra che il problema derivi dall’aver visto il problema solo dal punto di vista del crittografo. Ma d’altra parte mi posso tranquillamente sbagliare.

Il problema affrontato da Schneier è più spinoso, principalmente perché si avvicina a quella “sindrome della cospirazione” che rende subito sospettosi. Eppure, sembra che qui la sostanza ci possa essere. Il fatto che l’NSA abbia da sempre influenzato le scelte sugli algoritmi crittografici, sfruttando le proprie competenze ma spesso senza giustificare le proprie indicazioni, ha sempre causato sospetto. Famoso è il caso di DES. Tuttavia, qui la situazione è, come dice Schneier, “stinky”. Non è chiaro ovviamente se l’NSA ha volutamente indicato un algoritmo debole o ha fatto un errore, ma certo c’è parecchio da giustificare sull’inserimento di un algoritmo con i difetti di Dual_EC_DRBG. E d’altra parte, è un algoritmo più lento, e quindi ci si può aspettare che proprio questo sia l’algoritmo meno utilizzato da chi non ha motivo di “preferire” le indicazioni dell’NSA. Tenderei ad essere d’accordo con uno dei commenti pubblicati all’articolo di Schneier: “The only sane explanation is some official / person in power who kept on pushing for this, regardless of what the techies said.” Purtroppo spesso le cose hanno delle spiegazioni molto semplici e molto squallide.

This entry was posted in Sicurezza. Bookmark the permalink.