Manteniendo la contraseña en secreto sobre http regular

0

Al principio, me gustaría dejar claro que esto es para los propietarios pobres de sitios que no pueden pagar la opción SSL pero requieren inicios de sesión en su sitio, potencialmente desde un quiosco público, y necesitan un método seguro para permitirlo. Todo lo que estoy buscando es una revisión pública del proceso que he elaborado, si hay algún ataque que pueda haber pasado por alto y que este proceso lo permita, y cualquier posible golpe de carretera que pueda introducir.

El proceso para registrarse es así:

  • El usuario llega a la página y el formulario de inicio de sesión se rellena con la clave pública del servidor y una única.
  • El usuario ingresa la contraseña en el formulario (y otros detalles de identificación). La contraseña y el nonce se combinan y se insertan a través de una función de derivación de claves
  • Utilizando una clave pública derivada y una clave pública del servidor, cifre la contraseña y envíe de vuelta la clave pública del cliente ad-hoc y la contraseña cifrada (y los detalles de identificación del requisito).
  • Usando la clave pública del cliente y la clave privada del servidor, descifre la contraseña, genere sal, empiece con hash lento y almacene el resultado.

El proceso para iniciar sesión sería:

  • el usuario llega y recibe la clave pública del servidor y el servidor.
  • el usuario ingresa el combo de nombre de usuario / contraseña. Como antes, nonce y password generan un par de claves
  • cifre la contraseña con la clave pública del servidor y la clave privada generada, elimine la privada, luego envíela a través del cliente, la contraseña cifrada y el nombre de usuario
  • lado del servidor, descifre con el servidor privado y público del cliente, tome el salt que corresponda al nombre de usuario, la contraseña lenta con hash, verifique en la base de datos y continúe iniciando sesión si todo está bien.

Mi principal preocupación es que el uso de la contraseña para generar el par de claves introduce una vulnerabilidad en el sentido de que si la clave pública ad-hoc enviada a través del cable se puede usar para aplicar ingeniería inversa a la combinación nonce / password que generó la clave par, o peor aún, usarlo para crear de alguna manera la clave privada para descifrar la contraseña si la función de derivación no es lo suficientemente fuerte. ¿Son estas preocupaciones legítimas, y esta opción debería estar en la mesa?

    
pregunta Mike S 27.08.2012 - 16:21
fuente

2 respuestas

7

En resumen: vaya a startssl.com y obtenga su certificado SSL de forma gratuita.

El protocolo no es lo suficientemente específico. Si pretende implementar esto usted mismo, probablemente introducirá fallas en los pasos de firma y cifrado. ¿Cómo van a validar los usuarios la clave pública del servidor aquí? ¿Esperas que comparen los dígitos hexadecimales?

También parece suponer que los clientes y servidores pueden realizar pasos de cómputo personalizados, lo que no suele ser el caso en los terminales de Internet a los que apunta. Puede considerar el uso del Protocolo de contraseña remota segura (SRP) en este caso: trustedhttp.org

    
respondido por el pepe 27.08.2012 - 17:25
fuente
6

Su método es trivialmente vulnerable a un ataque Man in the Middle (MitM). Hay dos ventajas de usar SSL:

  1. El tráfico sensible a través del cable se envía encriptado (lo que su método logra efectivamente) y

  2. puede verificar criptográficamente que va al sitio web correcto y no a una versión falsa del sitio web. (De nuevo, tenga en cuenta que la URL en la barra de direcciones o la dirección IP no es necesariamente confiable si se modificó la ruta).

Es relativamente fácil para un atacante desviar el tráfico de alguna ubicación a la página que controla. Sin embargo, no pueden hacer esto aparentemente para los sitios web de SSL ya que no tienen la clave privada de SSL. Por lo tanto, la forma correcta de hacerlo es mediante un certificado SSL firmado por una CA.

Lo siguiente mejor es usar la autenticación de resumen de HTTP, que implementa un proceso de firma de nonce de manera similar a su esquema (aunque usa MD5, una función hash bastante pobre; aunque esa es probablemente la menor de sus preocupaciones con este método). Esto se implementa en el navegador web (por lo que no es trivial que un atacante falsifique la misma pantalla de inicio de sesión al modificar el servidor). Sin embargo, tenga en cuenta que por varias razones de UX más allá de una seguridad más débil que SSL (todo el tráfico, excepto las contraseñas, es de texto simple y un MitM complicado es difícil pero aún posible), no recomiendo el resumen HTTP.

    
respondido por el dr jimbob 27.08.2012 - 17:43
fuente

Lea otras preguntas en las etiquetas