Praktik terbaik untukAWS Encryption SDK - AWS Encryption SDK

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

Praktik terbaik untukAWS Encryption SDK

ParameterAWS Encryption SDKdirancang untuk memudahkan Anda melindungi data Anda menggunakan standar industri dan praktik terbaik. Meskipun banyak praktik terbaik dipilih untuk Anda dalam nilai default, beberapa praktik bersifat opsional tetapi direkomendasikan kapan pun praktis.

Gunakan versi terbaru

Saat Anda mulai menggunakanAWS Encryption SDK, gunakan versi terbaru yang ditawarkan dalam pilihan Andabahasa pemrograman. Jika Anda telah menggunakanAWS Encryption SDK, tingkatkan ke setiap versi terbaru sesegera mungkin. Ini memastikan bahwa Anda menggunakan konfigurasi yang disarankan dan memanfaatkan properti keamanan baru untuk melindungi data Anda. Untuk detail tentang versi yang didukung, termasuk panduan untuk migrasi dan penerapan, lihatSupport dan pemeliharaandanVersi dari AWS Encryption SDK.

Jika versi baru menghentikan elemen dalam kode Anda, gantilah sesegera mungkin. Peringatan penghentian dan komentar kode biasanya merekomendasikan alternatif yang baik.

Untuk membuat peningkatan signifikan lebih mudah dan kurang rentan terhadap kesalahan, kami kadang-kadang memberikan rilis sementara atau transisi. Gunakan rilis ini, dan dokumentasi yang menyertainya, untuk memastikan bahwa Anda dapat meningkatkan aplikasi Anda tanpa mengganggu alur kerja produksi Anda.

Gunakan nilai default

ParameterAWS Encryption SDKmendesain praktik terbaik ke dalam nilai defaultnya. Sebisa mungkin, gunakan. Untuk kasus di mana default tidak praktis, kami menyediakan alternatif, seperti rangkaian algoritma tanpa penandatanganan. Kami juga memberikan kesempatan kepada pengguna tingkat lanjut untuk kustomisasi, seperti gantungan kunci khusus, penyedia kunci utama, dan manajer materi kriptografi (CMM). Gunakan alternatif lanjutan ini dengan hati-hati dan minta pilihan Anda diverifikasi oleh teknisi keamanan bila memungkinkan.

Gunakan konteks enkripsi menggunakan konteks enkripsi

Untuk meningkatkan keamanan operasi kriptografi Anda, sertakankonteks enkripsidengan nilai yang berarti dalam semua permintaan untuk mengenkripsi data. Menggunakan konteks enkripsi adalah opsional, tetapi ini adalah praktik terbaik kriptografi yang kami rekomendasikan. Konteks enkripsi menyediakan data terotentikasi tambahan (AAD) untuk enkripsi terotentikasi diAWS Encryption SDK. Meskipun bukan rahasia, konteks enkripsi dapat membantu Andamelindungi integritas dan keasliandata terenkripsi Anda.

DiAWS Encryption SDK, Anda menentukan konteks enkripsi hanya saat mengenkripsi. Saat mendekripsi,AWS Encryption SDKmenggunakan konteks enkripsi di header pesan terenkripsi yangAWS Encryption SDKkembali. Sebelum aplikasi mengembalikan data teks biasa, verifikasi bahwa konteks enkripsi yang Anda gunakan untuk mengenkripsi pesan disertakan dalam konteks enkripsi yang digunakan untuk mendekripsi pesan. Untuk informasi lebih lanjut, lihat contoh dalam bahasa pemrograman Anda.

Bila Anda menggunakan antarmuka baris perintah,AWS Encryption SDKmemverifikasi konteks enkripsi untuk Anda.

Lindungi kunci pembungkus Anda

ParameterAWS Encryption SDKmenghasilkan kunci data unik untuk mengenkripsi setiap pesan teks biasa. Kemudian mengenkripsi kunci data dengan kunci pembungkus yang Anda berikan. Jika kunci pembungkus Anda hilang atau dihapus, data terenkripsi Anda tidak dapat dipulihkan. Jika kunci Anda tidak diamankan, data Anda mungkin rentan.

