Masalah yang diketahui untuk JCE SDK - AWS CloudHSM

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

Masalah yang diketahui untuk JCE SDK

Masalah: Ketika bekerja dengan pasangan kunci asimetris, Anda melihat kapasitas kunci ditempati bahkan ketika Anda tidak secara eksplisit membuat atau mengimpor kunci

  • Dampak: Masalah ini dapat menyebabkan HSM Anda tiba-tiba kehabisan ruang kunci dan terjadi ketika aplikasi Anda menggunakan objek kunci JCE standar untuk operasi kripto, bukan objek CaviumKey. Bila Anda menggunakan objek kunci JCE standar, CaviumProvider secara implisit mengimpor kunci tersebut ke HSM sebagai kunci sesi dan tidak menghapus kunci ini sampai aplikasi keluar. Akibatnya, kunci membangun saat aplikasi berjalan dan dapat menyebabkan HSM Anda kehabisan ruang kunci kosong, sehingga membekukan aplikasi Anda.

  • Pemecahan masalah: Saat menggunakan kelas CaviumSignature, kelas CaviumCipher, kelas CaviumMac, atau kelas CaviumKeyAgreement, Anda harus menyediakan kunci sebagai CaviumKey bukan objek kunci JCE standar.

    Anda dapat secara manual mengonversi kunci normal ke CaviumKey menggunakan kelas ImportKey, dan kemudian dapat secara manual menghapus kunci setelah operasi selesai.

  • Status resolusi: Kami memperbarui CaviumProvider untuk benar mengelola impor implisit. Pembaruan akan diumumkan di halaman riwayat versi setelah tersedia.

Masalah: JCE KeyStore hanya dibaca

  • Dampak: Anda tidak dapat menyimpan jenis objek yang tidak didukung oleh HSM di penyimpanan kunci JCE hari ini. Secara khusus, Anda tidak dapat menyimpan sertifikat di penyimpanan kunci. Hal ini menghalangi interoperabilitas dengan alat-alat seperti jarsigner, yang mengharapkan untuk menemukan sertifikat di penyimpanan kunci.

  • Pemecahan masalah: Anda dapat mengerjakan ulang kode Anda untuk memuat sertifikat dari file lokal atau dari lokasi bucket S3, bukan dari penyimpanan kuncinya.

  • Status resolusi: Kami menambahkan dukungan untuk penyimpanan sertifikat di penyimpanan kunci. Pembaruan akan diumumkan di halaman riwayat versi setelah tersedia.

Masalah: Penyangga untuk enkripsi AES-GCM tidak dapat melebihi 16.000 byte

Enkripsi AES-GCM multi-bagian tidak didukung.

  • Dampak: Anda tidak dapat menggunakan AES-GCM untuk mengenkripsi data yang lebih besar dari 16.000 byte.

  • Pemecahan masalah: Anda bisa menggunakan mekanisme alternatif seperti AES-CBC atau Anda dapat membagi data menjadi beberapa potong dan mengenkripsi setiap potongnya secara terpisah. Jika Anda membagi data, Anda harus mengelola ciphertext yang dibagi dan dekripsinya. Karena FIPS mengharuskan vektor inisialisasi (IV) untuk AES-GCM dihasilkan pada HSM, IV untuk setiap potong data yang dienkripsi AES-GCM akan berbeda.

  • Status resolusi: Kami memperbaiki SDK gagal secara eksplisit jika penyangga data terlalu besar. Kami sedang mengevaluasi alternatif yang mendukung penyangga yang lebih besar tanpa mengandalkan enkripsi multi-bagian. Pembaruan akan diumumkan di forum AWS CloudHSM dan pada halaman riwayat versi.

Masalah: Derivasi kunci Eliptic-curve Diffie-Hellman (ECDH) dijalankan sebagian dalam HSM

Kunci privat EC Anda tetap berada dalam HSM setiap saat, tetapi proses derivasi kunci dilakukan dalam beberapa langkah. Akibatnya, hasil menengah dari setiap langkah tersedia pada klien. Derivasi kunci ECDH sampel tersedia di Sampel kode Java.

  • Dampak: Klien SDK 3 menambahkan fungsionalitas ECDH ke JCE. Ketika Anda menggunakan KeyAgreement kelas untuk mendapatkan a SecretKey, pertama kali tersedia pada klien dan kemudian diimpor ke HSM. Sebuah handel kunci kemudian kembali ke aplikasi Anda.

  • Solusi: Jika Anda menerapkan SSL/TLS Offload di AWS CloudHSM, batasan ini mungkin tidak menjadi masalah. Jika aplikasi Anda memerlukan kunci Anda untuk tetap berada dalam batas FIPS setiap saat, pertimbangkan untuk menggunakan protokol alternatif yang tidak bergantung pada derivasi kunci ECDH.

  • Status resolusi: Kami sedang mengembangkan pilihan untuk melakukan derivasi kunci ECDH sepenuhnya dalam HSM. Bila tersedia, kami akan mengumumkan implementasi yang diperbarui pada halaman riwayat versi.

