Contraseña con patrón, basada en el nombre del sitio [duplicado]

29

Estoy considerando implementar un patrón para mis contraseñas, usando las siguientes ideas:

  1. Contraseña maestra que no almaceno en ninguna parte
  2. Un algoritmo para modificarlo en función del sitio al que accedo

Entonces, por ejemplo, tengo la contraseña maestra M, voy al sitio web PayPal (P) y ejecuto un algoritmo relativamente simple en mi cabeza A(M, P) que produce la contraseña para PayPal. El algoritmo es consistente, pero para diferentes sitios produce resultados diferentes.

Pros:

  1. Robar 1 o 2 contraseñas no me expone a mayores riesgos.
  2. No necesito ninguna aplicación de almacenamiento o administración de contraseña.
  3. Keylogger puede robar solo una cantidad limitada de contraseñas.
  4. Como no necesito almacenamiento, realmente no puedo perder mis contraseñas.

Contras:

  1. Si mi algoritmo pierde de alguna manera, la contraseña maestra se puede recuperar de algunas contraseñas conocidas.
  2. Hace que sea más difícil ingresar contraseñas. Aunque puedo escribir una pequeña aplicación para mi teléfono. Seguir generando la contraseña del sitio puede ser problemático en ciertas situaciones.
  3. Cambiar las contraseñas también es un problema, pero esto puede agregarse agregando 3rd param - version A(M, P, V) y puedo almacenar solo la versión. O guárdelo en la sugerencia de contraseña.

¿Es buena idea?

    
pregunta Andrey 03.06.2016 - 02:30
fuente

8 respuestas

38

Ya que la pregunta se ha editado para que ya no haga referencia a "Autenticación de dos factores", volveré a modificar mi respuesta, pero dejaré el original a continuación.

La idea de tener una "contraseña base" a la que le agregas algunos caracteres o "mangle" de alguna manera para hacerla única para cada sitio es un truco bastante común que incluso algunos expertos en seguridad utilizan (hasta que adoptan gestores de contraseñas al menos).

Entonces, ¿qué tan seguro es este esquema? Bueno, es mejor que usar la misma contraseña para todo, y peor que usar contraseñas completamente diferentes y no relacionadas. Exactamente dónde cae en esta línea es una cuestión de opinión (que estoy seguro que proporcionarán otras respuestas).

Mi opinión es que no importa dónde se encuentre en la línea porque a usted le preocupa que las personas analicen sus contraseñas filtradas en busca de patrones, o no. A mi modo de ver, hay dos tipos de ataques (o "modelos de amenazas") de los que preocuparse:

  1. Un ataque "drive-by" por una herramienta de craqueo masivo que usa diccionarios comunes. Por lo general, buscan eliminar al 40% de los usuarios con contraseñas débiles, quienes reutilizan la misma contraseña de un sitio a otro y luego pasan a una nueva filtración de contraseña.

  2. Estás siendo un objetivo personal: el tiempo humano y el poder computacional se gastarán en el análisis de tus contraseñas filtradas anteriores en busca de un patrón.

Si solo está preocupado por 1), entonces puede salirse con la suya con una regla muy simple para hacer que su contraseña se aleje de las reglas estándar en herramientas de cracking basadas en diccionarios disponibles en el mercado. Incluso aquí, esperas que tu "truco" no sea lo suficientemente popular como para que cualquier pirata informático lo haya agregado a sus conjuntos de reglas. Si estás preocupado por 2), cualquier tipo de patrón será resuelto.

