Cosa stai facendo quando muovi il mouse casualmente durante una creazione di un volume TrueCrypt?

15

Si chiama "round" ogni volta che muovi il mouse quando crei un nuovo volume? Sto parlando dello schermo con i numeri casuali durante il processo di creazione del volume. Qual è lo scopo del movimento casuale?

Ho visto che Lastpass sta facendo "100.000 round", non sono sicuro di cosa significhi esattamente.

Novità del mondo della crittografia qui:)

    
posta hwp08 06.01.2012 - 23:26
fonte

4 risposte

23

Stai creando qualcosa chiamato "entropia". I generatori di numeri casuali all'interno dei computer possono, se implementati all'interno del software, essere solo nella migliore delle ipotesi pseudo-casuali. I generatori di numeri pseudo-casuali (PRNG) iniziano con un seme. Se il seme è ben noto, chiunque abbia conoscenza dell'algoritmo PRNG può derivare gli stessi valori che ha derivato (questo in realtà è veramente buono per cose come simulazioni e simili dove è necessario un elemento di riproducibilità - non è buono per crypto). Quindi è necessario iniziare con un seme non ben noto. Tradizionalmente (non per crypto!) Questo seme era l'ora del giorno del computer. Tuttavia, per cripto, hai bisogno di una casualità molto più strong di questa.

In molti ambienti commerciali, c'è spesso la necessità che i generatori di numeri casuali (RNG) siano basati su una "fonte di rumore" basata sull'hardware. Potrebbe trattarsi di dati casuali di pacchetti di rete, il numero di fotoni che colpiscono un rivelatore, la velocità dell'aria attraverso un sensore o qualsiasi combinazione di cose che potrebbero essere considerate VERAMENTE casuali.

Sfortunatamente, queste fonti di rumore basate sull'hardware non si trovano di solito in un uso diffuso negli ambienti consumer. Quindi la cosa migliore da fare è tirare il rumore basato su hardware da qualcos'altro. Molti sistemi di crittografia usano un essere umano che muove un mouse per acquisirlo. Anche se l'essere umano muove il mouse in cerchi o avanti e indietro, di solito c'è ancora abbastanza casualità del mondo reale nella deviazione del percorso del mouse per fornire un ragionevole livello di entropia per seminare il PRNG.

Per esempi reali di entropia dall'ambiente, non guardare oltre le palline a spirale che girano in una gabbia della lotteria.

I "round" non sono correlati alla raccolta di entropia e sono correlati al numero di volte in cui viene eseguito un algoritmo specifico. C'è quasi sempre (?) Un meccanismo di feedback che consente a un round di influenzare round successivi. Aumentando il numero di cicli aumenta la quantità di tempo necessario per crittografare / decrittografare i dati. Questo è importante in quanto può seriamente scalare qualsiasi sforzo di decifrazione della forza bruta. Ovviamente, rallenta anche gli sforzi di crittografia.

    
risposta data 06.01.2012 - 23:53
fonte
8

Il punto è fornire entropia . TrueCrypt deve generare una chiave segreta per il volume. Lo fa generando un gruppo di random bit. Qui (come spesso in crittografia), ciò che è importante non è in realtà che i bit che compongono la chiave siano casuali in senso statistico, ma piuttosto che la chiave non possa essere prevista o riprodotta da un utente malintenzionato. Un computer è una macchina deterministica¹: se l'utente malintenzionato sa in che stato era quando ha iniziato a generare la chiave, può eseguire TrueCrypt e generare la stessa chiave.

Spostando il mouse, stai fornendo un input che l'attaccante non può riprodurre. Più input fornisci, più difficile sarà la chiave da riprodurre. Ad esempio, se il computer registrava un solo movimento come sinistro o destro, allora ci sarebbero solo due possibili chiavi e l'attaccante potrebbe provarle entrambe; la chiave avrebbe solo 1 bit di entropia (indipendentemente dalla lunghezza della chiave). Idealmente, la chiave deve essere completamente casuale; se la chiave è, ad esempio, una chiave a 128 bit, il generatore di numeri casuali deve disporre di 128 bit di entropia disponibili. I movimenti umani sono in qualche modo prevedibili (non sposterai il mouse di due metri a sinistra), ma più ti muovi, più entropia entri nella piscina.

