Numero casuale per HTTPS Message Authentication Code (MAC)

4

Recentemente ho scoperto che Netscape usava un algoritmo abbastanza semplice per generare un numero casuale per il codice di autenticazione dei messaggi per stabilire una connessione HTTPS (Netscape utilizzava il tempo, il numero di identificazione del processo e il numero di identificazione del processo genitore).

Quindi ora mi chiedo quale fonte di seed usano i browser moderni per garantire la casualità vera?

    
posta Nutel 19.09.2011 - 17:23
fonte

1 risposta

8

I browser moderni fanno la cosa intelligente: chiedono al sistema operativo. Il sistema operativo interagisce con l'hardware per tutto il giorno; questo è il suo scopo principale. Quindi è nel posto giusto raccogliere la casualità e mescolarla con un generatore di numeri casuali crittografici appropriatamente sicuro. Sui sistemi Windows, questo è reso disponibile per l'applicazione attraverso la funzione CryptGenRandom() . Linux ha il file speciale /dev/urandom per quello. Alcuni linguaggi di programmazione offrono la propria API per quello (che alimenta internamente sul sistema operativo), ad es. java.security.SecureRandom per Java.

Le fonti hardware che il sistema operativo può utilizzare includono principalmente il tempo preciso al ciclo in cui si verificano gli eventi hardware (ad esempio il preciso nanosecondo con cui si preme un tasto o un pacchetto di rete viene ricevuto). Il sistema operativo può quindi ottenere una "sufficiente" casualità per alimentare un RNG, che poi produrrà una buona alea dal megabyte ("buono"="indistinguibile dalla vera casualità, fino a un fattore di lavoro travolgente"="buono per cripto").

    
risposta data 19.09.2011 - 18:00
fonte

Leggi altre domande sui tag