Rincian caching kunci data - AWS Encryption SDK

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

Rincian caching kunci data

Sebagian besar aplikasi dapat menggunakan implementasi default caching kunci data tanpa menulis kode kustom. Bagian ini menjelaskan implementasi default dan beberapa rincian tentang opsi.

Cara kerja caching kunci data

Bila Anda menggunakan caching kunci data dalam permintaan untuk mengenkripsi atau mendekripsi data,AWS Encryption SDKpertama mencari cache untuk kunci data yang cocok dengan permintaan. Jika menemukan kecocokan yang valid, itu menggunakan kunci data yang di-cache untuk mengenkripsi data. Jika tidak, itu menghasilkan kunci data baru, seperti halnya tanpa cache.

Caching kunci data tidak digunakan untuk data dengan ukuran yang tidak diketahui, seperti data yang dialirkan. Hal ini memungkinkan caching CMM untuk benar menegakkanambang batas maksimum. Untuk menghindari perilaku ini, tambahkan ukuran pesan ke permintaan enkripsi.

Selain cache, caching kunci data menggunakanPengelola bahan kriptografi(Caching CMM). Caching CMM adalah khususManajer bahan kriptografi (CMM)yang berinteraksi dengantembolokdan yang mendasariCMM. (Bila Anda menentukanpenyedia kunci utamaatau keyring,AWS Encryption SDKmenciptakan CMM default untuk Anda.) Caching CMM cache kunci data yang mendasari CMM kembali. CMM caching juga memberlakukan ambang keamanan cache yang Anda tetapkan.

Untuk mencegah kunci data yang salah dipilih dari cache, semua CMM caching yang kompatibel mengharuskan properti berikut dari bahan kriptografi yang di-cache sesuai dengan permintaan material.

catatan

ParameterAWS Encryption SDKcache kunci data hanya ketikasuite algoritmemenggunakanFungsi derivasi kunci.

Alur kerja berikut menunjukkan bagaimana permintaan untuk mengenkripsi data diproses dengan dan tanpa caching kunci data. Mereka menunjukkan bagaimana komponen caching yang Anda buat, termasuk cache dan caching CMM, digunakan dalam proses.

Enkripsi data tanpa caching

Untuk mendapatkan bahan enkripsi tanpa caching:

  1. Sebuah aplikasi memintaAWS Encryption SDKmengenkripsi data.

    Permintaan menentukan penyedia kunci master atau keyring. ParameterAWS Encryption SDKmembuat CMM default yang berinteraksi dengan penyedia kunci utama atau keyring Anda.

  2. ParameterAWS Encryption SDKmeminta CMM untuk bahan enkripsi (dapatkan materi kriptografi).

  3. CMM bertanyakeyring(C danJavaScript) ataupenyedia kunci utama(Java dan Python) untuk materi kriptografi. Ini mungkin melibatkan panggilan ke layanan kriptografi, sepertiAWS Key Management Service(AWS KMS). CMM mengembalikan bahan enkripsi keAWS Encryption SDK.

  4. ParameterAWS Encryption SDKmenggunakan kunci data plaintext untuk mengenkripsi data. Ini menyimpan data terenkripsi dan kunci data terenkripsi dalampesan terenkripsi, yang kembali ke pengguna.

Enkripsi data tanpa caching

Mengenkripsi data dengan caching

Untuk mendapatkan materi enkripsi dengan caching kunci data:

  1. Sebuah aplikasi memintaAWS Encryption SDKmengenkripsi data.

    Permintaan menentukancaching manajer bahan kriptografi (caching CMM)yang terkait dengan manajer bahan kriptografi yang mendasari (CMM). Ketika Anda menentukan penyedia kunci master atau keyring,AWS Encryption SDKmenciptakan CMM default untuk Anda.

  2. SDK meminta CMM caching yang ditentukan untuk bahan enkripsi.

  3. Caching CMM meminta materi enkripsi dari cache.

    1. Jika cache menemukan kecocokan, itu memperbarui usia dan menggunakan nilai entri cache yang cocok, dan mengembalikan materi enkripsi cache ke CMM caching.

      Jika entri cache sesuai denganambang batas keamanan, caching CMM mengembalikannya ke SDK. Jika tidak, ia memberitahu cache untuk mengusir entri dan hasil seolah-olah tidak ada kecocokan.

    2. Jika cache tidak dapat menemukan kecocokan yang valid, caching CMM meminta CMM yang mendasarinya untuk menghasilkan kunci data baru.

      CMM yang mendasari mendapatkan materi kriptografi dari keyring (C danJavaScript) atau master key provider (Java dan Python). Ini mungkin melibatkan panggilan ke layanan, sepertiAWS Key Management Service. CMM yang mendasari mengembalikan plaintext dan salinan terenkripsi dari kunci data ke CMM caching.

      Caching CMM menyimpan materi enkripsi baru dalam cache.

  4. CMM caching mengembalikan bahan enkripsi keAWS Encryption SDK.

  5. ParameterAWS Encryption SDKmenggunakan kunci data plaintext untuk mengenkripsi data. Ini menyimpan data terenkripsi dan kunci data terenkripsi dalampesan terenkripsi, yang kembali ke pengguna.

