Contraseña del usuario como clave de cifrado fuera de línea

3

Quiero almacenar un archivo cifrado en el dispositivo del usuario para el acceso sin conexión. Como no tienen una conexión a Internet, no pueden iniciar sesión con su nombre de usuario / contraseña y recibir una clave secreta, por lo que creo que podría obtener una clave directamente de su contraseña. Están utilizando un dispositivo que no es de Windows, por lo que no pueden usar algo como DPAPI.

El esquema es esencialmente: la contraseña del usuario se ejecuta a través de alguna función de derivación de claves como pbkdf2 para obtener una clave de fortaleza aceptable. Esta clave se usa para cifrar el archivo localmente y puede generarse sobre la marcha cuando está fuera de línea haciendo que el usuario ingrese su contraseña.

Preguntas:

1) Puedes ejecutar mil millones de iteraciones de pbkdf2, pero si su contraseña es un solo carácter, no ayudará mucho. ¿Esto cambia si hay una política de contraseña obligatoria que garantice al menos contraseñas relativamente sanas?

2) Técnicas alternativas de generación de claves?

3) ¿Pensamientos / sugerencias generales?

4) Esto proporciona un método de ataque sin conexión para obtener su contraseña para el servicio que tiene acceso a mucho más que solo este archivo. Parece que esto agrega un riesgo sustancial. ¿Pensamientos?

    
pregunta Gerald Oswald 06.11.2015 - 22:51
fuente

1 respuesta

1

Me suena bien. Responderé a tus preguntas y agregaré algunos pensamientos:

  

1) Puedes ejecutar mil millones de iteraciones de pbkdf2, pero si su contraseña es un solo carácter, no ayudará mucho. ¿Esto cambia si hay una política de contraseña obligatoria que garantice al menos contraseñas relativamente sanas?

Personalmente odio las políticas de contraseña, pero no soy tu usuario promedio. Podría considerar advertirles (decir que 8 caracteres sin diccionario es una contraseña razonable) pero de lo contrario, déjelos en libertad para que hagan lo que quieran. Tal vez cuando intenten usar una contraseña de 3 caracteres o menos, muestren una ventana emergente que "apesta", ¿quizás quiera dejar el archivo sin cifrar en su lugar? [Y / n] ";)

  

2) Técnicas alternativas de generación de claves?

Consulte ¿Cómo hash seguro de contraseñas? para obtener algunas ideas. No son estrictamente funciones de derivación de claves, pero creo que puedes usar cosas como scrypt y bcrypt de la misma manera.

  

4) Esto proporciona un método de ataque sin conexión para obtener su contraseña para el servicio que tiene acceso a mucho más que solo este archivo. Parece que esto agrega un riesgo sustancial. ¿Pensamientos?

¡Buen punto! No permite el craqueo fuera de línea, pero solo para un usuario. En el caso de que el archivo de contraseña sea robado, el atacante probablemente podría modificar el dispositivo para incluir un keylogger de todos modos.

  

3) ¿Pensamientos / sugerencias generales?

  • Además de una función de derivación de clave, también observa cómo cifras el archivo. Querrá usar cifrado autenticado, o al menos, un modo de operación de cifrado por bloques (es decir, no utilice el BCE).

  • También puede cifrar el archivo con una clave generada aleatoriamente (utilizando un CSPRNG) y luego cifrar esa clave con la contraseña del usuario. Si el usuario desea cambiar la contraseña, puede hacerlo sin volver a cifrar todos los datos. Solo tienes que volver a cifrar la clave.

  • A los usuarios no les gusta cuando no hay la opción "Olvidé mi contraseña". Estoy a favor de decir "así es como debería funcionar cada servicio de almacenamiento de archivos, así que deje de quejarse", pero eso simplemente no es aceptable para muchas compañías. Puede cifrar la clave (ver mi punto anterior) no solo con la contraseña del usuario, sino también por separado con su clave pública. Luego, la función de restablecimiento de contraseña puede usar la clave privada (almacenada solo en el servidor) para descifrar la clave y permitir el restablecimiento de la contraseña. Sin embargo, esto también significa que tiene acceso a los datos del usuario.

respondido por el Luc 06.11.2015 - 23:10
fuente

Lea otras preguntas en las etiquetas