Versi dari AWS 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.

Versi dari AWS Encryption SDK

Implementasi AWS Encryption SDK bahasa menggunakan versi semantik untuk memudahkan Anda mengidentifikasi besarnya perubahan di setiap rilis. Perubahan nomor versi utama, seperti 1. x. x ke 2. x. x, menunjukkan perubahan yang melanggar yang kemungkinan memerlukan perubahan kode dan penerapan yang direncanakan. Memecahkan perubahan dalam versi baru mungkin tidak memengaruhi setiap kasus penggunaan, tinjau catatan rilis untuk melihat apakah Anda terpengaruh. Perubahan dalam versi minor, seperti x .1. x ke x .2. x, selalu kompatibel ke belakang, tetapi mungkin menyertakan elemen usang.

Bila memungkinkan, gunakan versi terbaru dari AWS Encryption SDK dalam bahasa pemrograman pilihan Anda. Kebijakan pemeliharaan dan dukungan untuk setiap versi berbeda antara implementasi bahasa pemrograman. Untuk detail tentang versi yang didukung dalam bahasa pemrograman pilihan Anda, lihat SUPPORT_POLICY.rst file di GitHubrepositorinya.

Ketika peningkatan menyertakan fitur baru yang memerlukan konfigurasi khusus untuk menghindari kesalahan enkripsi atau dekripsi, kami menyediakan versi perantara dan instruksi terperinci untuk menggunakannya. Misalnya, versi 1.7. x dan 1.8. x dirancang untuk menjadi versi transisi yang membantu Anda meningkatkan dari versi lebih awal dari 1.7. x ke versi 2.0. x dan kemudian. Untuk detailnya, lihat MigrasiAWS Encryption SDK.

catatan

X dalam nomor versi mewakili patch dari versi mayor dan minor. Misalnya, versi 1.7. x mewakili semua versi yang dimulai dengan 1.7, termasuk 1.7.1 dan 1.7.9.

Fitur keamanan baru awalnya dirilis dalam AWS Enkripsi CLI versi 1.7. x dan 2.0. x. Namun, AWS Enkripsi CLI versi 1.8. x menggantikan versi 1.7. x dan AWS Enkripsi CLI 2.1. x menggantikan 2.0. x. Untuk detailnya, lihat penasihat keamanan yang relevan di aws-encryption-sdk-clirepositori di. GitHub

Tabel berikut memberikan gambaran tentang perbedaan utama antara versi yang didukung AWS Encryption SDK untuk setiap bahasa pemrograman.

C

Untuk penjelasan rinci tentang semua perubahan, lihat changeLog.md di repositori pada. aws-encryption-sdk-c GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
1.x 1.0 Initial release. Fase akhir dukungan
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see versi 1.7. x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see versi 2.0. x. Ketersediaan Umum (GA)
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.

C #/.NET

Untuk penjelasan rinci tentang semua perubahan, lihat changeLog.md di repositori pada. aws-encryption-sdk-net GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
3.x 3.0 Initial release.

Ketersediaan Umum (GA)

Versi 3.x AWS Encryption SDK untuk .NET akan memasuki mode pemeliharaan pada 13 Mei 2024.

4.x 4.0 Adds support for the AWS KMS Hierarchical keyring, the required encryption context CMM, and asymmetric RSA AWS KMS keyrings. Ketersediaan Umum (GA)

Antarmuka baris perintah (CLI)

Untuk penjelasan rinci tentang semua perubahan, lihat VersiAWSEnkripsi CLI dan ChangeLog.rst di repositori pada. aws-encryption-sdk-cli GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
1.x 1.0 Initial release. Fase akhir dukungan
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see versi 1.7. x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see versi 2.0. x. Fase akhir dukungan
2.1

Menghapus --discovery parameter dan menggantinya dengan discovery atribut --wrapping-keys parameter.

Versi 2.1.0 dari AWS Encryption CLI setara dengan versi 2.0 dalam bahasa pemrograman lainnya.

2.2 Improvements to the message decryption process.
3.x 3.0 Adds support for AWS KMS multi-Region keys. Fase akhir dukungan
4.x 4.0 The AWS Encryption CLI no longer supports Python 2 or Python 3.4. As of major version 4.x of the AWS Encryption CLI, only Python 3.5 or later is supported. Ketersediaan Umum (GA)
4.1 The AWS Encryption CLI no longer supports Python 3.5. As of version 4.1.x of the AWS Encryption CLI, only Python 3.6 or later is supported.
4.2 The AWS Encryption CLI no longer supports Python 3.6. As of version 4.2.x of the AWS Encryption CLI, only Python 3.7 or later is supported.

