FreeBSD abbandona i RNG sui chip

Il gruppo di lavoro che si dedica alla sicurezza di FreeBSD ha deciso di abbandonare l’utilizzo del generatore di numeri casuali (RNG) presente sui chip.

Il motivo principale di questa scelta risiede nel timore che tra le attività della NSA rivelate da Snowden ci sia stata anche quella di indebolire l’entropia di questi generatori come è successo con gli standard di crittografia del NIST.

Al posto del supporto del RNG sul silicio ci sarà un software che potrebbe essere Yarrow oppure il suo successore Fortuna.

Nella versione 10 di FreeBSD RdRand di Intel e Padlock di Via Technology verranno, quindi, abbandonati e sostituiti con un generatore via software; gli applicativi potranno comunque continuare ad utilizzare quelle funzioni al posto di /dev/random

Linux continua ad utilizzare i RNG sui chip, ma non come uniche fonti di entropia, contenendo l’eventuale (ma non ancora dimostrata [PDF]) limitazione artificiale del generatore di numeri casuali. Una possibile soluzione, specialmente per le macchine virtuali, potrebbe essere haveged, anche se la materia è ancora oggetto di discussione.

Una buona generazione di numeri casuali è fondamentale per garantire la sicurezza delle trasmissioni crittografate, quindi non si tratta di una questione di pura estetica.

Linux e numeri casuali

L’importanza della generazione dei numeri random in un sistema operativo server è tale che non può più essere lasciata al caso.

Linux utilizza /dev/random e /dev/urandom per fornire ai programmi una fonte di numeri pseudo-casuali. L’entropia di /dev/random deriva dall’interazione dell’utente (mouse e tastiera), dall’attività del disco e dagli interrupt di sistema. Purtroppo nei server headless parte delle fonti di entropia non sono disponibili, diminuendo la casualità dei numeri generati.

Una delle caratteristiche di /dev/random è che può essere anche scritto per alimentare il generatore con dell’entropia. Esistono alcune soluzioni che si basano su dispositivi hardware esterni, sul rumore termico della scheda audio, o su altri sistemi che generano grandezze non deterministiche legate a fattori esterni. La dipendenza da un hardware dedicato o specifico e la scarsa disponibilità di questi tipi di soluzioni sui server virtuali o in hosting ha portato Gary Wuertz e Jirka Hladky a trovare una soluzione alternativa.

I due hanno creato havaged, un programma che si basa su HAVEGE per alimentare /dev/random con la giusta dose di entropia al fine di migliorare la casualità dell’output.

Su un normale Linux CentOS la sequenza configure-make-make install funziona alla perfezione; il processo di make crea anche lo script da mettere in init.d per poter avviare il programma in modalità demonica.

La pagina di man di haveged contiene anche alcuni esempi di utilizzo interattivo del programma per generare password o per sovrascrivere file o partizioni con dati veramente casuali.