Mengenkripsi data dengan caching kunci data

Membuat cache materi kriptografi

ParameterAWS Encryption SDKmendefinisikan persyaratan untuk cache bahan kriptografi yang digunakan dalam caching kunci data. Ini juga menyediakan cache lokal, yang dapat dikonfigurasi, di-memori,Cache yang baru-baru ini paling sedikit digunakan (LRU). Untuk membuat instance cache lokal, gunakanLocalCryptoMaterialsCachekonstruktor di Jawa dan Python,getLocalCryptographicMaterialsCachefungsi diJavaScript, atauaws_cryptosdk_materials_cache_local_newkonstruktor di C.

Cache lokal mencakup logika untuk manajemen cache dasar, termasuk menambahkan, menggusur, dan mencocokkan entri cache, dan mempertahankan cache. Anda tidak perlu menulis logika manajemen cache kustom. Anda dapat menggunakan cache lokal seperti, menyesuaikannya, atau mengganti cache yang kompatibel.

Ketika Anda membuat cache lokal, Anda menetapkan nyakapasitas, yaitu, jumlah maksimum entri yang dapat disimpan oleh cache. Pengaturan ini membantu Anda merancang cache yang efisien dengan penggunaan kembali kunci data terbatas.

ParameterAWS Encryption SDK for JavadanAWS Encryption SDK for Pythonjuga menyediakancache bahan kriptografi(NullCryptoMaterialsCache). Parameter NullCryptoMaterialsCache mengembalikan miss untuk semuaGEToperasi dan tidak menanggapiPUToperasi. Anda dapat menggunakan NullCryptoMaterialsCache dalam pengujian atau untuk menonaktifkan sementara caching dalam aplikasi yang mencakup kode caching.

DiAWS Encryption SDK, setiap cache bahan kriptografi dikaitkan denganPengelola bahan kriptografi(Caching CMM). Caching CMM mendapat kunci data dari cache, menempatkan kunci data dalam cache, dan memberlakukanambang batas keamananyang Anda tetapkan. Saat Anda membuat caching CMM, Anda menentukan cache yang digunakan dan penyedia kunci CMM atau master yang mendasari yang menghasilkan kunci data yang di-cache.

Membuat pengelola materi kriptografi caching

Untuk mengaktifkan caching kunci data, Anda membuattembolokdan aPengelola bahan kriptografi(Caching CMM). Kemudian, dalam permintaan Anda untuk mengenkripsi atau mendekripsi data, Anda menentukan CMM caching, bukan standarManajer bahan kriptografi (CMM), ataupenyedia kunci utamaataukeyring.

Ada dua jenis CMM. Keduanya mendapatkan kunci data (dan materi kriptografi terkait), tetapi dengan cara yang berbeda, sebagai berikut:

  • Sebuah CMM dikaitkan dengan keyring (C atauJavaScript) atau penyedia kunci master (Java dan Python). Ketika SDK meminta CMM untuk enkripsi atau dekripsi materi, CMM mendapatkan materi dari keyring atau master key provider. Di Java dan Python, CMM menggunakan tombol master untuk menghasilkan, mengenkripsi, atau mendekripsi kunci data. Dalam C danJavaScript, keyring menghasilkan, mengenkripsi, dan mengembalikan materi kriptografi.

  • CMM caching dikaitkan dengan satu cache, sepertiCache lokal, dan CMM yang mendasari. Ketika SDK meminta caching CMM untuk materi kriptografi, caching CMM mencoba untuk mendapatkan mereka dari cache. Jika tidak dapat menemukan kecocokan, caching CMM meminta CMM yang mendasarinya untuk materi. Kemudian, cache materi kriptografi baru sebelum mengembalikannya ke penelepon.

Caching CMM juga memberlakukanambang batas keamananyang Anda tetapkan untuk setiap entri cache. Karena ambang keamanan diatur dan ditegakkan oleh CMM caching, Anda dapat menggunakan cache yang kompatibel, bahkan jika cache tidak dirancang untuk materi sensitif.

Apa yang ada di entri cache kunci data?

