Cómo usar de manera segura una función de derivación de claves para asegurar datos privados - necesita orientación

1

Tengo algunos datos seguros creados en mi aplicación cliente que deseo almacenar en el servidor como copia de seguridad para el usuario.

El usuario ya tiene una contraseña para autenticarse con el servidor. La contraseña nunca se envía al servidor (uso SRP6 para autenticar al usuario).

Así que aquí está mi pensamiento ...

  1. Use Fortuna PRNG con múltiples entradas de eventos (mouse, teclado, etc.) para generar un salt.
  2. Use Salt y la contraseña como entradas para Scrypt o PBKDF2 + SHA512 con más de 40,000 iteraciones para generar una clave de 512 bits.
  3. Use los primeros 256 bits de la clave para cifrar los datos privados utilizando AES-256-CBC con IV aleatorio.
  4. Envíe el texto cifrado y la sal al servidor.
  5. Muestre al usuario el recuento de iteraciones KDF como un número que necesitan memorizar. Lo solicitaremos cuando tengamos que descifrar los datos del lado del cliente más adelante.

Entonces mi pregunta es ... ¿es esto suficientemente seguro? Inicialmente, iba a almacenar el servidor de recuento de iteraciones también, pero sentía que un atacante que accediera al servidor podría ser capaz de forzar fácilmente la clave. Nuevamente, si los usuarios podrán recordar una contraseña y un número es otra pregunta.

    
pregunta hiddentao 31.12.2013 - 19:30
fuente

1 respuesta

1

"¿Esto es lo suficientemente seguro?" Esto depende de contra quién estés defendiendo.

En teoría, parece que resistirá razonablemente bien a los atacantes que no pertenecen a TLA, aunque descifrar puede ser un poco complicado, ya que no parece que esté almacenando el cifrado IV en ninguna parte.

En la práctica, tiene un gran agujero de seguridad. Ningún usuario del mundo real memorizará el recuento de iteraciones de KDF. Se escribirá en algún lugar y, como el usuario lo está escribiendo, probablemente coloque su nombre de usuario y contraseña justo al lado.

    
respondido por el Mark 13.09.2014 - 04:03
fuente

Lea otras preguntas en las etiquetas