Java

Untuk penjelasan rinci tentang semua perubahan, lihat ChangeLog.rst di repositori pada. aws-encryption-sdk-java GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
1.x 1.0 Initial release. Fase akhir dukungan
1.3 Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation.
1.6.1

Mencela AwsCrypto.encryptString() dan menggantikannya dengan AwsCrypto.decryptString() dan. AwsCrypto.encryptData() AwsCrypto.decryptData()

1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see versi 1.7. x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see versi 2.0. x.

Ketersediaan Umum (GA)

Versi 2.x AWS Encryption SDK for Java akan memasuki mode pemeliharaan pada tahun 2024.

2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
2.4 Adds support for AWS SDK for Java 2.x.
3.x 3.0

Mengintegrasikan AWS Encryption SDK for Java dengan perpustakaan penyedia materi.

Menambahkan dukungan untuk AWS KMS keyring RSA simetris dan asimetris, gantungan kunci AWS KMS hirarkis, gantungan kunci Raw AES, Raw RSA keyrings, Multi-keyrings, dan konteks enkripsi CMM yang diperlukan.

Ketersediaan Umum (GA)

JavaScript

Untuk penjelasan rinci tentang semua perubahan, lihat changeLog.md di repositori pada. aws-encryption-sdk-javascript GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
1.x 1.0 Initial release. Fase akhir dukungan
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see versi 1.7. x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see versi 2.0. x. Fase akhir dukungan
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
3.x 3.0 Removes CI coverage for Node 10. Upgrades dependencies to no longer support Node 8 and Node 10.

Pemeliharaan

Support untuk versi 3.x AWS Encryption SDK for JavaScript akan berakhir pada 17 Januari 2024.

4.x 4.0 Requires version 3 of the AWS Encryption SDK for JavaScript's kms-klien to use the AWS KMS keyring. Ketersediaan Umum (GA)

Python

Untuk penjelasan rinci tentang semua perubahan, lihat ChangeLog.rst di repositori pada. aws-encryption-sdk-python GitHub

Versi utama Detail Fase siklus hidup versi utama SDK
1.x 1.0 Initial release. Fase akhir dukungan
1.3 Adds support for cryptographic materials manager and data key caching. Moved to deterministic IV generation.
1.7 Updates to the AWS Encryption SDK that help users of earlier versions upgrade to versions 2.0.x and later. For more information, see versi 1.7. x.
2.x 2.0 Updates to the AWS Encryption SDK. For more information, see versi 2.0. x. Fase akhir dukungan
2.2 Improvements to the message decryption process.
2.3 Adds support for AWS KMS multi-Region keys.
3.x 3.0 The AWS Encryption SDK for Python no longer supports Python 2 or Python 3.4. As of major version 3.x of the AWS Encryption SDK for Python, only Python 3.5 or later is supported. Ketersediaan Umum (GA)

Detail versi

Daftar berikut menjelaskan perbedaan utama antara versi yang didukung dariAWS Encryption SDK.

Versi lebih awal dari 1.7. x

catatan

Semua 1. x. x versi AWS Encryption SDK sedang dalam end-of-supportfase. Tingkatkan ke versi terbaru yang tersedia AWS Encryption SDK untuk bahasa pemrograman Anda sesegera mungkin. Untuk meng-upgrade dari AWS Encryption SDK versi lebih awal dari 1.7. x, Anda harus terlebih dahulu meng-upgrade ke 1.7. x. Untuk detailnya, lihat MigrasiAWS Encryption SDK.

Versi yang AWS Encryption SDK lebih awal dari 1.7. x menyediakan fitur keamanan penting, termasuk enkripsi dengan algoritma Advanced Encryption Standard dalam Galois/Counter Mode (AES-GCM), fungsi derivasi extract-and-expand kunci berbasis HMAC (HKDF), penandatanganan, dan kunci enkripsi 256-bit. Namun, versi ini tidak mendukung praktik terbaik yang kami rekomendasikan, termasuk komitmen utama.

Versi 1.7. x

catatan

Semua 1. x. x versi AWS Encryption SDK sedang dalam end-of-supportfase.

Versi 1.7. x dirancang untuk membantu pengguna versi sebelumnya AWS Encryption SDK untuk meningkatkan ke versi 2.0. x dan kemudian. Jika Anda baru mengenalAWS Encryption SDK, Anda dapat melewati versi ini dan mulai dengan versi terbaru yang tersedia dalam bahasa pemrograman Anda.

