RAND_add (& Time, sizeof (Time), 0) a ogni connessione ssl riducono la casualità o no?

2

Esaminando il codice openssl 1.0.1g s23_clnt.c vedo che:

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);

Questo RAND_add (& Tempo, sizeof (Tempo), 0) non aggiungerà entropia, ma a lungo termine crea solo un caso prevedibile?

Leggendo link c'è una riga "Così, se i dati di buf sono imprevedibili per un avversario , questo aumenta l'incertezza riguardo allo stato ... ", cosa succede se buf è prevedibile ... perché il tempo di connessione iniziale è.

Poiché il metodo casuale predefinito è md_rand, penso che il buffer sia aggiunto anche se l'entropia è 0 e penso che l'aggiunta di informazioni facilmente ipotizzabili (il tempo è espresso in secondi) si diluirà e a lungo andare rendere casuale la settimana

Googling un po 'diede quel link che mi dà solo la stessa impressione, ma dubito davvero che tali cose non sarebbero state mantenute per secoli in openssl (era già lì con un RAND_Seed (& Time, ... in SSLEAY del 1998) se fosse stato così dannoso.

Quindi una domanda di base:

RAND_add (X, Y, 0) con X ipotizzabile abbassare la qualità casuale o mantenerla così com'è?

    
posta philippe lhardy 17.05.2014 - 21:18
fonte

1 risposta

2

La miscelazione di informazioni facilmente ipotizzabili non riduce mai l'entropia. In effetti, questo è il punto principale del mixaggio: è possibile aggiungere informazioni di dubbia imprevedibilità e tutta l'imprevedibilità delle fonti non correlate si somma. Quindi la miscela ha ancora un'entropia migliore di prima o, nel peggiore, altrettanto (se il nuovo input è completamente prevedibile).

Per dirla in altro modo, l'entropia di un RNG è il logaritmo della probabilità per un avversario di indovinare la sequenza di numeri casuali (che per un PRNG equivale a indovinare la (parte rilevante dello stato interno). Se l'avversario può indovinare parte dell'input, ciò gli consente di stabilire una correlazione tra lo stato prima di aggiungere quell'input e lo stato dopo. Ma questo non rende lo stato più facile da indovinare rispetto allo stato precedente.

Tutto ciò presuppone che il metodo per mescolare entropia sia buono. Questo passaggio è molto facile da sbagliare. Per quanto ne so, ssleay_rand_add ha ragione.

La preoccupazione di Schneier non è che ci sia un input parzialmente prevedibile, ma che tutti gli input sono parzialmente prevedibili, al punto che lo stato generatore risultante non ha accumulato abbastanza imprevedibilità. Il problema non è che l'imprevedibilità (entropia) si abbassa - non lo fa - ma che inizia da 0 e potrebbe non essere aumentata abbastanza.

    
risposta data 19.05.2014 - 02:42
fonte

Leggi altre domande sui tag