Llego tarde a la fiesta y necesito estar al día. Estoy haciendo mi tarea buscando cosas. Sé que no quiero una CRAM de desafío-respuesta sin sal, quiero una SCRAM de desafío-respuesta con sal.
Creo que ASP.NET MVC envía contraseñas de texto simple a través del cable por lo que puedo decir, y confía en https para la seguridad. WebSecurity.Login tiene campos de nombre de usuario y contraseña que están expuestos en el controlador.
Sé que no debería deshacerme de mi propia seguridad. Preferiblemente quiero implementar un estándar que sea fácil de usar y difícil de estropear. Quiero que las personas que trabajan con el código dentro de 10 años puedan soportarlo / actualizarlo sin quitarse el pelo.
Por si acaso necesito hacer un trabajo pesado, he estado viendo implementación de CryptSharp's sCrypt. En el blog de Tony Arcieri tengo una imagen que compara diferentes costos de hardware para descifrar una contraseña .
No sé qué tan legítimo es esto o exactamente lo que significan los números (KDF de 10 caracteres frente a un KDF de 80 caracteres), pero lo que entiendo de la cuadrícula es que SCrypt es rápido (64ms) si conoce el contraseña, pero cuesta una gran cantidad de recursos de hardware / dinero generar una tabla de arco iris para ella, y eso puede costar sustancialmente más recursos de hardware que PBKDF2 y Bcrypt. Por favor, no confunda esto por mí, pretendiendo saber algo sobre estos 3 KDF, confío ciegamente en Internet aquí.
También si tengo que implementar SCRAM por mi cuenta, ¿tengo razón al entender que el cliente y el servidor necesitan generar el mismo valor? Y si es así, ¿existen las mejores implementaciones de KDF de javascript + server recomendadas que se lleven mejor que otras?
Cualquier información que ustedes tengan será muy apreciada, estoy realmente en el final profundo aquí. Gracias!