2009-08-16 7 views
10

Estoy usando encriptación basada en contraseña. Mi idea inicial fue usar AES para encriptar el archivo que contiene contraseñas. Resulta que el cifrado basado en contraseñas no es compatible con AES. Utiliza DES. AFAIK des no es seguro. ¿PBEWithMD5AndDES es lo suficientemente seguro como para transmitir mis datos o debería buscar otra implementación?Java PBEWithMD5AndDES

+1

Parece que estás usando algunas expresiones de una manera confusa. El "cifrado basado en contraseña" se refiere a un esquema en el que los archivos se cifran con una clave derivada de un passowrd. (Por ejemplo, el estándar PKCS # 5 es un esquema de cifrado basado en contraseña). Lo que desea es algo diferente, es decir, un esquema seguro de almacenamiento/administración de contraseñas. Por lo tanto, PBEWithMD5AndDES no es lo que necesita, independientemente de cuán seguro o inseguro sea. – Accipitridae

+0

Esto es ahora una pregunta totalmente desactualizada, AES es compatible con el cifrado basado en contraseñas desde Java 6, aunque debo mencionar que solo se debe usar para el cifrado * en el lugar, ya que carece de protección de integridad. –

Respuesta

16

Según sus comentarios, lo que desea hacer es cifrar un archivo que contiene información confidencial, utilizando un esquema de cifrado basado en contraseña, con una contraseña proporcionada por el usuario en tiempo de descifrado. La información sensible en este caso también pasa a ser contraseñas, pero eso no es realmente relevante. (Probablemente deberías actualizar la pregunta para aclarar esto).

Está haciendo lo correcto, su problema es solo que el proveedor de criptografía SunJCE Java no admite AES para el cifrado basado en contraseña. Necesita usar un proveedor alternativo que sí lo haga: por ejemplo, puede usar el proveedor Bouncy Castle con el algoritmo "PBEWITHSHA256AND128BITAES-CBC-BC". (A pesar del nombre caprichoso, Bouncy Castle es muy respetado).

En cuanto a "es DES lo suficientemente seguro para mis datos", si los datos que está protegiendo valen menos de aproximadamente $ 10,000 para un atacante, entonces en 2009 probablemente fue lo suficientemente seguro. Y en 2014, si su información vale la pena encriptar, la respuesta es no.

+3

Probablemente pueda reemplazar $ 10,000 por $ 100 ... dados los recientes avances en la fuerza bruta usando GPU. –

-1

No debe conservar las contraseñas en ninguna otra forma que no sea saltedhash digests.

Debería utilizar el sistema de permisos del sistema operativo para que el archivo de contraseñas hash solo sea legible por el usuario que valida las contraseñas.

+1

Es una aplicación personal para almacenar contraseñas. Un administrador de contraseñas de juguete. –

+1

-1, No responde la pregunta –

3

Si tiene Java 6 disponible, todo lo que necesita está disponible. Consulte esto question y mire la respuesta aceptada para una muestra de código. Dado que desea encriptar archivos, el iv que se genera debe anteponerse al archivo para el que está escribiendo el texto cifrado, de modo que esté disponible durante el descifrado.