Si chiama Sebastiano Vigna il docente che ha sviluppato xorshift128+, l’algoritmo che mette in sicurezza la generazione casuale di codici in rete
Quando acquistate oggetti o contenuti virtuali (come app e videogiochi) online può entrare in gioco un sistema automatizzato per la creazione di numeri pseudocasuali (PNRG). Si tratta di un metodo utilizzato a livello informatico dai gestori di portali che si affidano alla funzione JavaScript Math.random per creare sequenze univoche che identifichino un’operazione di pagamento sul web, tramite una stringa che contiene informazioni univoche sull’acquisto, tra cui anche dati sulla carta utilizzata. Il problema è che l’algoritmo che genera le stringhe numeriche non è così perfetto, soprattutto se viene utilizzato il motore di Google V8 che sfrutta il codice chiamato MWC1616, responsabile di creare sequenze ben poco “casuali”.
La soluzione
E infatti una startup italiana ha scoperto pericolose similitudini tra le sequenze associate a procedure di acquisto totalmente diverse, effettuate da soggetti differenti. Ciò poteva permettere a scaltri criminali informatici di risalire a numeri di carte di credito oppure di manomettere il risultato di giochi online. Da qui l’integrazione prima in Firefox e Safari e poi in Chrome di un nuovo algoritmo, chiamato xorshift128+, che adotta un approccio più avanzato alla creazione di stringhe alfanumeriche tanto da superare anche i test più stringenti di analisi statistica, come il TestU01. La notizia è che xorshift128+ è frutto dell’ingegno di un matematico italiano, Sebastiano Vigna, docente presso l’Università degli Studi di Milano che già ad aprile aveva convinto Mozilla e Apple ad adottare la sua scoperta. “Generare sequenze numeriche in modo casuale è molto difficile e costoso – ha spiegato – per questo si utilizzano algoritmi che mimano la casualità possibile in un evento fisico, come il lancio di un dado”. Algoritmi che portavano con sé diversi limiti, come quello di sfruttare uno stesso seme di partenza per la produzione delle stringhe. La soluzione pensata da Vigna è stata aumentare la possibilità casistica del generatore di codici, portando a 2128-1 il periodo dell’algoritmo, ovvero aumentando il numero di elementi tra cui scegliere per la creazione di una sequenza, così da spostare sempre più in là ogni casualità di ripetizione.