Serangan Padding Oracle secara Mendalam
Ikuti langkah-langkah serangan padding oracle CBC dan pahami alasan oracle galat dekripsi sekecil apa pun dapat berakibat fatal.
Serangan Padding Oracle secara Mendalam adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
Struktur Dekripsi Mode CBC
Dalam mode CBC (Rangkaian Blok Sandi), dekripsi setiap blok melibatkan dekripsi blok teks tersandi menggunakan sandi blok, lalu melakukan XOR terhadap hasilnya dengan blok teks tersandi sebelumnya. Operasi XOR ini menimbulkan sifat penting: dengan mengubah bit dalam satu blok teks tersandi, penyerang dapat memengaruhi bit tertentu dalam teks biasa hasil dekripsi blok berikutnya secara dapat diprediksi. Sifat ini memungkinkan serangan orakel pengisi.
Penjelasan Pengisi PKCS#7
Sandi blok memerlukan input dalam blok berukuran tetap. Pengisi PKCS#7 melengkapi blok terakhir: jika diperlukan pengisi sebanyak 3 byte, tambahkan tiga byte yang masing-masing bernilai 0x03. Jika blok sudah penuh, tambahkan satu blok pengisi lengkap yang seluruh 16 byte-nya bernilai 0x10. Selama dekripsi, byte pengisi diverifikasi agar konsisten, yaitu semua N byte bernilai N, lalu dihapus. Jika pengisi tidak valid, dekripsi harus gagal.
Orakel: Mengeksploitasi Validasi Pengisi
Orakel pengisi adalah sistem apa pun yang mengungkapkan apakah teks tersandi yang didekripsi memiliki pengisi PKCS#7 yang valid. Orakel tersebut dapat berupa pesan error eksplisit (Pengisi tidak valid), kode status HTTP yang berbeda (500 vs 403), isi respons error yang berbeda, atau bahkan perbedaan waktu, karena dekripsi dengan pengisi valid sedikit lebih cepat. Penyerang tidak perlu mengetahui kuncinya; mereka hanya memerlukan sinyal biner ini: pengisi valid atau tidak.
Pemulihan Teks Biasa Byte demi Byte
Penyerang menargetkan blok teks tersandi tertentu. Untuk memulihkan byte terakhir teks biasa: ubah byte terakhir blok teks tersandi sebelumnya, lalu kirim teks tersandi yang telah diubah ke orakel. Ulangi untuk 256 kemungkinan nilai hingga orakel melaporkan pengisi yang valid. Pada nilai yang menghasilkan pengisi valid (0x01), nilai dekripsi perantara diketahui karena XOR antara nilai tersebut dan byte yang diubah menghasilkan 0x01. Lakukan XOR dengan byte teks tersandi asli untuk mengungkap byte teks biasa.
Memulihkan Seluruh Blok
Setelah byte terakhir dipulihkan, byte kedua dari belakang ditargetkan. Nilai dekripsi perantara byte terakhir sudah diketahui, sehingga dapat dipaksa menjadi 0x02. Kemudian, ulangi untuk 256 nilai byte kedua dari belakang hingga pengisi 0x02 0x02 dinyatakan valid. Proses ini diulangi untuk setiap byte, sehingga memulihkan blok lengkap berukuran 16 byte dengan rata-rata 256 * 16 = 4.096 kueri orakel per blok. Dengan orakel yang cepat, proses ini dapat selesai dalam hitungan detik.
Memulihkan Pesan Lengkap
Proses ini diulangi untuk setiap blok teks tersandi (kecuali IV, yang tidak dapat dipulihkan tanpa blok sebelumnya). Teks tersandi sepanjang 128 byte (8 blok AES) memerlukan rata-rata sekitar 32.000 kueri oracle untuk didekripsi sepenuhnya. Terhadap server web yang memproses ratusan permintaan per detik, proses ini memerlukan waktu beberapa menit. Penyerang memulihkan teks biasa lengkap tanpa pernah mengetahui kunci enkripsi.
Eksploitasi di Dunia Nyata: POODLE
POODLE (Oracle Pengisian pada Enkripsi Lama yang Diturunkan) mengeksploitasi validasi pengisian CBC SSL 3.0. SSL 3.0 menggunakan skema pengisian non-PKCS#7, tetapi serangan ini menyesuaikan konsep oracle tersebut. Penyerang yang dapat menyuntikkan konten ke dalam sesi SSL 3.0 dan memaksa klien menurunkan versi ke SSL 3.0 dapat memulihkan kuki sesi menggunakan teknik oracle pengisian. POODLE memaksa penghentian penggunaan SSL 3.0.
Lucky Thirteen dan BEAST
Lucky Thirteen (2013) mengeksploitasi saluran samping waktu pada skema MAC-lalu-enkripsi CBC TLS. Waktu verifikasi MAC berbeda beberapa nanodetik bergantung pada valid atau tidaknya pengisian, sehingga menciptakan oracle waktu. BEAST (2011) mengeksploitasi IV yang dapat diprediksi dalam mode CBC TLS 1.0 untuk melancarkan serangan teks biasa terpilih terhadap kuki sesi. Kedua serangan tersebut menunjukkan bahwa mode CBC dalam TLS pada dasarnya sulit diterapkan dengan benar.
Pertahanan: Gunakan AEAD, Bukan CBC
Pertahanan definitif terhadap serangan oracle pengisian adalah menggunakan mode AEAD (Enkripsi Terautentikasi dengan Data Terkait), bukan CBC. Mode AEAD seperti AES-256-GCM dan ChaCha20-Poly1305 memverifikasi autentikasi sebelum dekripsi atau pemeriksaan pengisian apa pun dilakukan. Jika tag autentikasi tidak valid, dekripsi tidak pernah dilakukan dan tidak ada informasi pengisian yang bocor. TLS 1.3 mewajibkan AEAD dan menghapus CBC sepenuhnya.
Pertahanan: Enkripsi-lalu-MAC
Jika AEAD tidak tersedia, konstruksi Enkripsi-lalu-MAC menambahkan MAC atas teks tersandi, bukan teks biasa. Sebelum dekripsi atau pemeriksaan pengisian, MAC diverifikasi. Jika MAC gagal, operasi segera dibatalkan tanpa mengungkap informasi pengisian apa pun. Hal ini harus dilakukan dalam waktu konstan untuk mencegah oracle waktu. Kegagalan verifikasi MAC tidak mengungkap apa pun tentang valid atau tidaknya pengisian.
Mendeteksi Kerentanan Oracle Pengisian
Untuk menguji kerentanan oracle pengisian: enkripsi pesan yang diketahui, lalu kirimkan teks tersandi yang telah diubah ke aplikasi dan amati responsnya. Jika pengisian valid dan tidak valid menghasilkan respons yang dapat dibedakan secara nyata (pesan kesalahan, kode status, waktu respons), berarti terdapat oracle pengisian. Alat otomatis seperti padbuster dan PadBuster secara khusus menguji oracle pengisian pada aplikasi web dengan mengubah teks tersandi secara sistematis dan menganalisis respons.
Mekanisme Oracle Pengisian
Apa yang diperlukan oleh serangan oracle pengisian dari sistem target untuk mendekripsi teks tersandi tanpa kunci?
Ringkasan Serangan Oracle Pengisian
Ringkasan oracle pengisian: properti XOR pada dekripsi CBC memungkinkan manipulasi byte teks biasa secara terkendali, validasi pengisian PKCS#7 mengungkap oracle biner, penyerang mengiterasi nilai byte dan mengamati respons valid atau tidak valid untuk memulihkan teks biasa byte demi byte, eksploitasi nyata mencakup POODLE, Lucky Thirteen, dan BEAST, sedangkan pertahanannya adalah beralih ke AEAD (GCM, ChaCha20-Poly1305) yang memverifikasi autentikasi sebelum dekripsi.
Belajar Cryptology Academy dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 67
- Pelajaran
- 261
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Serangan Padding Oracle secara Mendalam” gratis?
Ya — teks lengkap “Serangan Padding Oracle secara Mendalam” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Serangan Padding Oracle secara Mendalam”?
Ikuti langkah-langkah serangan padding oracle CBC dan pahami alasan oracle galat dekripsi sekecil apa pun dapat berakibat fatal. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Serangan Padding Oracle secara Mendalam” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Serangan Padding Oracle secara Mendalam
- Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce
- Serangan Pewaktuan pada Kode Tingkat Aplikasi
- Pola Penyalahgunaan Kriptografi Teratas