keytool -genseckey -alias TDES -keyalg DESede -keysize 128 funziona all'interno della cartella jre / bin ma non quando il keytool.exe si trova su un'altra posizione

1

Vorrei creare un tasto TDES con chiave 128bit e 2KTDES con 192 bit per l'autenticazione in una smart card Desfire. Quindi ho usato il keytool per generare i jceks con il seguente comando. Quando eseguo lo stesso nella cartella C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin , posso vedere che l'esecuzione ha esito positivo e che i jceks sono stati creati. Tuttavia, quando esporti il keytool.exe in un'altra posizione, forse il desktop, posso vedere che lo stesso comando non riesce con il seguente errore.

C:\Users\Charan\Desktop\KeyGen>keytool -genseckey -alias TDES -keyalg DESede -keysize 128 -storetype jceks -keystore TDES.jceks -storepass change -keypass change
keytool error: java.security.InvalidParameterException: Wrong keysize: must be equal to 112 or 168

C:\Users\Charan\Desktop\KeyGen>
C:\Users\Charan\Desktop\KeyGen>

Ho provato lo stesso con entrambe le opzioni 112 e 168, in entrambi i casi si esegue senza errori ma le chiavi create in entrambi i casi sono 192 bit. Ma la domanda originale rimane ancora un mistero perché quando ho provato a creare entrambe le chiavi 192 e 256 bit con DESEDE, sono stato in grado di eseguirle quando eseguivo il keytool dalla cartella bin. I file keystore generati avevano la lunghezza corretta della chiave, 192 e 256.

    
posta Charan Chakravarthi 19.08.2015 - 13:09
fonte

1 risposta

3

Meta: questo può meglio adattarsi alla sicurezza o anche al superutente; se migra, prendi la mia risposta per favore.

Quanto è grande? Un TDES (completo) TDES alias chiave DESCRI contiene 168 bit di chiave "reale", ma il modulo memorizzato include bit originariamente riservati alla parità e oggi spesso ignorato per un totale di 192 bit = 24 ottetti. "TDES a due chiavi" (opzione di codifica TDEA 2) ha 112 bit "reali", memorizzati a volte come 128 bit = 16 ottetti in cui i primi 8 ottetti (k1) vengono duplicati come k3 durante la crittografia e la decrittografia, a volte come 192 bit = 24 ottetti in cui i primi 8 ottetti sono effettivamente duplicati negli ultimi 8 ottetti in modo che k3 = k1.

Il KeyGenerator per DESede nel fornitore Sun -CE di Oracle-ex SunJCE accetta solo 112 o 168 bit come dimensione, e memorizza sempre nel formato da 24 ottetti; generando 112 bit produce una chiave memorizzata con k3 = k1. Questo è apparentemente perché il Cipher di quel provider funziona solo con il modulo da 24 ottetti. Il fornitore di BouncyCastle (che io uso) KeyGenerator accetta 112 o 128 per generare il modulo da 16 ottetti e 168 o 192 per generare il modulo da 24 ottetti, e Cipher funziona con entrambi i moduli. Nessuna implementazione DESede che ho visto (Java o altro) genera o utilizza una chiave a 256 bit; sei sicuro di non averlo confuso con AES?

keytool.exe esegue effettivamente una JVM e carica le classi Java per eseguire le operazioni di crittografia, inclusa la generazione delle chiavi. Normalmente usa JRE nella stessa directory, ma se hai spostato il .exe deve usarne un po ' altro metodo per trovare JRE; su Windows scommetto che utilizza le stesse voci di registro utilizzate per trovare JRE per le applet del browser. Questo non è normalmente il JRE all'interno di un JDK come il tuo, e non sono sicuro che possa esserlo. Se hai JRE-in-JDK personalizzato con ad es. Bouncycastle, ma il "browser" JRE no, dovresti ottenere i risultati che descrivi.

Attenzione: il TDES a due chiavi ha solo 56 bit di forza a causa dell'attacco di tipo "meet-in-the-middle" che è ora almeno quasi pratico, e quindi non accettato come garantire ; vedi

(e questo punto è sicuramente ontopico per crypto).

    
risposta data 19.08.2015 - 17:32
fonte

Leggi altre domande sui tag