Come mai PBEWITHSHA256AND128BITAES-CBC-BC viola il limite delle chiavi a 128 bit?

1

Nella mia applicazione Java (che usa StandardPBEStringEncryptor di jasypt), quando uso l'algoritmo PBEWITHSHA256AND128BITAES-CBC-BC invece di qualcosa di più debole come PBEWithMD5AndDES , ottengo un'eccezione dicendo che ho bisogno di installare Java Cryptography Extension (JCE) File di criteri di giurisdizione di durata illimitata.

Ma, per quanto ne so, AES 128 bit su proprio è sempre consentito poiché il limite di legge di esportazione per AES è di 128 bit (ad esempio se lo uso in javax.crypto.Cipher ). SHA256 è anche ammesso sul proprio ...

Perché non è consentita la crittografia basata su password "SHA256 E 128 BIT AES-CBC"? Questo usa una chiave più lunga di 128 bit? (AES128 dovrebbe usare una chiave a 128 bit per definizione, quindi se SHA256 fa usare una chiave più lunga non ha senso.)

    
posta yair 19.11.2014 - 11:20
fonte

2 risposte

1

Se si utilizza una password più lunga di 16 bytes (senza i file di politica giurisdizione di forza illimitata JCE installati), ciò può causare un InvalidKeyException . Per le crittografie PBE, la chiave è derivata dalla password durante cipher.init() ma dopo viene eseguito il controllo della lunghezza della chiave. Ciò significa che la password grezza viene fornita al codice al posto della chiave e la lunghezza della password supera la lunghezza massima della chiave al momento del controllo. Ho scoperto questo con ulteriore documentazione qui .

    
risposta data 05.12.2015 - 01:17
fonte
0

Senza i file JCE Unlimited Strength Policy, Java è in grado di utilizzare "crittografia strong ma limitata". Questo non è limitato a 128 bit o meno necessariamente. Proprio questo "i file delle politiche di giurisdizione distribuito con il software Java SE 7 ha restrizioni incorporate resistenza crittografica disponibile. "

Da README.txt:

Due to import control restrictions of some countries, the version of the JCE policy files that are bundled in the Java Runtime Environment, or JRE(TM), 7 environment allow "strong" but limited cryptography to be used. This download bundle (the one including this README file) provides "unlimited strength" policy files which contain no restrictions on cryptographic strengths.

Il README.txt per Java 6 e Java 8 sono simili.

    
risposta data 19.11.2014 - 15:15
fonte

Leggi altre domande sui tag