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?