Versi 1.7. x sepenuhnya kompatibel ke belakang; itu tidak memperkenalkan perubahan yang melanggar atau mengubah perilaku. AWS Encryption SDK Ini juga kompatibel ke depan; ini memungkinkan Anda untuk memperbarui kode Anda sehingga kompatibel dengan versi 2.0. x. Ini termasuk fitur baru, tetapi tidak sepenuhnya mengaktifkannya. Dan itu membutuhkan nilai konfigurasi yang mencegah Anda segera mengadopsi semua fitur baru sampai Anda siap.

Versi 1.7. x mencakup perubahan berikut:

AWS KMSpembaruan penyedia kunci master (wajib)

Versi 1.7. x memperkenalkan konstruktor baru ke AWS Encryption SDK for Java dan AWS Encryption SDK for Python yang secara eksplisit membuat penyedia kunci AWS KMS master baik dalam mode ketat atau penemuan. Versi ini menambahkan perubahan serupa pada antarmuka AWS Encryption SDK baris perintah (CLI). Untuk detailnya, lihat Memperbarui penyedia kunciAWS KMS master.

  • Dalam mode ketat, penyedia kunci AWS KMS master memerlukan daftar kunci pembungkus, dan mereka mengenkripsi dan mendekripsi hanya dengan kunci pembungkus yang Anda tentukan. Ini adalah praktik AWS Encryption SDK terbaik yang memastikan bahwa Anda menggunakan kunci pembungkus yang ingin Anda gunakan.

  • Dalam mode penemuan, penyedia kunci AWS KMS master tidak mengambil kunci pembungkus apa pun. Anda tidak dapat menggunakannya untuk mengenkripsi. Saat mendekripsi, mereka dapat menggunakan kunci pembungkus apa pun untuk mendekripsi kunci data terenkripsi. Namun, Anda dapat membatasi kunci pembungkus yang digunakan untuk dekripsi pada yang khusus. Akun AWS Pemfilteran akun bersifat opsional, tetapi ini adalah praktik terbaik yang kami rekomendasikan.

Konstruktor yang membuat versi sebelumnya dari penyedia kunci AWS KMS master tidak digunakan lagi di versi 1.7. x dan dihapus dalam versi 2.0. x. Konstruktor ini membuat instance penyedia kunci master yang mengenkripsi menggunakan kunci pembungkus yang Anda tentukan. Namun, mereka mendekripsi kunci data terenkripsi menggunakan kunci pembungkus yang mengenkripsi mereka, tanpa memperhatikan kunci pembungkus yang ditentukan. Pengguna mungkin secara tidak sengaja mendekripsi pesan dengan kunci pembungkus yang tidak ingin mereka gunakan, termasuk AWS KMS keys di lain dan Wilayah. Akun AWS

Tidak ada perubahan pada konstruktor untuk kunci AWS KMS master. Saat mengenkripsi dan mendekripsi, kunci AWS KMS master hanya menggunakan yang Anda tentukan. AWS KMS key

AWS KMSpembaruan keyring (opsional)

Versi 1.7. x menambahkan filter baru ke AWS Encryption SDK for C dan AWS Encryption SDK for JavaScript implementasi yang membatasi keyring AWS KMS penemuan ke tertentu. Akun AWS Filter akun baru ini bersifat opsional, tetapi ini adalah praktik terbaik yang kami rekomendasikan. Untuk detailnya, lihat MemperbaruiAWS KMSgantungan kunci.

Tidak ada perubahan pada konstruktor untuk AWS KMS gantungan kunci. AWS KMSGantungan kunci standar berperilaku seperti penyedia kunci utama dalam mode ketat. AWS KMSkeyrings penemuan dibuat secara eksplisit dalam mode penemuan.

Melewati ID kunci untuk AWS KMS Dekripsi

Dimulai pada versi 1.7. x, saat mendekripsi kunci data terenkripsi, AWS Encryption SDK selalu menentukan AWS KMS key dalam panggilannya ke operasi Dekripsi. AWS KMS AWS Encryption SDKMendapatkan nilai ID kunci untuk AWS KMS key dari metadata di setiap kunci data terenkripsi. Fitur ini tidak memerlukan perubahan kode apa pun.

Menentukan ID kunci tidak AWS KMS key diperlukan untuk mendekripsi ciphertext yang dienkripsi di bawah kunci KMS enkripsi simetris, tetapi ini adalah praktik terbaik. AWS KMS Seperti menentukan kunci pembungkus di penyedia kunci Anda, praktik ini memastikan bahwa AWS KMS hanya mendekripsi menggunakan kunci pembungkus yang ingin Anda gunakan.

Dekripsi ciphertext dengan komitmen utama