Masalah: KeyGenerator dan KeyAttribute salah menafsirkan parameter ukuran kunci sebagai jumlah byte, bukan bit

Saat membuat kunci menggunakan init fungsi KeyGenerator kelas atau SIZE atribut AWS CloudHSM KeyAttribute enum, API salah mengharapkan argumen menjadi jumlah byte kunci, padahal seharusnya jumlah bit kunci.

  • Dampak: Client SDK versi 5.4.0 hingga 5.4.2 salah mengharapkan ukuran kunci diberikan ke API yang ditentukan sebagai byte.

  • Solusi: Konversi ukuran kunci dari bit ke byte sebelum menggunakan KeyGenerator kelas atau KeyAttribute enum untuk menghasilkan kunci menggunakan penyedia AWS CloudHSM JCE jika menggunakan Client SDK versi 5.4.0 hingga 5.4.2.

  • Status resolusi: Tingkatkan versi SDK klien Anda ke 5.5.0 atau yang lebih baru, yang mencakup perbaikan untuk mengharapkan ukuran kunci dalam bit dengan benar saat menggunakan KeyGenerator kelas atau KeyAttribute enum untuk menghasilkan kunci.

Masalah: Klien SDK 5 melontarkan peringatan “Operasi akses reflektif ilegal telah terjadi”

Saat menggunakan Client SDK 5 dengan Java 11, CloudHSM menampilkan peringatan Java berikut:

``` WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore (file:/opt/cloudhsm/java/cloudhsm-jce-5.6.0.jar) to field java.security .KeyStore.keyStoreSpi WARNING: Please consider reporting this to the maintainers of com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ```

Peringatan ini tidak berdampak. Kami menyadari masalah ini dan sedang berupaya menyelesaikannya. Tidak diperlukan resolusi atau solusi.

Masalah: Kumpulan sesi JCE habis

Dampak: Anda mungkin tidak dapat melakukan operasi di JCE setelah melihat pesan berikut:

com.amazonaws.cloudhsm.jce.jni.exception.InternalException: There are too many operations happening at the same time: Reached max number of sessions in session pool: 1000

Solusi:

  • Mulai ulang aplikasi JCE Anda jika Anda mengalami dampak.

  • Saat melakukan operasi, Anda mungkin perlu menyelesaikan operasi JCE sebelum kehilangan referensi ke operasi.

    catatan

    Tergantung pada operasi, metode penyelesaian mungkin diperlukan.

    Operasi Metode penyelesaian
    Cipher

    doFinal()dalam mode enkripsi atau dekripsi

    wrap()dalam mode bungkus

    unwrap()dalam mode buka bungkus

    KeyAgreement

    generateSecret() atau generateSecret(String)

    KeyPairGenerator

    generateKeyPair(),genKeyPair(), atau reset()

    KeyStore Tidak ada metode yang dibutuhkan
    MAC

    doFinal() atau reset()

    MessageDigest

    digest() atau reset()

    SecretKeyFactory Tidak ada metode yang dibutuhkan
    SecureRandom Tidak ada metode yang dibutuhkan
    Tanda tangan

    sign()dalam mode tanda

    verify()dalam mode verifikasi

Status resolusi: Kami telah menyelesaikan masalah ini di Client SDK 5.9.0 dan yang lebih baru. Untuk memperbaiki masalah ini, tingkatkan SDK Klien Anda ke salah satu versi ini.

Masalah: Kebocoran memori SDK 5 klien dengan operasi FindKey

  • Dampak: Operasi FindKey API memiliki kebocoran memori di JCE di Client SDK versi 5.10.0 dan sebelumnya. Jika Anda menggunakan findKey API beberapa kali dalam aplikasi Anda, itu akan menyebabkan peningkatan pertumbuhan memori dan akibatnya meningkatkan jejak memori dalam aplikasi Anda. Seiring waktu ini dapat menyebabkan kesalahan pelambatan atau mengharuskan aplikasi dimulai ulang.

  • Solusi: Kami merekomendasikan untuk meningkatkan ke Client SDK 5.11.0. Jika ini tidak dapat dilakukan, kami sarankan untuk tidak memanggil findKey API beberapa kali dalam aplikasi Anda. Sebaliknya, gunakan kembali kunci yang dikembalikan sebelumnya dari findKey operasi sebelumnya sebanyak mungkin.

  • Status resolusi: Tingkatkan versi SDK klien Anda ke 5.11.0 atau yang lebih baru, yang mencakup perbaikan untuk masalah ini.