¿Cuál es el crypto correcto que se debe usar para una "Carpeta de contraseñas", donde se necesita el descifrado del secreto?

4

Me gustaría crear una "cartera de contraseñas" compartida en la que cifre varias instancias de un nombre de usuario / contraseña y las almacene en una ubicación común.

No espero que todos los pares clave / valor tengan la misma clave de cifrado; de hecho, preferiría que la mayoría de los nombres de usuario y las contraseñas se cifraran con una clave diferente.

¿Cuál es la tecnología criptográfica ideal para usar en este caso?

    
pregunta random65537 25.03.2011 - 18:47
fuente

2 respuestas

3

Hay dos formas simples de hacer esto.

  1. Lo más simple es tener una billetera por persona. Si a Alice y Bob se les debe permitir ver una combinación particular de nombre de usuario / contraseña, no hay problema, simplemente agréguelo a sus dos billeteras. La billetera de cada persona se encripta con la frase de contraseña que la persona usa para abrir su billetera.

    Este es un esquema muy simple. Antes de objetar que requiere almacenar varias copias de algunas entradas, quiero recordarle que el espacio es barato. El almacenamiento adicional requerido es absolutamente trivial.

  2. Aquí hay una solución un poco más inteligente y un poco menos simple. Para cada combinación de nombre de usuario / contraseña, elige una nueva clave simétrica aleatoria K. Encripta el nombre de usuario y la contraseña en K. Luego, para cada usuario que esté autorizado a leer este nombre de usuario / contraseña, agregue un cifrado de K en la frase de acceso de ese usuario .

    Por ejemplo, supongamos que Alice y Bob están autorizados para leer el nombre de usuario / contraseña "bloggerdude / fye7wi". Supongamos que la frase de contraseña que Alice usa para abrir su billetera es PA, y la frase de contraseña que Bob usa para abrir su billetera es PB. Entonces puede guardar la siguiente entrada en su billetera:

    Encrypt (K, "bloggerdude / fye7wi"), Encrypt (PA, K), Encrypt (PB, K).

    No creo que esto tenga grandes ventajas sobre el primer esquema, pero pensé que lo mencionaría para completar.

Por último, me gustaría mencionar algunas otras consideraciones que quizás desee tener en cuenta al diseñar su billetera:

  • Le sugiero que use algún mecanismo para ralentizar los ataques del diccionario a las contraseñas de las personas. Por ejemplo, puede usar PBKDF o el hash de contraseña bcrypt .

  • Usa una sal aleatoria. Nunca almacene ninguna función determinista de solo una contraseña de usuario; que es vulnerable a las concesiones de memoria de tiempo ("tablas de arco iris", en el popular venacular, aunque es más amplio que eso).

  • Podría considerar proporcionar una manera fácil para que los usuarios generen una nueva contraseña segura, para agregar a la billetera, cuando crean una cuenta en un sitio nuevo y necesitan una contraseña para ir con ella.

respondido por el D.W. 26.03.2011 - 07:56
fuente
1

Una idea basada en ranuras clave similares a LUKS :

Cada persona puede tener su propia frase de contraseña que se deriva de lo que llamaremos la clave de frase de contraseña. Luego, cuando intentan abrir una sección, recorra las ranuras de la clave de la sección (de las cuales puede haber un número arbitrario) hasta que encuentre una que la clave de la frase de acceso pueda descifrar a la clave de la sección. La clave de sección descifra las contraseñas en esa sección.

    
respondido por el Matthew Flaschen 25.03.2011 - 19:48
fuente

Lea otras preguntas en las etiquetas