Il movimento del mouse non è correlato ai 100.000 round. I round sono un problema diverso, legato alla difficoltà con cui l'attaccante riproduce la password . Gli umani sono notoriamente poveri nella scelta e nella memorizzazione di password complesse, quindi l'attaccante può provare tutte le password plausibili con la forza bruta. Per questo motivo, i sistemi crittografici che usano le password non li usano così come sono, ma eseguono alcuni calcoli (un hash crittografico, per esempio PBKDF2 è generalmente consigliato in questi giorni) sulla password molte volte. Questo calcolo è costoso; il suo tempo di esecuzione è proporzionale al numero di round. Il sistema deve eseguire questo calcolo iterato una volta per tentativo di password; l'attaccante deve eseguirlo anche una volta per tentativo di password. Se impiega 1 secondo affinché il tuo sistema elabori la password quando monti il volume invece di 10 microsecondi, non è un grosso problema, perché l'elaborazione della password è solo una piccola parte di ciò che usi la tua CPU in ogni caso. Ma per l'aggressore, che sta spendendo tutte le sue password di forzatura brute per la CPU, riuscire a eseguire solo 1 tentativo di cracking al secondo e non 100.000 per CPU è un grande successo.

¹ Alcuni computer hanno un generatore di numeri casuali dell'hardware, che ricava la sua casualità da fonti fisicamente impossibili da prevedere (o almeno nascoste ed estremamente difficili da prevedere). Il decadimento nucleare è buono ma non pratico. Sui dispositivi mobili, il rumore bianco della fotocamera funziona abbastanza bene. Ma molti computer mancano di un generatore casuale di hardware.

    
risposta data 07.01.2012 - 00:09
fonte
2

La generazione di numeri casuali usando un generatore pseudo-casuale può essere trattata in modo sospetto dall'ultra-paranoico, quindi collegare parte della casualità a un input definito dall'utente fornisce una certa sicurezza che sei "sicuro"

    
risposta data 06.01.2012 - 23:40
fonte
1

TrueCrypt crea un CRC32 della struttura MOUSEHOOKSTRUCT, che viene popolata da Windows e passata alla funzione di callback definita da Truecrypt quando si sposta il mouse. Dai un'occhiata alla definizione:

link

Viene utilizzata l'intera struttura, inclusi membri come hwnd che non cambiano tra le chiamate. A causa della funzione di test di successo, è possibile ottenere una migliore entropia se si sposta il mouse sopra e attorno ai bordi della finestra. O forse lo indebolisci. Puoi meditare su quello.

Se il CRC della struct è diverso dall'ultima volta che è stato eseguito il callback di Truecrypt, eseguirà un CRC32 del conteggio delle zecche a 32 bit restituito da GetTickCount (). Il CRC della struttura e il conteggio delle tacche vengono sommati insieme e sottoposti a hashing con RIPEMD160 per impostazione predefinita. L'hash risultante viene quindi utilizzato per modificare il pool casuale con un'operazione XOR.

Guardandomi mi chiedo quanta casualità questo processo aggiunga davvero. Non esiste una vasta gamma di valori possibili nelle coordinate y, x. L'handle della finestra sarà casuale per la particolare generazione di chiavi, ma rimarrà invariato ogni volta che il mouse viene campionato. Il test di successo può restituire un piccolo numero di valori enumerati. Alcuni comportamenti con il mouse causeranno che questo restituisca un singolo valore in ogni momento. C'è un puntatore a ulteriori informazioni. Non sono sicuro quando questo è impostato.

    
risposta data 02.09.2013 - 02:25
fonte

Leggi altre domande sui tag