Cifrado con contraseñas - Cifrado de clave vs. datos

34

Muchas utilidades de cifrado basadas en contraseña (por ejemplo, KeePass, TrueCrypt) hacen algo en la línea de ...

  1. Cifre los datos con una clave súper fuerte generada de forma aleatoria, "clave de datos".
  2. Cifre la clave de datos con otra clave, "clave de usuario", basada en la contraseña proporcionada por el usuario.
  3. Cuando se necesita acceso, el usuario proporciona la contraseña. La contraseña se utiliza para recrear la clave de usuario, que descifra la clave de datos, que descifra los datos.

Presumiblemente, la lógica detrás de esto es esta:

  • Las contraseñas proporcionadas por el usuario son malas, por lo que necesitamos una clave mejor para proteger los datos.
  • Los usuarios aún necesitan acceso a los datos, por lo que necesitamos una forma de hacerlo con una contraseña.

Sin embargo, la conclusión de todo esto es que la protección de los datos aún se reduce a la fortaleza y protección de la contraseña proporcionada por el usuario. Entonces, ¿cuál es el punto real de la sobrecarga adicional de tener una clave separada involucrada?

    
pregunta Iszi 11.05.2015 - 17:05
fuente

7 respuestas

45

La principal ventaja de usar una clave intermedia es que le permite cambiar su contraseña sin volver a procesar todos los datos.

Por ejemplo, tiene un archivo grande (gigabytes ...) cifrado con la clave aleatoria K (un valor de 128 bits), y K está cifrado con P (la clave derivada de la contraseña). Si cambia su contraseña, obtendrá una nueva clave derivada de la contraseña P '. Para ajustar las cosas, debes descifrar K con P y volver a cifrarlo con P '. Esto no requiere volver a cifrar o incluso acceder al archivo grande.

Aparte de esa ventaja, el uso de una tecla intermedia desacopla la operación, que es más flexible. Por ejemplo, el proceso utilizado para convertir la contraseña en una clave simétrica podría no estar a la altura de la tarea de producir una clave de la longitud que desee para el cifrado masivo (por ejemplo, bcrypt producirá una clave de 192 bits, no una clave de 256 bits). clave de bit).

Otra ventaja de la clave intermedia es que permite revelar archivos. Por ejemplo, tienes tu archivo grande y quieres mostrárselo a Bob. Pero no quiere darle su contraseña a Bob; desea que Bob pueda ver ese único archivo, no todos los demás archivos que están moralmente encriptados con la misma contraseña. Con la tecla intermedia, esto es fácil: solo le muestra K a Bob. Siempre que cada archivo tenga su propio K aleatorio, esto funciona.

Tenga en cuenta que el modelo se extiende al cifrado asimétrico: un archivo enviado a los destinatarios de n se cifrará una vez con una clave aleatoria K , y K se cifrará con las claves públicas de cada destinatario. Así es como funcionan las cosas en OpenPGP . Las ventajas correspondientes se asignan también a la situación basada en contraseña.

    
respondido por el Thomas Pornin 11.05.2015 - 17:16
fuente
9

Le permite al usuario cambiar la contraseña sin tener que cifrar nuevamente todos los datos.

Si usó directamente la contraseña para cifrar los datos, entonces un cambio de contraseña podría llevar mucho tiempo, ya que será necesario descifrar todos los datos con la contraseña anterior y volver a cifrarlos con la nueva. ¿Y qué pasa si este proceso se interrumpe en el medio, cuando la mitad de los datos se cifran con la nueva contraseña, mientras que la otra sigue con la antigua?

Gracias al sistema que describe, cuando los usuarios desean cambiar su contraseña, todo lo que se necesita es cifrar la clave de datos con la nueva contraseña. Simplemente rápido, simple y confiable.

    
respondido por el WhiteWinterWolf 11.05.2015 - 17:11
fuente
1

Supongo que esto es conveniencia. Si quiero cambiar mi contraseña, esto generará una clave por separado, entonces solo necesito volver a cifrar la clave con la clave de encriptación de mi clave derivada de la contraseña.

Sin embargo, si no tuviera una clave separada, tendría que descifrar y volver a cifrar toda la base de datos. Teniendo en cuenta que las contraseñas probablemente no sean enormes, pero para otras implementaciones (sistemas de archivos), el diseño de múltiples claves tiene sentido.

    
respondido por el user70990 11.05.2015 - 17:10
fuente
-1
  1. Alta entropía. Si su clave de datos es aleatoria, es muy probable que no sea el enlace más débil.
  2. Separación de teclas (no estoy seguro de si se llama así ...): un atacante debe decidir atacar el encabezado con la tecla "débil" o atacar los datos con la tecla segura para la cual puede haber gigabytes de datos de muestra . Así se defienden los ataques criptoanalíticos.
  3. conveniencia. Un usuario puede simplemente cambiar su contraseña sin necesidad de volver a cifrar gigabytes de datos. (que puede tomar horas)
respondido por el SEJPM 11.05.2015 - 17:11
fuente
-1

Lo que realmente sucede es que una contraseña proporcionada por el usuario se convierte en un hash de longitud establecida en una operación matemática de una vía llamada SHA-256.

