Quanti caratteri dovrebbe avere una chiave di sessione?

0

Ho un generatore di chiavi di sessione che utilizza solo lettere e numeri. Ho cercato per quanto tempo una chiave di sessione dovrebbe essere qui:

link

e con alcune forme di logica, direi che 20 caratteri a 8 byte ciascuno sono 160 bit ... più che sufficienti. Ho letto da qualche parte che 80 è il minimo, che sarebbe 10 caratteri.

Ma, dato che uso solo numeri e lettere, significa che le possibili permutazioni sono log(2, (52 + 10) ^ 20) ~= 119 bits (52 caratteri + 10 numeri).

Quindi dato che la chiave a 128 bit dovrebbe impiegare 292 anni per indovinare (citata sopra), e la mia è 9 bit in meno, dovrebbe prendere 292 / (2^9) = .57 years per indovinare .. Penso.

Questo è quello che penso che la risposta alla mia domanda sia:

Se si utilizzano tutti i 256 caratteri utf-8, 16 caratteri sono sufficienti per ottenere 128 bit (consigliato) e 10 è sufficiente per ottenere 80 bit (min).

Se si utilizzano solo caratteri specifici, utilizzare la seguente funzione per calcolare i bit e aumentare charCount finché non raggiunge la forza desiderata. log(2, (useableChars) ^ charCount)

    
posta Seph Reed 08.08.2018 - 01:22
fonte

2 risposte

2

Come dice Peter Harmann, si intende veramente log 2 (x) piuttosto che pow (2, x), oltre che la formula è corretta. Il vero errore comunque è che interpreti male la tua citazione:

Now assume a 128 bit session identifier that provides 64 bits of entropy. With a very large web site, an attacker might try 10,000 guesses per second with 100,000 valid session identifiers available to be guessed. Given these assumptions, the expected time for an attacker to successfully guess a valid session identifier is greater than 292 years.

Hai erroneamente interpretato questo come 128 bit di entropia, ma è solo a 64 bit (vale a dire 64 bit in esadecimale).

    
risposta data 08.08.2018 - 01:37
fonte
1

Sì ...

L'unica cosa che direi non è corretta è la notazione pow (probabilmente si intende log , sebbene l'abbia calcolato correttamente in qualche modo comunque) e la stima del tempo. I 292 anni mi sembrano un attacco offline, non indovinando che una chiave di sessione online è sbagliata come indicato da AndrolGenhald. Si noti inoltre che questo (minimun a 80 bit) probabilmente presuppone l'uso di un identificatore separato (nome utente / id utente / id di sessione). Se la chiave identifica la sessione, dovresti ottenere una chiave più strong a causa del compleanno paradosso .

    
risposta data 08.08.2018 - 01:28
fonte

Leggi altre domande sui tag