Pregunta

¿Cómo debo diseñar un protocolo de inicio de sesión para ser más seguro de la forma en que lo tengo ahora?

  1. el cliente se conecta y envía su nombre de usuario
  2. el servidor envía la sal (siempre igual) para el usuario
  3. el cliente agrega el salt a la contraseña y la envía al servidor

De esta manera, la contraseña está oculta todo el tiempo, pero no detiene a un pirata informático para que simplemente copie el hash si puede verlo y enviarlo después de recibir la contraseña ...

¿Fue útil?

Solución

Deje la seguridad en un protocolo de nivel superior (SSH, SSL) y mantenga el suyo simple.

Otros consejos

Si el servidor solo acepta la contraseña con sal en una conexión que originalmente desafió con esa sal , entonces el pirata informático tendría que seguir conectándose hasta que obtuviera la misma sal para la que vio el hash. No estoy diciendo que esto sea ideal (y un intercambio de claves Diffie-Hellman seguido de una autenticación totalmente encriptada puede ser más seguro, aunque aún es susceptible a un ataque de hombre en el medio a menos que tenga cuidado), pero creo que Un simple cambio al menos sería beneficioso.

Nuevamente, no soy un experto en seguridad y posiblemente no debería tomar consejos de seguridad de personas que no sean expertos.

La seguridad es difícil.

No haga rodar su propio protocolo de inicio de sesión, ya sea use un uno comprobado existente o haga algo trivial y robusto en una conexión encriptada (SSH, SSL ...). Hay tantas implementaciones sólidas de protocolos probados, y muchos ejemplos de sistemas que fallan debido a la reinvención defectuosa de las ruedas: si el inicio de sesión protege algo de importancia, simplemente no hay excusa.

Dicho esto, si tu propósito aquí es aprender a diseñar tales algoritmos, recomiendo encarecidamente a Bruce Schneier " Criptografía aplicada " ;.

El paso 2 parece ser la mayor debilidad, allí. Si puede asegurarse de que el servidor envíe un " suficientemente grande " sal y NUNCA la misma sal, dos veces (sospecho que una pequeña porción de números aleatorios decentes, más un contador incremental, luego el hash PUEDE ser suficiente, pero no puedo probar que lo sea), eso probablemente sería suficiente. Alternativamente, siga el ejemplo de ssg y encapsule todo en una sesión SSL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top