Domanda

Quando crei un archivio chiavi con l'utilità Java Keytool, come vengono protette le chiavi?Ho letto la documentazione e mi sono reso conto che ogni chiave privata ha una password della chiave e quindi il negozio ha una password del negozio.

Ma quale meccanismo viene utilizzato per proteggere i dati?È un codice di crittografia?Se sì, qual è l'algoritmo?Mi concentro specificamente su come keytool esegue la protezione durante la creazione di un file JKS.

È stato utile?

Soluzione

di default chiavi JKS di Sun utilizza un algoritmo proprietario, in primo luogo per ottenere restrizioni intorno esportatori sul algoritmi standard. L'algoritmo è implementato in questa classe,

  sun.security.provider.KeyProtector

Il è la descrizione dell'algoritmo,

Questa è un'implementazione di un sistema esclusivo Sun, algoritmo esportabile destinati ad essere utilizzati per la protezione di (o recuperare la versione in chiaro di) tasti sensibili. Questo algoritmo non è inteso come un cifrario di uso generale. Ecco come funziona l'algoritmo per la protezione della chiave: p - password utente s - casuale sale X - XOR tasto P - a-essere protetti tasto Y - protetto tasto R - ciò che viene memorizzato nella chiavi Fase 1: Prendete la password dell'utente, aggiungere un sale casuale (di dimensioni fisse) ad esso, e hash è: d1 = digerire (p, s) Conservare d1 in X. fase 2: Prendere la password dell'utente, aggiungere il digest derivano dal passaggio precedente e hash esso: dn = digest (p, dn-1). Conservare dn in X (aggiungerlo ai digest memorizzate in precedenza). Ripetere questa operazione fino a quando la lunghezza del X corrisponde alla lunghezza della chiave privata P. Fase 3: XOR X e P, e memorizzare il risultato in Y: Y = X XOR P. Fase 4: s Store, Y, e digerire (p , P) nel tampone risultato R: R = s + Y + digest (p, P), dove "+" indica concatenazione. (NOTA:. Digest (p, P) è memorizzato nel buffer risultato, in modo che quando la chiave viene recuperato, si può controllare se la chiave recuperata corrisponde infatti la chiave originale) R è memorizzato nell'archivio di chiavi. La chiave protetta viene recuperato come segue: Step1 e Step2 sono lo stesso come sopra, tranne che il sale non viene generato in modo casuale, ma presa dal risultato R di fase 4 (la prima lunghezza (s) bytes). Fase 3 (operazione XOR) produce la chiave in chiaro. Poi concatenare la password con la chiave recuperata, e confrontare con l'ultima lunghezza (digerire (p, P)) byte di R. Se corrispondono, la chiave recuperata è infatti la stessa chiave come la chiave originale.

Altri suggerimenti

L'algoritmo utilizzato dipende dal keystore utilizzato (potrebbe essere, ad esempio, una SmartCard).

Il keystore predefinito fornito da Sun con JDK crea un soft token (sul file su disco). tre opzioni di crittografia:

  1. predefinito:"jks", un tipo (formato) di archivio di chiavi proprietario.Non sono sicuro dell'algoritmo.

  2. "jceks", un formato proprietario alternativo, che utilizza 3-DES

  3. "pkcs12", un formato standard (OpenSSL può leggerlo), con diverse opzioni, ma solitamente 3-DES per le chiavi private e RC2-40 per i certificati.

In tutti e tre i casi i dati privati ​​sono crittografati (simmetricamente, utilizzando password individuali) e l'integrità dell'intero archivio chiavi è protetta da un digest crittografico (utilizzando la password dell'archivio chiavi).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top