"SHA-256 se usa como hash de contraseña. SHA-256 es una función de hash unidireccional criptográficamente segura de 256 bits. Su contraseña maestra se utiliza para este algoritmo y su salida se usa como clave para los algoritmos de cifrado".

Básicamente, ingresas una contraseña y genera un hash SHA-256 único con una longitud de 256 bits. La seguridad de la contraseña proviene de su aleatoriedad. La seguridad de utilizar el hash proviene de su longitud y de la naturaleza unidireccional de su generación.

La lógica de esto aún requiere una contraseña segura proporcionada por el usuario, pero sí, el otro punto es que desea que los usuarios puedan recordar una contraseña, no un hash aleatorio de 256 bits.

Lea más aquí.

    
respondido por el Fernando 11.05.2015 - 17:11
fuente
-1

Creo que hay un poco de confusión entre dos aplicaciones diferentes de Full Disk Encryption (es decir, Truecrypt) y la generación de contraseñas y los esquemas de almacenamiento (es decir, KeePass). Estas dos situaciones tienen objetivos y modelos de seguridad muy diferentes.

La primera aplicación Full Disk Encryption utiliza un enfoque de clave en capas para permitir un cambio de clave fácil, minimizar la encriptación de datos con claves de baja entropía y (en algunos casos al menos) múltiples métodos de recuperación de datos.

Si tiene una clave de alta entropía aleatoria utilizada para el cifrado de datos, le está dando muchos pares de P / C al atacante, pero la clave también es fuerte. La clave de entropía inferior se usa solo para unos pocos pares de P / C (quizás de 2 a 10 bloques aproximadamente). Probablemente no sea un gran problema en estos días, ya que creemos que encontrar solo un poco de una clave o su paridad es tan difícil como encontrarlas a todas, pero aún así se siente mejor darle al atacante una superficie de ataque más pequeña para la peor clave.

Al mismo tiempo, para muchos usos de FDE, es posible que desee que varias personas con diferentes contraseñas / claves puedan acceder a los datos o tengan un método de acceso diferente para un administrador y luego para un usuario. Dado que el cifrado subyacente debe ser el mismo, debe utilizar otra clave para cifrarlo.

Para la segunda aplicación, el modelo de ataque es muy diferente. Mientras que para las aplicaciones como Truecrypt asume que alguien tiene acceso a todos los datos y encabezados al mismo tiempo (robaron su disco duro), en el caso de KeePass, por lo general, asume que el lugar donde se encuentran las claves cifradas (su contenedor KeePass) es almacenado es diferente a los lugares donde se usan las claves (los sitios web / servidores / tarjetas de crédito / qué no). Esto significa que generalmente asume que es más difícil o más costoso para el atacante atacar las claves cifradas (su contenedor KeePass) y luego lanzar un ataque contra el lugar donde se usan las claves.

Piénselo de esta manera: si su contraseña para su contenedor KeePass es "Princess" y todas las claves se generan aleatoriamente antes de que el atacante pueda comenzar a escribir correos electrónicos, ya que primero tiene que obtener el contenedor KeePass de nuestro disco duro y descubra que "Princess" es su contraseña, ya que no es factible atacar la clave generada al azar que utiliza para iniciar sesión en la cuenta de correo electrónico.

si, por otro lado, la contraseña de su cuenta de correo electrónico es "Princesa", todo lo que el atacante debe hacer es probar las primeras 10 o más contraseñas más populares y puede piratear su cuenta de correo electrónico.

Como beneficio adicional, si por alguna razón todas las contraseñas en su base de datos de proveedores de correo electrónico están comprometidas, todos sus sistemas estarán seguros ya que las contraseñas que usó allí son aleatorias y no están relacionadas con su contraseña de correo electrónico (KeePass las generó). Mientras que si usas "Hard2h4ck" para tu contraseña de correo electrónico y "h.ard2H4ck" como la contraseña de administrador para el servidor que gestionas, la fuga de correo electrónico le da a un atacante un buen punto de partida para atacar tu servidor.

    
respondido por el DRF 12.05.2015 - 10:14
fuente
-1

La respuesta está en cómo ciframos. Si solo usáramos una contraseña, o una clave de 128-256 bits para cifrar grandes conjuntos de datos, los datos serían vulnerables a los ataques porque son más grandes que la clave que los cifran. Un atacante podría analizar fácilmente los datos cifrados en busca de patrones y derivar el texto sin formato. Para estar seguros, los datos deben estar cifrados con una clave RANDOM al menos tan grande como los datos en sí (big K).

Debido a que la gran K en sí misma es estadísticamente aleatoria, no hay patrones para analizar. Por lo tanto, podemos usar de forma segura una clave mucho más pequeña (128-256 bit pequeño k) para cifrar K grande y evitar una exposición involuntaria. Dado que big K ya es estadísticamente aleatorio, cifrarlo con una clave mucho más pequeña lo expone a muy poco riesgo de criptoanálisis, que depende de la explotación de patrones en datos significativos. Por definición, los datos aleatorios no contienen patrones.

Por lo tanto, la clave más pequeña oculta de forma segura la clave más grande y abre las conveniencias como otras explicadas anteriormente, como la administración de contraseñas de usuarios.

Una contraseña descifra k pequeño, k pequeño descifra K grande, y K grande descifra los datos.

    
respondido por el Dano 10.01.2016 - 09:26
fuente

Lea otras preguntas en las etiquetas