¿Cuántos caracteres debe tener una clave de sesión?

0

Tengo un generador de claves de sesión que usa solo letras y números. He buscado cuánto tiempo debería estar aquí una clave de sesión:

enlace

y por algunas formas de lógica, diría que 20 caracteres a 8 bytes cada uno son 160 bits ... más que suficiente. Leí en algún lugar que 80 es el mínimo, que sería 10 caracteres.

Pero, como solo estoy usando números y letras, eso significa que las posibles permutaciones son log(2, (52 + 10) ^ 20) ~= 119 bits (52 caracteres + 10 números).

Entonces, dada la clave de 128 bits debería tomar 292 años para adivinar (citado arriba), y la mía es 9 bits menos, debería tomar 292 / (2^9) = .57 years para adivinar ... Creo.

Esto es lo que creo que la respuesta a mi pregunta es:

Si utiliza los 256 caracteres utf-8, 16 caracteres son suficientes para obtener 128 bits (recomendado) y 10 son suficientes para obtener 80 bits (min).

Si solo usa caracteres específicos, use la siguiente función para calcular sus bits y aumentar charCount hasta que esté en la fuerza deseada. log(2, (useableChars) ^ charCount)

    
pregunta Seph Reed 08.08.2018 - 01:22
fuente

2 respuestas

2

Como dice Peter Harmann, realmente quieres decir log 2 (x) en lugar de pow (2, x), además de que tu fórmula es correcta. Sin embargo, el error real es que interpreta mal su cita:

  

Ahora suponga un identificador de sesión de 128 bits que proporciona 64 bits de entropía. Con un sitio web muy grande, un atacante podría probar 10,000 suposiciones por segundo con 100,000 identificadores de sesión válidos disponibles para adivinar. Dados estos supuestos, el tiempo esperado para que un atacante adivine con éxito un identificador de sesión válido es superior a 292 años.

Lo malinterpretaste como 128 bits de entropía, pero solo son 64 bits (es decir, son 64 bits en hexadecimal).

    
respondido por el AndrolGenhald 08.08.2018 - 01:37
fuente
1

Sí ...

Lo único que diría que no es correcto es la notación pow (probablemente te refieres a log , aunque de todos modos lo has calculado correctamente) y el tiempo estimado. Los 292 años me suenan como un ataque sin conexión, no adivinar una clave de sesión en línea es incorrecto, como señala AndrolGenhald. También tenga en cuenta que este (mínimo de 80 bits) probablemente asuma que utiliza un identificador separado (nombre de usuario / id de usuario / id de sesión). Si la clave identifica la sesión, debes obtener una clave más fuerte debido a la paradoja de cumpleaños .

    
respondido por el Peter Harmann 08.08.2018 - 01:28
fuente

Lea otras preguntas en las etiquetas