Perché l'entropia dell'ID di sessione è solo metà della lunghezza dell'ID di sessione?

3

Su questa pagina sul sito web OWASP, c'è una frase sull'entità di id di sessione che trovo abbastanza strano:

The session ID value must provide at least 64 bits of entropy (if a good PRNG is used, this value is estimated to be half the length of the session ID).

Quello che capisco è che se il tuo ID di sessione è composto da 128 bit casuali (dati da un buon PNRG), ciò che ottieni è solo 64 bit di entropia .

Ho pensato che se ottieni 128 bit casuali da un buon PNRG, potresti aspettarti di ottenere qualcosa di molto vicino a 128 bit di entropia. Ho capito qualcosa di sbagliato?

    
posta anselant 06.10.2016 - 22:29
fonte

2 risposte

1

Questo bit " if your session id is made of 128 random bits " è l'equivoco.

Se il tuo ID di sessione è lungo 128 bit, allora è not 128 bit casuali - è probabilmente solo circa 64 bit casuali, codificati come una stringa a 128 bit.

Ricorda che l'ID della sessione non è un numero: è un identificatore di stringa, che potrebbe rappresentare un numero.
Se l'id della sessione è costruito come un numero esadecimale, rappresentato in forma di stringa, ciascun byte casuale prenderà DUE caratteri nella stringa ID della sessione. Questo è dove quella "metà della lunghezza" viene da quella citazione.
Tuttavia si noti la precedente sezione su quella pagina - ci sono altre implementazioni (come ASP.NET), in cui i bit casuali non sono rappresentati direttamente in esadecimale di stringa, ma sono invece codificati in base 64, il che si traduce in una dimensione di 1/3 aumento (o il 25% dei bit non è casuale). In tal caso, l'ID di sessione a 160 bit fornisce effettivamente 120 bit casuali.

TL; DR: se l'ID della sessione è lungo 128 bit, non tutti sono casuali.

    
risposta data 07.10.2016 - 00:22
fonte
0

Gli ID di sessione devono essere resistenti alle collisioni: cioè, qualcuno che cerca di rubare una sessione indovinando ID casuali deve avere una bassa probabilità di successo.

Questa resistenza alla collisione è proporzionale alla radice quadrata dell'entropia dell'ID sessione a causa del compleanno paradosso : dal l'autore dell'attacco avrà successo se indovina qualsiasi degli ID di sessione, ci vuole un numero di tentativi inferiore a quello di possibili ID per ottenere una corrispondenza.

Il motivo per cui ottieni 64 bit di entropia di resistenza alla collisione da un ID di 128 bit è che quando stai misurando in bit, prendere una radice quadrata del numero di ID possibili equivale a dividere il numero di bit per 2 .

    
risposta data 06.10.2016 - 22:56
fonte

Leggi altre domande sui tag