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):
- 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;
- 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);
- El servidor recibe la suma de comprobación y se compara con su propio cálculo;
- 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.