Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasikan penyedia JCE Anda dari AWS CloudHSM Client SDK 3 ke Client SDK 5
Gunakan topik ini untuk memigrasikan penyedia JCE Anda dari AWS CloudHSM Client SDK 3 ke Client SDK 5. Untuk manfaat migrasi, lihatManfaat SDK AWS CloudHSM Klien 5.
Pada tahun AWS CloudHSM, aplikasi pelanggan melakukan operasi kriptografi menggunakan AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 adalah SDK utama yang terus memiliki fitur baru dan dukungan platform yang ditambahkan ke dalamnya.
Penyedia Client SDK 3 JCE menggunakan kelas khusus dan APIs itu bukan bagian dari spesifikasi JCE standar. Client SDK 5 untuk penyedia JCE adalah keluhan dengan spesifikasi JCE dan tidak kompatibel dengan Client SDK 3 di area tertentu. Aplikasi pelanggan mungkin memerlukan perubahan sebagai bagian dari migrasi ke SDK Klien 5. Bagian ini menguraikan perubahan yang diperlukan untuk migrasi yang berhasil.
Untuk meninjau petunjuk migrasi untuk semua penyedia, lihatMigrasi dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5.
Bersiaplah dengan mengatasi perubahan yang melanggar
Tinjau perubahan yang melanggar ini dan perbarui aplikasi Anda di lingkungan pengembangan yang sesuai.
Kelas dan nama Provider telah berubah
Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh |
---|---|---|---|
Kelas dan nama penyedia |
Kelas penyedia JCE di Client SDK 3 dipanggil |
Di Client SDK 5, kelas Provider dipanggil |
Contoh cara menginisialisasi |
Login eksplisit telah berubah, implisit belum
Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh |
---|---|---|---|
Login eksplisit |
Klien SDK 3 menggunakan |
Di Client SDK 5, |
Untuk contoh tentang cara menggunakan login eksplisit dengan Client SDK 5, lihat LoginRunner contoh di repositori sampel AWS GitHub CloudHSM |
Login implisit |
Tidak ada perubahan yang diperlukan untuk login implisit. File properti yang sama dan semua variabel lingkungan akan terus berfungsi untuk login implisit saat bermigrasi dari Client SDK 3 ke Client SDK 5. |
Untuk contoh tentang cara menggunakan login implisit dengan Client SDK 5, lihat LoginRunner sampel di repositori |
-
[1] Cuplikan kode SDK 3 klien:
LoginManager lm = LoginManager.getInstance(); lm.login(partition, user, pass);
-
[2] Cuplikan kode SDK 5 klien:
// Construct or get the existing provider object AuthProvider provider = new CloudHsmProvider(); // Call login method on the CloudHsmProvider object // Here loginHandler is a CallbackHandler provider.login(null, loginHandler);
Untuk contoh tentang cara menggunakan login eksplisit dengan Client SDK 5, lihat LoginRunner sampel di repositori
AWS CloudHSM GitHub sampel.
Generasi kunci telah berubah
Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh |
---|---|---|---|
Pembuatan kunci |
Di Client SDK 3, |
Di Client SDK 5, |
Untuk contoh tentang cara menggunakan |
Generasi pasangan kunci |
Di Client SDK 3, |
Di Client SDK 5, |
Untuk contoh tentang cara menggunakan |
-
[1] Cuplikan kode pembuatan kunci SDK 3 klien:
KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium"); CaviumAESKeyGenParameterSpec aesSpec = new CaviumAESKeyGenParameterSpec( keySizeInBits, keyLabel, isExtractable, isPersistent); keyGen.init(aesSpec); SecretKey aesKey = keyGen.generateKey();
-
[2] Cuplikan kode pembuatan kunci SDK 5 klien:
KeyGenerator keyGen = KeyGenerator.getInstance("AES", CloudHsmProvider.PROVIDER_NAME); final KeyAttributesMap aesSpec = new KeyAttributesMap(); aesSpec.put(KeyAttribute.LABEL, keyLabel); aesSpec.put(KeyAttribute.SIZE, keySizeInBits); aesSpec.put(KeyAttribute.EXTRACTABLE, isExtractable); aesSpec.put(KeyAttribute.TOKEN, isPersistent); keyGen.init(aesSpec); SecretKey aesKey = keyGen.generateKey();
-
[3] Cuplikan kode pembuatan key pair SDK 3 klien::
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("rsa", "Cavium"); CaviumRSAKeyGenParameterSpec spec = new CaviumRSAKeyGenParameterSpec( keySizeInBits, new BigInteger("65537"), label + ":public", label + ":private", isExtractable, isPersistent); keyPairGen.initialize(spec); keyPairGen.generateKeyPair();
-
[4] Cuplikan kode pembuatan key pair SDK 5 klien:
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", providerName); // Set attributes for RSA public key final KeyAttributesMap publicKeyAttrsMap = new KeyAttributesMap(); publicKeyAttrsMap.putAll(additionalPublicKeyAttributes); publicKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Public"); publicKeyAttrsMap.put(KeyAttribute.MODULUS_BITS, keySizeInBits); publicKeyAttrsMap.put(KeyAttribute.PUBLIC_EXPONENT, new BigInteger("65537").toByteArray()); // Set attributes for RSA private key final KeyAttributesMap privateKeyAttrsMap = new KeyAttributesMap(); privateKeyAttrsMap.putAll(additionalPrivateKeyAttributes); privateKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Private"); // Create KeyPairAttributesMap and use that to initialize the // keyPair generator KeyPairAttributesMap keyPairSpec = new KeyPairAttributesMapBuilder() .withPublic(publicKeyAttrsMap) .withPrivate(privateKeyAttrsMap) .build(); keyPairGen.initialize(keyPairSpec); keyPairGen.generateKeyPair();
Menemukan, menghapus, dan mereferensikan kunci telah berubah
Menemukan kunci yang sudah dihasilkan dengan AWS CloudHSM memerlukan penggunaan. KeyStore Klien SDK 3 memiliki dua KeyStore jenis: Cavium
danCloudHSM
. Klien SDK 5 hanya memiliki satu KeyStore jenis:CloudHSM
.
Pindah dari Cavium
KeyStore ke CloudHSM
KeyStore membutuhkan perubahan KeyStore tipe. Selain itu, Client SDK 3 menggunakan pegangan kunci untuk referensi kunci, sedangkan Client SDK 5 menggunakan label kunci. Perubahan perilaku yang dihasilkan tercantum di bawah ini.
Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh |
---|---|---|---|
Referensi utama |
Dengan Client SDK 3, aplikasi menggunakan label kunci atau pegangan kunci untuk referensi kunci di HSM. Mereka menggunakan label dengan KeyStore untuk menemukan kunci, atau mereka menggunakan pegangan dan membuat |
Di Client SDK 5, aplikasi dapat menggunakan tombol AWS CloudHSM KeyStore Kelas Java untuk Client SDK 5 untuk menemukan kunci berdasarkan label. Untuk menemukan kunci dengan pegangan, gunakan AWS CloudHSM |
|
Menemukan beberapa entri |
Saat mencari kunci menggunakan |
Dengan AWS CloudHSM |
|
Temukan semua kunci |
Dimungkinkan di Client SDK 3 untuk menemukan semua kunci di HSM menggunakan. |
Client SDK 5 membuat pencarian kunci lebih sederhana dan lebih efisien dengan menggunakan |
Contoh yang menggunakan |
Penghapusan kunci |
Klien SDK 3 digunakan |
|
Kode contoh yang menunjukkan fungsionalitas tombol hapus dapat ditemukan di repositori sampel GitHub CloudHSM |
-
[1] cuplikan ditunjukkan di bawah ini:
KeyAttributesMap findSpec = new KeyAttributesMap(); findSpec.put(KeyAttribute.LABEL, label); findSpec.put(KeyAttribute.KEY_TYPE, keyType); KeyStoreWithAttributes keyStore = KeyStoreWithAttributes.getInstance("CloudHSM"); keyStore.load(null, null); keyStore.getKey(findSpec);
-
[2] Menghapus kunci di Client SDK 3:
Util.deleteKey(key);
Menghapus kunci di Client SDK 5:
((Destroyable) key).destroy();
Operasi membuka cipher telah berubah, operasi cipher lainnya belum
catatan
Tidak ada perubahan yang diperlukan untuk operasi Cipher. encrypt/decrypt/wrap
Operasi buka bungkus memerlukan CaviumUnwrapParameterSpec
kelas Client SDK 3 untuk diganti dengan salah satu kelas berikut khusus untuk operasi kriptografi yang terdaftar.
GCMUnwrapKeySpec
untukAES/GCM/NoPadding
membuka bungkusnyaIvUnwrapKeySpec
untukAESWrap unwrap
danAES/CBC/NoPadding unwrap
OAEPUnwrapKeySpec
untukRSA OAEP unwrap
Contoh cuplikan untuk: OAEPUnwrapkeySpec
OAEPParameterSpec oaepParameterSpec = new OAEPParameterSpec( "SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSpecified.DEFAULT); KeyAttributesMap keyAttributesMap = new KeyAttributesMap(KeyAttributePermissiveProfile.KEY_CREATION); keyAttributesMap.put(KeyAttribute.TOKEN, true); keyAttributesMap.put(KeyAttribute.EXTRACTABLE, false); OAEPUnwrapKeySpec spec = new OAEPUnwrapKeySpec(oaepParameterSpec, keyAttributesMap); Cipher hsmCipher = Cipher.getInstance( "RSA/ECB/OAEPPadding", CloudHsmProvider.PROVIDER_NAME); hsmCipher.init(Cipher.UNWRAP_MODE, key, spec);
Operasi tanda tangan tidak berubah
Tidak ada perubahan yang diperlukan untuk operasi Tanda Tangan.
Migrasi ke SDK Klien 5
Ikuti petunjuk di bagian ini untuk bermigrasi dari Client SDK 3 ke Client SDK 5.
catatan
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04 CentOS 6, CentOS 8, dan RHEL 6 saat ini tidak didukung dengan Client SDK 5. Jika saat ini Anda menggunakan salah satu platform ini dengan Client SDK 3, Anda harus memilih platform yang berbeda saat bermigrasi ke Client SDK 5.
-
Copot pemasangan penyedia JCE untuk Client SDK 3.
-
Copot pemasangan Daemon Klien untuk SDK Klien 3.
catatan
Konfigurasi khusus perlu diaktifkan lagi.
-
Instal penyedia Client SDK JCE dengan mengikuti langkah-langkahnya. Instal penyedia JCE untuk AWS CloudHSM Client SDK 5
-
Client SDK 5 memperkenalkan format file konfigurasi baru dan alat bootstrap baris perintah. Untuk mem-bootstrap penyedia Client SDK 5 JCE Anda, ikuti petunjuk yang tercantum dalam panduan pengguna di bawah. Bootstrap Klien SDK
-
Di lingkungan pengembangan Anda, uji aplikasi Anda. Lakukan pembaruan pada kode yang ada untuk menyelesaikan perubahan yang melanggar sebelum migrasi terakhir Anda.