¿RAND_add (& Time, sizeof (Time), 0) en cada conexión ssl reduce la aleatoriedad o no?

2

Revisando el código s23_clnt.c de openssl 1.0.1g veo que:

int ssl23_connect(SSL *s)
    {
    BUF_MEM *buf=NULL;
    unsigned long Time=(unsigned long)time(NULL);
    void (*cb)(const SSL *ssl,int type,int val)=NULL;
    int ret= -1;
    int new_state,state;

    RAND_add(&Time,sizeof(Time),0);

Este RAND_add (& Time, sizeof (Time), 0) no agregará entropía, pero a la larga, ¿solo crea un aleatorio predecible?

Leyendo enlace hay una línea "Por lo tanto, si los datos en buf son impredecibles para un adversario , esto aumenta la incertidumbre sobre el estado ... ", y si buf es predecible ... porque el tiempo de conexión inicial es.

Dado que el método aleatorio predeterminado es md_rand, creo que se agrega el búfer incluso si la entropía es 0 y creo que agregar información fácil de adivinar (el tiempo es en segundos) se diluirá y, a largo plazo, hará que la semana sea aleatoria

Googlear un poco dio que enlace que solo me da la misma impresión, pero realmente dudo que esas cosas no se hubieran mantenido durante años en openssl (ya estaba allí con una RAND_Seed (& Time, ... in SSLEAY de 1998) si fuera tan perjudicial.

Entonces una pregunta básica:

¿RAND_add (X, Y, 0) con X supuestamente reduce la calidad aleatoria o la mantiene como está?

    
pregunta philippe lhardy 17.05.2014 - 21:18
fuente

1 respuesta

2

La mezcla en información fácil de adivinar nunca reduce la entropía. De hecho, ese es el punto central de la mezcla: puede agregar información de dudosa impredecibilidad, y se suma toda la imprevisibilidad de fuentes no correlacionadas. Así que la mezcla aún tiene mejor entropía que antes, o en el peor de los casos (si la nueva entrada es completamente predecible).

Para decirlo de otra manera, la entropía de un RNG es el logaritmo de la probabilidad de que un adversario adivine la secuencia de un número aleatorio (que para un PRNG es equivalente a adivinar el estado interno (parte relevante del)). Si el adversario puede adivinar parte de la entrada, eso le permite establecer una correlación entre el estado antes de agregar esa entrada y el estado posterior. Pero eso no hace que el estado sea más fácil de adivinar que el estado anterior.

Todo esto supone que el método para mezclar la entropía es bueno. Este paso es muy fácil equivocarse. Que yo sepa, ssleay_rand_add lo hace bien.

La preocupación de Schneier no es que haya una entrada parcialmente predecible, pero que todas las entradas son parcialmente predecibles, hasta el punto de que el estado del generador resultante no ha acumulado suficiente imprevisibilidad. El problema no es que la imprevisibilidad (entropía) disminuya, no lo hace, sino que comienza desde 0 y puede que no haya aumentado lo suficiente.

    
respondido por el Gilles 19.05.2014 - 02:42
fuente

Lea otras preguntas en las etiquetas