Contraseñas / Seguridad de la cuenta: ¿Qué tan seguro es "demasiado seguro"? [cerrado]

12

Ahora estoy en la etapa de desarrollo del sistema de back-end, donde podemos ver / modificar toda la información del cliente, su información del cliente, etc.

Estoy estudiando la necesidad de usar la autenticación de dos factores mediante las aplicaciones de autenticación (NO SMS) (ya implementadas), y si esto no está disponible, se requiere el uso de una contraseña muy, muy fuerte y se limita a una cierta cantidad días antes de que sea necesario cambiarlo, además de bloquear las contraseñas más comunes.

Tengo una serie de "listas de contraseñas comunes", obtenidas de un repositorio de Github, que se encuentran aquí: enlace .

Estoy considerando usar la lista de 100,000 contraseñas porque creo que ofrece la mejor sin ir demasiado lejos, pero necesito sus opiniones sobre si usaría la lista de 1 / 10k o millón.

Finalmente, mirando hacia el futuro, observo que solo se permite el acceso completo a los datos si la cuenta está registrada a través de un vpn de la compañía, y si no, les dejo una versión simplificada que no los deja ir en profundidad. .

Cuando se trata de generar automáticamente una contraseña segura para el usuario mediante algún tipo de script JS / Backend, no creo que esta sea la respuesta. Esto se debe a que no recordarán la contraseña, solo la guardarán en su navegador. En el momento en que intenten iniciar sesión en algún lugar donde no se haya guardado su contraseña, puede garantizar que su cuenta recibirá una solicitud para restablecer la contraseña. Esto puede resultar en un uso caído para esa sesión, o si les cuesta demasiado, una falta de uso para toda la cuenta para lo previsible.

Para el personal en este nivel, también he deshabilitado la opción de restablecimiento de la contraseña basada en el correo electrónico y les pido que lo hagan internamente, para garantizar que las semanas de implementaciones de seguridad y las horas de explicación de que mi hilo Sec SE no está fuera del tema no lo hacen. No desperdicie una contraseña en una dirección de correo electrónico establecida hace 10 años.

La información que nuestro personal puede ver incluye TODA la información del cliente Y su información del cliente, como la información completa de contacto, la dirección de la casa, el código de clasificación de la cuenta bancaria, la capacidad de cargar su tarjeta (no almacenamos su CC). Información, solo un PP / Stripe Key) incluso hasta los hábitos de gasto, más otros bits.

¿Cuáles son sus ideas para implementar la manera más segura posible de asegurar la cuenta de un usuario de este nivel, no solo a través de contraseñas sino por otros medios, sin molestar al usuario?

    
pregunta DomLip 12.06.2017 - 17:54
fuente

4 respuestas

26

Es necesario equilibrar la seguridad con la usabilidad.

Las últimas pautas de NIST sobre contraseñas dicen que no debe imponer cambios periódicos de contraseñas por el bien de las mismas y no debe imponer reglas de complejidad de contraseñas excesivas. La guía sugiere que pueden resultar en contraseñas que en realidad son menos seguras, puede leer un resumen aquí resumen de contraseña NIST

Sí sugiere que la prevención de las contraseñas más comunes es la mejor práctica y, para mi impresión, es que las 100.000 mejores deberían ser lo suficientemente buenas, creo que las millones superiores son excesivas. los usuarios se sentirán frustrados si llegan al intento de contraseña número 4000 cuando intentan registrarse.

esta bonita infografía de Intel muestra por qué la longitud es más importante que la complejidad Infografía de la contraseña de Intel

La autenticación de dos factores definitivamente mejora la seguridad, pero tenga en cuenta el pensamiento actual sobre el uso de SMS debido a las inseguridades en los protocolos de enrutamiento SS7 y considere alternativas como las aplicaciones de autenticación. ARS Technica 2FA / SS7

    
respondido por el iainpb 12.06.2017 - 18:09
fuente
4

Desde mi experiencia, las frases de contraseña son mucho más fáciles de recordar que las contraseñas, y no tan lentas de escribir. Quiero decir, la contraseña estándar recomendada requiere varios dígitos más signos diacríticos, lo que significa que sus dedos deben hacer malabarismos con la tecla Mayús y estar sobre todo el teclado. Una oración simple en su idioma nativo generalmente será tan rápida de escribir, y mucho más fácil para el cerebro.

Abra una novela en una página al azar, o use un generador de frases al azar como this .

Me dio "¿Ya te han encontrado los policías?"

Esto tiene una letra mayúscula, una "?", es fácil y divertido de recordar, y es lo suficientemente largo como para frustrar a la NSA. Y es mucho más seguro que el cumpleaños del usuario. Fácil de recordar, difícil de adivinar.

Además, si no hablas inglés como yo, entonces se abren muchas oportunidades para introducir palabras en tu idioma nativo que es poco probable que aparezcan en un ataque de diccionario. ¿Puedes deletrear un sándwich en ruso?

    
respondido por el peufeu 12.06.2017 - 23:39
fuente
2

La construcción de un sistema seguro no se trata solo de la longitud de la contraseña. Lo que puede y debe hacer depende de quiénes son sus usuarios y de cuánto control puede exigir sobre sus acciones.

Esto puede parecer contrario a la intuición, especialmente después de leer el resto de mi respuesta, pero si los usuarios no trabajan para su empresa y solo están accediendo y administrando sus propios datos, ponga solo requisitos mínimos. Si desean tener una contraseña insegura para sus propios datos, no debe detenerlos. Puede advertirles y ofrecerles opciones e incluso sugerirles cosas, pero no evite que protejan sus datos como quieren.

