Pertanyaan umum - AWS Encryption SDK

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

Pertanyaan umum

BagaimanaAWS Encryption SDKberbeda dariAWSSDK?

ParameterAWSSDKmenyediakan perpustakaan untuk berinteraksi dengan Amazon Web Services (AWS), termasukAWS Key Management Service(AWS KMS). Beberapa implementasi bahasaAWS Encryption SDK, sepertiAWS Encryption SDKuntuk .NET, selalu membutuhkanAWSSDK dalam bahasa pemrograman yang sama. Implementasi bahasa lain memerlukan yang sesuaiAWSSDK hanya bila Anda menggunakanAWS KMSkunci di keyrings atau master key provider Anda. Untuk detailnya, lihat topik tentang bahasa pemrograman AndaAWS Encryption SDKbahasa pemrograman.

Anda dapat menggunakanAWSSDK untuk berinteraksiAWS KMS, termasuk mengenkripsi dan mendekripsi sejumlah kecil data (hingga 4.096 byte dengan kunci enkripsi simetris) dan menghasilkan kunci data untuk enkripsi sisi klien. Namun, ketika Anda membuat kunci data, Anda harus mengelola seluruh proses enkripsi dan dekripsi, termasuk mengenkripsi data Anda dengan kunci data di luarAWS KMS, dengan aman membuang kunci data plaintext, menyimpan kunci data terenkripsi, dan kemudian mendekripsi kunci data dan mendekripsi data Anda. ParameterAWS Encryption SDKmenangani proses ini untuk Anda.

ParameterAWS Encryption SDKmenyediakan perpustakaan yang mengenkripsi dan mendekripsi data menggunakan standar industri dan praktik terbaik. Ini menghasilkan kunci data, mengenkripsinya di bawah kunci pembungkus yang Anda tentukan, dan mengembalikanpesan terenkripsi, objek data portabel yang mencakup data terenkripsi dan kunci data terenkripsi yang Anda butuhkan untuk mendekripsi itu. Ketika saatnya untuk mendekripsi, Anda meneruskan pesan terenkripsi dan setidaknya salah satu kunci pembungkus (opsional), danAWS Encryption SDKmengembalikan data plaintext Anda.

Anda dapat menggunakanAWS KMS keyssebagai kunci pembungkus diAWS Encryption SDK, tetapi tidak diperlukan. Anda dapat menggunakan kunci enkripsi yang dihasilkan dan kunci tersebut dari manajer kunci atau modul keamanan perangkat keras lokal. Anda dapat menggunakanAWS Encryption SDKbahkan jika Anda tidak memilikiAWSakun.

BagaimanaAWS Encryption SDKberbeda dengan klien enkripsi Amazon S3?

ParameterKlien enkripsi Amazon S3diAWSSDK menyediakan enkripsi dan dekripsi untuk data yang Anda simpan di Amazon Simple Storage Service (Amazon S3). Klien ini digabungkan erat ke Amazon S3 dan dimaksudkan untuk digunakan hanya dengan data yang disimpan di sana.

ParameterAWS Encryption SDKmenyediakan enkripsi dan dekripsi untuk data yang dapat Anda simpan di mana saja. ParameterAWS Encryption SDKdan klien enkripsi Amazon S3 tidak kompatibel karena mereka menghasilkan ciphertext dengan format data yang berbeda.

Algoritma kriptografi mana yang didukung olehAWS Encryption SDK, dan mana yang default?

ParameterAWS Encryption SDKmenggunakan algoritma simetris Advanced Encryption Standard (AES) di Galois/Counter Mode (GCM), yang dikenal sebagai AES-GCM, untuk mengenkripsi data Anda. Ini memungkinkan Anda memilih dari beberapa algoritma simetris dan asimetris untuk mengenkripsi kunci data yang mengenkripsi data Anda.

Untuk AES-GCM, suite algoritma default adalah AES-GCM dengan kunci 256-bit, derivasi kunci (HKDF),tanda tangan digital, danKomitmen kunci.AWS Encryption SDKjuga mendukung 192-bit, dan 128-bit kunci enkripsi dan algoritma enkripsi tanpa tanda tangan digital dan komitmen kunci.

