¿Cómo aumenta la seguridad de un administrador de contraseñas un archivo de clave?

19

Los administradores de contraseñas como KeePass a menudo tienen la opción de usar un key file además de una contraseña maestra.

No entiendo cómo esto aumenta la seguridad.

(Nota: KeePass también permite usar un archivo de clave en lugar de de una contraseña maestra, pero en esta pregunta estoy preguntando específicamente sobre el uso de un además de a una contraseña maestra.)

Como la base de datos de contraseñas no se puede descifrar sin el archivo de clave, el archivo de clave debe almacenarse en algún lugar, como la propia base de datos de contraseñas. ¿Por qué es más difícil para un adversario acceder al archivo clave que a la base de datos de contraseñas?

    
pregunta HighCommander4 19.10.2013 - 08:05
fuente

4 respuestas

18

Los métodos de autenticación a menudo se pueden dividir en una de tres áreas: algo que el usuario sabe, algo que el usuario tiene y algo que el usuario es.

Las contraseñas son algo que el usuario sabe. El usuario lo memoriza en su cabeza y puede "recuperarlo" de la memoria cuando sea necesario.

El archivo de clave actúa como algo que el usuario tiene. Idealmente, este archivo de clave debe almacenarse en una ubicación segura.

Personalmente, tengo copias de mi base de datos de contraseñas en todas partes . Mi escritorio tiene una copia, mi computadora portátil tiene una copia, mi teléfono tiene una copia, mi tableta tiene una copia. Almaceno mi base de datos de contraseñas en Dropbox, lo que me permite mantenerla sincronizada entre mis diversos dispositivos.

Sin embargo, no almaceno mi archivo de claves juntos con mi base de datos de contraseñas. Mi teléfono y tableta tienen una copia, porque no hay forma de insertar una unidad USB en esos dispositivos, pero mi computadora de escritorio y computadora portátil no. Almaceno mi archivo de claves en una unidad USB que guardo en mi persona en todo momento. Esto hace que sea un poco más difícil para un atacante obtener mi archivo clave.

Es útil usar un archivo de clave además de una contraseña maestra, ya que plantea la dificultad de comprometer exitosamente la base de datos de contraseñas.

    
respondido por el Ayrx 19.10.2013 - 08:18
fuente
6

El archivo de clave contiene la clave utilizada para cifrar la base de datos. A menudo también está protegido por una contraseña. Si no tiene el archivo de clave, es imposible obtener la clave del texto cifrado y obtener el equivalente en texto sin formato. Por lo tanto, si un atacante obtiene su base de datos, todavía necesitará obtener su archivo de claves, algo que usted tiene . Si el archivo de claves está además encriptado con una contraseña (como debería), entonces también necesita algo que usted sepa que sabe . Así que esto es dos factores de autenticación .

Si almacena el archivo de claves a lo largo de la base de datos, un atacante "simplemente" tendría que utilizar la fuerza bruta o el diccionario para atacar el archivo de claves (que es mucho más pequeño y toma mucho menos tiempo que atacar a toda la base de datos). Sin embargo, si tiene una contraseña compleja, esto debería tardar casi siempre (según la aleatoriedad / entropía de su contraseña).

Pero agregar otro factor agrega seguridad adicional, ya que un atacante aún tendrá que obtener dos cosas de ti, en lugar de una.

Es un poco como guardar tus llaves en un llavero. Pero no guardará su llave junto a su puerta cerrada, ¿verdad? Bueno, esto es similar.

    
respondido por el Lucas Kauffman 19.10.2013 - 09:52
fuente
2

Además de actuar como "algo que tienes" , la opción de usar un archivo de claves permite una mayor flexibilidad en los otros dos factores ( "algo que sabes" y "algo que eres" ) sin tener que implementar explícitamente dicho comportamiento en la aplicación.

  

Ejemplo 1: "Algo que sabes" podría ejecutarse a través de una costumbre o strong   función de derivación clave que KeePass (especialmente compatible con v1.x) puede   apoyo; luego cargado como un archivo de claves.

     

Ejemplo 2: "Algo que eres" se puede ejecutar a través de un escáner biométrico que escribe una firma biológica que luego se ejecuta a través de un   Función de trampilla y / o función de derivación de clave para cargar en   KeePass que no tiene conocimiento nativo de la biometría, especialmente en   sistemas operativos sin estándar biométrico equivalente "TWAIN".

     

Ejemplo 3: "Algo que eres" en el sentido más genérico de demuestra que eres un humano * al regenerar el archivo de claves (o una etapa del mismo) de un humano escribiendo en una imagen CAPTCHA (o one o    otro posibles sucesores) almacenados públicamente junto con el   almacén de claves.

Básicamente, la opción keyfile puede actuar como un catch-all genérico para cualquier fuente de entropía que pueda imaginar, dentro del límite del esquema de cifrado del almacén de claves subyacente (256 bit para KeePass).

* O HAL 9000.

    
respondido por el LateralFractal 19.10.2013 - 12:34
fuente
2

Hay una segunda ventaja de un archivo clave, aparte de simular la autenticación de dos factores (2FA). Aunque su revisión de su pregunta sugiere que la respuesta de dos factores es lo que está buscando en su respuesta.

Otra razón para no derivar la clave de cifrado directamente de la Contraseña maestra es permitir que la clave se cree al azar en lugar de derivarse directamente de la contraseña maestra. Si creamos la clave con un CSPRNG y luego la ciframos con una Clave de cifrado de clave (KEK), podemos asegurarnos de que la clave maestra tenga toda la fuerza de su tamaño de bit. Es decir, una clave de 128 bits realmente será de 128 bits, incluso si una persona elige una contraseña maestra deficiente.

Aunque esto no es necesario para las claves simétricas (como se usa en los administradores de contraseñas), es absolutamente vital cuando se busca en sistemas de clave pública. En esos casos, la clave privada no puede ser nada, y por lo tanto no puede ser realmente una función de una contraseña y algo de sal. Por eso, para cosas como PGP o SSH, las claves son generadas por el software y luego se cifran con un KEK derivado de la contraseña.

Por supuesto, la derivación de KEK de la contraseña maestra aún debe ser "extendida" con una función de derivación de clave como PBKDF2 o scrypt.

Dos factores, pero no la autenticación

Nota: La razón por la que dije " simular autenticación de dos factores" es porque en realidad no hay autenticación en estos casos. En cambio, hay descifrado. Para muchos propósitos, la distinción no importa, pero hay casos cruciales donde la distinción entre una contraseña de autenticación (o token) de un token de cifrado es enorme.

En el caso de algo como KeePass, que no se basa en la autenticación (no estás probando quién eres para un servicio que luego te libera cosas en caso de éxito), debes llevar tu archivo clave a cada computadora o dispositivo que Necesito usar tus datos en. Por lo tanto, ponerlo en un dispositivo USB puede no funcionar si también desea descifrar sus datos en un teléfono. Es muy posible que haya formas de hacer esto con KeePass, pero dada mi comprensión (posiblemente defectuosa) de la arquitectura, presentaría algunas dificultades que deberían superarse.

    
respondido por el Jeffrey Goldberg 20.10.2013 - 07:30
fuente

Lea otras preguntas en las etiquetas