¿Puedo usar este sistema de seguridad en sitios web?

1

He creado un sistema de seguridad de contraseña. Quería obtener sus comentarios sobre él y sus problemas técnicos.

En este sistema, los usuarios crean una contraseña dinámica que cambiará cada vez que intenten iniciar sesión según su fórmula única que escribieron cuando se registraron.

Ejemplo de contraseña creada: apple{{A+2}}{{B+C}}{{D*E}}green

Cuando el usuario desea iniciar sesión en el navegador, el servidor envía 5 valores aleatorios de un dígito, como:

 1,2,3,4,5

correspondiente a A,B,C,D,E respectivamente.

y ahora el usuario debe ingresar su contraseña como:

apple3520green

Esto evita que la contraseña quede expuesta, ya que no se puede comprometer porque cambiará cada vez.

He creado una versión de demostración de esta implementación en enlace Y me encanta tener sus comentarios al respecto en el sitio web (bueno o malo)

    
pregunta Sasan Farrokh 02.08.2016 - 20:29
fuente

4 respuestas

9

No olvides el principio de usabilidad de AviD:

  

La seguridad a expensas de la usabilidad viene a expensas de la seguridad.

Esto es lo que hace que este esquema sea inutilizable, para cualquier propiedad de seguridad que pueda tener sobre cualquier otra forma de contraseña. Sería simplemente inconcebible esperar que las personas, que tienen tantos problemas como nosotros con contraseñas simples, traten de manejar nuevos esquemas de contraseña algorítmicos aleatorios que requieren no solo recordar una contraseña, sino recordar un algoritmo asociado con la contraseña, y conecte un nuevo conjunto de variables cada vez que necesite usar la contraseña y calcúlela correctamente. Toda la idea es un desastre de complejidad.

En última instancia, este es un problema (relativamente) resuelto. La autenticación multifactorial es la solución. Es seguro por encima y más allá de las contraseñas simples, y mucho menos novedoso y complejo de lo que usted propone.

Hay escenarios muy específicos en los que este esquema puede ser útil, pero los servicios comunes no son uno de esos escenarios.

    
respondido por el Xander 02.08.2016 - 23:33
fuente
6

Hay siguientes problemas con este enfoque:

  1. Las contraseñas con fórmulas parecen estar almacenadas en texto plano. Así que esto sería mejor si se divide en dos partes: la primera parte es conocida y la segunda parte es la fórmula. De esta manera, la primera parte se puede almacenar como hash.

  2. Los tokens criptográficos utilizan un mecanismo similar, donde ingresas la contraseña seguida del número del token criptográfico (como "password" + "123456" que es "password123456"). El token criptográfico es un dispositivo de hardware pequeño que muestra el número después de presionar el botón. Cada hardware de token criptográfico tiene una clave diferente, por lo que todos necesitan usar su propio token. Ahora, el problema es que la fórmula es muy fácil de revertir si es muy simple. De hecho, debería ser algún tipo de cifrado fuerte que la persona no pueda realizar en la memoria.

De todos modos, parece que vas por buen camino y lo que intentas hacer se puede lograr de la siguiente manera, por ejemplo:

  1. Cree una aplicación de token criptográfico de software, por lo que esta aplicación simplemente acordará la clave secreta con su servidor durante la instalación y podrá generar tokens criptográficos en modo sin conexión (o incluso en línea).

  2. Su sitio web puede leer la contraseña y eliminar los últimos 6 números, luego verifique la contraseña con el hash almacenado. (Los 6 números cambian muy 10 segundos o más o menos, por lo que la sincronización de tiempo es importante, pero si no es ninguno, es posible sincronizar al verificar los tokens pasados / futuros y hacer los ajustes).

  3. Luego, su sitio web puede ponerse en contacto con la API y verificar si el token criptográfico para el nombre de usuario coincide.

Ahora lo que hay que saber es que los tokens criptográficos funcionan a tiempo y con una clave secreta. Entonces, el token generado en un minuto no es válido en un tiempo diferente.

Sin embargo, el principal desafío sería proteger la seguridad de sus tokens criptográficos. Podría proporcionar un servidor en la nube dedicado para cada cliente que lo use, por ejemplo, permitiendo el acceso solo desde sus servidores y manteniendo un programa de actualización extremo para parches de seguridad, defensa de múltiples capas y una buena arquitectura de software donde todas las bibliotecas se mantienen activamente y se audita el código fuente.

Dicha solución sería eventualmente buena no solo para los sitios web, sino también para cualquier sistema corporativo, incluido Active Directory. Sin embargo, para vendérselo a los clientes, deberá cumplir con las políticas de seguridad oficiales una vez y, en segundo lugar, hacer que las instituciones educativas / gubernamentales lo revisen, lo que estoy seguro será útil.

El escenario general propuesto es bueno porque, por su parte, no corre mucho riesgo: si se roban los tokens criptográficos, las contraseñas no se conocen de todos modos y puede actualizar el token criptográfico suave o forzar la reactivación de estos.

El inconveniente es que requiere token criptográfico suave dedicado para acceder a un servicio único que lo estaría usando. Por lo tanto, el token criptográfico de hardware es mucho más práctico, pero el software suave sigue siendo bueno para la demostración y el desarrollo.

Respecto a "ingrese las letras 1, 3 y 5 de su segunda contraseña" es algo más débil pero mucho más barato en comparación con los tokens. Sin embargo, producir token no es difícil hoy en día, dado que es una larga vida y una seguridad mucho más sólida.

El modelo comercial de este se basa en mantener un método de comunicación seguro y un almacenamiento seguro adecuado de tokens criptográficos, por lo que todo el negocio de su lado debe centrarse adecuadamente en él, por lo que es un trabajo para empresas de terceros y no para los bancos. . De esta manera, la superficie de ataque se reduce a la forma en que los tokens son almacenados y verificados por una empresa de terceros.

    
respondido por el Aria 02.08.2016 - 23:17
fuente
3

No creo que sea algo bueno. El cálculo y la conversión de letras en dígitos es simplemente demasiado complejo para la mayoría de los usuarios. Quieren que sea rápido y fácil. Además, el hecho de que la regla deba almacenarse obligatoriamente en texto no cifrado para que el esquema funcione es un defecto de diseño de seguridad importante.
¿Y qué problema resuelve esto que no se ha abordado ya? ¿Por qué no una autenticación simple de 2 factores con TOTP? Reinventar las cosas existentes de una forma ligeramente diferente no suele mejorar las cosas.

    
respondido por el kaidentity 03.08.2016 - 16:28
fuente
1

No es fácil de usar e incompatible con los administradores de contraseñas, por lo que cualquier usuario normal mantendrá sus fórmulas lo más trivial posible.

Eso significa que cualquier atacante que intercepte múltiples pares de números / contraseñas puede aplicar ingeniería inversa a la fórmula con bastante facilidad. Hacer esta intercepción en su implementación de ejemplo es fácil porque no admite https.

    
respondido por el Philipp 03.08.2016 - 17:02
fuente

Lea otras preguntas en las etiquetas