Hay algunas cosas que no consigo aquí, y probablemente una o dos cosas que vale la pena agregar:
- la contraseña con hash está cifrada con
clave privada almacenada como CONSTANTE en
aplicación / archivo
Como "CONSTANTE", ¿qué significa eso? ¿Es difícil codificado? ¿Cómo se protege? Estoy de acuerdo con otras publicaciones en que una sal es un buen plan: si usted salta y hash las contraseñas, no veo la necesidad de cifrarlas. Y, si la clave privada para su cifrado se almacena en un archivo plano o codificado en la aplicación, tiene una debilidad allí. Recomiendo encontrar una manera de proteger mejor esta clave.
En varios lugares mencionas que estás siguiendo el comportamiento "por dispositivo", ¿qué significa eso? ¿Cómo estás determinando qué es el dispositivo? Aquí está implicando un tipo de autenticación de dispositivo, y por lo poco que sé sobre esta área, la mayoría de las formas son inmensamente falsas, y las formas que no requieren la emisión de dispositivos desde un punto de confianza, lo que puede cambiar mucho su modelo de operación. .
En los lugares donde dices "por dispositivo", tendrás que pensar qué significa si el dispositivo está falsificando tu sistema. Además, si ha decidido que "Dirección IP"="dispositivo", es posible que deba considerar numerosas situaciones en las que la dirección IP del usuario está cambiando sin que el usuario tenga la culpa.
- permitir que el historial de inicio de sesión sea borrado de dispositivos antiguos
¿Es eso algo que estás completamente preparado para soportar? Frotar, digamos, una cookie es bastante fácil, pero ¿te refieres a todas las partes de la memoria? Personalmente, si estuviera haciendo esta promesa, la vincularía de alguna manera para que si el sistema operativo colocara la información de inicio de sesión en un lugar extraño, no fuera una violación de lo que mi sistema había prometido a los usuarios.
También veo algunos problemas:
- ¿Cómo puede un usuario recuperarse de una contraseña perdida / olvidada?
Lo veo citando un proceso bastante complicado para cambiar la contraseña. Si este es un sistema web casual, apostaría dinero a que esta será su función menos utilizada. En su lugar, los usuarios se alejarán del sistema, solo para regresar y necesitar sus contraseñas y los han olvidado por completo (o los escribieron en una nota adhesiva en sus pantallas ... eso es aún peor).
Necesitará una forma de recuperar / restablecer la contraseña que se ajuste a su modelo de alta protección. ¿Está atendido por una persona? ¿Tienen preguntas de respaldo para responder? ¿Reciben una contraseña de restablecimiento por correo electrónico fuera de banda? Cada mecanismo de recuperación tiene riesgo, y generalmente menos riesgo = mayor costo; por ejemplo, la verificación de identidad definitiva de la compañía de mi tarjeta de crédito para este tipo de preguntas es una pregunta dolorosa con una persona real sobre mi historial de compras. Muy bien, pero costoso en términos del salario de esa persona.
- Una forma sencilla para que los usuarios veten el sistema
La credencial presentada por el servidor en SSL debería ser lo suficientemente buena, pero muy pocos usuarios tienen suficiente PKI para eso. Sé que las grandes instituciones financieras han empezado a utilizar palabras e imágenes seleccionadas por los usuarios que los usuarios deben verificar durante el inicio de sesión. El objetivo principal aquí es evitar una situación en la que un phisher podría enviar a su usuario un correo electrónico para que lo envíen a "paypa1.com" (un número 1, no una letra), y obtener sus contraseñas. Ya que tiene funciones que se adaptan al inicio de sesión remoto, su atacante podrá usar una cuenta de usuario legítima desde cualquier sistema.
Es probable que estos dos problemas no sean los únicos procesos orientados a las personas en los que deba pensar: ¿registra los accesos? ¿Tiene un plan para separar la auditoría de inicio de sesión de los privilegios de administración? ¿Cuánto acceso tienen los administradores y cómo está protegido el sistema de ellos? ¿Hay otros ataques de ingeniería social que puedan funcionar?
Hasta ahora, lo que describe es una tecnología pesada y una luz humana: está hablando de un par de mecanismos que pueden tener un impacto en la usabilidad, lo que podría hacer que los usuarios no usen el sistema o que los usuarios tomen medidas para piratear El sistema lo hace más fácil de usar, y me preocupa que no haya pensado en los vectores de ataque de un ingeniero social. Al igual que el agua, los piratas informáticos encontrarán la grieta o hendidura más fácil de usar.
Te estoy golpeando con las cosas pesadas aquí, porque mi percepción es que estás tratando de diseñar algo de alta calidad para algo que presumiblemente es de alto riesgo. Si eso es lo que está tratando de diseñar, entonces debe realizar una copia de seguridad y ver el sistema whole : su comunidad de usuarios, el nacimiento hasta la muerte de las cuentas, el comportamiento dentro del sistema y los riesgos de mala conducta.