

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Meccanismi supportati per il provider JCE per AWS CloudHSM Client SDK 5
<a name="java-lib-supported_5"></a>

Questo argomento fornisce informazioni sui meccanismi supportati per il provider JCE con AWS CloudHSM Client SDK 5. Per informazioni sulle interfacce Java Cryptography Architecture (JCA) e sulle classi di motore supportate da AWS CloudHSM, consulta i seguenti argomenti. 

**Topics**
+ [Funzioni di generazione chiavi e coppie di chiavi](#java-gen-key-pairs-5)
+ [Funzioni di cifratura](#java-ciphers_5)
+ [Funzioni di firma e verifica](#java-sign-verify_5)
+ [Funzioni di digest](#java-digests_5)
+ [Hash-based funzioni del codice di autenticazione dei messaggi (HMAC)](#java-mac_5)
+ [Cipher-based funzioni del codice di autenticazione dei messaggi (CMAC)](#java-cmac_5)
+ [Funzioni chiave dell'accordo](#java-key-derivation_5)
+ [Converti le chiavi in specifiche chiave utilizzando le principali fabbriche](#java-key-factories)
+ [Annotazioni sui meccanismi](#w2aac25c21c25c15c23)

## Funzioni di generazione chiavi e coppie di chiavi
<a name="java-gen-key-pairs-5"></a>

La libreria AWS CloudHSM software per Java consente di utilizzare le seguenti operazioni per generare funzioni di chiave e coppia di chiavi.
+ `RSA`
+ `EC`
+ `EdDSA (Ed25519)`vedi nota[2](#java-gen-key-pairs-5-note-2)
+ `ML-DSA`
+ `AES`
+ `DESede (Triple DES)`vedi nota[1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

## Funzioni di cifratura
<a name="java-ciphers_5"></a>

La libreria AWS CloudHSM software per Java supporta le seguenti combinazioni di algoritmo, modalità e spaziatura interna.


| Algoritmo | Modalità | Padding | Note | 
| --- | --- | --- | --- | 
| AES | CBC | `AES/CBC/NoPadding`<br />`AES/CBC/PKCS5Padding` | Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`.<br />Implementa `Cipher.UNWRAP_MODE for AES/CBC NoPadding` | 
| AES | ECB | `AES/ECB/PKCS5Padding`<br />`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`.<br />Quando esegue la AES-GCM crittografia, l'HSM ignora il vettore di inizializzazione (IV) nella richiesta e utilizza un IV generato. Al termine dell'operazione, è necessario chiamare `Cipher.getIV()` per ottenere il IV. | 
| AESWrap | ECB | `AESWrap/ECB/NoPadding`<br />`AESWrap/ECB/PKCS5Padding`<br />`AESWrap/ECB/ZeroPadding` | Implementa `Cipher.WRAP_MODE` e `Cipher.UNWRAP_MODE`. | 
| DESede (Triple DES) | CBC | `DESede/CBC/PKCS5Padding`<br />`DESede/CBC/NoPadding` | Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`. Vedi la nota [1](#java-gen-key-pairs-5-note-1) di seguito per una modifica imminente. | 
| DESede (Triple DES) | ECB | `DESede/ECB/NoPadding`<br />`DESede/ECB/PKCS5Padding` | Implementa `Cipher.ENCRYPT_MODE` e `Cipher.DECRYPT_MODE`. Vedi la nota [1](#java-gen-key-pairs-5-note-1) di seguito per una modifica imminente. | 
| RSA | ECB | `RSA/ECB/PKCS1Padding` **vedi nota [1](#java-gen-key-pairs-5-note-1)**<br />`RSA/ECB/OAEPPadding`<br />`RSA/ECB/OAEPWithSHA-1ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-224ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-256ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-384ANDMGF1Padding`<br />`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`<br />`RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding` | Implementa `Cipher.WRAP_MODE` e `Cipher.UNWRAP_MODE`. | 

## Funzioni di firma e verifica
<a name="java-sign-verify_5"></a>

La libreria AWS CloudHSM software per Java supporta i seguenti tipi di firma e verifica. Con Client SDK 5 e gli algoritmi di firma con hashing, i dati vengono sottoposti a hashing localmente nel software prima di essere inviati all'HSM per. signature/verification Ciò significa che non ci sono limiti alla dimensione dei dati che possono essere sottoposti a hash dall'SDK.

### Tipi di firma RSA
<a name="java-sign-verify-rsa_5"></a>
+ `NONEwithRSA`
+ `RSASSA-PSS`
+ `SHA1withRSA`
+ `SHA1withRSA/PSS`
+ `SHA1withRSAandMGF1`
+ `SHA224withRSA`
+ `SHA224withRSAandMGF1`
+ `SHA224withRSA/PSS`
+ `SHA256withRSA`
+ `SHA256withRSAandMGF1`
+ `SHA256withRSA/PSS`
+ `SHA384withRSA`
+ `SHA384withRSAandMGF1`
+ `SHA384withRSA/PSS`
+ `SHA512withRSA`
+ `SHA512withRSAandMGF1`
+ `SHA512withRSA/PSS`

### Tipi di firma ECDSA
<a name="java-sign-verify-ecdsa_5"></a>
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

### ML-DSA tipi di firma
<a name="java-sign-verify-mldsa_5"></a>
+ `ML-DSA`
+ `ML-DSA-44`
+ `ML-DSA-65`
+ `ML-DSA-87`
+ `ML-DSA-EXTERNAL-MU`

**Tipi di firma EdDSA vedi nota **  [2](#java-gen-key-pairs-5-note-2) 
+ `Ed25519`o `EdDSA` (Dimensione massima dei dati: 16.000 byte)
+ `Ed25519ph`

## Funzioni di digest
<a name="java-digests_5"></a>

La libreria AWS CloudHSM software per Java supporta i seguenti riassunti dei messaggi. Con Client SDK 5, l'hashing dei dati viene eseguito localmente nel software. Ciò significa che non ci sono limiti alla dimensione dei dati che possono essere sottoposti a hash dall'SDK.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Hash-based funzioni del codice di autenticazione dei messaggi (HMAC)
<a name="java-mac_5"></a>

La libreria AWS CloudHSM software per Java supporta i seguenti algoritmi HMAC.
+ `HmacSHA1`(Dimensione massima dei dati in byte: 16288)
+ `HmacSHA224`(Dimensione massima dei dati in byte: 16256)
+ `HmacSHA256`(Dimensione massima dei dati in byte: 16288)
+ `HmacSHA384`(Dimensione massima dei dati in byte: 16224)
+ `HmacSHA512`(Dimensione massima dei dati in byte: 16224)

## Cipher-based funzioni del codice di autenticazione dei messaggi (CMAC)
<a name="java-cmac_5"></a>

I CMAC (codici di autenticazione dei Cipher-based messaggi) creano codici di autenticazione dei messaggi (MAC) utilizzando un codice a blocchi e una chiave segreta. Differiscono dagli HMAC in quanto utilizzano un metodo a chiave simmetrica a blocchi per i MAC anziché un metodo di hashing.

La libreria AWS CloudHSM software per Java supporta i seguenti algoritmi CMAC.
+ `AESCMAC`

## Funzioni chiave dell'accordo
<a name="java-key-derivation_5"></a>

La libreria AWS CloudHSM software per Java supporta ECDH con Key Derivation Functions (KDF). Sono supportati i seguenti tipi di KDF:
+ `ECDHwithX963SHA1KDF`Supporta l'algoritmo X9.63 KDF SHA1  [3](#kdf2) 
+ `ECDHwithX963SHA224KDF`Supporta l'algoritmo X9.63 KDF SHA224  [3](#kdf2) 
+ `ECDHwithX963SHA256KDF`Supporta l'algoritmo KDF SHA256 X9.63  [3](#kdf2) 
+ `ECDHwithX963SHA384KDF`Supporta l'algoritmo KDF SHA384 X9.63  [3](#kdf2) 
+ `ECDHwithX963SHA512KDF`Supporta l'algoritmo X9.63 KDF SHA512  [3](#kdf2) 

## Converti le chiavi in specifiche chiave utilizzando le principali fabbriche
<a name="java-key-factories"></a>

È possibile utilizzare le fabbriche di chiavi per convertire le chiavi in specifiche chiave. AWS CloudHSM ha due tipi di fabbriche chiave per JCE:

**SecretKeyFactory: ** Utilizzato per importare o derivare chiavi simmetriche. Usando SecretKeyFactory, puoi passare una chiave supportata o una supportata in cui importare o KeySpec derivare chiavi simmetriche. AWS CloudHSM Di seguito sono riportate le specifiche supportate per: KeyFactory
+ Le seguenti [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classi SecretKeyFactory del `generateSecret` metodo For sono supportate:
  + **KeyAttributesMap**può essere utilizzato per importare byte di chiave con attributi aggiuntivi come chiave CloudHSM. Un esempio può essere trovato [qui](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/en/java/javase/25/docs/api/java.base/javax/crypto/spec/SecretKeySpec.html)**può essere utilizzato per importare una specifica di chiave simmetrica come chiave CloudHSM.
  + **AesCmacKdfParameterSpec**può essere utilizzato per derivare chiavi simmetriche utilizzando un'altra chiave AES CloudHSM.

**Nota**  
SecretKeyFactoryil `translateKey` metodo accetta qualsiasi chiave che implementa l'interfaccia chiave. [https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html)

**KeyFactory: ** Utilizzato per importare chiavi asimmetriche. Usando KeyFactory, puoi passare una chiave supportata o supportata in KeySpec cui importare una chiave asimmetrica. AWS CloudHSM Per ulteriori informazioni, fai riferimento a queste risorse:
+  KeyFactoryIl `generatePublic` metodo di For, sono supportate le seguenti [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classi:
  + CloudHSM KeyAttributesMap per RSA, EC ed EdDSA. KeyTypes Un esempio può essere trovato [qui](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + [X509EncodedKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/X509EncodedKeySpec.html)per RSA, EC ed EdDSA Public Key
  + [RSAPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPublicKeySpec.html)per RSA Public Key
  + [ECPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPublicKeySpec.html)per EC Public Key (non applicabile per Ed25519)
+ Per il `generatePrivate` metodo KeyFactory For, sono supportate le seguenti [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classi:
  + CloudHSM KeyAttributesMap per RSA, EC ed EdDSA. KeyTypes Un esempio può essere trovato [qui](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/en/java/javase/25/docs/api/java.base/java/security/spec/PKCS8EncodedKeySpec.html)per chiavi private RSA, EC ed EdDSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPrivateCrtKeySpec.html)per RSA Private Key
  + [ECPrivateKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPrivateKeySpec.html)per EC Private Key (non applicabile per Ed25519)

**ML-DSA limitazione dell'importazione delle chiavi**  
AWS CloudHSM non supporta l'importazione di ML-DSA chiavi tramite `KeyFactory` (`generatePublic`e`generatePrivate`). Per utilizzare ML-DSA le chiavi, generale direttamente sull'HSM utilizzando. `KeyPairGenerator` ML-DSA `KeyFactory`Supporta l'esportazione di chiavi pubbliche utilizzando `getKeySpec` (restituisce`X509EncodedKeySpec`).

 KeyFactoryIl `translateKey` metodo di For, accetta qualsiasi chiave che implementa l'interfaccia [https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html) chiave.

## Annotazioni sui meccanismi
<a name="w2aac25c21c25c15c23"></a>

[1] In conformità con le linee guida del NIST, ciò non è consentito per i cluster in modalità FIPS dopo il 2023. Per i cluster in modalità non FIPS, è ancora consentito dopo il 2023. Per informazioni dettagliate, vedi [Conformità FIPS 140: meccanismo di deprecazione 2024](compliance-dep-notif.md#compliance-dep-notif-1).

[2] Supportato solo su istanze hsm2m.medium in modalità non FIPS.

[3] Le funzioni di derivazione chiave (KDF) sono specificate nella pubblicazione speciale 800-56A del NIST, revisione 3. [https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)