Versi 1.7. x dapat mendekripsi ciphertext yang dienkripsi dengan atau tanpa komitmen kunci. Namun, itu tidak dapat mengenkripsi ciphertext dengan komitmen utama. Properti ini memungkinkan Anda untuk sepenuhnya menyebarkan aplikasi yang dapat mendekripsi ciphertext yang dienkripsi dengan komitmen utama sebelum mereka menemukan ciphertext semacam itu. Karena versi ini mendekripsi pesan yang dienkripsi tanpa komitmen utama, Anda tidak perlu mengenkripsi ulang ciphertext apa pun.

Untuk menerapkan perilaku ini, versi 1.7. x mencakup pengaturan konfigurasi kebijakan komitmen baru yang menentukan apakah AWS Encryption SDK dapat mengenkripsi atau mendekripsi dengan komitmen utama. Dalam versi 1.7. x, satu-satunya nilai yang valid untuk kebijakan komitmen,ForbidEncryptAllowDecrypt, digunakan dalam semua operasi enkripsi dan dekripsi. Nilai ini AWS Encryption SDK mencegah enkripsi dengan salah satu suite algoritme baru yang menyertakan komitmen utama. Hal ini memungkinkan AWS Encryption SDK untuk mendekripsi ciphertext dengan dan tanpa komitmen utama.

Meskipun hanya ada satu nilai kebijakan komitmen yang valid di versi 1.7. x, kami mengharuskan Anda untuk mengatur nilai ini secara eksplisit saat Anda menggunakan API baru yang diperkenalkan dalam rilis ini. Menyetel nilai secara eksplisit mencegah kebijakan komitmen Anda berubah secara otomatis menjadi require-encrypt-require-decrypt saat Anda meningkatkan ke versi 2.1. x. Sebagai gantinya, Anda dapat memigrasikan kebijakan komitmen Anda secara bertahap.

Suite algoritma dengan komitmen utama

Versi 1.7. x mencakup dua rangkaian algoritma baru yang mendukung komitmen utama. Satu termasuk penandatanganan; yang lain tidak. Seperti suite algoritma yang didukung sebelumnya, kedua suite algoritma baru ini mencakup enkripsi dengan AES-GCM, kunci enkripsi 256-bit, dan fungsi derivasi kunci berbasis HMAC ( extract-and-expand HKDF).

Namun, rangkaian algoritma default yang digunakan untuk enkripsi tidak berubah. Suite algoritma ini ditambahkan ke versi 1.7. x untuk mempersiapkan aplikasi Anda untuk menggunakannya dalam versi 2.0. x dan kemudian.

Perubahan implementasi CMM

Versi 1.7. x memperkenalkan perubahan pada antarmuka Default cryptographic materials manager (CMM) untuk mendukung komitmen utama. Perubahan ini hanya memengaruhi Anda jika Anda telah menulis CMM khusus. Untuk detailnya, lihat dokumentasi API atau GitHub repositori untuk bahasa pemrograman Anda.

Versi 2.0. x

Versi 2.0. x mendukung fitur keamanan baru yang ditawarkan diAWS Encryption SDK, termasuk kunci pembungkus yang ditentukan dan komitmen utama. Untuk mendukung fitur-fitur ini, versi 2.0. x termasuk melanggar perubahan untuk versi sebelumnya dariAWS Encryption SDK. Anda dapat mempersiapkan perubahan ini dengan menerapkan versi 1.7. x. Versi 2.0. x mencakup semua fitur baru yang diperkenalkan di versi 1.7. x dengan penambahan dan perubahan berikut.

catatan

Versi 2. x. x dariAWS Encryption SDK for Python,AWS Encryption SDK for JavaScript, dan CLI AWS Enkripsi sedang dalam fase. end-of-support

Untuk informasi tentang dukungan dan pemeliharaan AWS Encryption SDK versi ini dalam bahasa pemrograman pilihan Anda, lihat SUPPORT_POLICY.rst file di GitHubrepositorinya.

AWS KMSpenyedia kunci master

Konstruktor penyedia kunci AWS KMS master asli yang tidak digunakan lagi di versi 1.7. x dihapus dalam versi 2.0. x. Anda harus secara eksplisit membangun penyedia kunci AWS KMS master dalam mode ketat atau mode penemuan.

Enkripsi dan dekripsi ciphertext dengan komitmen utama

Versi 2.0. x dapat mengenkripsi dan mendekripsi ciphertext dengan atau tanpa komitmen kunci. Perilakunya ditentukan oleh pengaturan kebijakan komitmen. Secara default, selalu mengenkripsi dengan komitmen utama dan hanya mendekripsi ciphertext yang dienkripsi dengan komitmen utama. Kecuali Anda mengubah kebijakan komitmen, ciphertext tidak AWS Encryption SDK akan mendekripsi ciphertext yang dienkripsi oleh versi sebelumnya, termasuk versi 1.7. AWS Encryption SDK x.

