type services password found example encodingtype web-services security authentication passwords

web-services - services - wsse usernametoken c#



¿El PIN de 5 dígitos es mejor que la mayoría de las contraseñas? (13)

Como tal, confiar en el bloqueo para la seguridad es una mala experiencia del usuario y podría llevar al atacante a bloquear varias cuentas, lo que generaría inconvenientes para los usuarios reales. En su lugar, use contraseñas más fuertes con hash salado que son más difíciles de romper utilizando la fuerza bruta y no son susceptibles a los ataques de tabla Rainbow si la elección es entre PIN y contraseña. Si la elección es una frase de contraseña, contraseña y PIN. Mi recomendación es ir con Contraseña seguido de Frase de contraseña y luego PIN en el orden descendente de preferencia. La frase de contraseña (> 10 caracteres) es normalmente más segura que una contraseña (de 6 a 8 caracteres) pero no brinda una gran experiencia ya que el usuario necesita escribir la frase de contraseña (> 10 caracteres) cada vez. Haga la elección en función de cuán confidenciales sean los datos y cuán buena sea la experiencia del usuario que desee proporcionar. Espere un minuto. Explore el nuevo área emergente de autenticación con menos contraseña usando un dispositivo móvil como autenticador.

Esto es algo que me ha estado molestando durante muchos años: ¿por qué la mayoría de los servicios en línea valoran mucho la entropía de una contraseña , citarla como una medida de seguridad y hacerla cumplir cuando los usuarios seleccionan una contraseña?

Decidí hacer esta pregunta después de leer el documento "¿Las contraseñas web fuertes logran algo?" (y, por supuesto, dibujos animados clásicos de Dilbert ).

La política típica de un sitio en línea es requerir al menos 6 u 8 dígitos superior + minúscula + contraseña numérica. Esta longitud es algo relevante para la dificultad del ataque de fuerza bruta para, por ejemplo, recuperar una contraseña del hash. Pero la forma típica de adivinar en línea es que alguien intenta iniciar sesión en el servidor, que es libre de rechazar después de un par de intentos.

Imaginemos, por ejemplo, que estamos protegiendo algún servicio de tamaño mediano con un PIN de todos los dígitos. Uno piensa inmediatamente en los pines de 4 o 6 dígitos, pero puede que no sea una buena idea, ya que muchas personas sentirán la tentación de participar en los cumpleaños de sus hijos, que son esencialmente de conocimiento público.

Entonces, aquí está mi sugerencia de PIN de 5 dígitos . Guardo para cada usuario una bandera de "ataque posible".

  1. El usuario inicia sesión correctamente -> Aceptar
  2. De lo contrario, mantenga la sesión https y permita 2 intentos más
  3. El usuario inicia sesión -> Aceptar
  4. De lo contrario, permite 2 intentos más con un descanso de 5 minutos antes de ellos
  5. El usuario inicia sesión -> Aceptar
  6. Sesión de interrupciones de usuario -> establecer la bandera
  7. El usuario interrumpe la sesión pero inicia sesión normalmente más tarde: presenta al usuario el diálogo y permite borrar la marca
  8. El usuario agota los intentos anteriores: envía un correo electrónico con el enlace; permitir borrar la bandera
  9. Si hay más de 100 banderas en general durante el mes, establezca el indicador global de "ataque posible" que requiere que las personas que no tienen una cookie respondan preguntas de seguridad
  10. Borre automáticamente el indicador de usuario en algunos casos (por ejemplo, el usuario finalmente inició sesión desde la misma computadora)

Supongamos que los nombres de usuario se conocen de alguna manera (tenga en cuenta que esto no será cierto para la mayoría de los sitios). Un ataque de fuerza bruta contra un usuario es inútil: estás bloqueado después de 5 intentos, por lo que tienes una probabilidad de 1/200000. Si intentas adivinar la contraseña más de 200 veces en un mes, la bandera se apaga y no obtienes nada. Si prueba <200 usuarios por mes, después de un año tiene <1% de posibilidades de romper un usuario; estás mucho mejor con phishing, virus, ingeniería social o cualquier otra cosa.

El tamaño del sitio es relevante solo en el sentido de no obtener falsos positivos, es decir, usuarios que realmente olvidan su contraseña (digamos 1% por mes), la recuperan, pero no borran la bandera (digamos el 1% de aquellos), y cuando no puede borrar la bandera automáticamente (por ejemplo, 10% de esos). Esto genera 10 indicadores de falsos positivos esperados por mes por 10 6 usuarios, lo que significa que un sitio de tamaño mediano tiene una probabilidad razonablemente baja de entrar en el modo de "pánico", que de todos modos no es tan malo.

