Dire che voglio creare molte chiavi AES casuali e avere accesso a un'origine sicura di numeri casuali SecRand
.
Vedo due estremi di come potrei scrivere una fabbrica di chiavi.
Utilizza la stessa fonte casuale per tutti i tasti:
KeyFactoryA {
private r = new SecRand()
makeKey() {
// create a key using r
}
}
Utilizza una nuova fonte per ogni chiave:
KeyFactoryB {
makeKey() {
r = new SecRand()
// create a key using r
}
}
Ricordo dalle lezioni di statistica (campo diverso, lo so) che il flusso aggregato di bit casuali usati in B
non sarebbe necessariamente uniformemente casuale; cioè, B
sarebbe statisticamente debole. Inoltre, richiede un pool più grande di entropia per inizializzare tutto il diverso r
.
A
, d'altra parte, può creare molte chiavi da un piccolo pool iniziale di entropia. Neanche questo sembra troppo bello.
Esistono differenze relative alla sicurezza tra le due opzioni?