¿Caracteres conocidos en las contraseñas?

13

Genero contraseñas para todo lo que requiere seguridad usando el siguiente método:

ksoviero@ksoviero-Latitude-E7440:~$ head -c 16 /dev/urandom | base64 
gorv/cp+lSiwiEfKck2dVg==

256 ^ 16 combinaciones es más que suficiente seguridad (al menos para mí), y tomaría 2e21 años incluso para la computadora más poderosa en fuerza bruta (a 5 billones de intentos por segundo, lo cual es imposible).

Sin embargo, note los dos últimos caracteres? Siempre están ahí debido al formato base64 y al hecho de que estoy usando 16 bytes.

¿Hay alguna razón para incluir o no incluir los dos símbolos '='? El argumento para incluirlos sería que agreguen símbolos y longitud adicionales a la contraseña. Sin embargo, si asume que el atacante sabe que genero contraseñas usando este método (y por seguridad, debe asumir que sabe todo sin esa contraseña real), entonces los dos símbolos '=' ya se conocen, y por lo tanto no agregan Seguridad adicional. Sin embargo, ¿pueden lastimar?

    
pregunta Soviero 29.07.2014 - 17:35
fuente

3 respuestas

21

Base64 : la codificación de los procesos ingresa los bytes por grupos de 3; Cada grupo produce 4 caracteres. Los signos '=' están rellenados de modo que la longitud de la cadena es siempre un múltiplo de 4; Dado que los signos '=' no forman parte del alfabeto Core Base64 (letras, dígitos, '+' y '/'), el decodificador sabe que estos signos están rellenados y no codifican los bytes reales. De esa manera, las secuencias de entrada de n bytes, donde n no es un múltiplo de 3, se pueden codificar y descodificar de forma inequívoca.

En cuanto a la entropía, los signos '=' no dañan y no ayudan. Puede dejarlos o eliminarlos como desee, no cambiaría nada por seguridad.

(Si fallan, significa que la función de hashing de contraseña utilizada en el sistema es extremadamente mala y débil, y eso sería un problema que debería solucionarse, no eliminando los signos '=', sino utilizando una buena función de hashing de contraseñas en su lugar.)

    
respondido por el Tom Leek 29.07.2014 - 17:46
fuente
15

Las respuestas proporcionadas ya responden a la pregunta, pero si desea una contraseña de la misma longitud con los iguales reemplazados por más caracteres aleatorios (más caracteres que son aleatorios, no más aleatorios), puede redondear el número de bytes leídos hasta el múltiplo más cercano de 3:

head -c 18 /dev/urandom | base64

Esto se debe a que la codificación base64 funciona en grupos de 3 bytes (como ya señaló Tom Leek).

    
respondido por el zrneely 29.07.2014 - 18:49
fuente
-2

Parece que ya sabes la respuesta.

Mantenerlos reduce el espacio de contraseña para buscar. La coherencia entre contraseñas solo es perjudicial si puede reducir el espacio de la contraseña a un tamaño agotable en función de la generación de su contraseña. Lo que en este caso no creo que sea posible. Personalmente, me gusta incluir más símbolos en mi generación de contraseñas, pero la duración que genera no es perjudicial.

    
respondido por el RoraΖ 29.07.2014 - 18:02
fuente

Lea otras preguntas en las etiquetas