Come viene protetta la chiave privata nel file di archivio di chiavi JKS Java?

3

Ho letto il keystore Java di JKS, ma non ho trovato dettagli sul formato.

  • La password del negozio serve solo a verificare l'integrità del file?
  • In che modo le chiavi private sono protette?
posta Jonathan Barbero 15.11.2016 - 21:10
fonte

1 risposta

2

details about [JKS] format.

Questo è implementato da sun.security.provider.JavaKeyStore (fonte in mercurial) ma è piuttosto semplice e basato sulle convenzioni Data{Output,Input}Stream di Java: Numero magico a 4 byte, numero di versione a 4 byte, conteggio a 4 byte delle voci; un numero variabile di voci ciascuna contenente 4 byte tipo, lunghezza + (modificato) nome UTF, timestamp a 8 byte, lunghezza + codifica + certcount per una chiave privata e tipo (in pratica sempre X.509 ) + lunghezza + codifica per / ogni certificato; e alla fine hash della password più i dati precedenti per il controllo dell'integrità.

The store password is just to verify the integrity of the file?

Sì. L'API JCA e il formato JKS consentono a ciascuna chiave privata di essere crittografata con una password separata, che può essere diversa dalla password del negozio. keytool , ad esempio, consente di specificare una password chiave, ma valori predefiniti è uguale alla password del negozio. Tuttavia, alcuni programmi non sono in grado di gestire password chiave e di archivio diverse; in particolare, quelli che utilizzano il trustmanager e / o il keymanager di default per SSL / TLS (e quindi HTTPS), quindi in questi casi deve essere utilizzata la stessa password sia per l'archivio che per le chiavi.

How does the private keys are protected?

Ogni privatekey è un hash PBE + che utilizza uno schema "proprietario" in sun.security.provider.KeyProtector (fonte in mercurial) e formattato nel file come PKCS # 8 EncryptedPrivateKeyInfo .

    
risposta data 16.11.2016 - 12:18
fonte

Leggi altre domande sui tag