Referensi - AWS Enkripsi Database SDK

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

Referensi

Pustaka enkripsi sisi klien kami diubah namanya menjadi Enkripsi AWS Database. SDK Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB.

Topik berikut memberikan rincian teknis untuk Enkripsi AWS DatabaseSDK.

Format deskripsi bahan

Deskripsi materi berfungsi sebagai header untuk catatan terenkripsi. Saat Anda mengenkripsi dan menandatangani bidang dengan Enkripsi AWS DatabaseSDK, enkripsi mencatat deskripsi materi saat merakit materi kriptografi dan menyimpan deskripsi materi di bidang baru (aws_dbe_head) yang ditambahkan enkripsi ke catatan Anda. Deskripsi materi adalah struktur data berformat portabel yang berisi kunci data terenkripsi dan informasi tentang bagaimana catatan dienkripsi dan ditandatangani. Tabel berikut menjelaskan nilai-nilai yang membentuk deskripsi material. Byte ditambahkan dalam urutan yang ditunjukkan.

Versi

Versi format aws_dbe_head bidang ini.

Tanda Tangan Diaktifkan

Mengkodekan apakah tanda tangan ECDSA digital diaktifkan untuk catatan ini.

Nilai byte Arti
0x01 ECDSAtanda tangan digital diaktifkan (default)
0x00 ECDSAtanda tangan digital dinonaktifkan
Rekam ID

Nilai 256-bit yang dihasilkan secara acak yang mengidentifikasi catatan. ID Rekaman:

  • Secara unik mengidentifikasi catatan terenkripsi.

  • Mengikat deskripsi material ke catatan terenkripsi.

Enkripsi Legenda

Deskripsi serial bidang yang diautentikasi dienkripsi. Encrypt Legend digunakan untuk menentukan bidang apa metode dekripsi harus mencoba untuk mendekripsi.

Nilai byte Arti
0x65 ENCRYPT_AND_SIGN
0x73 SIGN_ONLY

Encrypt Legend diserialisasikan sebagai berikut:

  1. Secara leksikografis dengan urutan byte yang mewakili jalur kanonik mereka.

  2. Untuk setiap bidang, secara berurutan, tambahkan salah satu nilai byte yang ditentukan di atas untuk menunjukkan apakah bidang itu harus dienkripsi.

Panjang Konteks Enkripsi

Panjang konteks enkripsi. Ini adalah nilai 2-byte yang ditafsirkan sebagai integer unsigned 16-bit. Panjang maksimum adalah 65.535 byte.

Konteks Enkripsi

Satu set pasangan nama-nilai yang berisi data otentikasi tambahan yang arbitrer dan non-rahasia.

Ketika tanda tangan ECDSA digital diaktifkan, konteks enkripsi berisi pasangan kunci-nilai. {"aws-crypto-footer-ecdsa-key": Qtxt} Qtxtmewakili titik kurva elips yang Q dikompresi menurut SEC1 versi 2.0 dan kemudian dikodekan base64.

Hitungan Kunci Data Terenkripsi

Jumlah kunci data terenkripsi. Ini adalah nilai 1-byte ditafsirkan sebagai 8-bit unsigned integer yang menentukan jumlah kunci data terenkripsi. Jumlah maksimum kunci data terenkripsi di setiap catatan adalah 255.

Kunci Data Terenkripsi

Urutan kunci data terenkripsi. Panjang urutan ditentukan oleh jumlah kunci data terenkripsi dan panjang masing-masing. Urutan berisi setidaknya satu kunci data terenkripsi.

Tabel berikut menjelaskan bidang yang membentuk setiap kunci data terenkripsi. Byte ditambahkan dalam urutan yang ditunjukkan.

Struktur Kunci Data Terenkripsi
Bidang Panjang dalam byte
Key Provider ID Length 2
Key Provider ID Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Panjang ID Penyedia Kunci).
Key Provider Information Length 2
Key Provider Information Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Panjang Informasi Penyedia Kunci).
Encrypted Data Key Length 2
Encrypted Data Key Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Panjang Kunci Data Terenkripsi).
Panjang ID Penyedia Kunci

Panjang pengidentifikasi penyedia kunci. Ini adalah nilai 2-byte yang ditafsirkan sebagai integer unsigned 16-bit yang menentukan jumlah byte yang berisi ID penyedia kunci.

ID Penyedia Kunci

Pengidentifikasi penyedia kunci. Ini digunakan untuk menunjukkan penyedia kunci data terenkripsi dan dimaksudkan untuk dapat diperluas.

Panjang Informasi Penyedia Kunci

Panjang informasi penyedia kunci. Ini adalah nilai 2-byte yang ditafsirkan sebagai integer unsigned 16-bit yang menentukan jumlah byte yang berisi informasi penyedia kunci.

Informasi Penyedia Utama

Informasi penyedia utama. Itu ditentukan oleh penyedia kunci.

Bila Anda menggunakan AWS KMS keyring, nilai ini berisi Amazon Resource Name (ARN) dari AWS KMS key.

Panjang Kunci Data Terenkripsi

Panjang kunci data terenkripsi. Ini adalah nilai 2-byte ditafsirkan sebagai 16-bit unsigned integer yang menentukan jumlah byte yang berisi kunci data terenkripsi.

Kunci Data Terenkripsi

Kunci data terenkripsi. Ini adalah kunci data yang dienkripsi oleh penyedia kunci.

Rekam Komitmen

Hash 256-bit Hash Based Message Authentication Code (HMAC) dihitung atas semua byte deskripsi material sebelumnya menggunakan kunci komit.

AWS KMS Rincian teknis keyring hierarkis

Keyring AWS KMS Hierarkis menggunakan kunci data unqiue untuk mengenkripsi setiap bidang dan mengenkripsi setiap kunci data dengan kunci pembungkus unik yang berasal dari kunci cabang aktif. Ini menggunakan derivasi kunci dalam mode counter dengan fungsi pseudorandom dengan HMAC SHA -256 untuk menurunkan kunci pembungkus 32 byte dengan input berikut.

Keyring Hierarkis menggunakan kunci pembungkus turunan untuk mengenkripsi salinan kunci data teks biasa menggunakan AES - GCM -256 dengan tag otentikasi 16 byte dan input berikut.

  • Kunci pembungkus turunan digunakan sebagai kunci AES - GCM cipher

  • Kunci data digunakan sebagai AES - GCM pesan

  • Vektor inisialisasi acak 12 byte (IV) digunakan sebagai AES - GCM IV

  • Data tambahan yang diautentikasi (AAD) yang berisi nilai serial berikut.

    Nilai Panjang dalam byte Ditafsirkan sebagai
    "aws-kms-hierarchy" 17 UTF-8 dikodekan
    Pengidentifikasi kunci cabang Variabel UTF-8 dikodekan
    Versi kunci cabang 16 UTF-8 dikodekan
    Konteks enkripsi Variabel UTF-8 pasangan nilai kunci yang dikodekan