Creo que este esquema es muy práctico. Aquí hay algunos hechos obvios sobre esto (actualizaciones) :

  • beneficio : el PIN es más fácil de recordar. Creo que esto es una gran ventaja ya que ahora es posible exigir que el usuario recuerde la contraseña que generó. Creo que la mayoría de las personas recuerdan mejor 5 dígitos aleatorios que cualquier otro tipo de contraseña aleatoria.
  • compensación : Hashing no ayudará mucho si su atacante conoce tanto el PIN hash y la sal. Esto es posible si alguien entra en su base de datos y aprende cuál es su proceso de salazón. Sin embargo, creo que la entropía de contraseña estándar tampoco ayuda en ese caso.
  • beneficio : las personas son mucho más felices al recordar 5 dígitos aleatorios que las contraseñas alfanuméricas aleatorias; por lo tanto, es mucho más fácil también requerir que generemos la contraseña, no el usuario. Esto elimina ataques de diccionario / datos personales.

Mis preguntas son:

  1. ¿Cuáles son las otras compensaciones / beneficios de mi esquema en comparación con el que describí como típico?
  2. ¿No será mejor la mayoría de los sitios y organizaciones medianos con mi esquema de contraseñas?
  3. ¿Cuáles son las razones por las que seleccionan el esquema que tienen?

Nota : No aconsejo tener siempre contraseñas cortas. Mis contraseñas web generalmente se generan aleatoriamente y se cifran mediante un administrador de contraseñas (1 contraseña) con una contraseña de alta entropía de 12 caracteres. Pero creo que a menudo el esquema anterior sería mejor de lo que tenemos en la práctica.


Con esta lógica, si 5 dígitos son más fáciles de recordar que 8 caracteres, pero contienen suficiente entropía, entonces un dígito y tres letras que no distinguen entre mayúsculas y minúsculas deberían ser aún más fáciles.

10**5 = 100,000 26**3 * 10 = 175,760

¡Ahora solo cuatro pequeños personajes, sin embargo, transmiten más entropía!

Tal vez solo use mis iniciales seguidas por el dígito 1. . .

No estoy demostrado por esto, excepto que hay una gran área gris ambigua entre reductio ad absurdum y sarcasmo.


Creo que sería más fácil recordar "passphrases beat PINs any day!", Que resistirá hasta un ataque de fuerza bruta por algo así como 400 billones de años.


El problema real? Gente.

Conozco un distrito escolar con 4 contraseñas: 1111, 2222, 3333 y 4444. ¿Por qué? Los usuarios se reunieron y aceptaron hacer esto para que siempre puedan entrar cuando el personal esté enfermo en casa. Demasiado dolor para entrar en una computadora con dinero para el almuerzo bloqueado cuando el trabajador del almuerzo estaba enfermo.

Ah, sí, vi la computadora del almuerzo desatendida muchas veces. Y, sí, puede solicitar que su saldo se convierta en efectivo en cualquier momento.

Los usuarios están locos.


He sugerido un esquema similar al suyo en el pasado porque he visto muchos casos en los que los usuarios simplemente escriben las contraseñas en una nota adhesiva al lado de su monitor, citando que la complicidad es demasiado difícil de recordar. Argumenté que las contraseñas no importan demasiado porque es más probable que un hacker encuentre otros agujeros en el sistema, ya sea a través de la aplicación o simplemente mediante una pequeña ingeniería social.

Creo que algunas personas, especialmente los gerentes técnicos que no entienden completamente lo que está diciendo como una sensación de seguridad. Una gran contraseña complicada se siente fuerte. Algo así como una garantía en una caja, te hace sentir bien. Algo así como el hada de los dientes

"Tommy: ¿Cómo sabes que el hada de los dientes no es un loco extractor de pegamento?" Construir modelos de aviones ", les dice. Bueno, no me lo compro. Se cuela en tu casa una vez, eso es todo. Lo siguiente que sabes es que tienes dinero perdido en el cajón de tu cómoda y tu hija está destrozada ".

A fin de cuentas, una contraseña simple como un alfiler es probable que se rompa o adivine con combinaciones comunes, y no se siente seguro. Un pin en combinación con un RSA SecurId es lo que todos pudimos acordar.


Las contraseñas con hashes salados son las mejores. La Sal previene la mayoría de los ataques de arcoiris y una contraseña es mucho más difícil para la fuerza bruta. Incluso con un ataque de diccionario, lo más probable es que obtenga golpes más rápidos en un pin de 5 dígitos y luego en una contraseña de longitud similar.


No, estás equivocado. Los ataques de fuerza bruta son una cosa, pero el peligro real es Rainbow Tables que, a partir de un valor hash, te da la contraseña de texto simple.

Primero, nunca almacene nada como texto sin formato. Si alguien infringe su seguridad (o incluso si un empleado tiene intenciones maliciosas), no desea exponer la contraseña de los usuarios. Entonces usarás un hash adecuadamente salado.

Luego, con un PIN de 5 dígitos, es demasiado corto para protegerlo con hash. Hay tablas arco iris (o incluso búsquedas de Google) que permitirían a alguien recuperar la contraseña si obtienen el hash.


