¿Por qué PBEWITHSHA256AND128BITAES-CBC-BC viola el límite de clave de 128 bits?

1

En mi aplicación Java (que usa StandardPBEStringEncryptor por jasypt), cuando uso el algoritmo PBEWITHSHA256AND128BITAES-CBC-BC en lugar de algo más débil como PBEWithMD5AndDES , recibo una excepción que dice que necesito instalar Java Cryptography Extension (JCE) Archivos de política de jurisdicción de fuerza ilimitada.

Pero, que yo sepa, AES 128 bit en sí mismo siempre está permitido, ya que el límite de la ley de exportación para AES es de 128 bits (por ejemplo, si lo uso en javax.crypto.Cipher ). SHA256 también está permitido por sí mismo ...

¿Por qué no se permite el cifrado basado en contraseña del tipo "SHA256 Y 128 BIT AES-CBC"? ¿Eso usa una clave más larga que 128 bit? (AES128 debería usar una clave de 128 bits por definición, por lo tanto, si el SHA256 hace que use una clave más larga ... no tiene sentido).

    
pregunta yair 19.11.2014 - 11:20
fuente

2 respuestas

1

Si está usando una contraseña más larga que 16 bytes (sin los archivos de la Política de Jurisdicción de Fuerza Ilimitada de JCE instalados), esto puede causar un InvalidKeyException . Para los cifrados de PBE, la clave se deriva de la contraseña durante cipher.init() pero después de se realiza la verificación de la longitud de la clave. Eso significa que la contraseña sin procesar se proporciona al cifrado en lugar de la clave, y la longitud de la contraseña excede la longitud máxima de la clave en el momento de la verificación. Descubrí esto con documentación adicional aquí .

    
respondido por el Andy 05.12.2015 - 01:17
fuente
0

Sin los archivos de la Política de fuerza ilimitada de JCE en su lugar, Java puede usar "criptografía fuerte pero limitada". Eso no se limita a 128 bits o menos necesariamente. Sólo eso "los archivos de política de jurisdicción distribuido con el software Java SE 7 tiene restricciones incorporadas en Fuerza criptográfica disponible ".

Desde el archivo README.txt:

  

Debido a las restricciones de control de importación de algunos países, la versión de   los archivos de políticas JCE que se incluyen en el Java Runtime Environment,   o JRE (TM), el entorno 7 permite la criptografía "fuerte" pero limitada a   ser usado. Este paquete de descarga (el que incluye este archivo README)   proporciona archivos de política de "fuerza ilimitada" que no contienen   restricciones en las fortalezas criptográficas.

El archivo README.txt para Java 6 y Java 8 son similares.

    
respondido por el CoverosGene 19.11.2014 - 15:15
fuente

Lea otras preguntas en las etiquetas