@bstpierre No me di cuenta de que la validez de un sistema de seguridad implica una explicación extensa. Esta es una propuesta para abordar un problema del mundo real de la manera más simple y sólida posible.
La extensión de la explicación para que un sistema sea implementado directamente por humanos es muy importante. La mayoría de las personas que conozco no están dispuestas a elegir una buena contraseña de soltero , sin importar la forma en que lo hace la propuesta.
Pero seamos generosos y supongamos que un usuario puede manejar la complejidad. El esquema todavía tiene varios problemas que evitan que sea utilizable.
Primero, genera contraseñas como -----A1A8+QdjkD(*
. ¿Qué sucede cuando debe tener una cuenta en algún sitio web de braindead que requiera una contraseña alfanumérica de 6-8 caracteres? (Respuesta: necesitará un algoritmo de reconstrucción secundario o un tercero sal y un algoritmo de hashing alternativo que genere (posiblemente cortas) cadenas alfanuméricas. También necesitará algún mecanismo para marcar las contraseñas débiles.) Ya tiene que recordar 7 trozos de información para reconstruir la contraseña (sin contar el algoritmo, supongo que, por el bien de los argumentos, tiene este automatizado). Y se pone aún peor, porque después de resolver este problema, se encontrará con un servicio aún más inteligente que requiere un nuevo conjunto de recetas.
Otro problema es el paso de usar la primera mitad de la contraseña "de la siguiente línea". Si pierde la lista, puede reconstruir el par de "palabras" para cada sitio, pero no podrá reconstruir la contraseña correcta a menos que obtenga el orden correcto de los sitios. (OMI, este paso es una ofuscación innecesaria: si alguien tiene la lista y conoce el algoritmo, no hay ningún valor agregado para usted).
Y luego confías en el hash del "nombre de servicio". ¿Qué cadena específica estás usando para esto? El nombre del servidor? ¿Qué sucede cuando GigaBank adquiere MegaBank y sus cuentas pasan de wwws.mega.example.com a wws1.giga.example.com? Supongo que es bastante fácil simplemente cambiar sus contraseñas cuando cambia el nombre del servicio, pero es otra molestia.
¿Cómo maneja los cambios forzados de contraseña? Un sistema que conozco parece recordar sus dos últimas contraseñas, por lo que no puede volver a usarlas. Podría modificar su esquema para incluir una octava porción de información: un "número de secuencia"; esto se agregaría (o se agregaría o insertaría en alguna posición arbitraria, pero esta cantidad de variación equivale a recordar una novena parte de la información). Esto se convierte en una molestia en los sistemas que requieren que cambie su contraseña cada 60 o 90 días.
¿Cómo rastrea los nombres de usuario? ¿Los memorizas o están escritos?
¿Qué sucede si tiene varias cuentas con un solo servicio? Su algoritmo garantiza (por diseño) que un servicio dado genera exactamente una contraseña. Por ejemplo, quizás tenga que iniciar sesión en cuentas separadas en su banco o correduría.
¿Cómo está almacenando la "contraseña muy larga" utilizada para generar los hashes? Esto debe almacenarse en algún lugar, separado de la lista de contraseñas.
Si tiene una solución más elegante que cumpla con los criterios de diseño, ¡comparta! Me encantaría usarlo
No tengo otra solución que se ajuste a tus criterios.
En un momento utilicé un esquema de reconstrucción basado en el nombre del sitio web y un par de bits de información. Se derrumbó rápidamente debido a las razones descritas anteriormente y comencé a usar keepassx con una contraseña maestra fuerte. Ahora, en cada servicio utilizo una contraseña única de longitud máxima generada aleatoriamente con el conjunto máximo de caracteres permitido.
Su pregunta describe los riesgos asociados con este sistema.
Editar : un único punto de error que no vi en mi análisis inicial es su cuenta de correo electrónico. A menos que esté usando varias cuentas de correo electrónico independientes, con una cuenta separada para cada servicio, su correo electrónico es un punto único de falla para múltiples servicios debido a la forma en que funciona la mayoría de los sistemas de recuperación de contraseñas. Si la contraseña de su cuenta de correo está comprometida (ingeniería social, keylogger, etc.), muchos de sus servicios también estarán comprometidos.