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 em RSAKeyFactory e EcKeyFactory 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 em RSAKeyFactory. 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 em EcKeyFactory. 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.