Operações e mecanismos de criptografia
Saiba mais sobre as operações, mecanismos e algoritmos suportados pelo provedor JCE de Gerenciamento de Chaves Dedicadas.
Gerar Chaves e Pares de Chaves
Use o provedor JCE para gerar chaves dos seguintes tipos:
-
RSA: O RSA é amplamente usado para transmissão de dados segura, assinaturas digitais e protocolos de troca de chaves.
-
EC (Curva Elíptica): A criptografia de curva elíptica oferece alta segurança com tamanhos de chave menores, tornando-a eficiente para aplicativos criptográficos modernos, como SSL/TLS e blockchain.
-
AES (Advanced Encryption Standard): o AES é um padrão de criptografia amplamente adotado para proteger dados confidenciais, fornecendo forte segurança para dados em repouso e dados em trânsito.
-
DESede (Triple DES): Triple DES é um aprimoramento do algoritmo DES original, oferecendo maior segurança por meio de várias rodadas de criptografia. DESede só é suportado em clusters não FIPS e geralmente é usado para aplicativos legados que requerem compatibilidade retroativa.
Converter Chaves com Fábricas de Chaves
As fábricas de chaves são usadas para converter chaves de acordo com determinadas especificações de chave. Consulte Interface KeySpec na documentação da API da Plataforma Java para obter mais informações. Os dois tipos principais de factories principais para JCE são:
SecretKeyFactory
O factory SecretKeyFactory
foi projetado para importar ou derivar chaves simétricas. Ele permite que você informe um Key
ou KeySpec
suportado para importar chaves simétricas. Consulte Classe SecretKeyFactory na documentação da API da Plataforma Java para obter mais informações.
As seguintes classes KeySpec
são compatíveis com o método generateSecret
:
- KeyAttributesMap: Esta classe permite importar bytes de chave com atributos associados.
- SecretKeySpec: Esta classe é usada para importar especificações de chave simétrica. Consulte Interface SecretKey na documentação da API da Plataforma Java para obter mais informações.
- DESedeKeySpec: Essa classe é usada somente com DESedeKeyFactory e permite importar a especificação DESedeKey. Observe que DESede só é suportado em clusters não FIPS. Consulte Classe DESedeKeySpec na documentação da API da Plataforma Java para obter mais informações. Essa classe permite derivar chaves simétricas com base em uma chave AES DKMS existente.
O método translateKey
pode aceitar qualquer chave que implemente a interface Key
, o que fornece flexibilidade no tratamento de chaves. Para traduzir uma chave persistente, defina DEDICATED_KMS_JCE_TRANSLATE_KEY_PERSISTENT
como TRUE
em suas variáveis de ambiente ou propriedades do sistema.
KeyFactory
O factory KeyFactory
é usado para importar chaves assimétricas. Ao informar um Key
ou KeySpec
válido, você pode importar chaves assimétricas para o Gerenciamento de Chaves Dedicadas. Consulte Classe KeyFactory na documentação da API da Plataforma Java para obter mais informações.
As seguintes classes KeySpec
são suportadas para o método generatePublic
:
- KeyAttributesMap: Disponível para RSA e EC KeyTypes.
- X509EncodedKeySpec: Esta classe destina-se a
generatePublic
emRSAKeyFactory
eEcKeyFactory
e é usada para importar a especificação de chave codificada X509. Consulte Classe X509EncodedKeySpec na documentação da API da Plataforma Java para obter mais informações. - RSAPublicKeySpec: Para
generatePublic
emRSAKeyFactory
. Use essa classe para importar a especificação de chave pública RSA. Consulte Classe RSAPublicKeySpec na documentação da API da Plataforma Java para obter mais informações. - ECPublicKeySpec: Para
generatePublic
emEcKeyFactory
. Use essa classe para importar a especificação de chave pública EC. Consulte Classe ECPublicKeySpec na documentação da API da Plataforma Java para obter mais informações.
As seguintes classes KeySpec
são suportadas para o método generatePrivate
:
- PKCS8EncodedKeySpec: Usado para chaves privadas EC e RSA. Consulte Classe PKCS8EncodedKeySpec na documentação da API da Plataforma Java para obter mais informações.
- RSAPrivateCrtKeySpec: Somente para chaves privadas RSA. Consulte Classe RSAPrivateCrtKeySpec na documentação da API da Plataforma Java para obter mais informações.
- ECPrivateKeySpec: Somente para chaves privadas EC. Consulte Classe ECPrivateKeySpec na documentação da API da Plataforma Java para obter mais informações.
O método translateKey
aceita qualquer chave que implemente a interface Key
, fornecendo conversão perfeita entre diferentes formatos de chave.
Funções de Cifragem
O provedor JCE de Gerenciamento de Chaves Dedicadas suporta as seguintes combinações de algoritmo, modo e preenchimento.
Algoritmo | Modo | Espaç. | Observações |
---|---|---|---|
AES | CBC |
AES/CBC/NoPadding AES/CBC/PKCS5Padding |
Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. Implementa Cipher.UNWRAP_MODE para AES/CBC NoPadding |
AES | BCE |
AES/ECB/PKCS5Padding AES/ECB/NoPadding |
Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. |
AES | CTR | AES/CTR/NoPadding | Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. |
AES | GCM | AES/GCM/NoPadding |
Implementa Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. Ao executar a criptografia AES-GCM, o HSM ignora o vetor de inicialização (IV) na solicitação e usa um IV que gera. Quando a operação for concluída, você deverá chamar Cipher.getIV() para obter o IV. |
AESWrap | BCE |
AESWrap/BCE/NoPadding AESWrap/BCE/PKCS5Padding AESWrap/BCE/ZeroPadding |
Implementa Cipher.WRAP_MODE e Cipher.UNWRAP_MODE. |
DESede (DES Triplo) | CBC |
DESede/CBC/PKCS5Padding DESede/CBC/NoPadding |
Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. DESede só é suportado em clusters que não sejam FIPS. |
DESede (DES Triplo) | BCE |
DESede/BCE/NoPadding DESede/BCE/PKCS5Padding |
Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. DESede só é suportado em clusters que não sejam FIPS. |
RSA | BCE |
RSA/ECB/PKCS1Padding consulte a observação 1 RSA/ECB/OAEPPadding RSA/ECB/OAEPWithSHA-1ANDMGF1Padding RSA/ECB/OAEPWithSHA-224ANDMGF1Padding RSA/ECB/OAEPWithSHA-256ANDMGF1Padding RSA/ECB/OAEPWithSHA-384ANDMGF1Padding RSA/ECB/OAEPWithSHA-512ANDMGF1Padding |
Implementa Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. |
RSA | BCE | RSA/ECB/NoPadding | Implementa Cipher.ENCRYPT_MODE e Cipher.DECRYPT_MODE. |
RSAAESWrap | BCE |
RSAAESWrap/BCE/OAEPPadding RSAAESWrap/BCE/OAEPWithSHA-1ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-224ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-256ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-384ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-512ANDMGF1Padding |
Implementa Cipher.WRAP_MODE e Cipher.UNWRAP_MODE. |
Funções de Assinatura e Verificação
O provedor DKMS JCE oferece suporte aos seguintes tipos de assinatura e verificação:
Tipos de Assinatura RSA
-
NONEwithRSA
-
RSASSA-PSS
-
SHA1withRSA
-
SHA1withRSA/PSS
-
SHA1withRSAandMGF1
-
SHA224withRSA
-
SHA224withRSAandMGF1
-
SHA224withRSA/PSS
-
SHA256withRSA
-
SHA256withRSAandMGF1
-
SHA256withRSA/PSS
-
SHA384withRSA
-
SHA384withRSAandMGF1
-
SHA384withRSA/PSS
-
SHA512withRSA
-
SHA512withRSAandMGF1
-
SHA512withRSA/PSS
Tipos de Assinatura ECDSA
-
NONEwithECDSA
-
SHA1withECDSA
-
SHA224withECDSA
-
SHA256withECDSA
-
SHA384withECDSA
-
SHA512withECDSA
Funções de Resumo de Mensagens
Gerar valores de hash criptográficos para verificação de integridade de dados. O provedor JCE DKMS suporta as seguintes compilações de mensagens.
-
SHA-1
-
SHA-224
-
SHA-256
-
SHA-384
-
SHA-512
Funções HMAC (Message Authentication Code) baseadas em hash
Gere chaves HMAC (código de autenticação de mensagem baseado em hash) para funções hash criptográficas. O HMAC é usado para verificar a integridade e a autenticidade dos dados aplicando uma chave secreta com uma função hash. O provedor JCE de Gerenciamento de Chaves Dedicadas suporta os seguintes algoritmos HMAC:
-
HmacSHA1 (Tamanho máximo dos dados em bytes: 16288)
-
HmacSHA224 (Tamanho máximo dos dados em bytes: 16256)
-
HmacSHA256 (Tamanho máximo dos dados em bytes: 16288)
-
HmacSHA384 (Tamanho máximo dos dados em bytes: 16224)
-
HmacSHA512 (Tamanho máximo dos dados em bytes: 16224)
Código de autenticação de mensagem baseado em cifragem (CMAC)
Gere códigos de autenticação de mensagem baseados em cifra (CMACs) usando cifras de bloco (por exemplo, AES) para produzir um código de autenticação que garanta a integridade e a autenticidade da mensagem. O CMAC opera de forma semelhante ao HMAC, mas usa uma cifra de chave simétrica para a operação criptográfica.
O provedor JCE de Gerenciamento de Chaves Dedicadas suporta o algoritmo AESCMAC para geração CMAC.