In che modo l'entropia "agitazione" viene raggiunta nel Microsoft TPM?

0

Pagina 14 di L'astrazione TPM di Microsoft dice che è possibile" agitare "

A call to BCryptGenRandom will fill the caller-provided buffer with random data. The maximum random number size is limited to 4,096 bytes per call. The provider may make several round trips to the TPM to fill the caller’s buffer and the call will block until the request is satisfied.

The provider also supports “stirring” the RNG in the TPM, by providing the flag BCRYPT_RNG_USE_ENTROPY_IN_BUFFER with the call BCryptGenRandom. If this flag is set, the provider will stir the entropy generator in the TPM with the data in the caller’s buffer. If the buffer is larger than 256 bytes, only the first 256 bytes will be used.

(nota al lettore, "bcrypt" di cui sopra non ha alcuna relazione con l'algoritmo di hashing, è un descrittore per una tecnologia MSFT)

Domanda

  • Come viene utilizzata questa entrophy nel buffer e perché qualcuno dovrebbe migliorare l'entropia?

Ricordo una precedente domanda su SE che afferma che la combinazione di RNG da due fonti diverse (sistema fornito + BouncyCastle) era sconsigliata e provocherà una diminuzione netta della sicurezza.

In che modo questa "agitazione dell'entropia" è diversa?

    
posta random65537 04.08.2016 - 14:04
fonte

2 risposte

1

Gli RNG misurano la casualità vera, ma devono "sbiancare" i loro risultati usando un PRNG. Il PRNG ha uno stato interno (inizializzato durante il seeding e mutato dopo l'emissione di ogni nuovo batch di dati) di una dimensione fissa, ad esempio 256 bit. Il RNG mantiene anche un contatore di quanto entropia quello stato effettivamente rappresenta. Ogni volta che si legge N bit dal "pool", esce dal PRNG e il contatore dell'entropia viene diminuito. (Se non ne rimane nessuno, la chiamata si blocca fino a quando l'importo richiesto è lì.) Ogni volta che viene prodotta una nuova serie di casualità vera, viene eseguita l'hashing nello stato del PRNG e il contatore dell'entropia viene aumentato del numero di bit di entropia che gruppo di casualità rappresenta. (Di solito è una stima prudente.)

In questo contesto, "mescolando" significa hashing un nuovo valore nello stato PRNG senza aumentando il contatore entropico. Questo non è un rischio per la sicurezza, perché l'RNG non si fida che ciò rappresenti un'entropia aggiuntiva effettiva. OTOH, se il tuo RNG è scarso e sta erogando meno entropia di quanto dovrebbe, "agitarlo" in più entropia da qualche altra parte lo proteggerà.

    
risposta data 03.09.2016 - 15:38
fonte
0

Sono confuso su come Microsoft raccolga entropia per la crittografia, ma posso rispondere all'ultima parte della tua domanda. L'entropia è essenzialmente dati "casuali" utilizzati dagli algoritmi di crittografia. Dico "casuale" perché i computer convenzionali non hanno modo di generare dati veramente casuali, quindi si affidano ad altri metodi. Ad esempio, il kernel linux si affida a cose come il movimento del mouse e le temporizzazioni della tastiera per generare 4096 byte di dati pseudo-casuali in / dev / random (lascia che sia la guerra casuale o quella casuale a iniziare).

La casualità dei dati influenza direttamente la forza della crittografia. Ad esempio, in un intervallo di tempo, ogni lettera in un messaggio viene spostata da una quantità casuale di spazi, come determinato dal pad. Se un utente malintenzionato può prevedere i dati "casuali", può decodificare la chiave.

Ora, sul motivo per cui qualcuno vorrebbe migliorare l'entropia del buffer, ha essenzialmente a che fare con questa preoccupazione. La crittografia sicura dipende dalla casualità. Se un utente non pensa che il pool di entropia di Microsoft sia abbastanza casuale per i loro scopi, potrebbe dire montare un contatore Geiger su un isotopo radioattivo e contare sulla meccanica quantistica per fornire dati veramente casuali.

Questo è eccessivo? sì. Ma la capacità sottostante di aggiungere entropia è grande. Ad esempio, un server Linux potrebbe non avere un sacco di puntate di mouse o di eventi di tastiera, quindi uno sviluppatore dovrebbe costruire nelle proprie fonti di entropia. Presumo che il concetto sia simile ai prodotti Microsoft.

Riguardo a cosa "mescolare" significa esattamente che non ne sono sicuro. Potrebbe significare usare un algoritmo hash per creare un pool di dati più grande, o potrebbe significare byte XORing dall'entropia con le fonti esistenti di Microsoft.

    
risposta data 04.08.2016 - 14:45
fonte

Leggi altre domande sui tag