Checksum para autenticación, ¿es confiable?

-1

Acabo de hacer el prototipo de mi nuevo método de autenticación seguro basado en contraseña, pero hay varias dudas sobre el tamaño elegido de la contraseña y el alfabeto. El método es simple: el usuario calcula la suma de verificación de su contraseña (suma de las posiciones de estos símbolos en diferentes permutaciones aleatorias del alfabeto elegido. Por lo tanto, para cada símbolo se debe encontrar su posición en la permutación correspondiente y agregarse a la suma. El valor real de suma de comprobación es un resto de la división de esta suma por el número total de todos los símbolos en el alfabeto elegido).

En realidad, va de esta manera (el tamaño de la contraseña es igual a 16, el tamaño del alfabeto es igual a 20):

  1. El servidor envía permutaciones aleatorias del alfabeto recién generadas, una permutación particular para cada letra de la contraseña del usuario. Deje que estas permutaciones se llamen como G1, G2, ... G16;
  2. El usuario calcula el valor de la suma de comprobación como = (G1 (L1) + G2 (L2) + G3 (L3) + ... + G16 (L16))% 20 (aquí: L1 ... L16 - letras separadas de la contraseña);
  3. El servidor recibe la suma de comprobación y se compara con su propio cálculo;
  4. Se puede repetir todo el procedimiento para disminuir la posibilidad de adivinanzas accidentales.

En realidad, creo que es un método confiable (¿o no?), pero ¿qué pasa con las longitudes? Creo que 16 de estas letras para la contraseña no es suficiente para resistir las adivinanzas de fuerza bruta para este método. Estoy en lo cierto ¿Serían suficientes 20? El alfabeto es otra gran pregunta. La criptografía no es mi taza de té, así que, discúlpeme por una descripción tan engorrosa. Aquí está la simple demostración de esto: método de autenticación seguro basado en contraseña . Espero que sea mucho más informativo.

    
pregunta AlexAnd 24.01.2015 - 18:39
fuente

1 respuesta

1

Acabo de probar tu demo, y lo que me preocupa es que al final la autenticación se realiza con un solo carácter, por lo que todo el sistema de autenticación se basa solo en un solo carácter acertado, que se comparará con más de 8 caracteres para las contraseñas con una longitud mínima impuesta a 8, y el tamaño del hash en caso de que se envíe un hash al servidor (32 caracteres hexa en el caso de md5, por ejemplo). Menciona la idea de repetir todo el procedimiento, pero incluso si la repite dos o tres veces, la autenticación solo se basará en 2 o 3 caracteres.

El punto principal aquí a tener en cuenta es que cuando un atacante intentará aplicar fuerza bruta a su sistema, lo más probable es que no intente adivinar una contraseña y no se moleste con su sistema: simplemente inundará su servidor con hashes aleatorios hasta que uno se vuelva para ser válido. Una oportunidad más de 20 actualmente para ganar en cada intento (¡mejor que cualquier lotería!), Un poco más si repite el proceso, pero todavía no tiene nada que ver, digamos, con los miles de millones de miles de millones de posibilidades que ofrece un hash criptográfico que Aniquila las posibilidades de encontrar un hash correcto mediante fuerza bruta en menos de unos pocos siglos.

    
respondido por el WhiteWinterWolf 24.01.2015 - 19:22
fuente

Lea otras preguntas en las etiquetas