penting

Secara default, versi 2.0. x tidak akan mendekripsi ciphertext apa pun yang dienkripsi tanpa komitmen kunci. Jika aplikasi Anda mungkin menemukan ciphertext yang dienkripsi tanpa komitmen utama, tetapkan nilai kebijakan komitmen dengan. AllowDecrypt

Dalam versi 2.0. x, pengaturan kebijakan komitmen memiliki tiga nilai yang valid:

  • ForbidEncryptAllowDecrypt— AWS Encryption SDK Tidak dapat mengenkripsi dengan komitmen utama. Ini dapat mendekripsi ciphertext yang dienkripsi dengan atau tanpa komitmen utama.

  • RequireEncryptAllowDecrypt— AWS Encryption SDK Harus dienkripsi dengan komitmen utama. Ini dapat mendekripsi ciphertext yang dienkripsi dengan atau tanpa komitmen utama.

  • RequireEncryptRequireDecrypt(default) — AWS Encryption SDK Harus dienkripsi dengan komitmen utama. Itu hanya mendekripsi ciphertext dengan komitmen utama.

Jika Anda bermigrasi dari versi sebelumnya AWS Encryption SDK ke versi 2.0. x, tetapkan kebijakan komitmen ke nilai yang memastikan bahwa Anda dapat mendekripsi semua ciphertext yang ada yang mungkin ditemui aplikasi Anda. Anda cenderung menyesuaikan pengaturan ini dari waktu ke waktu.

Versi 2.2. x

Menambahkan dukungan untuk tanda tangan digital dan membatasi kunci data terenkripsi.

catatan

Versi 2. x. x dariAWS Encryption SDK for Python,AWS Encryption SDK for JavaScript, dan CLI AWS Enkripsi sedang dalam fase. end-of-support

Untuk informasi tentang dukungan dan pemeliharaan AWS Encryption SDK versi ini dalam bahasa pemrograman pilihan Anda, lihat SUPPORT_POLICY.rst file di GitHubrepositorinya.

Tanda tangan digital

Untuk meningkatkan penanganan tanda tangan digital saat mendekripsi, AWS Encryption SDK termasuk fitur berikut:

  • Mode non-streaming — mengembalikan teks biasa hanya setelah memproses semua input, termasuk memverifikasi tanda tangan digital jika ada. Fitur ini mencegah Anda menggunakan plaintext sebelum memverifikasi tanda tangan digital. Gunakan fitur ini setiap kali Anda mendekripsi data yang dienkripsi dengan tanda tangan digital (rangkaian algoritme default). Misalnya, karena CLI AWS Enkripsi selalu memproses data dalam mode streaming, gunakan - -buffer parameter saat mendekripsi ciphertext dengan tanda tangan digital.

  • Mode dekripsi khusus tanpa tanda tangan — fitur ini hanya mendekripsi ciphertext yang tidak ditandatangani. Jika dekripsi menemukan tanda tangan digital dalam ciphertext, operasi gagal. Gunakan fitur ini untuk menghindari pemrosesan plaintext secara tidak sengaja dari pesan yang ditandatangani sebelum memverifikasi tanda tangan.

Membatasi kunci data terenkripsi

Anda dapat membatasi jumlah kunci data terenkripsi dalam pesan terenkripsi. Fitur ini dapat membantu Anda mendeteksi penyedia kunci master atau keyring yang salah konfigurasi saat mengenkripsi, atau mengidentifikasi ciphertext berbahaya saat mendekripsi.

Anda harus membatasi kunci data terenkripsi saat mendekripsi pesan dari sumber yang tidak tepercaya. Ini mencegah panggilan yang tidak perlu, mahal, dan berpotensi lengkap ke infrastruktur utama Anda.

Versi 2.3. x

Menambahkan dukungan untuk kunci AWS KMS Multi-wilayah. Untuk detailnya, lihat Menggunakan Multi-region AWS KMS keys.

catatan

CLI AWS Enkripsi mendukung kunci Multi-wilayah yang dimulai pada versi 3.0. x.

Versi 2. x. x dariAWS Encryption SDK for Python,AWS Encryption SDK for JavaScript, dan CLI AWS Enkripsi sedang dalam fase. end-of-support

Untuk informasi tentang dukungan dan pemeliharaan AWS Encryption SDK versi ini dalam bahasa pemrograman pilihan Anda, lihat SUPPORT_POLICY.rst file di GitHubrepositorinya.