Caching kunci data menyimpan kunci data dan materi kriptografi terkait dalam cache. Setiap entri mencakup elemen yang tercantum di bawah ini. Anda mungkin menemukan informasi ini berguna ketika Anda memutuskan apakah akan menggunakan fitur caching kunci data, dan ketika Anda menetapkan ambang keamanan pada pengelola bahan kriptografi caching (caching CMM).

Entri Cached untuk Permintaan Enkripsi

Entri yang ditambahkan ke cache kunci data sebagai hasil dari operasi enkripsi mencakup unsur-unsur berikut:

  • Kunci data plaintext

  • Kunci data terenkripsi (satu atau lebih)

  • Konteks enkripsi

  • Kunci penandatanganan pesan (jika salah satu digunakan)

  • Suite algoritme

  • Metadata, termasuk penghitung penggunaan untuk menegakkan ambang keamanan

Entri Cached untuk Permintaan Dekripsi

Entri yang ditambahkan ke cache kunci data sebagai hasil dari operasi dekripsi mencakup unsur-unsur berikut:

  • Kunci data plaintext

  • Kunci verifikasi tanda tangan (jika digunakan)

  • Metadata, termasuk penghitung penggunaan untuk menegakkan ambang keamanan

Konteks enkripsi: Cara memilih entri cache

Anda dapat menentukan konteks enkripsi dalam setiap permintaan untuk mengenkripsi data. Namun, konteks enkripsi memainkan peran khusus dalam caching kunci data. Ini memungkinkan Anda membuat subkelompok kunci data dalam cache Anda, bahkan ketika kunci data berasal dari caching CMM yang sama.

Konteks enkripsi adalah seperangkat pasangan nilai kunci yang berisi data non-rahasia yang berubah-ubah. Selama enkripsi, konteks enkripsi secara kriptografi terikat pada data terenkripsi sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi data. DiAWS Encryption SDK, konteks enkripsi disimpan dalampesan terenkripsidengan data terenkripsi dan kunci data.

Saat menggunakan cache kunci data, Anda juga dapat menggunakan konteks enkripsi untuk memilih kunci data cache tertentu untuk operasi enkripsi Anda. Konteks enkripsi disimpan dalam entri cache dengan kunci data (itu adalah bagian dari ID entri cache). Kunci data yang di-cache hanya digunakan kembali jika konteks enkripsi cocok. Jika Anda ingin menggunakan kembali kunci data tertentu untuk permintaan enkripsi, tentukan konteks enkripsi yang sama. Jika Anda ingin menghindari kunci data tersebut, tentukan konteks enkripsi yang berbeda.

Konteks enkripsi selalu opsional, tetapi direkomendasikan. Jika Anda tidak menentukan konteks enkripsi dalam permintaan Anda, konteks enkripsi kosong disertakan dalam pengenal entri cache dan dicocokkan dengan setiap permintaan.

Apakah aplikasi saya menggunakan kunci data cache?

Data key caching adalah strategi optimasi yang sangat efektif untuk aplikasi dan beban kerja tertentu. Namun, karena memerlukan beberapa risiko, penting untuk menentukan seberapa efektif kemungkinan untuk situasi Anda, dan kemudian memutuskan apakah manfaat lebih besar daripada risiko.

Karena caching kunci data menggunakan kembali kunci data, efek yang paling jelas adalah mengurangi jumlah panggilan untuk menghasilkan kunci data baru. Ketika caching kunci data diimplementasikan,AWS Encryption SDKpanggilanAWS KMS GenerateDataKeyoperasi hanya untuk membuat kunci data awal dan ketika cache merindukan. Namun, caching meningkatkan kinerja hanya dalam aplikasi yang menghasilkan banyak kunci data dengan karakteristik yang sama, termasuk konteks enkripsi dan algoritma suite yang sama.

Untuk menentukan apakah implementasiAWS Encryption SDKsebenarnya menggunakan kunci data dari cache, coba teknik berikut.

  • Dalam log infrastruktur kunci master Anda, periksa frekuensi panggilan untuk membuat kunci data baru. Ketika caching kunci data efektif, jumlah panggilan untuk membuat kunci baru harus turun terasa. Misalnya, jika Anda menggunakanAWS KMSmaster key provider atau keyring, cariCloudTraillog untukGenerateDataKuncipanggilan.

  • Membandingkanpesan terenkripsibahwaAWS Encryption SDKkembali dalam menanggapi permintaan enkripsi yang berbeda. Misalnya, jika Anda menggunakanAWS Encryption SDK for Java, bandingkanParsedCiphertextobjek dari panggilan enkripsi yang berbeda. DiAWS Encryption SDK for JavaScript, bandingkan isiencryptedDataKeyspropertiMessageHeader. Ketika kunci data digunakan kembali, kunci data terenkripsi dalam pesan terenkripsi identik.