

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Mecanismos compatíveis com o provedor JCE para o AWS CloudHSM Client SDK 5
<a name="java-lib-supported_5"></a>

Este tópico fornece informações sobre os mecanismos suportados pelo provedor JCE com o AWS CloudHSM Client SDK 5. Para obter informações sobre as interfaces e classes de mecanismo da Java Cryptography Architecture (JCA) suportadas pelo AWS CloudHSM, consulte os tópicos a seguir. 

**Topics**
+ [Gere funções de chave e par de chaves](#java-gen-key-pairs-5)
+ [Funções de cifra](#java-ciphers_5)
+ [Funções de assinatura e verificação](#java-sign-verify_5)
+ [Funções de resumo](#java-digests_5)
+ [Funções de código de autenticação de mensagens por hash (HMAC)](#java-mac_5)
+ [Funções de código de autenticação de mensagens baseadas em cifras (CMAC)](#java-cmac_5)
+ [Funções-chave do contrato](#java-key-derivation_5)
+ [Converta chaves em especificações de chave usando fábricas de chaves](#java-key-factories)
+ [Anotações do mecanismo](#w2aac25c21c25c15c23)

## Gere funções de chave e par de chaves
<a name="java-gen-key-pairs-5"></a>

A biblioteca AWS CloudHSM de software para Java permite que você use as seguintes operações para gerar funções de chave e par de chaves.
+ `RSA`
+ `EC`
+ `AES`
+ `DESede (Triple DES)`consulte a observação [1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

## Funções de cifra
<a name="java-ciphers_5"></a>

A biblioteca AWS CloudHSM de software para Java suporta as seguintes combinações de algoritmo, modo e preenchimento.


| Algoritmo | Modo | Padding | Observações | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  |  Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`. Implementa `Cipher.UNWRAP_MODE for AES/CBC NoPadding`  | 
| AES | ECB |  `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 ele mesmo gera. Quando a operação for concluída, você deverá chamar `Cipher.getIV()` para obter o IV. | 
| AESWrap | ECB |  `AESWrap/ECB/NoPadding` `AESWrap/ECB/PKCS5Padding` `AESWrap/ECB/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`. Consulte a nota [1](#java-gen-key-pairs-5-note-1) abaixo para ver uma mudança futura.  | 
| DESede (DES triplo) | ECB |  `DESede/ECB/NoPadding` `DESede/ECB/PKCS5Padding`  | Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`. Consulte a nota [1](#java-gen-key-pairs-5-note-1) abaixo para ver uma mudança futura.  | 
| RSA | ECB | `RSA/ECB/PKCS1Padding` **consulte a observação [1](#java-gen-key-pairs-5-note-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 | ECB | `RSA/ECB/NoPadding` |  Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`.  | 
| RSAAESWrap | ECB |  `RSAAESWrap/ECB/OAEPPadding` `RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding`  | Implementa `Cipher.WRAP_MODE` e `Cipher.UNWRAP_MODE`.  | 

## Funções de assinatura e verificação
<a name="java-sign-verify_5"></a>

A biblioteca AWS CloudHSM de software para Java suporta os seguintes tipos de assinatura e verificação. Com o Client SDK 5 e algoritmos de assinatura com hashing, os dados são codificados localmente no software antes de serem enviados ao HSM para assinatura/verificação. Isso significa que não há limite no tamanho dos dados que podem ser criptografados pelo SDK.

**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
<a name="java-digests_5"></a>

A biblioteca AWS CloudHSM de software para Java suporta os seguintes resumos de mensagens. Com o Client SDK 5, os dados são codificados localmente no software. Isso significa que não há limite no tamanho dos dados que podem ser criptografados pelo SDK.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Funções de código de autenticação de mensagens por hash (HMAC)
<a name="java-mac_5"></a>

A biblioteca AWS CloudHSM de software para Java suporta os seguintes algoritmos HMAC.
+ `HmacSHA1` (Tamanho máximo de dados em bytes: 16288)
+ `HmacSHA224` (Tamanho máximo de dados em bytes: 16256)
+ `HmacSHA256` (Tamanho máximo de dados em bytes: 16288)
+ `HmacSHA384` (Tamanho máximo de dados em bytes: 16224)
+ `HmacSHA512` (Tamanho máximo de dados em bytes: 16224)

## Funções de código de autenticação de mensagens baseadas em cifras (CMAC)
<a name="java-cmac_5"></a>

CMACs (códigos de autenticação de mensagens baseados em cifras) crie códigos de autenticação de mensagens (MACs) usando uma cifra de bloco e uma chave secreta. Eles diferem HMACs porque usam um método de chave simétrica de bloco para o, MACs em vez de um método de hash.

A biblioteca AWS CloudHSM de software para Java suporta os seguintes algoritmos CMAC.
+ `AESCMAC`

## Funções-chave do contrato
<a name="java-key-derivation_5"></a>

A biblioteca AWS CloudHSM de software para Java suporta ECDH com Key Derivation Functions (KDF). Há suporte para os seguintes tipos de KDF:
+ `ECDHwithX963SHA1KDF`Suporta o algoritmo X9.63 KDF SHA1 [2](#kdf2)
+ `ECDHwithX963SHA224KDF`Suporta o algoritmo X9.63 KDF SHA224 [2](#kdf2)
+ `ECDHwithX963SHA256KDF`Suporta o algoritmo X9.63 KDF SHA256 [2](#kdf2)
+ `ECDHwithX963SHA384KDF`Suporta o algoritmo X9.63 KDF SHA384 [2](#kdf2)
+ `ECDHwithX963SHA512KDF`Suporta o algoritmo X9.63 KDF SHA512 [2](#kdf2)

## Converta chaves em especificações de chave usando fábricas de chaves
<a name="java-key-factories"></a>

Você pode usar fábricas de chaves para converter chaves em especificações principais. AWS CloudHSM tem dois tipos de fábricas principais para a JCE:

**SecretKeyFactory:** usado para importar ou derivar chaves simétricas. Usando SecretKeyFactory, você pode passar uma chave compatível ou uma compatível KeySpec para importar ou derivar chaves simétricas. AWS CloudHSM A seguir estão as especificações suportadas para KeyFactory:
+ As seguintes [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)classes SecretKeyFactory do `generateSecret` método For são suportadas:
  + **KeyAttributesMap**pode ser usado para importar bytes de chave com atributos adicionais como uma chave do CloudHSM. Um exemplo pode ser encontrado [aqui](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + **[SecretKeySpec](https://docs.oracle.com/javase/8/docs/api/javax/crypto/spec/SecretKeySpec.html)**pode ser usado para importar uma especificação de chave simétrica como uma chave do CloudHSM.
  + **AesCmacKdfParameterSpec**pode ser usado para derivar chaves simétricas usando outra chave AES do CloudHSM.

**nota**  
SecretKeyFactoryO `translateKey` método de usa qualquer chave que implemente a interface da [chave](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html).

**KeyFactory:** usado para importar chaves assimétricas. Usando KeyFactory, você pode passar uma chave compatível ou compatível KeySpec para importar uma chave assimétrica. AWS CloudHSM Para obter mais informações, consulte os seguintes recursos:
+ Para KeyFactory o `generatePublic` método de For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)as seguintes classes são suportadas:
+  KeyAttributesMap CloudHSM para RSA e EC, incluindo: KeyTypes
  +  KeyAttributesMap CloudHSM para o público da RSA e da EC. KeyTypes Um exemplo pode ser encontrado [aqui](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + [X509 EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/X509EncodedKeySpec.html) para chave pública RSA e EC
  + [RSAPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPublicKeySpec.html)para chave pública RSA
  + [ECPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPublicKeySpec.html)para EC Public Key
+ Para KeyFactory o `generatePrivate` método de For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)as seguintes classes são suportadas:
+  KeyAttributesMap CloudHSM para RSA e EC, incluindo: KeyTypes
  +  KeyAttributesMap CloudHSM para o público da RSA e da EC. KeyTypes Um exemplo pode ser encontrado [aqui](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + [PKCS8EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/PKCS8EncodedKeySpec.html)para chaves privadas EC e RSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPrivateCrtKeySpec.html)para chave privada RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPrivateKeySpec.html)para chave privada EC

 KeyFactoryO `translateKey` método de For usa qualquer chave que implemente a [interface chave](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html).

## Anotações do mecanismo
<a name="w2aac25c21c25c15c23"></a>

[1] De acordo com a orientação do NIST, isso não é permitido em clusters no modo FIPS após 2023. Para clusters no modo não FIPS, isso ainda é permitido após 2023. Para mais detalhes, consulte [Conformidade com o FIPS 140: suspensão do mecanismo de 2024](compliance-dep-notif.md#compliance-dep-notif-1).

[2] As funções de derivação de chaves (KDFs) estão especificadas na [Publicação Especial 800-56A do NIST](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf), Revisão 3.