Apakah ada konsekuensi sebenarnya dari serangan padding oracle?
Saya menulis program yang mengenkripsi data dengan Python dan mendengar tentang padding oracle attack , tapi saya pikir mereka berlebihan (maksud saya, apa kegunaan dunia nyata?) Bahkan untuk implementasi lama yang rentan (yang memberitahu jika padding benar atau salah seperti SSLv3).
Karena:
- Jika yang saya butuhkan hanyalah dua ciphertext $c(n-1)$, $c(n)$ yang merupakan dua blok pesan terenkripsi terakhir, dan server untuk memberi tahu saya jika padding didekripsi $c(n)$benar atau apa pun, bukankah itu berarti bahwa server hanya mendekripsi apa pun yang Anda kirim ke sana (maksud saya, kirimkan saja seluruh pesan terenkripsi saat Anda menerimanya dan baca hasilnya). Maksud saya, ini adalah bug server yang sejak awal tidak mengambil kunci dan memeriksa apakah sudah benar.
- Mari kita asumsikan bahwa yang harus kita lakukan adalah mengirim dua pesan sandi tersebut untuk mengetahui dan mendekripsi blok terakhir (blok padding). Ini hanya berfungsi karena padding plaintext diketahui atau setidaknya tidak acak atau alasan apa pun.
Tetapi bagaimana dengan, katakanlah, c2 dan c3 yang berada di tengah-tengah keseluruhan pesan? Kita tahu c3 dan c2, tetapi kita tidak tahu dan kita tidak akan pernah tahu baik p3 atau p2 (teks biasa), maupun status antara IS3 ; yaitu kita tidak bisa XOR c2 dengan is3 untuk mendapatkan p3 , jadi serangan ini menurut saya hanya memungkinkan kita untuk mendekripsi blok padding dengan satu-satunya hal baru yang kita ketahui adalah keadaan antara padding blok.
Saya bertanya untuk mengetahui apakah serangan ini hanya serangan tanpa implikasi dunia nyata dan tidak ada kemampuan dekripsi data nyata (data aktual).
Jawaban
Maksud saya ini adalah bug server yang tidak mengambil kunci di tempat pertama dan memeriksa apakah itu benar :)
Apa maksudmu dengan itu? Kuncinya harus benar, dan padding oracle attack benar-benar mengubah ciphertext yang dienkripsi dengan kunci itu di sisi lain untuk melakukan serangan.
tapi bagaimana dengan mengatakan c2, c3 yang berada di tengah-tengah seluruh pesan, kita tahu c3 dan c2 tapi kita tidak tahu dan kita tidak akan pernah tahu baik p3 (plaintext tentu saja) maupun keadaan antara IS3
Tidak, padding oracle attack mampu mendekripsi pesan sepenuhnya. Ini justru karena XOR memengaruhi blok berikutnya.
Perhatikan bahwa serangan oracle padding hanyalah salah satu bentuk serangan oracle teks biasa . Misalnya, Anda juga dapat melakukan serangan oracle teks biasa pada XML-enc, bahkan tanpa menggunakan padding itu sendiri.
Saya bertanya untuk mengetahui apakah serangan ini hanyalah serangan tanpa implikasi dunia nyata dan tidak ada kemampuan dekripsi data nyata (data aktual).
Ya, itu benar-benar salah. Serangan oracle padding dapat mendekripsi seluruh pesan menggunakan 128 percobaan per byte, dan oracle teks biasa lainnya sebenarnya bisa lebih efektif.
Selain itu, membuat pihak penerima menerima perubahan teks biasa sama berbahayanya dengan kehilangan kerahasiaan. Oleh karena itu, Anda harus menggunakan enkripsi yang diautentikasi - atau lebih tepatnya protokol yang menggunakan enkripsi yang diautentikasi daripada CBC yang tidak diautentikasi.
Saya bertanya untuk mengetahui apakah serangan ini hanyalah serangan tanpa implikasi dunia nyata dan tidak ada kemampuan dekripsi data nyata (data aktual).
Serangan Lucky Thirteen adalah serangan dunia nyata terhadap TLS. Itu adalah serangan serius untuk versi protokol TLS saat itu (TLS 1.0 pada saat itu - TLS 1.1 dan 1.2 ada tetapi memiliki sedikit adopsi). Jadi tidak, padding oracle attack benar-benar berfungsi di dunia nyata.
(yang memberi tahu apakah padding itu benar atau salah seperti sslv3).
Lucky Thirteen memengaruhi versi hingga TLS 1.2, yang merupakan versi yang digunakan untuk sebagian besar komunikasi aman saat ini. Ini hanya mempengaruhi cipher suite yang menggunakan CBC, yang tidak digunakan lagi karena serangan ini, tetapi sebagian besar endpoint masih mengizinkannya, bahkan jika mereka lebih memilih ciphersuites AEAD. Banyak tetapi tidak semua implementasi TLS yang populer memiliki kode yang mencegah serangan Lucky Thirteen (dengan mengorbankan kinerja). Jadi tidak, serangan padding oracle relevan dengan protokol yang masih digunakan secara luas.
Saya menulis program yang mengenkripsi data dengan python dan mendengar tentang padding oracle attack tetapi saya pikir mereka berlebihan
Memang benar bahwa Anda tidak perlu khawatir tentang serangan padding oracle. Tetapi alasan Anda tidak perlu khawatir adalah karena mereka terkenal, kami tahu cara mempertahankannya: jangan gunakan bantalan. Dan tidak ada mode enkripsi modern yang menggunakan padding. Cukup gunakan mode AEAD umum apa pun, seperti GCM, CCM, atau ChaCha20 + Poly1305. Atau lebih baik lagi, gunakan pustaka tingkat tinggi seperti NaCl / libsodium ( PyNaCl dengan Python): jika Anda mengetik huruf AES ke dalam kode Anda, Anda salah melakukannya .