Al final del día, "¿es lo suficientemente seguro?" depende de su gestión de riesgos y de la importancia de lo que está protegiendo: en términos generales, si (probabilidad de incumplimiento) X (valor de los datos perdidos) > (nivel de seguridad) entonces debería aumentar su seguridad. Si está lo suficientemente preocupado por sus contraseñas como para escribir una publicación en un sitio como este (¡y bueno para usted!), Entonces debería considerar usar un administrador de contraseñas como LastPass o KeePass; son realmente fáciles (a menos que olvide su super -fuerza la contraseña maestra y abandona todo como lo hice yo.

Respuesta original:

Primero, alguna terminología:

Resulta que hay un poco más de autenticación de dos factores de lo que podrías pensar en la superficie. En términos generales, hay tres tipos de mecanismos de autenticación:

  1. Algo que sepa : información, como una contraseña, el apellido de soltera de su madre o una clave pública almacenada en un archivo de claves.

  2. Algo que tiene : generalmente un objeto físico como el teléfono que puede recibir SMS en su número, o un token de contraseña única (OTP) o una tarjeta inteligente habilitada para clave pública / Memoria USB:

  1. Algo que eres : también conocido como "biométrico", como huellas digitales, iris, voz, ritmo de escritura, etc.

La razón para dividir los métodos de autenticación en estas categorías es que cada una requiere un tipo de robo muy diferente para que un hacker lo adquiera.

Si se le solicita que proporcione una prueba de identidad de más de uno de los catogorías anteriores, entonces es correctamente "Autenticación de dos factores" o "Autenticación de múltiples factores". Si proporciona varios elementos de la misma categoría , se denomina "Autenticación de varios pasos", que obviamente es más débil que el factor múltiple.

Ahora para tu pregunta:

Entonces, lo que estás proponiendo no es Multi-Factor. Ni siquiera es Multi-Step porque al final de todo, solo está proporcionando una contraseña a la página de inicio de sesión.

    
respondido por el Mike Ounsworth 03.06.2016 - 03:31
fuente
9

Este documento sugiere que su enfoque de reutilización de variantes basado en una sola contraseña maestra es De hecho, es mejor que simplemente duplicar contraseñas. Sin embargo, como menciona techraf , si usa un algoritmo simple, los beneficios de seguridad pueden ser triviales.

Por ejemplo, un algoritmo simple común para A es usar una combinación del nombre de dominio en su contraseña (por ejemplo, abcd1234gmail para gmail.com y abcd1234facebook para facebook.com).

Suponiendo que el algoritmo es algo que quieres hacer en tu cabeza, lo que realmente deseas que cumpla el A es darte una buena difusión , para que tus contraseñas generadas no No comparta subcadenas comunes. Esto, combinado con una contraseña maestra bastante larga y compleja, debería proporcionarle variantes lo suficientemente oscuras, de modo que incluso si se filtran algunas contraseñas, se ven lo suficientemente diferentes y no ayudan a las herramientas de descifrado de contraseñas. Muy pronto, preveo más estudios que comparen las contraseñas de los mismos usuarios a través de múltiples infracciones para descubrir cómo se varían las contraseñas.

Una recomendación que tengo es usar una contraseña maestra diferente para tus cuentas más importantes (por si acaso). Al final del día, esto es, sin duda, seguridad a través de la oscuridad, pero ¿no es de eso de lo que se trata la selección de contraseña?

Lo que realmente sería valioso es una buena manera de generar una familia de algoritmos diferentes {A} , que puede calcularse fácilmente en su cabeza. De lo contrario, puedes usar un programa simple para generar tu contraseña usando algo como hash(master+domain+salt) .

    
respondido por el Jedi 03.06.2016 - 03:15
fuente
7

Confía en el secreto y la complejidad de su algoritmo. Este es un ejemplo típico de seguridad a través de la oscuridad :

  

confiar en el secreto del diseño o la implementación como el método principal para brindar seguridad

Por lo tanto, debes tener en cuenta sus advertencias.

Es una buena idea siempre y cuando:

  • manténlo realmente en secreto

    En lugar de una contraseña secreta, usas un algoritmo secreto. A medida que se queda en su cabeza, puede asumir su secreto hasta cierto punto (aunque esta pregunta ya reveló el hecho de que podría estar usando uno).

    Mover el algoritmo fuera de tu cabeza (codificar en una aplicación) rompe esta condición.

  • no lo uses con demasiada frecuencia

    Técnicamente se reduce a cifrar la URL del sitio (texto claro) con:

    • un algoritmo secreto (lo suficientemente simple como para realizar cálculos en tu cabeza)
    • una contraseña fija (clave reutilizada)

    Eso no suena seguro para el cifrado y, si se toman suficientes muestras, es propenso al análisis de criptografía.

    Pero en el caso de las contraseñas de los sitios web, las muestras serían más bien escasas y, además, tendrían que provenir de una serie de fuentes comprometidas. Preferiría ser difícil.

  • haz que el resultado sea realmente aleatorio

    En general, si utiliza un " algoritmo relativamente simple " obtendrá una seguridad relativamente débil. Es posible que su algoritmo original no sea tan original y que un criptoanalista experimentado pueda realizar ingeniería inversa incluso a partir de un pequeño número de muestras.

    Hay un margen de mejora aquí: si combina su algoritmo "en la cabeza", utilícelo como entrada para una función de derivación / derivación de clave y usa su salida como la contraseña que ingresa, esto incrementa drásticamente la seguridad de el esquema.

    Sin embargo, estar todavía en el ámbito de la seguridad a través de la oscuridad: qué y cómo lo hace debe permanecer sin revelar e incluso sin imprimir.

respondido por el techraf 03.06.2016 - 03:22
fuente
4

Yo diría que esta es una buena medida de seguridad que aumentará notablemente su seguridad general. La razón por la que digo esto se debe al modelo de amenaza típico de contraseñas robadas. Si está preocupado por los piratas informáticos / volcados de contraseñas típicos, es poco probable que dediquen el tiempo y el esfuerzo al intentar aplicar ingeniería inversa a su algoritmo de contraseña, cuando podrían estar revisando las millones de otras contraseñas que han recibido o intentar piratear para obtener más .

Esencialmente, siempre que sus contraseñas difieran, aunque sea ligeramente de un sitio a otro, se mezclan con las personas que tienen administradores de contraseñas. En particular, si le preocupa que alguien intente piratearlo específicamente, esto ya no se aplica y notará patrones y similitudes entre las contraseñas que han recopilado de múltiples volcados. Es muy difícil, casi imposible, encontrar un algoritmo que pueda hacer en su cabeza que no pueda revertirse a través de una computadora a partir de los resultados.

    
respondido por el mklauber 03.06.2016 - 15:19
fuente
3

Esto no es una autenticación de dos factores, es solo uno: algo que sabes.

2FA no es valioso debido al algoritmo utilizado para generar el token. Es valioso porque ese algoritmo genera un valor que solo puede ser generado por un objeto en particular.

Por lo tanto, ser capaz de proporcionar ese token 2FA prueba que estás en posesión de ese objeto; en otras palabras: algo que tienes.

Tal vez su esquema tenga méritos de seguridad, pero no porque proxies las propiedades seguras de 2FA. Por un lado, parece que un atacante podría robar su contraseña una vez mediante phishing y continuar iniciando sesión en ese sitio para siempre.

    
respondido por el thexacre 03.06.2016 - 03:06
fuente
3

Lo que has hecho es incorporar un algoritmo de aleatorización como parte de tu secreto general. Pero los algoritmos de aleatorización no son necesariamente un cifrado fuerte. Son más como rompecabezas, y generalmente pueden ser resueltos por un atacante dedicado con suficiente habilidad, muestras y motivación. (Para muchos ejemplos de personas que resuelven este tipo de problemas solo por diversión, visite puzzles.stackexchange.com.) Esto deja todas sus contraseñas vulnerables a los sitios más débiles que visita, no a los sitios bancarios más sólidos. .

Ejemplo

Supongamos primero que hay atacantes que tienen las habilidades. Imagina a un matemático desempleado y a quien resuelve rompecabezas, viviendo en un país que está en crisis, sin perspectivas de trabajo y nada mejor que hacer. A continuación, démosle algo de motivación para atacarte: el atacante aprende a través de un alarde en Facebook que tienes suficiente dinero en tu cuenta de jubilación para comprar dos Lamborghinis. Y ahora mismo, con esta pregunta, le acabas de decir que usas un algoritmo para obtener todas tus contraseñas. Busca más información sobre usted siguiendo #SOreadytohelp en Twitter. Encuentra que trabajas en Metacortex, y un poco más de Google revela que Metacortex aloja las cuentas de jubilación de los empleados en retirementfundservices.com. Así que ahora, lo único que se interpone en el camino del ladrón de tus millones es obtener suficientes muestras para romper tu algoritmo.

No conozco tu algoritmo en particular, pero cualquier cosa lo suficientemente simple como para mantenerte en tu cabeza y aplicar rápidamente para obtener una contraseña probablemente no sobrevivirá a nuestro atacante si tiene tres muestras; y le gustaría un cuarto para probar su teoría. Obviamente, más muestras lo ayudarán a resolver el rompecabezas más rápido y con más confianza.

La cantidad de muestras necesarias para descifrar su algoritmo es muy importante para su seguridad, ya que su seguridad personal ahora depende de la seguridad total de todos los sitios donde utiliza este algoritmo, incluido el más débil. Pero a menos que también seas matemático y solucionador de acertijos, no sabrás personalmente cuál es ese número realmente. ¿Son las tres? ¿Cinco? Si personalmente necesitas 20 muestras para averiguarlo, eso no garantiza que todos los atacantes también necesiten 20 muestras para aplicar ingeniería inversa a tu algoritmo; hay muchas personas inteligentes por ahí.

Suponiendo que el atacante solo necesita cuatro muestras, eso significa que solo tiene que irrumpir en los cuatro sitios más débiles que visite. O digamos que previamente se registró con Adobe, Sony y Xbox, y todas esas contraseñas terminaron en pastebin. Ahora solo necesita una muestra más. (Esperemos que no te hayas registrado también en Ashley Madison). Tal vez el atacante te sigue buscando y descubre que te gusta criar conejos como pasatiempo, y encuentra tus cuentas en rabbit-breeder.org y hobby-rabbit-breeding.com . No puedes culparlos por no ser sitios de alta seguridad, porque no tienen ninguna razón para pensar que están protegiendo algo serio como las cuentas bancarias. Ataca al primero, pero no tienen vulnerabilidades fáciles. Ataca al segundo con una simple inyección de SQL y recupera tu contraseña.

Una vez que se han robado suficientes muestras, el atacante realiza el análisis fuera de línea, sin proporcionar evidencia externa de éxito o fracaso. Simplemente se levanta una mañana, verifica el saldo de su jubilación y descubre que su dinero ha sido transferido a un banco extranjero.

Alternativas

Ya has considerado un administrador de contraseñas creado específicamente para este fin, que sigue siendo la mejor recomendación que puedes recibir.

Considera una herramienta de hardware, como Yubikey o Mooltipass; algo que puede llevar, y que se sincroniza con su administrador de contraseñas en línea.

También puede usar exitosamente su sistema propuesto al separar su riesgo en categorías. Los sitios de bajo riesgo, como rabbit-breeder.com, obtienen una contraseña maestra. Los sitios de riesgo medio, dondequiera que use una tarjeta de crédito, obtienen una contraseña maestra diferente. Los sitios de alto riesgo, donde sea que tenga acceso bancario, cada uno obtiene su propia contraseña única de 15 caracteres. Así que ahora solo tiene que recordar algunas contraseñas, tener buena seguridad y no necesita una herramienta incómoda.

    
respondido por el John Deters 03.06.2016 - 17:36
fuente
3

Como solía usar un esquema de este tipo, proporcionaré dos razones prácticas para no para usar este esquema que no veo que se dirija en otra parte.

Este esquema fallará si el sitio con el que está haciendo negocios cambia su nombre o, de lo contrario, es comprado por otra empresa y toma su nombre. Si es un sitio que no visita con frecuencia, es posible que ni siquiera se dé cuenta de por qué su contraseña de repente no funciona.

La segunda razón para no usar este esquema es que cada sitio emplea un criterio diferente para validar las contraseñas.

  • La longitud mínima y máxima permitida para una contraseña
  • Si se requiere o no un carácter numérico en la contraseña
  • Si se requiere o no un carácter especial en la contraseña
  • Si se requieren caracteres en mayúsculas y minúsculas
  • Si solo se requieren caracteres en mayúscula y minúscula
  • Si los caracteres no numéricos están permitidos (odio los sitios que solo admiten números)
  • ¿Qué caracteres especiales están realmente permitidos?

Incluso si su esquema puede lidiar de alguna manera con todas estas variaciones, también está la cuestión de cómo recordar qué variación usa un sitio en particular. Por lo general, el sitio le indicará los requisitos cuando esté creando la contraseña, pero no recuerdo haber visto ninguna que le indique cuándo está intentando ingresar su contraseña.

    
respondido por el Michael 03.06.2016 - 21:46
fuente
1

Voy a ser generoso, y supongo que puedes crear un algoritmo de gestión seguro que puedes hacer en tu cabeza para cumplir tus propósitos, que puede resistir ser descubierto por un cracker dedicado con un buen hardware. Sinceramente lo dudo, pero por el bien de la discusión lo dejaré y me centraré en la facilidad de uso de su esquema.

He respondido una pregunta similar antes donde mi principal preocupación es que cambiar la contraseña se vuelve prohibitivo, porque debe cambiar cada contraseña, pero ya lo pensó recordando un número de versión para cada sitio, que su algoritmo de gestión tiene en cuenta. Una vez más, asumiré que esto se hace de manera segura, y no es solo un contador rodante o algo, por el bien de la discusión. Así que ahora tiene una contraseña maestra compartida para recordar, un algoritmo maestro para recordar, un nombre de usuario para recordar para cada sitio y un número de versión para cada sitio.

Pero algunos sitios tienen requisitos de longitud conflictivos para su contraseña. Utilizo algunos sitios con un mínimo de 10 contraseñas de caracteres. Uso un par de otras personas con un máximo de 8 caracteres. Entonces tu algoritmo necesitará generar una longitud variable; necesita recordar otra información para cada sitio ahora, la longitud para ingresar en su algoritmo.

Pueden existir más conflictos. ¿El sitio requiere caracteres especiales, o prohíbe ? ¿Qué considera el sitio un carácter especial en absoluto? Eso es otro 2 piezas de información para recordar para cada sitio. Suponiendo que tiene alrededor de 100 sitios que tienen una contraseña, ahora tenemos:

  • Una contraseña maestra
  • Un algoritmo maestro
  • Alrededor de 100 números de versión
  • Alrededor de 100 longitudes
  • Alrededor de 100 "requieren caracteres especiales" sí / no entradas
  • Alrededor de 100 entradas de "caracteres permitidos"
  • Entre 1 y 100 nombres de usuario

Eso es 400-500 piezas de información para recordar.

Además, si alguna vez necesitas cambiar tu contraseña maestra, o tu algoritmo (porque alguien lo descubrió de alguna manera, o lo escribiste y lo perdiste accidentalmente o algo así), todavía estás en la situación de ser forzado a cambiar cada contraseña y recuerde un nuevo número de versión para cada uno.

Mi conjetura es que comenzarás a escribirlas o guardarlas en un archivo. Ahora también podrías usar un administrador de contraseñas.

Al utilizar un administrador de contraseñas, tiene que recordar una información: su contraseña maestra para su administrador de contraseñas.

Si haces las cosas bien, no perderás tu base de datos de contraseñas. Para los administradores locales, es fácil hacer una copia de seguridad de un archivo en varias ubicaciones, y está fuertemente encriptado, por lo que incluso podría subirlo a una nube. Para los administradores de la nube, ya está respaldado sin que usted haga nada.

Si le preocupa el acceso a la base de datos, considere que los administradores de contraseñas más populares tienen aplicaciones para usarlas en la mayoría de los teléfonos inteligentes.

Heck, incluso podría usar la función "recordar contraseña" de Chrome o Firefox, con una contraseña maestra si no quiere lidiar con la instalación de nada. Pero creo que estás complicando las cosas para evitar el uso de algo que hará que tu vida sea más fácil y más segura.

    
respondido por el Ben 03.06.2016 - 18:21
fuente

Lea otras preguntas en las etiquetas