O que é o formato de ficheiro JKS?
Um arquivo .jks é um Java KeyStore - um contêiner binário proprietário que armazena chaves privadas criptográficas e certificados X.509 para uso por aplicações Java. O formato foi introduzido pela Sun Microsystems como parte da Java Cryptography Architecture (JCA) no final dos anos 90 e é mantido hoje pela Oracle.
Cada arquivo .jks começa com o número mágico de 4 bytes 0xFEEDFEED, seguido por um campo de versão (geralmente 0x00000002). O arquivo é big-endian e contém dois tipos de entrada: registros KeyEntry, contendo uma chave privada criptografada mais sua cadeia de certificados, e registros TrustedCertEntry, que armazenam certificados sem criptografia. Um resumo SHA-1 com chave no final protege a integridade - uma senha errada ou qualquer adulteração aciona o erro familiar *«keystore was tampered with, or password was incorrect»*.
As chaves privadas são protegidas por um esquema proprietário de criptografia baseada em senha (PBE) construído sobre SHA-1, que é considerado fraco pelos padrões modernos. O formato .jks é exclusivo para Java e não é legível por ferramentas como OpenSSL, que esperam PKCS#12 ou PEM em seu lugar.
Desde o JDK 9 (2017), a Oracle descontinuou o .jks em favor do .p12 / .pfx, que se tornou o novo tipo de keystore padrão. O keytool agora emite um aviso de migração em cada JKS que abre. O repositório de confiança do sistema do JDK, cacerts, historicamente foi distribuído como um arquivo .jks. A variante relacionada .jceks (mágico 0xCECECECE) oferece proteção de chave Triple-DES mais forte, mas permanece igualmente específica para Java.
Segurança e proteção
RISCO: MEDIUMUm arquivo JKS contém dados inertes (sem código executável), mas é um repositório de SEGREDOS: comumente contém chaves privadas cuja exposição compromete a identidade de um servidor ou a chave de assinatura de um app. Trate-o como um arquivo de senhas - nunca o envie para um repositório público, restrinja as permissões do arquivo e use uma senha forte. A criptografia do formato é fraca para os padrões modernos, então um .jks vazado com uma senha ruim pode sofrer ataques de força bruta; este é mais um motivo para migrar para PKCS#12 e rotacionar chaves se um keystore for exposto. Arquivos que afirmam ser keystores de fontes não confiáveis não devem ser aceitos como seu repositório de confiança.
Detalhes do formato
em resumo- Save de jogo Star Wars Jedi Knight - Alguns títulos Star Wars Jedi Knight da LucasArts/Raven usavam .jks para jogos salvos; carregados dentro do jogo, sem relação com os keystores Java.
Programas que abrem arquivos JKS
Detalhes técnicos
especificação profunda| Bytes mágicos | 0xFEEDFEED (FE ED FE ED) no deslocamento 0 do arquivo; identifica o arquivo como JKS para ferramentas e validadores |
| Campo de versão do formato | Inteiro big-endian de 4 bytes no deslocamento 4; valor 1 ou 2 (versão 2 é a atual) |
| Ordem dos bytes | Big-endian em toda a estrutura binária |
| Criptografia de chave privada | Esquema PBE proprietário usando SHA-1 como primitiva de derivação de chave; considerado criptograficamente fraco pelos padrões modernos |
| Armazenamento de certificados | Registros TrustedCertEntry contêm certificados X.509 codificados em DER em texto simples - sem criptografia por certificado |
| Proteção de integridade | Resumo SHA-1 com chave sobre todo o conteúdo do repositório, derivado da senha do repositório; detecta tanto adulteração quanto senha errada |
| Tipos de entrada | Dois tipos: KeyEntry (chave privada criptografada + cadeia de certificados) e TrustedCertEntry (apenas certificado) |
| Endereçamento de entradas | Cada entrada é identificada por um alias de string exclusivo; os aliases não diferenciam maiúsculas de minúsculas dentro de um repositório |
| Tipo MIME | application/x-java-keystore (específico para Java); recorre a application/octet-stream para tratamento genérico |
| Tamanho de arquivo típico | 1 KB - 50 KB para algumas chaves e certificados; até vários MB para grandes repositórios de confiança como o cacerts |
| Ferramenta de gerenciamento principal | Utilitário de linha de comando keytool do JDK; alternativa gráfica é o KeyStore Explorer |
| Escopo da plataforma | Portátil em qualquer SO com um JRE ou JDK, mas o formato é específico para Java e não interoperável com OpenSSL ou outras ferramentas PKI não-Java |
| Status de descontinuação | Descontinuado pela Oracle desde o JDK 9 (2017); PKCS#12 é agora o tipo de keystore padrão e o keytool avisa em cada repositório JKS aberto |
| Variante Sun mais forte | JCEKS (mágico 0xCECECECE) - uma extensão da Sun com encapsulamento de chave Triple-DES; ainda exclusivo para Java |
| Repositório de confiança do sistema | O arquivo cacerts do JDK enviado com cada JRE historicamente tem sido um keystore JKS contendo centenas de certificados de CA raiz |
| Lançado | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Versão mais recente | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Especificação | docs.oracle.com |
Conversões de JKS
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos JKS.