

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 Client SDK 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 key dan key pair](#java-gen-key-pairs-5)
+ [Fungsi cipher](#java-ciphers_5)
+ [Tanda tangani dan verifikasi fungsi](#java-sign-verify_5)
+ [Fungsi mencerna](#java-digests_5)
+ [Fungsi kode otentikasi pesan berbasis hash (HMAC)](#java-mac_5)
+ [Fungsi kode otentikasi pesan berbasis sandi (CMAC)](#java-cmac_5)
+ [Fungsi Perjanjian Utama](#java-key-derivation_5)
+ [Konversi kunci ke spesifikasi utama menggunakan pabrik-pabrik utama](#java-key-factories)
+ [Anotasi mekanisme](#w2aac25c21c25c15c23)

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

Pustaka AWS CloudHSM perangkat lunak untuk Java memungkinkan Anda untuk menggunakan operasi berikut untuk menghasilkan fungsi key dan key pair.
+ `RSA`
+ `EC`
+ `AES`
+ `DESede (Triple DES)`lihat catatan [1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

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

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


| Algoritme | Mode | Bantalan | Catatan | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  |  Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Menerapkan `Cipher.UNWRAP_MODE for AES/CBC NoPadding`  | 
| AES | ECB |  `AES/ECB/PKCS5Padding` `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`.Ketika melakukan enkripsi AES-GCM, 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` `AESWrap/ECB/PKCS5Padding` `AESWrap/ECB/ZeroPadding`  | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`.  | 
| DESede (Tiga DES) | CBC |  `DESede/CBC/PKCS5Padding` `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` `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)** `RSA/ECB/OAEPPadding` `RSA/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-384ANDMGF1Padding` `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` `RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding`  | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`.  | 

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

Pustaka AWS CloudHSM 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 tanda tangan/verifikasi. Ini berarti tidak ada batasan ukuran data yang dapat di-hash oleh SDK.

**Jenis Tanda Tangan RSA**
+ `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**
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

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

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

## Fungsi kode otentikasi pesan berbasis hash (HMAC)
<a name="java-mac_5"></a>

Pustaka AWS CloudHSM 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)

## Fungsi kode otentikasi pesan berbasis sandi (CMAC)
<a name="java-cmac_5"></a>

CMACs (Kode otentikasi pesan berbasis sandi) buat kode otentikasi pesan (MACs) menggunakan sandi blok dan kunci rahasia. Mereka berbeda dari HMACs dalam bahwa mereka menggunakan metode kunci simetris blok untuk MACs bukan metode hashing.

Pustaka AWS CloudHSM 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 algoritma X9.63 KDF SHA1 [2](#kdf2)
+ `ECDHwithX963SHA224KDF`Mendukung algoritma X9.63 KDF SHA224 [2](#kdf2)
+ `ECDHwithX963SHA256KDF`Mendukung algoritma X9.63 KDF SHA256 [2](#kdf2)
+ `ECDHwithX963SHA384KDF`Mendukung algoritma X9.63 KDF SHA384 [2](#kdf2)
+ `ECDHwithX963SHA512KDF`Mendukung algoritma X9.63 KDF SHA512 [2](#kdf2)

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

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

**SecretKeyFactory:** Digunakan untuk mengimpor atau menurunkan kunci simetris. Dengan menggunakan SecretKeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor atau memperoleh kunci simetris. AWS CloudHSM Berikut ini adalah spesifikasi yang didukung untuk KeyFactory:
+ `generateSecret`Metode untuk SecretKeyFactory [KeySpec](https://docs.oracle.com/javase/8/docs/api/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/javase/8/docs/api/javax/crypto/spec/SecretKeySpec.html)**dapat digunakan untuk mengimpor spesifikasi kunci simetris sebagai Kunci CloudHSM.
  + **AesCmacKdfParameterSpec**dapat digunakan untuk menurunkan kunci simetris menggunakan CloudHSM AES Key lain.

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

**KeyFactory:** Digunakan untuk mengimpor kunci asimetris. Dengan menggunakan KeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor kunci AWS CloudHSM asimetris. Untuk informasi lebih lanjut, lihat sumber daya berikut:
+ `generatePublic`Metode KeyFactory For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)kelas berikut didukung:
+  KeyAttributesMap CloudHSM untuk RSA dan EC, termasuk: KeyTypes
  +  KeyAttributesMap CloudHSM untuk RSA dan EC publik. 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)
  + [X509 EncodedKeySpec untuk Kunci](https://docs.oracle.com/javase/8/docs/api/java/security/spec/X509EncodedKeySpec.html) Publik RSA dan EC
  + [RSAPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPublicKeySpec.html)untuk Kunci Publik RSA
  + [ECPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPublicKeySpec.html)untuk Kunci Publik EC
+ `generatePrivate`Metode KeyFactory For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)kelas berikut didukung:
+  KeyAttributesMap CloudHSM untuk RSA dan EC, termasuk: KeyTypes
  +  KeyAttributesMap CloudHSM untuk RSA dan EC publik. 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/javase/8/docs/api/java/security/spec/PKCS8EncodedKeySpec.html)untuk EC dan RSA Private Key
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPrivateCrtKeySpec.html)untuk Kunci Pribadi RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPrivateKeySpec.html)untuk Kunci Pribadi EC

`translateKey`Metode KeyFactory For, dibutuhkan setiap Key yang mengimplementasikan [Key Interface](https://docs.oracle.com/javase/8/docs/api/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: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk detail.

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