2011-08-08 20 views
5

Sé lo suficiente sobre criptología para dificultar la vida de un programador novato y los expertos en seguridad se burlan de mí. Entonces, con eso en mente, pregunto: ¿qué tan seguro es javax.crypto.Cipher? Me doy cuenta de que cualquier cosa puede ser descifrada por alguien con voluntad y una forma, pero aún me gustaría saber detalles relativos.¿Qué tan seguro es javax.crypto.Cipher?

La razón por la que pregunto es que me gustaría almacenar nombres de cuenta y contraseñas que se enviarán a través de mi clase Cryptor que los encriptará, y me gustaría saber si esto hará el trabajo. Si alguien tiene alguna literatura que yo pudiera leer, sería muy apreciada.

Gracias ~ Aedón

+0

Lea la documentación de [Jasypt] (http://www.jasypt.org/). Hay muchos enlaces buenos flotando por ahí. – Jeremy

Respuesta

4

Si tiene la intención de almacenar contraseñas de forma segura, sus requisitos son bastante diferentes de simplemente "comunicarse de forma segura/privada". Un Cipher por sí solo no es suficiente para protegerte. Es necesario utilizar uno de estos

en esa circunstancia. Here son algunos argumentos y enlaces relacionados con la seguridad de las contraseñas.

El punto clave es que el cifrado "normal" (o hash, también) es demasiado rápido para detener a los atacantes graves. Desea ralentizar artificialmente todo el proceso para que sea lo más difícil posible para alguien atacar sistemáticamente su aplicación. Un solo usuario no notará la diferencia entre 1 o 500 milisegundos al ingresar una contraseña, pero para un atacante esto significa que para romper su esquema les tomará 500 veces más tiempo en promedio, por lo que habría tomado aproximadamente 1 mes para encontrar una contraseña válida antes, ahora tomará 500 meses.

+0

Gracias por su explicación detallada. – AedonEtLIRA

6

Cipher es una clase genérica para aplicar un algoritmo de cifrado/descifrado. Su seguridad depende del algoritmo de cifrado real utilizado (DES, triple-DES, AES, etc.), del tamaño de su clave y del tipo de encadenamiento de bloque que elija.

+0

Ah, ya veo. ¿Cómo puedes cambiar el tamaño de la llave? Estaba obteniendo una gran cantidad de errores de excepción cuando traté de usar una clave de 32 bytes para mi 'SercretKeySpec' y' IvParameterSpec'? Miré a través de los documentos, pero no estaba claro. – AedonEtLIRA

+0

DES tiene una clave de 64 bits de la que solo se utilizan realmente 56 bits. AES tiene una clave de 128 o 256 bits. Si está encriptando nombres de cuenta y contraseñas, sugeriría usar AES-128 en modo CTR, de esa manera no expandirá sus datos con relleno. El modo CTR no necesita relleno como lo hace el modo CBC. – rossum

Cuestiones relacionadas