Otro factor a considerar es la facilidad de entrada. Un PIN es fácil de ingresar rápidamente en un teclado numérico, ya que para mayor complejidad, la facilidad de entrada disminuye. La facilidad depende del dispositivo. En un teclado estándar con mecanografía al tacto, puedo ingresar símbolos y UC fácilmente. En un teléfono inteligente, me resulta difícil ingresar de forma confiable las letras minúsculas y los símbolos son difíciles y lentos para ingresar porque el teclado es más pequeño. Un PIN numérico es rápido de ingresar, y puedo recordar e ingresar fácilmente una secuencia larga de dígitos. Un observador humano encontrará que es más fácil obtener la contraseña si la entrada es lenta y usa movimientos inusuales que delatan lo que se está ingresando.

En resumen, debe considerar no solo la complejidad de la contraseña y cómo se almacena, sino también la facilidad para mantenerla en secreto y facilitar la entrada.


PINs contra contraseñas, las contraseñas ganan, no son perfectas, pero tienen una política sólida, mucho mejor que los PIN.

Y quién dijo que muchas personas no escriben sus PIN en notas adhesivas, es más fácil para muchos recordar una combinación de palabras que un número de 5 dígitos, personalmente, recuerdo números más fáciles, y por lo tanto, mis contraseñas son más numéricas que alfabéticas.


También estoy experimentando con alfileres contra contraseñas. Depende de la seguridad general de la aplicación que intenta crear, pero las contraseñas generalmente ganarán siempre si incorpora alguna verificación de seguridad con contraseña. Lo que entiendo es que una buena frase de contraseña que tiene al menos más de 14 caracteres puede ser incluso mejor que una contraseña "típica". Permite a las personas escribir algo que pueden recordar fácilmente, pero algo que puede ser más difícil de replicar en un ataque. Solo la cantidad pura de caracteres hace que sea difícil de descifrar.

Si combinó una frase de contraseña con su método de bloqueo anterior, es posible que tenga un sistema más seguro.


Tenga en cuenta que un usuario malintencionado con 3.000 intentos puede bloquear 1.000 cuentas en cuestión de minutos. Otra cosa es que puede cambiar las probabilidades de un inicio de sesión exitoso probando miles de cuentas diferentes por día. ¿ OpenID no es una opción?

Actualizar

Solo tuve una pequeña inspiración sobre la cosa de 5 dígitos. Si 5 dígitos (10 ^ 5 = 100.000) son realmente fáciles de recordar y seguros al mismo tiempo, ¿qué pasa con estos casos?

4 letters all lowercase (26^4 = 456.976) => abcd 3 letters with mixed cases (52^3 = 140.608) => aBc 3 letters lowercase + numbers (36^3 = 46.656) => ab1


Todavía no entiendo por qué las personas limitan la longitud de las contraseñas. ¿No sería más fácil para mí recordar una oración o frase? Por ejemplo, podría querer que mi contraseña sea " this is my password ". Tendría problemas serios de memoria si lo olvidara. Su longitud es de 34 caracteres y solo usa un alfabeto de 27 caracteres, pero aún así sería esencialmente imposible invertir el hash (4.6 x 10 48 posibles permutaciones).

En combinación con sus ideas sobre la "bandera de ataque" y las técnicas correctas de salazón / limpieza, esta sería una solución ideal en mi opinión.


Tenga cuidado con el manejo de la sesión

No sé demasiado sobre el manejo de sesiones, pero, por lo que sé, la mayoría de las veces se hace usando cookies. Cuando tienes un esquema como el tuyo, es necesario escribir intentos falsos en la base de datos o en archivos especiales en tu servidor, ya que no puedes confiar en el manejo de la sesión (en tu descripción suena un poco, ya que solo puedes " celebrar la sesión "para tener toda la verdad ...) - ya que las sesiones a través de Internet son muy vulnerables. Es solo una construcción de cookies (que pueden eliminarse) y / o nombres de página (que también pueden estar contaminados). Lo único en lo que puede confiar, es que el usuario todavía conserva la sesión; no puede identificar realmente si alguna conexión nueva (seamingly) no es su antiguo usuario ...

Especialmente, no tiene sentido diferenciar entre "usuario tiene sesión fija" y "sesión de interrupción del usuario" (su artículo 7) esta es solo una diferencia descuidada y también puede convertirse en un agujero de seguridad.

Recordar no es realmente más fácil

También dices que recordar 5 dígitos es más fácil. Eso podría ser correcto para su número de seguridad de tarjeta de crédito o tarjeta bancaria (en Alemania, tenemos un PIN de 4 dígitos), pero para los sitios web, siempre tiene el problema de que esos muchos sitios web tienen contraseñas. Recordar docenas de números de 5 dígitos es tan difícil como muchas contraseñas.