2012-05-15 12 views

risposta

6

Attualmente, ogni voce PrivateKey e SecretKey in un negozio chiave JCEKS è criptato con DES in CBC modalità 3-chiave tripla con riempimento PKCS # 5. Questo ha una forza crittografica efficace di 112 bit, sebbene la chiave sia 168 bit più 24 bit di parità per un totale di 192 bit.

Questa chiave (e il vettore di inizializzazione) deriva da una password che utilizza un algoritmo proprietario basato su MD5. Normalmente, derivando il vettore di inizializzazione dalla chiave si vanificherebbe lo scopo, ma ogni voce ha anche un sale unico per la derivazione della chiave. Ciò significa che la chiave derivata e il vettore di inizializzazione sono unici per ogni voce.

È possibile studiare the use of the cipher e the cipher itself nel codice sorgente.

+0

Conoscete l'algoritmo utilizzato per derivare la chiave e iv dalla password ? Il codice mostra solo commenti ambigui, "Concatena password con ognuna delle metà" - quella password + metà, o metà + password? Non riesco a ricreare questo algoritmo, provando tutte le possibili combinazioni, in base ai commenti. –

+0

Non riesco a sembrare @erickson nel commento sopra ^^^ –

+0

@JimFlood [Ecco la derivazione della chiave.] (Http://www.docjar.com/html/api/com/sun/crypto/provider/ PBECipherCore.java.html # 261) È mezzo + password; il sale è 8 byte quindi la metà è di 4 byte. – erickson

1

JCEKS è un altro formato di keystore proprietario, disponibile presso il provider "SunJCE" in JCE (Java Cryptography Extension).

Se non si sta utilizzando il JCE, si utilizzerà il keystore JKS. Se, tuttavia, hai installato JCE e stai utilizzando la funzionalità JCE, la soluzione migliore è il keystore JCEKS. Questo keystore fornisce una protezione molto più forte per le chiavi private archiviate utilizzando la crittografia Triple DES.

Problemi correlati