Dalam semua kasus, panjang vektor inisialisasi (IV) adalah 12 byte; panjang tag otentikasi adalah 16 byte. Secara default, SDK menggunakan kunci data sebagai masukan ke berbasis HMAC extract-and-expand fungsi derivasi kunci (HKDF) untuk mendapatkan kunci enkripsi AES-GCM, dan juga menambahkan tanda tangan Elliptic Curve Digital Signature Algorithm (ECDSA).

Untuk informasi tentang memilih algoritma mana yang akan digunakan, lihatSuite algoritme yang didukung.

Untuk detail implementasi tentang algoritma yang didukung, lihatReferensi algoritma.

Bagaimana vektor inisialisasi (IV) dihasilkan dan di mana disimpan?

ParameterAWS Encryption SDKmenggunakan metode deterministik untuk membangun nilai IV yang berbeda untuk setiap frame. Prosedur ini menjamin bahwa IV tidak pernah diulang dalam pesan. (Sebelum versi 1.3.0AWS Encryption SDK for JavadanAWS Encryption SDK for Python, yangAWS Encryption SDKsecara acak menghasilkan nilai IV unik untuk setiap frame.)

IV disimpan dalam pesan terenkripsi bahwaAWS Encryption SDKkembali. Untuk informasi lain, lihat AWS Encryption SDK referensi format pesan.

Bagaimana setiap kunci data dihasilkan, dienkripsi, dan didekripsi?

Metode ini tergantung pada keyring atau master key provider yang Anda gunakan.

ParameterAWS KMSkeyrings dan master key provider diAWS Encryption SDKmenggunakanAWS KMS GenerateDataKeyOperasi API untuk menghasilkan setiap kunci data dan mengenkripsinya di bawah kunci pembungkusnya. Untuk mengenkripsi salinan kunci data di bawah kunci KMS tambahan, mereka menggunakanAWS KMS Encryptoperasi. Untuk mendekripsi kunci data, mereka menggunakanAWS KMS Decryptoperasi. Untuk detailnya, lihatAWS KMSkeyringdiAWS Encryption SDKSpesifikasi di GitHub.

Keyrings lain menghasilkan kunci data, mengenkripsi, dan mendekripsi menggunakan metode praktik terbaik untuk setiap bahasa pemrograman. Untuk detailnya, lihat spesifikasi keyring atau master key provider diBagian kerangka kerjadariAWS Encryption SDKSpesifikasi di GitHub.

Bagaimana cara melacak kunci data yang digunakan untuk mengenkripsi data saya?

ParameterAWS Encryption SDKmelakukan hal ini untuk Anda. Ketika Anda mengenkripsi data, SDK mengenkripsi kunci data dan menyimpan kunci terenkripsi bersama dengan data terenkripsi dipesan terenkripsibahwa ia kembali. Ketika Anda mendekripsi data,AWS Encryption SDKmengekstrak kunci data terenkripsi dari pesan terenkripsi, dan kemudian menggunakannya untuk mendekripsi data.

BagaimanaAWS Encryption SDKmenyimpan kunci data terenkripsi dengan data terenkripsi mereka?

Operasi enkripsi diAWS Encryption SDKmengembalikanpesan terenkripsi, struktur data tunggal yang berisi data terenkripsi dan kunci data terenkripsi. Format pesan terdiri dari setidaknya dua bagian: aheaderdanbadan. Header pesan berisi kunci data terenkripsi dan informasi tentang bagaimana badan pesan terbentuk. Badan pesan berisi data terenkripsi. Jika suite algoritma termasuktanda tangan digital, format pesan mencakupkaki halamanyang berisi tanda tangannya. Untuk informasi selengkapnya, lihat AWS Encryption SDK referensi format pesan.

Berapa biaya overheadAWS Encryption SDKformat pesan menambah data terenkripsi saya?