Gunakan kunci pembungkus yang dilindungi oleh infrastruktur kunci yang aman, sepertiAWS Key Management Service(AWS KMS). Saat menggunakan kunci AES mentah atau RSA mentah, gunakan sumber keacakan dan penyimpanan tahan lama yang memenuhi persyaratan keamanan Anda. Membuat dan menyimpan kunci pembungkus di modul keamanan perangkat keras (HSM), atau layanan yang menyediakan HSM, sepertiAWS CloudHSM, adalah praktik terbaik.

Gunakan mekanisme otorisasi infrastruktur utama Anda untuk membatasi akses ke kunci pembungkus Anda hanya untuk pengguna yang memerlukannya. Menerapkan prinsip-prinsip praktik terbaik, seperti hak istimewa paling sedikit. Saat menggunakanAWS KMS keys, gunakan kebijakan kunci dan kebijakan IAM yang menerapkanprinsip praktik terbaik.

Tentukan kunci pembungkus Anda

Itu selalu merupakan praktik terbaik untuktentukan kunci pembungkus Andasecara eksplisit saat mendekripsi, serta mengenkripsi. Ketika Anda melakukannya,AWS Encryption SDKhanya menggunakan kunci yang Anda tentukan. Praktik ini memastikan bahwa Anda hanya menggunakan kunci enkripsi yang Anda inginkan. UntukAWS KMSkunci pembungkus, itu juga meningkatkan kinerja dengan mencegah Anda dari secara tidak sengaja menggunakan kunci yang berbedaAkun AWSatau Wilayah, atau mencoba mendekripsi dengan kunci yang tidak diizinkan untuk Anda gunakan.

Saat mengenkripsi, gantungan kunci dan penyedia kunci utama yangAWS Encryption SDKpersediaan mengharuskan Anda menentukan kunci pembungkus. Mereka menggunakan semua dan hanya kunci pembungkus yang Anda tentukan. Anda juga diminta untuk menentukan kunci pembungkus saat mengenkripsi dan mendekripsi dengan keyrings AES mentah, keyrings RSA mentah, dan JCEMasterKeys.

Namun, saat mendekripsi denganAWS KMSkeyrings dan master key provider, Anda tidak diharuskan untuk menentukan kunci pembungkus. ParameterAWS Encryption SDKbisa mendapatkan pengenal kunci dari metadata kunci data terenkripsi. Tetapi menentukan kunci pembungkus adalah praktik terbaik yang kami rekomendasikan.

Untuk mendukung praktik terbaik ini saat bekerja denganAWS KMSkunci pembungkus, sebaiknya lakukan yang berikut:

  • GunakanAWS KMSkeyrings yang menentukan kunci pembungkus. Saat mengenkripsi dan mendekripsi, keyrings ini hanya menggunakan kunci pembungkus yang ditentukan yang Anda tentukan.

  • Saat menggunakanAWS KMSkunci master dan penyedia kunci master, gunakan konstruktor mode ketat yang diperkenalkan diversi 1.7.xdariAWS Encryption SDK. Mereka membuat penyedia yang mengenkripsi dan mendekripsi hanya dengan kunci pembungkus yang Anda tentukan. Konstruktor untuk penyedia kunci master yang selalu mendekripsi dengan kunci pembungkus tidak berlaku lagi di versi 1.7.xdan dihapus di versi 2.0.x.

Saat menentukanAWS KMSkunci pembungkus untuk mendekripsi tidak praktis, Anda dapat menggunakan penyedia penemuan. ParameterAWS Encryption SDKdi C dan JavaScript dukunganAWS KMSkeyrings Penemuan. Penyedia kunci master dengan mode penemuan tersedia untuk Java dan Python dalam versi 1.7.xdan nantinya. Penyedia penemuan ini, yang hanya digunakan untuk mendekripsi denganAWS KMSkunci pembungkus, secara eksplisit mengarahkanAWS Encryption SDKuntuk menggunakan kunci pembungkus apa pun yang mengenkripsi kunci data.

