¿Qué es más seguro: solo hash largo, o combinación de dos más cortos?

1

Escenario ficticio:

El usuario accede a una información restringida (disponible en línea) identificada por una cadena aleatoria (respaldada por captcha para dificultar el uso de la fuerza bruta).

Por lo tanto, los datos no están protegidos por una cuenta de usuario / contraseña, pero la información de cada caso es identificable y accesible para todos los que conocen esa cadena aleatoria y única.

Lo que es más seguro:

  1. cadena aleatoria de 10 caracteres individuales (la longitud es solo por ejemplo, podría ser más larga)

    muestra:

    YuE9sfQGf6

  2. 2 x 5 caracteres cadenas aleatorias

    muestra:

    1. YuE9s
    2. fQGf6

Digamos que los caracteres permitidos (en una cadena aleatoria) son: a-z , A-Z y 0-9 .

    
pregunta Jeffz 24.07.2013 - 18:50
fuente

2 respuestas

2

Sus "cadenas aleatorias" son lo que los criptógrafos llamarían claves : una clave es un valor secreto sin estructura interna implícita (a diferencia de una contraseña que es "a llave que cabe en un cerebro humano ").

En su primer caso, a los usuarios se les otorgará acceso según su capacidad para presentar una secuencia específica de 10 caracteres en el alfabeto a-zA-Z0-9. Estos son 62 signos posibles, por lo que hay 62 10 = 839299365868340224 claves posibles. Un atacante que intente forzar su entrada tendrá que "adivinar" la secuencia, lo que no puede hacer excepto probando las claves posibles en cualquier orden (asumimos que "no hay una estructura interna implícita", que significa "probabilidad uniforme"). En promedio, el atacante tendrá que probar la mitad de las claves posibles antes de tener éxito, y eso es 419649682934170112.

Ahora suponga que estamos en el segundo caso: el usuario será aceptado solo si ingresa dos cadenas de 5 caracteres en dos campos de texto. Ambos valores deben ser correctos si se otorga el acceso. En esa situación, hay 62 combinaciones 5 para cada cadena, para un total de 62 5 * 62 5 = 839299365868340224 posibilidades, que es exactamente la misma cantidad que antes, por lo que no importa .

Es decir, a menos que lo arruines . "Botching it" significaría, aquí, decirle al usuario si obtuvo una de las dos cadenas de 5 caracteres correctas, incluso si la otra no lo está. Por ejemplo, los dos campos de entrada están en páginas sucesivas, y su servidor mostrará la segunda página solo si la primera cadena es correcta. En ese caso, el atacante puede descifrar ambas cadenas de 5 caracteres una tras otra: eso es 62 5 / 2 = 458066416 intenta en promedio para la primera cadena, y luego 458066416 de nuevo para la segunda cadena. Luego, el atacante logra (en promedio) 916132832 intentos, es decir, 458066416 más rápido que con la implementación no fallida. Eso es lo que yo llamo un fracaso épico. (Tal error ya ha ocurrido , de Microsoft mismos.)

Es más sencillo, y más seguro, requerir la entrada de los 10 caracteres de una sola vez. La forma en que los muestres, como un campo de texto, dos campos de texto o un grupo de globos en forma de corazón flotando en la pantalla, no tiene importancia, siempre y cuando no filtres información sobre cuáles son los correctos. La información solo que debe proporcionar el sistema de verificación es si todos los caracteres eran correctos, o al menos uno no lo era.

    
respondido por el Tom Leek 24.07.2013 - 19:42
fuente
0

Primero déjame asegurarme de que entiendo tu escenario. Lo que está diciendo es esencialmente que algunos datos están restringidos esencialmente por una contraseña que es compartida por todos. Entonces, no es una combinación de usuario / contraseña, pero es una contraseña universal, ¿no?

Si ese es el caso, tener una "contraseña" de longitud 10 es más seguro, ASUMIENDO que las dos contraseñas se adivinarán una tras otra. Específicamente, si se le dijera al atacante cuál de las contraseñas estaba equivocada, sería más fácil porque en lugar de ser n ^ 5 * n ^ 5 sería n ^ 5 + n ^ 5 = 2n ^ 5.

Sin embargo, si solo le dices al usuario si ambas contraseñas son correctas o no, entonces serían igualmente seguras, al menos desde una perspectiva matemática. Si también los colocó en páginas separadas con captchas por separado y solo le dijo al usuario si ambos eran correctos o no, entonces esto sería aún más seguro porque el atacante tendría que cargar dos páginas web, por lo que tomaría más tiempo y también tendría que hacerlo. Otro captcha que también lleva más tiempo. Esto parece bastante impráctico, ya que resulta increíblemente molesto para sus usuarios. Odiaría hacerlo yo mismo.

En efecto, también puede tener una contraseña de longitud 10, pero si por alguna razón tiene restricciones para que las contraseñas tengan una longitud máxima de 5, siempre y cuando no puedan decir que una sola contraseña es correcta o incorrecta, ellos son lo mismo.

    
respondido por el Synderesis 24.07.2013 - 19:43
fuente

Lea otras preguntas en las etiquetas