Diga que quiero crear muchas claves AES aleatorias y tener acceso a una fuente segura de números aleatorios SecRand
.
Veo dos extremos de cómo podría escribir una fábrica de claves.
Utilice la misma fuente aleatoria para todas las teclas:
KeyFactoryA {
private r = new SecRand()
makeKey() {
// create a key using r
}
}
Utilice una nueva fuente para cada clave:
KeyFactoryB {
makeKey() {
r = new SecRand()
// create a key using r
}
}
Recuerdo de las conferencias de estadísticas (campo diferente, lo sé) que el flujo agregado de bits aleatorios utilizado en B
no sería necesariamente aleatorio de manera uniforme; es decir, B
sería estadísticamente débil. Además, se requiere un grupo mayor de entropía para inicializar todos los diferentes r
.
A
, por otro lado, puede crear muchas claves a partir de un pequeño grupo inicial de entropía. Eso tampoco suena muy bien.
¿Existen diferencias relacionadas con la seguridad entre las dos opciones?