Jika Anda harus menggunakan penyedia penemuan, gunakanDiscovery Filterfitur untuk membatasi kunci pembungkus yang mereka gunakan. Misalnya,AWS KMSkeyring penemuan regionalhanya menggunakan kunci pembungkus di tertentuWilayah AWS. Anda juga dapat mengonfigurasiAWS KMSgantungan kunci danAWS KMS penyedia kunci utama utamauntuk hanya menggunakankunci pembungkuskhususnyaAkun AWS. Juga, seperti biasa, gunakan kebijakan kunci dan kebijakan IAM untuk mengendalikan akses ke AndaAWS KMSkunci pembungkus.

Gunakan tanda tangan digital

Ini adalah praktik terbaik untuk menggunakan rangkaian algoritma dengan penandatanganan. Tanda tangan digitalmemverifikasi pengirim pesan berwenang untuk mengirim pesan dan melindungi integritas pesan. Semua versiAWS Encryption SDKmenggunakan suite algoritma dengan penandatanganan secara default.

Jika persyaratan keamanan Anda tidak menyertakan tanda tangan digital, Anda dapat memilih rangkaian algoritme tanpa tanda tangan digital. Namun, sebaiknya gunakan tanda tangan digital, terutama ketika satu kelompok pengguna mengenkripsi data dan serangkaian pengguna yang berbeda mendekripsi data tersebut.

Gunakan komitmen kunci menggunakan kunci

Ini adalah praktik terbaik untuk menggunakan fitur keamanan komitmen utama. Dengan memverifikasi identitas unikkunci datayang mengenkripsi data Anda,Komitmen kunci kuncimencegah Anda mendekripsi ciphertext apa pun yang mungkin menghasilkan lebih dari satu pesan teks biasa.

ParameterAWS Encryption SDKmemberikan dukungan penuh untuk mengenkripsi dan mendekripsi dengan komitmen kunci yang dimulaiversi 2.0.x. Secara default, semua pesan Anda dienkripsi dan didekripsi dengan komitmen utama. Versi 1.7.xdariAWS Encryption SDKdapat mendekripsi ciphertexts dengan komitmen kunci. Hal ini dirancang untuk membantu pengguna versi sebelumnya menyebarkan versi 2.0.xberhasil.

Support untuk komitmen kunci termasuksuite algoritma barudanformat pesan baruyang menghasilkan ciphertext hanya 30 byte lebih besar dari ciphertext tanpa komitmen kunci. Desain meminimalkan dampaknya terhadap kinerja sehingga sebagian besar pengguna dapat menikmati manfaat dari komitmen utama. Jika aplikasi Anda sangat sensitif terhadap ukuran dan kinerja, Anda mungkin memutuskan untuk menggunakankebijakan komitmenpengaturan untuk menonaktifkan komitmen kunci atau memungkinkanAWS Encryption SDKuntuk mendekripsi pesan tanpa komitmen, tetapi lakukan hanya jika Anda harus.

Batasi jumlah kunci data terenkripsi

Ini adalah praktik terbaik untukbatasi jumlah kunci data terenkripsidalam pesan yang Anda dekripsi, terutama pesan dari sumber yang tidak dipercaya. Mendekripsi pesan dengan banyak kunci data terenkripsi yang tidak dapat Anda dekripsi dapat menyebabkan penundaan yang diperpanjang, menghabiskan biaya, membatasi aplikasi Anda, dan orang lain yang berbagi akun Anda, dan berpotensi menghabiskan infrastruktur utama Anda. Tanpa batas, pesan terenkripsi dapat memiliki hingga 65.535 (2^16 - 1) kunci data terenkripsi. Untuk detailnya, lihat Membatasi kunci data terenkripsi.

Untuk informasi lebih lanjut tentangAWS Encryption SDKfitur keamanan yang mendasari praktik terbaik ini, lihatEnkripsi sisi klien yang ditingkatkan: Eksplisit KeyIds dan komitmen kuncidi dalamAWSBlog Keamanan.