Jumlah overhead yang ditambahkan olehAWS Encryption SDKtergantung pada beberapa faktor, termasuk yang berikut:

  • Ukuran data plaintext

  • Manakah dari algoritma yang didukung digunakan

  • Apakah data yang diautentikasi tambahan (AAD) disediakan, dan panjang AAD tersebut

  • Jumlah dan jenis kunci pembungkus atau kunci master

  • Ukuran frame (ketikadata berbingkaidigunakan)

Saat Anda menggunakanAWS Encryption SDKdengan konfigurasi default (satuAWS KMS keysebagai kunci pembungkus (atau kunci utama), tidak ada AAD, data nonframed, dan algoritma enkripsi dengan penandatanganan), overhead adalah sekitar 600 byte. Secara umum, Anda bisa berasumsi bahwaAWS Encryption SDKmenambahkan overhead 1 KB atau kurang, tidak termasuk AAD yang disediakan. Untuk informasi selengkapnya, lihat AWS Encryption SDK referensi format pesan.

Dapatkah saya menggunakan penyedia kunci utama saya sendiri?

Ya. Rincian implementasi bervariasi tergantung pada mana daribahasa pemrograman yang didukungAnda menggunakan. Namun, semua bahasa yang didukung memungkinkan Anda untuk menentukan kustomManajer bahan kriptografi (CMM), penyedia kunci utama, keyrings, kunci master, dan kunci pembungkus.

Dapatkah saya mengenkripsi data di bawah lebih dari satu kunci pembungkus?

Ya. Anda dapat mengenkripsi kunci data dengan kunci pembungkus tambahan (atau kunci utama) untuk menambahkan redundansi ketika kunci berada di wilayah yang berbeda atau tidak tersedia untuk dekripsi.

Untuk mengenkripsi data di bawah beberapa kunci pembungkus, buat keyring atau master key provider dengan beberapa kunci pembungkus. Ketika bekerja dengan keyrings, Anda dapat membuatkeyring tunggal dengan beberapa tombol pembungkusataumulti-keyring.

Ketika Anda mengenkripsi data dengan beberapa kunci pembungkus,AWS Encryption SDKmenggunakan satu kunci pembungkus untuk menghasilkan kunci data plaintext. Kunci data unik dan matematis tidak terkait dengan kunci pembungkus. Operasi tersebut mengembalikan kunci data plaintext dan salinan kunci data yang dienkripsi dengan kunci pembungkus. Kemudian metode enkripsi, mengenkripsi kunci data dengan kunci pembungkus lainnya. Yang dihasilkanpesan terenkripsitermasuk data terenkripsi dan satu kunci data terenkripsi untuk setiap kunci pembungkus.

Pesan terenkripsi dapat didekripsi dengan menggunakan salah satu kunci pembungkus yang digunakan dalam operasi enkripsi. ParameterAWS Encryption SDKmenggunakan kunci pembungkus untuk mendekripsi kunci data terenkripsi. Kemudian, ini menggunakan kunci data plaintext untuk mendekripsi data.

Jenis data mana yang bisa saya enkripsi denganAWS Encryption SDK?

Kebanyakan implementasi bahasa pemrogramanAWS Encryption SDKdapat mengenkripsi byte mentah (array byte), I/O stream (byte stream), dan string. ParameterAWS Encryption SDKuntuk .NET tidak mendukung aliran I/O. Kami menyediakan contoh kode untuk masing-masingbahasa pemrograman yang didukung.

BagaimanaAWS Encryption SDKmengenkripsi dan mendekripsi aliran input/output (I/O)?

ParameterAWS Encryption SDKmenciptakan aliran enkripsi atau mendekripsi yang membungkus aliran I/O yang mendasarinya. Aliran enkripsi atau dekripsi melakukan operasi kriptografi pada panggilan baca atau tulis. Sebagai contoh, dapat membaca data plaintext pada aliran yang mendasari dan mengenkripsinya sebelum mengembalikan hasilnya. Atau dapat membaca ciphertext dari aliran yang mendasari dan mendekripsi sebelum mengembalikan hasilnya. Kami menyediakan contoh kode untuk mengenkripsi dan mendekripsi aliran untuk masing-masingbahasa pemrograman yang didukungyang mendukung streaming.

ParameterAWS Encryption SDKuntuk .NET tidak mendukung aliran I/O.