Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Encryption SDK referensi format pesan
|
Informasi di halaman ini adalah referensi untuk membangun perpustakaan enkripsi Anda sendiri yang kompatibel dengan AWS Encryption SDK. Jika Anda tidak membangun pustaka enkripsi Anda sendiri yang kompatibel, Anda mungkin tidak memerlukan informasi ini. Untuk menggunakan salah satu AWS Encryption SDK bahasa pemrograman yang didukung, lihatBahasa pemrograman. Untuk spesifikasi yang mendefinisikan elemen-elemen AWS Encryption SDK implementasi yang tepat, lihat AWS Encryption SDK Spesifikasi |
Operasi enkripsi dalam AWS Encryption SDK mengembalikan struktur data tunggal atau pesan terenkripsi yang berisi data terenkripsi (ciphertext) dan semua kunci data terenkripsi. Untuk memahami struktur data ini, atau untuk membangun pustaka yang membaca dan menulisnya, Anda perlu memahami format pesan.
Format pesan terdiri dari setidaknya dua bagian: header dan body. Dalam beberapa kasus, format pesan terdiri dari bagian ketiga, footer. Format pesan mendefinisikan urutan byte yang berurutan dalam urutan byte jaringan, juga disebut format big-endian. Format pesan dimulai dengan header, diikuti oleh badan, diikuti oleh footer (bila ada satu).
Suite algoritma didukung oleh AWS Encryption SDK penggunaan salah satu dari dua versi format pesan. Suite algoritma tanpa komitmen kunci menggunakan format pesan versi 1. Suite algoritma dengan komitmen utama menggunakan format pesan versi 2.
Struktur header
Header pesan berisi kunci data terenkripsi dan informasi tentang bagaimana badan pesan terbentuk. Tabel berikut menjelaskan bidang yang membentuk header dalam format pesan versi 1 dan 2. Byte ditambahkan dalam urutan yang ditunjukkan.
Nilai Not present menunjukkan bahwa bidang tidak ada dalam versi format pesan tersebut. Teks tebal menunjukkan nilai yang berbeda di setiap versi.
catatan
Anda mungkin perlu menggulir secara horizontal atau vertikal untuk melihat semua data dalam tabel ini.
| Bidang | Format pesan versi 1 Panjang (byte) |
Format pesan versi 2 Panjang (byte) |
|---|---|---|
| Version | 1 | 1 |
| Type | 1 | Tidak hadir |
| Algorithm ID | 2 | 2 |
| Message ID | 16 | 32 |
| AAD Length | 2 Ketika konteks enkripsi kosong, nilai bidang Panjang AAD 2-byte adalah 0. |
2 Ketika konteks enkripsi kosong, nilai bidang Panjang AAD 2-byte adalah 0. |
| AAD | Variabel. Panjang bidang ini muncul di 2 byte sebelumnya (bidang Panjang AAD). Ketika konteks enkripsi kosong, tidak ada bidang AAD di header. |
Variabel. Panjang bidang ini muncul di 2 byte sebelumnya (bidang Panjang AAD). Ketika konteks enkripsi kosong, tidak ada bidang AAD di header. |
| Encrypted Data Key Count | 2 | 2 |
| Encrypted Data Key(s) | Variabel. Ditentukan oleh jumlah kunci data terenkripsi dan panjang masing-masing. | Variabel. Ditentukan oleh jumlah kunci data terenkripsi dan panjang masing-masing. |
| Content Type | 1 | 1 |
| Reserved | 4 | Tidak hadir |
| IV Length | 1 | Tidak hadir |
| Frame Length | 4 | 4 |
| Algorithm Suite Data | Tidak hadir | Variabel. Ditentukan oleh algoritma yang menghasilkan pesan. |
| Header Authentication | Variabel. Ditentukan oleh algoritma yang menghasilkan pesan. | Variabel. Ditentukan oleh algoritma yang menghasilkan pesan. |
- Versi
-
Versi format pesan ini. Versinya 1 atau 2 dikodekan sebagai byte
01atau02dalam notasi heksadesimal - Mengetik
-
Jenis format pesan ini. Jenis menunjukkan jenis struktur. Satu-satunya jenis yang didukung digambarkan sebagai data terenkripsi yang diautentikasi pelanggan. Nilai tipenya adalah 128, dikodekan sebagai byte
80dalam notasi heksadesimal.Bidang ini tidak ada dalam format pesan versi 2.
- ID Algoritma
-
Pengidentifikasi untuk algoritma yang digunakan. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan. Untuk informasi lebih lanjut tentang algoritma, lihatAWS Encryption SDK referensi algoritma.
- ID Pesan
-
Nilai yang dihasilkan secara acak yang mengidentifikasi pesan. ID Pesan:
-
Secara unik mengidentifikasi pesan terenkripsi.
-
Dengan lemah mengikat header pesan ke badan pesan.
-
Menyediakan mekanisme untuk menggunakan kembali kunci data dengan aman dengan beberapa pesan terenkripsi.
-
Melindungi dari penggunaan kembali kunci data yang tidak disengaja atau keausan kunci di AWS Encryption SDK.
Nilai ini adalah 128 bit dalam format pesan versi 1 dan 256 bit dalam versi 2.
-
- Panjang AAD
-
Panjang data otentikasi tambahan (AAD). Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi AAD.
Ketika konteks Konteks enkripsi enkripsi kosong, nilai bidang Panjang AAD adalah 0.
- AAD
-
Data tambahan yang diautentikasi. AAD adalah pengkodean konteks enkripsi, array pasangan kunci-nilai di mana setiap kunci dan nilai adalah string karakter yang dikodekan. UTF-8 Konteks enkripsi dikonversi ke urutan byte dan digunakan untuk nilai AAD. Ketika konteks enkripsi kosong, tidak ada bidang AAD di header.
Ketika algoritma dengan penandatanganan digunakan, konteks enkripsi harus berisi pasangan kunci-nilai.
{'aws-crypto-public-key', Qtxt}Qtxt mewakili titik kurva elips Q yang dikompresi menurut SEC 1 versi 2.0dan kemudian dikodekan base64. Konteks enkripsi dapat berisi nilai tambahan, tetapi panjang maksimum AAD yang dibangun adalah 2^16 - 1 byte. Tabel berikut menjelaskan bidang yang membentuk AAD. Key-value pasangan diurutkan, berdasarkan kunci, dalam urutan menaik sesuai dengan kode UTF-8 karakter. Byte ditambahkan dalam urutan yang ditunjukkan.
Struktur AAD Bidang Panjang (byte) Key-Value Pair Count 2 Key Length 2 Key Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Panjang Kunci). Value Length 2 Value Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Nilai Panjang). - Key-Value Jumlah Pasangan
-
Jumlah pasangan kunci-nilai dalam AAD. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah pasangan kunci-nilai dalam AAD. Jumlah maksimum pasangan kunci-nilai dalam AAD adalah 2^16 - 1.
Bila tidak ada konteks enkripsi atau konteks enkripsi kosong, bidang ini tidak ada dalam struktur AAD.
- Panjang Kunci
-
Panjang kunci untuk pasangan kunci-nilai. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi kunci.
- Kunci
-
Kunci untuk pasangan kunci-nilai. Ini adalah urutan byte yang UTF-8 dikodekan.
- Nilai Panjang
-
Panjang nilai untuk pasangan kunci-nilai. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi nilai.
- Nilai
-
Nilai untuk pasangan kunci-nilai. Ini adalah urutan byte yang UTF-8 dikodekan.
- Jumlah Kunci Data Terenkripsi
-
Jumlah kunci data terenkripsi. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah kunci data terenkripsi. Jumlah maksimum kunci data terenkripsi dalam setiap pesan adalah 65.535 (2^16 - 1).
- 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 (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 pengenal penyedia kunci. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan 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 diperluas.
- Panjang Informasi Penyedia Utama
-
Panjang informasi penyedia kunci. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi informasi penyedia kunci.
- Informasi Penyedia Utama
-
Informasi penyedia utama. Hal ini ditentukan oleh penyedia kunci.
Ketika AWS KMS penyedia kunci utama atau Anda menggunakan gantungan AWS KMS kunci, nilai ini berisi Nama Sumber Daya Amazon (ARN) dari AWS KMS key.
- Panjang Kunci Data Terenkripsi
-
Panjang kunci data terenkripsi. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi kunci data terenkripsi.
- Kunci Data Terenkripsi
-
Kunci data terenkripsi. Ini adalah kunci enkripsi data yang dienkripsi oleh penyedia kunci.
- Jenis Konten
-
Jenis data terenkripsi, baik tanpa bingkai atau dibingkai.
catatan
Bila memungkinkan, gunakan data berbingkai. Men AWS Encryption SDK dukung data nonframe hanya untuk penggunaan lama. Beberapa implementasi bahasa masih AWS Encryption SDK dapat menghasilkan ciphertext tanpa bingkai. Semua implementasi bahasa yang didukung dapat mendekripsi ciphertext berbingkai dan nonframe.
Data berbingkai dibagi menjadi bagian dengan panjang yang sama; setiap bagian dienkripsi secara terpisah. Konten berbingkai adalah tipe 2, dikodekan sebagai byte
02dalam notasi heksadesimal.Data nonframe tidak dibagi; itu adalah gumpalan terenkripsi tunggal. Non-framed konten adalah tipe 1, dikodekan sebagai byte
01dalam notasi heksadesimal. - Dicadangkan
-
Urutan cadangan 4 byte. Nilai ini harus 0. Ini dikodekan sebagai byte
00 00 00 00dalam notasi heksadesimal (yaitu, urutan 4-byte dari nilai integer 32-bit sama dengan 0).Bidang ini tidak ada dalam format pesan versi 2.
- Panjang IV
-
Panjang vektor inisialisasi (IV). Ini adalah nilai 1-byte yang ditafsirkan sebagai bilangan bulat tanpa tanda 8-bit yang menentukan jumlah byte yang berisi IV. Nilai ini ditentukan oleh nilai byte IV dari algoritma yang menghasilkan pesan.
Bidang ini tidak ada dalam format pesan versi 2, yang hanya mendukung rangkaian algoritma yang menggunakan nilai IV deterministik di header pesan.
- Panjang Bingkai
-
Panjang setiap bingkai data berbingkai. Ini adalah nilai 4-byte yang ditafsirkan sebagai bilangan bulat tanpa tanda 32-bit yang menentukan jumlah byte di setiap frame. Ketika data tidak dibingkai, yaitu, ketika nilai
Content Typebidang adalah 1, nilai ini harus 0.catatan
Bila memungkinkan, gunakan data berbingkai. Men AWS Encryption SDK dukung data nonframe hanya untuk penggunaan lama. Beberapa implementasi bahasa masih AWS Encryption SDK dapat menghasilkan ciphertext tanpa bingkai. Semua implementasi bahasa yang didukung dapat mendekripsi ciphertext berbingkai dan nonframe.
- Data Suite Algoritma
-
Data tambahan yang dibutuhkan oleh algoritma yang menghasilkan pesan. Panjang dan isinya ditentukan oleh algoritma. Panjangnya mungkin 0.
Bidang ini tidak ada dalam format pesan versi 1.
- Otentikasi Header
-
Otentikasi header ditentukan oleh algoritma yang menghasilkan pesan. Otentikasi header dihitung di seluruh header. Ini terdiri dari IV dan tag otentikasi. Byte ditambahkan dalam urutan yang ditunjukkan.
Struktur Otentikasi Header Bidang Panjang dalam versi 1.0 (byte) Panjang dalam versi 2.0 (byte) IV Variabel. Ditentukan oleh nilai byte IV dari algoritma yang menghasilkan pesan. N/A Authentication Tag Variabel. Ditentukan oleh nilai byte tag otentikasi dari algoritma yang menghasilkan pesan. Variabel. Ditentukan oleh nilai byte tag otentikasi dari algoritma yang menghasilkan pesan. - IV
-
Vektor inisialisasi (IV) digunakan untuk menghitung tag otentikasi header.
Bidang ini tidak ada di header format pesan versi 2. Format pesan versi 2 hanya mendukung rangkaian algoritma yang menggunakan nilai IV deterministik di header pesan.
- Tag Otentikasi
-
Nilai otentikasi untuk header. Ini digunakan untuk mengotentikasi seluruh isi header.
Struktur tubuh
Badan pesan berisi data terenkripsi, yang disebut ciphertext. Struktur tubuh tergantung pada jenis konten (tanpa bingkai atau dibingkai). Bagian berikut menjelaskan format badan pesan untuk setiap jenis konten. Struktur badan pesan sama dalam format pesan versi 1 dan 2.
Non-framed data
Non-framed data dienkripsi dalam satu gumpalan dengan IV dan badan A AD yang unik.
catatan
Bila memungkinkan, gunakan data berbingkai. Men AWS Encryption SDK dukung data nonframe hanya untuk penggunaan lama. Beberapa implementasi bahasa masih AWS Encryption SDK dapat menghasilkan ciphertext tanpa bingkai. Semua implementasi bahasa yang didukung dapat mendekripsi ciphertext berbingkai dan nonframe.
Tabel berikut menjelaskan bidang yang membentuk data nonframe. Byte ditambahkan dalam urutan yang ditunjukkan.
| Bidang | Panjang, dalam byte |
|---|---|
| IV | Variabel. Sama dengan nilai yang ditentukan dalam IV Length byte header. |
| Encrypted Content Length | 8 |
| Encrypted Content | Variabel. Sama dengan nilai yang ditentukan dalam 8 byte sebelumnya (Panjang Konten Terenkripsi). |
| Authentication Tag | Variabel. Ditentukan oleh implementasi algoritma yang digunakan. |
- IV
-
Vektor inisialisasi (IV) untuk digunakan dengan algoritma AWS Encryption SDK referensi algoritma enkripsi.
- Panjang Konten Terenkripsi
-
Panjang konten terenkripsi, atau ciphertext. Ini adalah nilai 8-byte yang ditafsirkan sebagai bilangan bulat tanpa tanda 64-bit yang menentukan jumlah byte yang berisi konten terenkripsi.
Secara teknis, nilai maksimum yang diizinkan adalah 2^63 - 1, atau 8 exbibytes (8 eB). Namun, dalam praktiknya nilai maksimum adalah 2^36 - 32, atau 64 gibibytes (64 GiB), karena pembatasan yang diberlakukan oleh algoritma yang diterapkan. AWS Encryption SDK referensi algoritma
catatan
Implementasi Java dari SDK ini selanjutnya membatasi nilai ini menjadi 2^31 - 1, atau 2 gibibytes (2 GiB), karena pembatasan dalam bahasa.
- Konten Terenkripsi
-
Konten terenkripsi (ciphertext) seperti yang dikembalikan oleh algoritma en kripsi.
- Tag Otentikasi
-
Nilai otentikasi untuk tubuh. Ini digunakan untuk mengotentikasi badan pesan.
Data berbingkai
Dalam data berbingkai, data plaintext dibagi menjadi bagian panjang yang sama yang disebut frame. Men AWS Encryption SDK genkripsi setiap frame secara terpisah dengan IV dan body A AD yang unik.
catatan
Bila memungkinkan, gunakan data berbingkai. Men AWS Encryption SDK dukung data nonframe hanya untuk penggunaan lama. Beberapa implementasi bahasa masih AWS Encryption SDK dapat menghasilkan ciphertext tanpa bingkai. Semua implementasi bahasa yang didukung dapat mendekripsi ciphertext berbingkai dan nonframe.
Panjang bingkai, yang merupakan panjang konten terenkripsi dalam bingkai, dapat berbeda untuk setiap pesan. Jumlah maksimum byte dalam bingkai adalah 2^32 - 1. Jumlah maksimum frame dalam pesan adalah 2^32 - 1.
Ada dua jenis bingkai: reguler dan final. Setiap pesan harus terdiri dari atau menyertakan bingkai akhir.
Semua frame reguler dalam pesan memiliki panjang bingkai yang sama. Bingkai akhir dapat memiliki panjang bingkai yang berbeda.
Komposisi frame dalam data berbingkai bervariasi dengan panjang konten terenkripsi.
-
Sama dengan panjang bingkai — Ketika panjang konten terenkripsi sama dengan panjang bingkai dari frame biasa, pesan dapat terdiri dari bingkai biasa yang berisi data, diikuti oleh bingkai akhir dengan panjang nol (0). Atau, pesan hanya dapat terdiri dari bingkai akhir yang berisi data. Dalam hal ini, frame akhir memiliki panjang bingkai yang sama dengan frame biasa.
-
Kelipatan panjang bingkai — Ketika panjang konten terenkripsi adalah kelipatan yang tepat dari panjang bingkai bingkai reguler, pesan dapat berakhir dalam bingkai biasa yang berisi data, diikuti oleh bingkai akhir dengan panjang nol (0). Atau, pesan dapat berakhir dalam bingkai akhir yang berisi data. Dalam hal ini, frame akhir memiliki panjang bingkai yang sama dengan frame biasa.
-
Bukan kelipatan panjang bingkai — Ketika panjang konten terenkripsi bukan kelipatan yang tepat dari panjang bingkai reguler, bingkai akhir berisi data yang tersisa. Panjang bingkai bingkai akhir kurang dari panjang bingkai reguler.
-
Kurang dari panjang bingkai — Ketika panjang konten terenkripsi kurang dari panjang bingkai dari frame biasa, pesan terdiri dari bingkai akhir yang berisi semua data. Panjang bingkai bingkai akhir kurang dari panjang bingkai reguler.
Tabel berikut menjelaskan bidang yang membentuk bingkai. Byte ditambahkan dalam urutan yang ditunjukkan.
| Bidang | Panjang, dalam byte |
|---|---|
| Sequence Number | 4 |
| IV | Variabel. Sama dengan nilai yang ditentukan dalam IV Length byte header. |
| Encrypted Content | Variabel. Sama dengan nilai yang ditentukan Frame Length dalam header. |
| Authentication Tag | Variabel. Ditentukan oleh algoritma yang digunakan, seperti Algorithm ID yang ditentukan dalam header. |
- Nomor Urutan
-
Nomor urutan bingkai. Ini adalah nomor penghitung inkremental untuk bingkai. Ini adalah nilai 4-byte yang ditafsirkan sebagai bilangan bulat 32-bit tanpa tanda tangan.
Data berbingkai harus dimulai pada urutan nomor 1. Frame berikutnya harus berurutan dan harus berisi kenaikan 1 dari frame sebelumnya. Jika tidak, proses dekripsi berhenti dan melaporkan kesalahan.
- IV
-
Vektor inisialisasi (IV) untuk frame. SDK menggunakan metode deterministik untuk membangun IV yang berbeda untuk setiap frame dalam pesan. Panjangnya ditentukan oleh rangkaian algoritma yang digunakan.
- Konten Terenkripsi
-
Konten terenkripsi (ciphertext) untuk frame, seperti yang dikembalikan oleh algoritma en kripsi.
- Tag Otentikasi
-
Nilai otentikasi untuk frame. Ini digunakan untuk mengotentikasi seluruh bingkai.
| Bidang | Panjang, dalam byte |
|---|---|
| Sequence Number End | 4 |
| Sequence Number | 4 |
| IV | Variabel. Sama dengan nilai yang ditentukan dalam IV Length byte header. |
| Encrypted Content Length | 4 |
| Encrypted Content | Variabel. Sama dengan nilai yang ditentukan dalam 4 byte sebelumnya (Panjang Konten Terenkripsi). |
| Authentication Tag | Variabel. Ditentukan oleh algoritma yang digunakan, seperti Algorithm ID yang ditentukan dalam header. |
- Nomor Urutan Akhir
-
Indikator untuk bingkai akhir. Nilai dikodekan sebagai 4 byte
FF FF FF FFdalam notasi heksadesimal. - Nomor Urutan
-
Nomor urutan bingkai. Ini adalah nomor penghitung inkremental untuk bingkai. Ini adalah nilai 4-byte yang ditafsirkan sebagai bilangan bulat 32-bit tanpa tanda tangan.
Data berbingkai harus dimulai pada urutan nomor 1. Frame berikutnya harus berurutan dan harus berisi kenaikan 1 dari frame sebelumnya. Jika tidak, proses dekripsi berhenti dan melaporkan kesalahan.
- IV
-
Vektor inisialisasi (IV) untuk frame. SDK menggunakan metode deterministik untuk membangun IV yang berbeda untuk setiap frame dalam pesan. Panjang panjang IV ditentukan oleh rangkaian algoritma.
- Panjang Konten Terenkripsi
-
Panjang konten terenkripsi. Ini adalah nilai 4-byte yang ditafsirkan sebagai bilangan bulat tanpa tanda 32-bit yang menentukan jumlah byte yang berisi konten terenkripsi untuk bingkai.
- Konten Terenkripsi
-
Konten terenkripsi (ciphertext) untuk frame, seperti yang dikembalikan oleh algoritma en kripsi.
- Tag Otentikasi
-
Nilai otentikasi untuk frame. Ini digunakan untuk mengotentikasi seluruh bingkai.
Struktur footer
Ketika algoritma dengan penandatanganan digunakan, format pesan berisi footer. Footer pesan berisi tanda tangan digital yang dihitung di atas header dan badan pesan. Tabel berikut menjelaskan bidang yang membentuk footer. Byte ditambahkan dalam urutan yang ditunjukkan. Struktur footer pesan sama dalam format pesan versi 1 dan 2.
| Bidang | Panjang, dalam byte |
|---|---|
| Signature Length | 2 |
| Signature | Variabel. Sama dengan nilai yang ditentukan dalam 2 byte sebelumnya (Panjang Tanda Tangan). |
- Panjang Tanda Tangan
-
Panjang tanda tangan. Ini adalah nilai 2-byte yang ditafsirkan sebagai bilangan bulat 16-bit tanpa tanda tangan yang menentukan jumlah byte yang berisi tanda tangan.
- Tanda tangan
-
Tanda tangan.