Punto informatico Network
Canali
20080829205646

Pianificazione della casualità nella crittografia

30/09/2013
- A cura di
Tecnologia & Attualità - Strategie di attacco e difesa utilizzando un generatore di numeri pseudocasuali PRNG.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

crittografia (1) .

Valutazione

  •  
Voto complessivo 4.5 calcolato su 40 voti
Il pezzo che stai leggendo è stato pubblicato oltre un anno fa. AvvisoLa trattazione seguente è piuttosto datata. Sebbene questo non implichi automaticamente che quanto descritto abbia perso di validità, non è da escludere che la situazione si sia evoluta nel frattempo. Raccomandiamo quantomeno di proseguire la lettura contestualizzando il tutto nel periodo in cui è stato proposto.

In crittografia esistono delle alternative all'impiego di dati realmente casuali, una di queste è rappresentata dai dati pseudocasuali: questi non dovranno assolutamente essere considerati esplicitamente casuali poiché generati da un seme che ricorre ad un algoritmo deterministico, pertanto, conoscendo il seme, è possibile prevedere i dati pseudocasuali. I tradizionali generatori di numeri pseudocasuali, PRNG (Pseudorandom Number Generator) si rivelano poco sicuri se sottoposti a delle tecniche di assalto particolarmente aggressive e ben impostate poiché non in grado di opporsi ad attacchi mirati ed estremamente ingegnosi.

Hrdware random.jpg

È indispensabile, nello specifico caso, avere la certezza che ad un malintenzionato sia noto l'algoritmo utilizzato per la generazione dei dati, pertanto, in base a determinati output pseudocasuali, egli sarà in grado di fare previsioni sui bit già prodotti e, naturalmente, su quelli da produrre. Se ciò è tollerabile con buona parte dei PRNG tradizionali, non dovrà assolutamente accadere con i PRNG crittografici. Infatti, seppure l'attaccante disponesse di una corposa quantità di dati prodotti da un PRNG, non dovrebbe comunque essere in grado di prevedere futuri output.

Un PRNG che ha questa capacità è definito forte dal punto di vista crittografico, a differenza delle tradizionali funzioni random presenti nelle svariate librerie legate alla programmazione: talune di queste non sono dei PRNG crittografici oppure rilasciate con dei PRNG inefficaci, eccezion fatta per quelle librerie che dispongono di una forza crittografica ampiamente dimostrata e, chiaramente, minuziosamente documentata.

Dare un seme al PRNG

In linea torica è possibile dimostrare che i dati realmente casuali sono da preferirsi rispetto a quelli pseudocasuali di un PRNG, infatti in taluni protocolli crittografici non sono assolutamente possibili degli attacchi se si utilizzano dati esplicitamente casuali. Nel primo caso possiamo quindi affermare che il protocollo è sicuro, mentre, per quanto riguarda il PRNG, questi resterà sicuro fintanto che l'attaccante non violerà quest'ultimo. Per quanto sopra esposto diciamo che il protocollo si definisce sicuro dal punto di vista computazionale, tenendo presente che tutti i protocolli crittografici, sotto ogni aspetto, si basano su deduzioni di natura computazionale.

Rimuovere ipotesi di questo genere in previsione di un attacco non costituisce comunque un progresso, infatti la generazione di dati realmente casuali è complicata a tal punto che può sussistere il reale pericolo di ridurre il livello di sicurezza nel tentativo di ricorrerere a queste specifiche tecniche. Utilizzare quindi dati realmente casuali per dotare il PRNG di un seme, permetterà sicuramente lo sviluppo di un sistema estremamente sicuro.

Random_chip_picmicro.jpg

Ipotetici attacchi ad un PRNG

Generare dei numeri pseudocasuali partendo da un seme non è così complicato, il problema consiste nell'ottenere un seme casuale e riuscire a mantenerlo segreto in situazioni particolarmente delicate. Il PRNG, in qualsivoglia momento, ha uno stato interno: la richiesta di dati casuali viene soddisfatta tramite algoritmo crittografico che produce dati pseudocasuali ed aggiorna suddetto stato, garantendo in tal modo che la successiva richiesta non contempli i medesimi dati casuali. A tale scopo ci si può supportare con delle funzioni di hashing.

Un PRNG può essere attaccato in svariati modi, uno di questi prevede la ricostruzione dello stato interno su precise informazioni estrapolate esaminando l'output del medesimo. È questo un assalto tutto sommato facile da contrastare con le attuali tecniche di cui dispone la moderna crittografia. Il discorso cambia radicalmente se è noto lo stato interno: ciò può accadere per svariate cause, tra le quali un'errata implementazione oppure l'inizializzazione in assenza del seme casuale. In un PRNG tradizionale se un malintenzionato riesce ad accedere allo stato interno è sicuramente in grado di monitorare i futuri output, con tutte le conseguenze che possono derivare da un simile disastro.

Tabella-dei-numeri-casuali-17881928.jpg

Per quanto sopra esposto diciamo che, se un attacco al PRNG viene agito con successo, rientrare nei parametri di in un protocollo avente assoluta sicurezza sarà molto improbabile, a meno di non disporre di ulteriori fonti di entropia attingibili da un generatore di numeri effettivamente casuali, che siano in dosi contenute e prodotte in modo assolutamente imprevedibile. Nonostante questa possibile ancora di salvataggio rimane comunque, a disposizione dell'attaccante, un'efficace linea di assalto che si concretizza in frequenti richieste di dati casuali.

Vediamo un semplice esempio: supponiamo che l'entropia introdotta tra due richieste sia pari a 30 bit, si può, nel caso specifico, provare tutti i possibili output casuali e risalire in tal modo allo stato interno nel momento in cui è stata introdotta l'entropia stessa. Questa tecnica si snoda attraverso 230 tentativi, pertanto non è così complicata o dispendiosa da porre in atto: la certezza di aver raggiunto l'obbiettivo sarà fornita al malintenzionato dai dati casuali generati dal PRNG.

Per difendersi contro un attacco del genere è necessario raggruppare l'entropia in arrivo, accumulandola fintanto che non se ne ha a sufficienza per poterla introdurre nello stato interno in modo tale che l'assaltatore non possa risalirvi. Una quantità minima per pianificare questa strategia difensiva è costituita da 128 bit di entropia, costringendo un hacker ad effettuare 2 elevato 128 operazioni per ogni singolo attacco.

Images.jpg

Quanto sopra esposto è l'origine di un altro problema, cioè la stima effettiva della quantità di entropia, essa dipende infatti dalle informazioni in possesso del malintenzionato. Si badi bene che queste sono totalmente ignote per quantità e qualità a chi deve sviluppare il sistema difensivo descritto.

Per tamponare si potrà ricorrere ad un funzione di stima basata su dati reali che però avrà i suoi lati deboli: non sarà in grado di essere precisa e tantomeno adeguata ad ogni tipo di situazione.

Mariano Ortu vi saluta dalla terra dei nuraghi!

Iscriviti gratuitamente alla newsletter, e ti segnaleremo settimanalmente tutti i nuovi contenuti pubblicati su MegaLab.it!

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2019 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.3 sec.
    •  | Utenti conn.: 26
    •  | Revisione 2.0.1
    •  | Numero query: 44
    •  | Tempo totale query: 0.09