Contraseña y verso de inicio de sesión cadena muy larga (token)

0

Estoy creando un sistema de inicio de sesión PHP que usa un nombre de usuario y contraseña al principio para otorgarle al token un token y lo usa para otorgarle acceso al usuario a su cuenta.

Mi pensamiento original fue forzar el acceso a token para que se actualice a menudo, cerrando la ventana para posibles ataques de fuerza bruta.

Sin embargo, después de pensarlo, me doy cuenta de que access_token puede ser más seguro que un nombre de usuario y contraseña ...

Si tengo un nombre de usuario de 24 caracteres y una contraseña de 24 caracteres, ¿no será aún más seguro un símbolo de acceso de 128 caracteres? Asumamos que todos están utilizando caracteres alfanuméricos.

Editar

Parece que la afirmación anterior era un poco veg. Seré un poco más específico.

Escenarios

Ejemplo A

Tengo un sistema con un nombre de usuario alfanumérico de 24 caracteres y una contraseña alfanumérica de 24 caracteres.

Ejemplo B

Tengo otro sistema con un token alfanumérico de 128 caracteres.

Pregunta

Si dos computadoras se dispusieron a forzar la fuerza bruta de ambos sistemas, ¿cuál sistema probablemente tomaría más tiempo?

    
pregunta Jacob Henning 07.07.2017 - 22:19
fuente

2 respuestas

1

Si tuviera que juzgar basándose únicamente en el tamaño de los caracteres y quisiera comparar un nombre de usuario de 24 caracteres y un sistema de contraseñas de 24 caracteres frente a un sistema de token de 128 caracteres, diría que el espacio de búsqueda sería mayor en el sistema basado en token. / p>

Obviamente, para forzar una combinación de nombre de usuario y contraseña, el usuario debe encontrar un par en dos n ^ 24 espacios de búsqueda, mientras que en el espacio de búsqueda de token de tamaño n ^ 128 hay varios elementos que serán válidos. . Como resultado, puede suceder que su sistema de fuerza bruta encuentre un token antes de que pueda encontrar un par de nombre de usuario / contraseña válido. Pero encontrar todos los pares válidos de nombre de usuario / contraseña llevará menos tiempo que encontrar todos los tokens válidos.

    
respondido por el Limit 08.07.2017 - 01:49
fuente
0

Los tokens están lejos para proporcionar acceso a un recurso sin la necesidad de tener una sesión administrada de forma indefinida. Esto le permite escalar servidores y limitar la sobrecarga de manera bastante efectiva al autorizar a un cliente a acceder directamente a un recurso.

Su nombre de usuario / contraseña se usa para autenticar a una persona. Una vez que pueda probar que esa persona es quien dice ser, usted emite el token de acceso.

Tokens de acceso son de corta duración y se utilizan para acceder a los recursos directamente, o en términos básicos Authorization .

También hay Actualizar tokens , que son de larga duración y se utilizan para solicitar un nuevo acceso. token después de que su actual caduque.

En términos de seguridad cuando se trata de lo que está tratando de hacer, no es una cuestión de Nombre de usuario / contraseña vs Token. Es una cuestión de si intenta construir un sistema más sin estado (usando tokens de acceso) o usar un enfoque más tradicional y administrar sesiones largas.

Además de eso, realmente no necesitas rodar tu propio sistema de token. JWT (JSON Web Tokens) ya implementa el estándar RFC 7519 para el acceso basado en token que recomiendo.

Es posible que haya personas de seguridad que favorezcan las sesiones basadas tradicionales, pero personalmente, Basadas en token es mucho más pragmática. OAuth tiene un pequeño desglose aquí .

    
respondido por el Shane Andrie 08.07.2017 - 00:13
fuente

Lea otras preguntas en las etiquetas