

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mekanisme yang didukung untuk penyedia JCE untuk AWS CloudHSM SDK Klien 5
<a name="java-lib-supported_5"></a>

Topik ini memberikan informasi tentang mekanisme yang didukung untuk penyedia JCE dengan AWS CloudHSM Client SDK 5. Untuk informasi tentang antarmuka Java Cryptography Architecture (JCA) dan kelas mesin yang didukung oleh AWS CloudHSM, lihat topik berikut. 

**Topics**
+ [Menghasilkan fungsi kunci dan pasangan kunci](#java-gen-key-pairs-5)
+ [Fungsi Cipher](#java-ciphers_5)
+ [Tanda tangani dan verifikasi fungsi](#java-sign-verify_5)
+ [Fungsi mencerna](#java-digests_5)
+ [Hash-based fungsi kode otentikasi pesan (HMAC)](#java-mac_5)
+ [Cipher-based fungsi kode otentikasi pesan (CMAC)](#java-cmac_5)
+ [Fungsi Perjanjian Utama](#java-key-derivation_5)
+ [Konversi kunci ke spesifikasi utama menggunakan pabrik utama](#java-key-factories)
+ [Anotasi mekanisme](#w2aac25c21c25c15c23)

## Menghasilkan fungsi kunci dan pasangan kunci
<a name="java-gen-key-pairs-5"></a>

P AWS CloudHSM ustaka perangkat lunak untuk Java memungkinkan Anda menggunakan operasi berikut untuk menghasilkan fungsi kunci dan pasangan kunci.
+ `RSA`
+ `EC`
+ `EdDSA (Ed25519)`lihat catatan [2](#java-gen-key-pairs-5-note-2) 
+ `ML-DSA`
+ `AES`
+ `DESede (Triple DES)`lihat catatan [1](#java-gen-key-pairs-5-note-1) 
+ `GenericSecret`

## Fungsi Cipher
<a name="java-ciphers_5"></a>

P AWS CloudHSM ustaka perangkat lunak untuk Java mendukung kombinasi algoritma, mode, dan padding berikut.


| Algoritme | Mode | Bantalan | Catatan | 
| --- | --- | --- | --- | 
| AES | CBC | `AES/CBC/NoPadding`<br />`AES/CBC/PKCS5Padding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`.<br />Mengimplementasikan `Cipher.UNWRAP_MODE for AES/CBC NoPadding` | 
| AES | ECB | `AES/ECB/PKCS5Padding`<br />`AES/ECB/NoPadding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. | 
| AES | CTR | `AES/CTR/NoPadding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. | 
| AES | GCM | `AES/GCM/NoPadding` | Menerapkan `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE`, dan `Cipher.DECRYPT_MODE`.<br />Saat melakukan AES-GCM enkripsi, HSM mengabaikan vektor inisialisasi (IV) dalam permintaan dan menggunakan IV yang dihasilkannya. Saat operasi selesai, Anda harus memanggil `Cipher.getIV()` untuk mendapatkan IV. | 
| AESWrap | ECB | `AESWrap/ECB/NoPadding`<br />`AESWrap/ECB/PKCS5Padding`<br />`AESWrap/ECB/ZeroPadding` | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`. | 
| DESede (Tiga DES) | CBC | `DESede/CBC/PKCS5Padding`<br />`DESede/CBC/NoPadding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Lihat catatan [1](#java-gen-key-pairs-5-note-1) di bawah untuk perubahan yang akan datang. | 
| DESede (Tiga DES) | ECB | `DESede/ECB/NoPadding`<br />`DESede/ECB/PKCS5Padding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Lihat catatan [1](#java-gen-key-pairs-5-note-1) di bawah untuk perubahan yang akan datang. | 
| RSA | ECB | `RSA/ECB/PKCS1Padding`**lihat catatan [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` | Menerapkan `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE`, dan `Cipher.DECRYPT_MODE`. | 
| RSA | ECB | `RSA/ECB/NoPadding` | Menerapkan `Cipher.ENCRYPT_MODE` dan `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` | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`. | 

## Tanda tangani dan verifikasi fungsi
<a name="java-sign-verify_5"></a>

P AWS CloudHSM ustaka perangkat lunak untuk Java mendukung jenis tanda tangan dan verifikasi berikut. Dengan Client SDK 5 dan algoritma tanda tangan dengan hashing, data di-hash secara lokal dalam perangkat lunak sebelum dikirim ke HSM untuk. signature/verification Ini berarti tidak ada batasan pada ukuran data yang dapat di-hash oleh SDK.

### Jenis tanda tangan 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`

### Jenis tanda tangan ECDSA
<a name="java-sign-verify-ecdsa_5"></a>
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

### ML-DSA jenis tanda tangan
<a name="java-sign-verify-mldsa_5"></a>
+ `ML-DSA`
+ `ML-DSA-44`
+ `ML-DSA-65`
+ `ML-DSA-87`
+ `ML-DSA-EXTERNAL-MU`

**Jenis Tanda Tangan EDDSa lihat catatan **  [2](#java-gen-key-pairs-5-note-2) 
+ `Ed25519`atau `EdDSA` (Ukuran data maksimum: 16.000 byte)
+ `Ed25519ph`

## Fungsi mencerna
<a name="java-digests_5"></a>

P AWS CloudHSM ustaka perangkat lunak untuk Java mendukung mencerna pesan berikut. Dengan Client SDK 5, data di-hash secara lokal dalam perangkat lunak. Ini berarti tidak ada batasan pada ukuran data yang dapat di-hash oleh SDK.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Hash-based fungsi kode otentikasi pesan (HMAC)
<a name="java-mac_5"></a>

P AWS CloudHSM ustaka perangkat lunak untuk Java mendukung algoritma HMAC berikut.
+ `HmacSHA1`(Ukuran data maksimum dalam byte: 16288)
+ `HmacSHA224`(Ukuran data maksimum dalam byte: 16256)
+ `HmacSHA256`(Ukuran data maksimum dalam byte: 16288)
+ `HmacSHA384`(Ukuran data maksimum dalam byte: 16224)
+ `HmacSHA512`(Ukuran data maksimum dalam byte: 16224)

## Cipher-based fungsi kode otentikasi pesan (CMAC)
<a name="java-cmac_5"></a>

CMAC (kode otentikasi Cipher-based pesan) membuat kode otentikasi pesan (MAC) menggunakan sandi blok dan kunci rahasia. Mereka berbeda dari HMAC karena mereka menggunakan metode kunci simetris blok untuk MAC daripada metode hashing.

P AWS CloudHSM ustaka perangkat lunak untuk Java mendukung algoritma CMAC berikut.
+ `AESCMAC`

## Fungsi Perjanjian Utama
<a name="java-key-derivation_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung ECDH dengan Key Derivation Functions (KDF). Jenis KDF berikut didukung:
+ `ECDHwithX963SHA1KDF`Mendukung algorit X9.63 ma KDF SHA1  [3](#kdf2) 
+ `ECDHwithX963SHA224KDF`Mendukung algorit X9.63 ma KDF SHA224  [3](#kdf2) 
+ `ECDHwithX963SHA256KDF`Mendukung algorit X9.63 ma KDF SHA256  [3](#kdf2) 
+ `ECDHwithX963SHA384KDF`Mendukung algorit X9.63 ma KDF SHA384  [3](#kdf2) 
+ `ECDHwithX963SHA512KDF`Mendukung algorit X9.63 ma KDF SHA512  [3](#kdf2) 

## Konversi kunci ke spesifikasi utama menggunakan pabrik utama
<a name="java-key-factories"></a>

Anda dapat menggunakan pabrik kunci untuk mengonversi kunci ke spesifikasi utama. AWS CloudHSM memiliki dua jenis pabrik utama untuk JCE:

**SecretKeyFactory: Dig ** unakan untuk mengimpor atau memperoleh kunci simetris. Dengan menggunakan SecretKeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor atau memperoleh kunci simetris ke AWS CloudHSM. Berikut ini adalah spesifikasi yang didukung untuk KeyFactory:
+ `generateSecret`Metode for SecretKeyFactory [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) kelas berikut didukung:
  + **KeyAttributesMap**dapat digunakan untuk mengimpor byte kunci dengan atribut tambahan sebagai CloudHSM Key. Contohnya dapat ditemukan di sini di [ sini](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)**dapat digunakan untuk mengimpor spesifikasi kunci simetris sebagai Kunci CloudHSM.
  + **AesCmacKdfParameterSpec**dapat digunakan untuk mendapatkan kunci simetris menggunakan CloudHSM AES Key lain.

**catatan**  
SecretKeyFactory`translateKey`metode mengambil kunci apa pun yang mengimplementasikan [ antarmuka ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html) kunci.

**KeyFactory: Dig ** unakan untuk mengimpor kunci asimetris. Dengan menggunakan KeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor kunci asimetris ke AWS CloudHSM. Untuk informasi selengkapnya, lihat sumber daya berikut:
+ `generatePublic`Metode for KeyFactory, [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) kelas berikut didukung:
  + CloudHSM KeyAttributesMap untuk RSA, EC, dan EdDSA. KeyTypes Contoh dapat ditemukan [ di sini ](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)untuk Kunci Publik RSA, EC, dan eDDSA
  + [RSAPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPublicKeySpec.html)untuk Kunci Publik RSA
  + [ECPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPublicKeySpec.html)untuk Kunci Publik EC (tidak berlaku untuk Ed25519)
+ `generatePrivate`Metode for KeyFactory, [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) kelas berikut didukung:
  + CloudHSM KeyAttributesMap untuk RSA, EC, dan EdDSA. KeyTypes Contoh dapat ditemukan [ di sini ](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)untuk Kunci Pribadi RSA, EC, dan EdDSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPrivateCrtKeySpec.html)untuk Kunci Pribadi RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPrivateKeySpec.html)untuk EC Private Key (tidak berlaku untuk Ed25519)

**ML-DSA batasan impor kunci**  
AWS CloudHSM tidak mendukung impor ML-DSA kunci melalui `KeyFactory` (`generatePublic`dan`generatePrivate`). Untuk menggunakan ML-DSA kunci, buat langsung di HSM menggunakan`KeyPairGenerator`. Men ML-DSA `KeyFactory` dukung ekspor kunci publik menggunakan `getKeySpec` (pengembalian`X509EncodedKeySpec`).

`translateKey`Metode for KeyFactory, dibutuhkan Kunci apa pun yang mengimplementasikan Antarmuka [ Kunci](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html).

## Anotasi mekanisme
<a name="w2aac25c21c25c15c23"></a>

[1] Sesuai dengan panduan NIST, ini tidak diizinkan untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penghentian Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk detail.

[2] Hanya didukung pada instans hsm2m.medium dalam mode non-FIPS.

[3] Fungsi derivasi kunci (KDF) ditentukan dalam Publikasi Khusus NIS [ T 800-56A Revisi 3. ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)