Dicho esto, HAGA al menos opciones suficientes para proteger sus datos si así lo desean. (Mi mayor motivo de seguridad es que un sitio establezca un límite de longitud de contraseña de menos de 32 caracteres. Por ejemplo, la contraseña debe tener entre 8 y 12 caracteres).

Por otro lado, si funcionan para usted y están administrando los datos de otros (y parece que este es el caso, al menos en parte, ya que mencionó que el personal tiene un acceso más amplio), hay muchas cosas que puede hacer. .

Teniendo en cuenta que la mayor parte de esto solo se aplica al último caso en el que las personas trabajan para su empresa, estas son mis sugerencias:

  1. Para un sistema muy seguro, definitivamente se requiere autenticación de 2 factores de algún tipo. Para una interfaz web, puede requerir certificados de cliente (en tarjetas inteligentes o similares) para la autenticación además de las contraseñas. Esto significa que un usuario debe tener algo y saber algo. También puede usar cualquiera de los generadores de fichas (hardware o software) para un nivel de seguridad similar, pero esto generalmente requiere que el usuario ingrese algo diferente cada vez, mientras que el método de certificado puede tener lugar siempre que el usuario tenga su inteligencia. tarjeta (protegida con un pin estático, por supuesto).

  2. Cierre la sesión después de la inactividad. No solo desconecte a la gente si todavía están haciendo cosas. Desconéctelos si no han estado haciendo cosas durante unos 5 minutos.

  3. Requiera el uso de generadores de contraseñas cifradas del lado del cliente como KeePass o LastPass para que pueda solicitar efectivamente contraseñas de 64 caracteres o más. Dado que estos se almacenan en la máquina de un usuario y se cifran con su propia contraseña, hace que la autenticación más débil tenga lugar entre un usuario y su propia máquina. La parte de la autenticación que enfrenta Internet utiliza una contraseña mucho más segura y evita los problemas de reutilización de la contraseña. (La reutilización de la contraseña es tu mayor enemigo aquí)

  4. Requerir la VPN siempre. Esto puede parecer demasiado entusiasta, pero he visto demasiados desarrolladores web que no tienen un indicio de conocimiento de seguridad, y no pasa mucho tiempo antes de que se explote su código. Sin embargo, si todo su contenido web se realiza a través de una VPN (al menos para los empleados), entonces aquellos que no deberían tener acceso ni siquiera ven la pantalla de inicio de sesión, inseguros o no. (Esto no es una licencia para escribir código inseguro)

  5. Contrate a un experto en seguridad. Y si tu presupuesto lo permite, todo un equipo. Porque no puedes pensar en todo, y tener a alguien especializado en seguridad en tus sistemas es probablemente la mejor idea que puedo darte. Asegúrese de que realicen una buena cantidad de pruebas de penetración.

La idea principal detrás de la seguridad del sistema es conocer su modelo de amenaza (con la información de la cuenta bancaria del usuario almacenada, usted tiene un modelo de amenaza REALMENTE de alto nivel) y la defensa en profundidad. Ponga tantas capas entre sus sistemas y sus nemeses como sea posible sin sacrificar demasiada conveniencia para sus usuarios legítimos.

Pensamientos finales: Capacitar a sus empleados para que utilicen prácticas seguras no es mucho pedirles. Las contraseñas no son solo sobre longitud y complejidad. La reutilización de la contraseña es uno de los problemas más complejos que enfrentamos y una de las razones más importantes para usar 2fa. Estaría dispuesto a apostar a que muchos empleados suyos usan la misma contraseña para el trabajo que realizan para otros servicios. Esos servicios no tienen el mismo modelo de amenaza y no protegen sus sistemas tan juiciosamente.

    
respondido por el Andrew Hendrix 13.06.2017 - 02:28
fuente
2

Para responder a su pregunta "¿Cuáles son sus ideas para implementar la forma más segura posible de asegurar la cuenta de un usuario de este nivel, no solo a través de contraseñas sino por otros medios, sin molestar al usuario?"

Una práctica común que conozco que es "excesiva" es la práctica de cerrar cuentas después de X intentos fallidos. Esto es para prevenir ataques de fuerza bruta. A primera vista, esto parece sensato, pero considere lo siguiente:

  • Las listas de nombres de usuarios son relativamente fáciles de obtener o adivinar.
  • El número de intentos fallidos que causan el bloqueo es generalmente bastante pequeño. (10 o menos)
  • Es común iniciar sesión como usuario desde un dispositivo remoto.

Al juntarlos, una secuencia de comandos malintencionada podría poner de rodillas a una empresa iniciando sesión de forma remota como cada usuario o un gran subconjunto de usuarios varias veces, bloqueando todas las cuentas. Para evitar esto, simplemente acelere la cantidad de intentos desde una ubicación determinada a 1 cada X segundos después de N intentos. Los ataques de fuerza bruta se basan en muchas conjeturas en un período de tiempo muy corto. Si un ataque de fuerza bruta solo puede intentar 1 ataque cada 5 o 30 segundos, en lugar de miles por segundo, la ruta de fuerza bruta se vuelve poco práctica.

Esto puede ser molesto para los usuarios porque necesitan llamar a alguien para que desbloqueen su cuenta, pero en realidad pueden usarse como una falla de seguridad. Además de agregar una forma para que un código malicioso bloquee a todos, también puede hacer que los titulares de claves se vuelvan insensibles a las personas que llaman para que las cuentas estén desbloqueadas. Esto puede llevar a ataques de ingeniería social más avanzados.

Por ejemplo: Chico de TI: "¡Esta es la tercera vez en esta semana!"

Atacante malintencionado: "Sí, simplemente no puedo recordar mi contraseña. ¿Podría restablecerla a ..."

Editado para mostrar cómo responde la pregunta.

    
respondido por el Drigan 12.06.2017 - 20:32
fuente

Lea otras preguntas en las etiquetas