Serangan kriptografi: penjelasan untuk pikiran yang bingung

Ketika Anda mendengar kata “kriptografi”, beberapa orang mengingat kata sandi WiFi mereka, gembok hijau di sebelah alamat situs web favorit mereka, dan betapa sulitnya mengakses email orang lain. Yang lain mengingat serangkaian kerentanan dalam beberapa tahun terakhir dengan singkatan yang jelas (DROWN, FREAK, POODLE...), logo bergaya dan peringatan untuk segera memperbarui browser Anda.

Kriptografi mencakup semuanya, tapi esensi dari di tempat lain. Intinya ada garis tipis antara sederhana dan kompleks. Ada hal yang mudah dilakukan, namun sulit untuk disatukan kembali, seperti memecahkan telur. Hal-hal lain yang mudah dilakukan namun sulit diperoleh kembali jika ada bagian kecil, penting, dan krusial yang hilang: misalnya, membuka pintu yang terkunci padahal "bagian penting" tersebut adalah kuncinya. Kriptografi mempelajari situasi ini dan bagaimana penggunaannya dalam praktik.

Dalam beberapa tahun terakhir, kumpulan serangan kriptografi telah berubah menjadi kebun binatang dengan logo yang mencolok, berisi rumus dari makalah ilmiah, dan menimbulkan perasaan suram secara umum bahwa semuanya rusak. Namun kenyataannya, banyak serangan yang didasarkan pada beberapa prinsip umum, dan formula yang tak ada habisnya sering kali diringkas menjadi ide-ide yang mudah dipahami.

Dalam rangkaian artikel ini, kita akan melihat berbagai jenis serangan kriptografi, dengan penekanan pada prinsip dasarnya. Secara umum dan tidak persis dalam urutan ini, namun kami akan membahas hal berikut:

  • Strategi dasar: kekerasan, analisis frekuensi, interpolasi, penurunan versi, dan lintas protokol.
  • Kerentanan bermerek: ANEH, KEJAHATAN, POODLE, DROWN, Logjam.
  • Strategi Tingkat Lanjut: serangan Oracle (serangan Vodenet, serangan Kelsey); metode pertemuan di tengah, serangan ulang tahun, bias statistik (kriptanalisis diferensial, kriptanalisis integral, dll.).
  • Serangan saluran samping dan kerabat dekat mereka, metode analisis kegagalan.
  • Serangan terhadap kriptografi kunci publik: akar pangkat tiga, siaran, pesan terkait, serangan Coppersmith, algoritma Pohlig-Hellman, saringan angka, serangan Wiener, serangan Bleichenbacher.

Artikel khusus ini membahas materi di atas hingga serangan Kelsey.

Strategi Dasar

Serangan-serangan berikut ini sederhana dalam arti hampir dapat dijelaskan sepenuhnya tanpa banyak detail teknis. Mari kita jelaskan setiap jenis serangan dalam istilah yang paling sederhana, tanpa membahas contoh rumit atau kasus penggunaan lanjutan.

Beberapa dari serangan ini sebagian besar sudah ketinggalan zaman dan tidak digunakan lagi selama bertahun-tahun. Yang lainnya adalah orang-orang lama yang masih sering menyelinap ke pengembang sistem kripto yang tidak menaruh curiga di abad ke-21. Era kriptografi modern dapat dianggap telah dimulai dengan munculnya IBM DES, sandi pertama yang tahan terhadap semua serangan dalam daftar ini.

Kekerasan sederhana

Serangan kriptografi: penjelasan untuk pikiran yang bingungSkema enkripsi terdiri dari dua bagian: 1) fungsi enkripsi, yang mengambil pesan (teks biasa) yang digabungkan dengan kunci, dan kemudian membuat pesan terenkripsi - teks tersandi; 2) fungsi dekripsi yang mengambil ciphertext dan kunci dan menghasilkan plaintext. Baik enkripsi maupun dekripsi harus mudah dihitung dengan kunci—dan sulit dihitung tanpa kunci tersebut.

Anggaplah kita melihat ciphertext dan mencoba mendekripsinya tanpa informasi tambahan apa pun (ini disebut serangan ciphertext-only). Jika kita secara ajaib menemukan kunci yang benar, kita dapat dengan mudah memverifikasi bahwa kunci tersebut memang benar jika hasilnya adalah pesan yang masuk akal.

Perhatikan bahwa ada dua asumsi implisit di sini. Pertama, kita mengetahui cara melakukan dekripsi, yaitu cara kerja sistem kriptografi. Ini adalah asumsi standar ketika membahas kriptografi. Menyembunyikan detail implementasi sandi dari penyerang mungkin tampak seperti tindakan keamanan tambahan, namun begitu penyerang mengetahui detail ini, keamanan tambahan ini akan hilang secara diam-diam dan tidak dapat diubah lagi. Begitulah caranya Prinsip Kerchhoff: Sistem yang jatuh ke tangan musuh seharusnya tidak menimbulkan ketidaknyamanan.

Kedua, kami berasumsi bahwa kunci yang benar adalah satu-satunya kunci yang akan menghasilkan dekripsi yang masuk akal. Ini juga merupakan asumsi yang masuk akal; puas jika ciphertext lebih panjang dari kuncinya dan dapat dibaca. Hal ini biasanya terjadi di dunia nyata, kecuali kunci besar yang tidak praktis или kejahatan lain yang sebaiknya dikesampingkan (bila tidak berkenan kami melewatkan penjelasannya, silakan lihat Teorema 3.8 di sini).

Mengingat hal di atas, sebuah strategi muncul: periksa setiap kunci yang mungkin. Ini disebut brute force, dan serangan semacam itu dijamin akan berhasil melawan semua sandi praktis - pada akhirnya. Misalnya, kekerasan sudah cukup untuk meretas sandi Caesar, sandi kuno yang kuncinya berupa satu huruf alfabet, menyiratkan lebih dari 20 kemungkinan kunci.

Sayangnya bagi kriptanalis, meningkatkan ukuran kunci merupakan pertahanan yang baik terhadap kekerasan. Ketika ukuran kunci bertambah, jumlah kemungkinan kunci bertambah secara eksponensial. Dengan ukuran kunci modern, kekerasan sederhana sama sekali tidak praktis. Untuk memahami apa yang kami maksud, mari kita ambil superkomputer tercepat yang diketahui pada pertengahan tahun 2019: Puncak dari IBM, dengan kinerja puncak sekitar 1017 operasi per detik. Saat ini, panjang kunci tipikal adalah 128 bit, yang berarti 2128 kemungkinan kombinasi. Untuk mencari seluruh kunci, superkomputer Summit memerlukan waktu kira-kira 7800 kali usia alam semesta.

Haruskah kekerasan dianggap sebagai keingintahuan sejarah? Tidak sama sekali: ini adalah bahan penting dalam buku masak kriptanalisis. Jarang ada sandi yang begitu lemah sehingga hanya bisa dipatahkan dengan serangan yang cerdik, tanpa menggunakan kekuatan sampai tingkat tertentu. Banyak peretasan yang berhasil menggunakan metode algoritmik untuk melemahkan sandi target terlebih dahulu, lalu melakukan serangan brute force.

Analisis frekuensi

Serangan kriptografi: penjelasan untuk pikiran yang bingungKebanyakan teks bukanlah omong kosong. Misalnya, dalam teks bahasa Inggris banyak terdapat huruf 'e' dan artikel 'the'; dalam file biner, ada banyak byte nol sebagai pengisi antar potongan informasi. Analisis frekuensi adalah serangan apa pun yang memanfaatkan fakta ini.

Contoh kanonik dari sandi yang rentan terhadap serangan ini adalah sandi substitusi sederhana. Dalam sandi ini, kuncinya adalah tabel yang semua hurufnya diganti. Misalnya 'g' diganti dengan 'h', 'o' dengan j, sehingga kata 'go' menjadi 'hj'. Sandi ini sulit untuk di-brute force karena ada begitu banyak kemungkinan tabel pencarian. Jika Anda tertarik dengan matematika, panjang kunci efektif adalah sekitar 88 bit: itu saja
Serangan kriptografi: penjelasan untuk pikiran yang bingung. Namun analisis frekuensi biasanya menyelesaikan pekerjaannya dengan cepat.

Perhatikan ciphertext berikut yang diproses dengan cipher substitusi sederhana:

XDYLY ALY JELEK XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

Sejak Y sering muncul, termasuk di akhir banyak kata, kita dapat berasumsi bahwa ini adalah hurufnya e:

XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALe FLeAUX GR WN OGQL ZDWBGEGZDO

Pasangan XD diulangi di awal beberapa kata. Secara khusus, kombinasi XDeLe dengan jelas menunjukkan kata tersebut these или there, jadi mari kita lanjutkan:

theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG daripada ALe FLeAUt GR WN OGQL ZDWBGEGZDO

Mari kita asumsikan lebih jauh lagi L соответствует r, A - a dan seterusnya. Mungkin perlu beberapa kali percobaan, tetapi dibandingkan dengan serangan brute force penuh, serangan ini memulihkan teks asli dalam waktu singkat:

ada lebih banyak hal di surga dan bumi horatio daripada yang diimpikan dalam filosofi Anda

Bagi sebagian orang, memecahkan “kriptogram” seperti itu adalah hobi yang mengasyikkan.

Gagasan analisis frekuensi lebih mendasar daripada yang terlihat pada pandangan pertama. Dan ini berlaku untuk sandi yang jauh lebih kompleks. Sepanjang sejarah, berbagai desain sandi telah berusaha untuk melawan serangan tersebut dengan menggunakan "substitusi polialfabetik". Di sini, selama proses enkripsi, tabel substitusi huruf dimodifikasi dengan cara yang rumit namun dapat diprediksi yang bergantung pada kuncinya. Semua sandi ini dianggap sulit dipecahkan pada satu waktu; namun analisis frekuensi yang sederhana akhirnya mengalahkan semuanya.

Sandi polialfabetik paling ambisius dalam sejarah, dan mungkin yang paling terkenal, adalah sandi Enigma pada Perang Dunia II. Itu relatif kompleks dibandingkan dengan pendahulunya, tetapi setelah banyak kerja keras, cryptanalyst Inggris memecahkannya menggunakan analisis frekuensi. Tentu saja, mereka tidak bisa mengembangkan serangan elegan seperti yang ditunjukkan di atas; mereka harus membandingkan pasangan teks biasa dan teks sandi yang diketahui (yang disebut "serangan teks biasa"), bahkan memprovokasi pengguna Enigma untuk mengenkripsi pesan tertentu dan menganalisis hasilnya ("serangan teks biasa yang dipilih"). Namun hal ini tidak membuat nasib pasukan musuh yang kalah dan kapal selam yang tenggelam menjadi lebih mudah.

Setelah kemenangan ini, analisis frekuensi menghilang dari sejarah kriptanalisis. Cipher di era digital modern dirancang untuk bekerja dengan bit, bukan huruf. Lebih penting lagi, sandi-sandi ini dirancang dengan pemahaman gelap yang kemudian dikenal sebagai hukum Schneier: Siapapun dapat membuat algoritma enkripsi yang mereka sendiri tidak dapat pecahkan. Itu tidak cukup untuk sistem enkripsi tampak sulit: untuk membuktikan nilainya, ia harus menjalani tinjauan keamanan tanpa ampun oleh banyak kriptanalis yang akan melakukan yang terbaik untuk memecahkan sandi tersebut.

Perhitungan awal

Serangan kriptografi: penjelasan untuk pikiran yang bingungAmbil contoh kota hipotetis Precom Heights, dengan populasi 200 jiwa. Setiap rumah di kota berisi barang-barang berharga rata-rata senilai $000, namun nilainya tidak lebih dari $30.Pasar keamanan di Precom dimonopoli oleh ACME Industries, yang memproduksi kunci pintu kelas Coyote™ yang legendaris. Menurut analisis para ahli, kunci kelas Coyote hanya dapat dipecahkan oleh mesin hipotetis yang sangat kompleks, yang pembuatannya memerlukan waktu sekitar lima tahun dan investasi $000. Apakah kota ini aman?

Kemungkinan besar tidak. Pada akhirnya, penjahat yang cukup ambisius akan muncul. Dia akan beralasan seperti ini: “Ya, saya akan mengeluarkan biaya awal yang besar. Lima tahun menunggu dengan sabar, dan $50. Namun setelah selesai, saya akan memiliki akses ke semua kekayaan kota ini. Jika saya memainkan kartu saya dengan benar, investasi ini akan membuahkan hasil berkali-kali lipat.”

Hal yang sama juga berlaku dalam kriptografi. Serangan terhadap sandi tertentu tunduk pada analisis biaya-manfaat yang kejam. Jika rasionya menguntungkan, serangan tidak akan terjadi. Namun serangan yang berhasil terhadap banyak calon korban sekaligus hampir selalu membuahkan hasil, dalam hal ini praktik desain terbaik adalah berasumsi bahwa serangan tersebut dimulai sejak hari pertama. Pada dasarnya kita mempunyai versi kriptografi dari Hukum Murphy: "Apa pun yang benar-benar dapat merusak sistem akan merusak sistem."

Contoh paling sederhana dari sistem kriptografi yang rentan terhadap serangan pra-komputasi adalah sandi tanpa kunci konstan. Hal ini terjadi dengan sandi Caesar, yang hanya menggeser setiap huruf dalam alfabet tiga huruf ke depan (tabel dilingkarkan, sehingga huruf terakhir dalam alfabet dienkripsi ketiga). Di sini sekali lagi prinsip Kerchhoffs berlaku: sekali suatu sistem diretas, maka sistem tersebut akan diretas selamanya.

Konsepnya sederhana. Bahkan pengembang sistem kriptografi pemula kemungkinan besar akan mengenali ancaman tersebut dan bersiap menghadapinya. Melihat evolusi kriptografi, serangan seperti itu tidak sesuai untuk sebagian besar sandi, mulai dari sandi Caesar versi perbaikan pertama hingga penurunan sandi polialfabetik. Serangan semacam itu baru terjadi kembali dengan munculnya era kriptografi modern.

Pengembalian ini disebabkan oleh dua faktor. Pertama, sistem kriptografi yang cukup kompleks akhirnya muncul, di mana kemungkinan eksploitasi setelah peretasan tidak terlihat jelas. Kedua, kriptografi menjadi begitu luas sehingga jutaan orang awam setiap hari membuat keputusan tentang di mana dan bagian kriptografi mana yang akan digunakan kembali. Butuh beberapa waktu sebelum para ahli menyadari risikonya dan memberikan peringatan.

Ingat serangan prakomputasi: di akhir artikel kita akan melihat dua contoh kriptografi kehidupan nyata yang memainkan peran penting.

Interpolasi

Inilah detektif terkenal Sherlock Holmes, yang melakukan serangan interpolasi terhadap Dr. Watson yang malang:

Saya langsung menebak bahwa Anda berasal dari Afganistan... Alur pemikiran saya adalah sebagai berikut: “Orang ini bertipe dokter, tetapi dia memiliki pengaruh militer. Jadi, seorang dokter militer. Dia baru saja tiba dari daerah tropis - wajahnya gelap, tapi ini bukan warna alami kulitnya, karena pergelangan tangannya jauh lebih putih. Wajahnya kuyu - jelas dia sangat menderita dan menderita penyakit. Dia terluka di tangan kirinya - dia memegangnya tanpa bergerak dan sedikit tidak wajar. Di daerah tropis manakah seorang dokter militer Inggris dapat menanggung kesulitan dan terluka? Tentu saja, di Afganistan.” Seluruh alur pemikiran tidak memakan waktu sedetik pun. Jadi saya katakan bahwa Anda berasal dari Afghanistan, dan Anda terkejut.

Holmes hanya dapat mengambil sedikit informasi dari setiap bukti satu per satu. Dia hanya bisa mencapai kesimpulannya dengan mempertimbangkan semuanya bersama-sama. Serangan interpolasi bekerja serupa dengan memeriksa pasangan teks biasa dan teks tersandi yang diketahui yang dihasilkan dari kunci yang sama. Dari setiap pasangan, pengamatan individu diekstraksi yang memungkinkan kesimpulan umum tentang kunci yang dapat diambil. Semua kesimpulan ini tidak jelas dan tampak tidak berguna sampai tiba-tiba mencapai titik kritis dan mengarah pada satu-satunya kesimpulan yang mungkin: betapapun luar biasa kesimpulannya, kesimpulan itu pasti benar. Setelah ini, kuncinya akan terungkap, atau proses dekripsi menjadi begitu halus sehingga dapat direplikasi.

Mari kita ilustrasikan dengan contoh sederhana cara kerja interpolasi. Katakanlah kita ingin membaca buku harian pribadi musuh kita, Bob. Dia mengenkripsi setiap nomor di buku hariannya menggunakan sistem kriptografi sederhana yang dia pelajari dari sebuah iklan di majalah "A Mock of Cryptography." Sistem kerjanya seperti ini: Bob memilih dua nomor yang disukainya: Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung. Mulai sekarang, untuk mengenkripsi nomor apa pun Serangan kriptografi: penjelasan untuk pikiran yang bingung, itu menghitung Serangan kriptografi: penjelasan untuk pikiran yang bingung. Misalnya, jika Bob memilih Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung, lalu nomornya Serangan kriptografi: penjelasan untuk pikiran yang bingung akan dienkripsi sebagai Serangan kriptografi: penjelasan untuk pikiran yang bingung.

Katakanlah pada tanggal 28 Desember kita melihat Bob sedang menggaruk sesuatu di buku hariannya. Ketika dia selesai, kami akan diam-diam mengambilnya dan menonton entri terakhir:

Дата: 235/520

Buku Harian yang terhormat,

Hari ini adalah hari yang baik. Melalui 64 hari ini aku kencan dengan Alisa yang tinggal di apartemen 843. Menurutku dia mungkin saja begitu 26!

Karena kami sangat serius untuk mengikuti Bob pada kencannya (kami berdua berusia 15 tahun dalam skenario ini), penting untuk mengetahui tanggal serta alamat Alice. Untungnya, kami melihat bahwa sistem kriptografi Bob rentan terhadap serangan interpolasi. Kita mungkin tidak tahu Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung, tapi kita tahu tanggal hari ini, jadi kita punya dua pasangan plaintext-ciphertext. Yaitu, kita tahu itu Serangan kriptografi: penjelasan untuk pikiran yang bingung dienkripsi di Serangan kriptografi: penjelasan untuk pikiran yang bingungDan Serangan kriptografi: penjelasan untuk pikiran yang bingung - di Serangan kriptografi: penjelasan untuk pikiran yang bingung. Inilah yang akan kami tuliskan:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Sejak kita berumur 15 tahun, kita sudah mengetahui tentang sistem dua persamaan dengan dua hal yang tidak diketahui, yang dalam situasi ini cukup untuk menemukannya Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung tanpa masalah. Setiap pasangan plaintext-ciphertext menempatkan batasan pada kunci Bob, dan kedua batasan tersebut cukup untuk memulihkan kunci sepenuhnya. Dalam contoh kita, jawabannya adalah Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung (di Serangan kriptografi: penjelasan untuk pikiran yang bingung Serangan kriptografi: penjelasan untuk pikiran yang bingung, jadi 26 dalam buku harian itu sesuai dengan kata 'yang satu', yaitu, "yang sama" - kira-kira. jalur).

Serangan interpolasi, tentu saja, tidak terbatas pada contoh sederhana saja. Setiap kriptosistem yang direduksi menjadi objek matematika yang dapat dipahami dengan baik dan daftar parameter berisiko terkena serangan interpolasi—semakin mudah dipahami objek tersebut, semakin tinggi risikonya.

Pendatang baru sering mengeluh bahwa kriptografi adalah “seni merancang sesuatu seburuk mungkin.” Serangan interpolasi mungkin merupakan penyebab utama terjadinya hal ini. Bob dapat menggunakan desain matematis yang elegan atau merahasiakan kencannya dengan Alice - namun sayangnya, Anda biasanya tidak dapat melakukan keduanya. Hal ini akan menjadi sangat jelas ketika kita akhirnya sampai pada topik kriptografi kunci publik.

Lintas protokol/penurunan versi

Serangan kriptografi: penjelasan untuk pikiran yang bingungDalam Now You See Me (2013), sekelompok ilusionis berusaha menipu raja asuransi korup Arthur Tressler dari seluruh kekayaannya. Untuk mendapatkan akses ke rekening bank Arthur, para ilusionis harus memberikan nama pengguna dan kata sandinya atau memaksanya untuk datang langsung ke bank dan mengambil bagian dalam skema tersebut.

Kedua pilihan tersebut sangat sulit; Orang-orang terbiasa tampil di atas panggung, dan tidak ikut serta dalam operasi intelijen. Jadi mereka memilih opsi ketiga: kaki tangan mereka menelepon bank dan berpura-pura menjadi Arthur. Bank menanyakan beberapa pertanyaan untuk memverifikasi identitas, seperti nama paman dan nama hewan peliharaan pertama; pahlawan kita sebelumnya mereka dengan mudah mengekstrak informasi ini dari Arthur menggunakan rekayasa sosial yang cerdas. Mulai saat ini, keamanan kata sandi yang baik tidak lagi penting.

(Menurut legenda urban yang telah kami verifikasi dan verifikasi secara pribadi, kriptografer Eli Beaham pernah bertemu dengan seorang teller bank yang bersikeras mengajukan pertanyaan keamanan. Ketika teller menanyakan nama nenek dari pihak ibu, Beaham mulai mendiktekan: “Capital X, kecil y, tiga... ").

Hal yang sama terjadi dalam kriptografi, jika dua protokol kriptografi digunakan secara paralel untuk melindungi aset yang sama, dan yang satu jauh lebih lemah dibandingkan yang lain. Sistem yang dihasilkan menjadi rentan terhadap serangan lintas protokol, di mana protokol yang lebih lemah diserang untuk mendapatkan hadiah tanpa menyentuh protokol yang lebih kuat.

Dalam beberapa kasus yang kompleks, tidak cukup hanya menghubungi server menggunakan protokol yang lebih lemah, namun memerlukan partisipasi paksa dari klien yang sah. Hal ini dapat diatur dengan menggunakan apa yang disebut serangan downgrade. Untuk memahami serangan ini, mari kita asumsikan bahwa para ilusionis kita mempunyai tugas yang lebih sulit daripada di film. Misalkan seorang pegawai bank (kasir) dan Arthur menghadapi beberapa keadaan yang tidak terduga, sehingga terjadi dialog berikut:

Pencuri: Halo? Ini Arthur Tressler. Saya ingin mengatur ulang kata sandi saya.

Kasir: Besar. Silakan lihat buku kode rahasia pribadi Anda, halaman 28, kata 3. Semua pesan berikut akan dienkripsi menggunakan kata khusus ini sebagai kuncinya. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPV…

Pencuri: Hei, hei, tunggu, tunggu. Apakah ini benar-benar diperlukan? Tidak bisakah kita berbicara seperti orang normal?

Kasir: Saya tidak menyarankan melakukan ini.

Pencuri: Aku hanya... dengar, hariku buruk, oke? Saya klien VIP dan saya sedang tidak berminat untuk menggali buku kode bodoh ini.

Kasir: Bagus. Jika Anda bersikeras, Tn. Tressler. Apa yang kamu inginkan?

Pencuri: Tolong, saya ingin menyumbangkan semua uang saya ke Dana Korban Nasional Arthur Tressler.

(Berhenti sebentar).

Kasir: Apakah sudah jelas sekarang. Harap berikan PIN Anda untuk transaksi dalam jumlah besar.

Pencuri: Apaku?

Kasir: Atas permintaan pribadi Anda, transaksi sebesar ini memerlukan PIN untuk transaksi besar. Kode ini diberikan kepada Anda saat Anda membuka akun.

Pencuri:... Saya kehilangan itu. Apakah ini benar-benar diperlukan? Tidak bisakah kamu menyetujui kesepakatan itu?

Kasir: TIDAK. Maafkan saya, Tn. Tressler. Sekali lagi, ini adalah tindakan pengamanan yang Anda minta. Jika Anda mau, kami dapat mengirimkan kode PIN baru ke kotak surat Anda.

Pahlawan kita menunda operasinya. Mereka menguping beberapa transaksi besar Tressler, berharap mendengar PIN; tapi setiap kali percakapan berubah menjadi omong kosong berkode sebelum sesuatu yang menarik terucap. Akhirnya, suatu hari nanti, rencana itu dilaksanakan. Mereka menunggu dengan sabar saat Tressler harus melakukan transaksi besar melalui telepon, dia menelepon, dan kemudian...

Tressler: Halo. Saya ingin menyelesaikan transaksi jarak jauh.

Kasir: Besar. Silakan lihat buku kode rahasia pribadi Anda, halaman...

(Pencuri menekan tombol; suara kasir berubah menjadi suara yang tidak dapat dipahami).

Kasir: - #@$#@$#*@$$@#* akan dienkripsi dengan kata ini sebagai kuncinya. AAAYRR PLRQRZ MMNJK LOJBAN…

Tressler: Maaf, saya tidak begitu mengerti. Lagi? Di halaman apa? Kata apa?

Kasir: Ini adalah halaman @#$@#*$)#*#@()#@$(#@*$(#@*.

Tressler: Apa?

Kasir: Kata nomor dua puluh @$#@$#%#$.

Tressler: Dengan serius! Sudah cukup! Anda dan protokol keamanan Anda adalah semacam sirkus. Saya tahu Anda dapat berbicara dengan saya secara normal.

Kasir: Saya tidak merekomendasikan…

Tressler: Dan saya tidak menyarankan Anda membuang waktu saya. Saya tidak ingin mendengar lagi tentang hal ini sampai Anda memperbaiki masalah saluran telepon Anda. Bisakah kita menyelesaikan kesepakatan ini atau tidak?

Kasir:… Ya. Bagus. Apa yang kamu inginkan?

Tressler: Saya ingin mentransfer $20 ke Lord Business Investments, nomor rekening...

Kasir: Mohon tunggu sebentar. Ini masalah besar. Harap berikan PIN Anda untuk transaksi dalam jumlah besar.

Tressler: Apa? Oh, tepatnya. 1234.

Inilah serangan ke bawah. Protokol yang lebih lemah "bicara saja secara langsung" dibayangkan sebagai pilihan dalam keadaan darurat. Namun di sinilah kita berada.

Anda mungkin bertanya-tanya siapa yang waras yang akan merancang sistem "aman sampai diminta sebaliknya" seperti yang dijelaskan di atas. Namun sama seperti bank fiktif yang mengambil risiko untuk mempertahankan pelanggan yang tidak menyukai kriptografi, sistem secara umum sering kali tertarik pada persyaratan yang acuh tak acuh atau bahkan sangat tidak bersahabat dengan keamanan.

Hal inilah yang terjadi dengan protokol SSLv2 pada tahun 1995. Pemerintah AS telah lama memandang kriptografi sebagai senjata yang sebaiknya dijauhkan dari musuh asing dan domestik. Potongan kode disetujui secara individual untuk diekspor dari Amerika Serikat, seringkali dengan syarat bahwa algoritme tersebut sengaja dilemahkan. Netscape, pengembang browser paling populer, Netscape Navigator, diberi izin untuk SSLv2 hanya dengan kunci RSA 512-bit yang rentan (dan 40-bit untuk RC4).

Pada akhir milenium, peraturan telah dilonggarkan dan akses terhadap enkripsi modern tersedia secara luas. Namun, klien dan server telah mendukung kriptografi "ekspor" yang melemah selama bertahun-tahun karena kelembaman yang sama yang mempertahankan dukungan untuk sistem lama apa pun. Klien percaya bahwa mereka mungkin menemukan server yang tidak mendukung hal lain. Server melakukan hal yang sama. Tentu saja, protokol SSL menyatakan bahwa klien dan server tidak boleh menggunakan protokol yang lemah jika tersedia protokol yang lebih baik. Namun premis yang sama juga berlaku pada Tressler dan banknya.

Teori ini menyebabkan dua serangan tingkat tinggi yang mengguncang keamanan protokol SSL pada tahun 2015, keduanya ditemukan oleh peneliti Microsoft dan INRIA. Pertama, rincian serangan FREAK terungkap pada bulan Februari, diikuti tiga bulan kemudian oleh serangan serupa lainnya yang disebut Logjam, yang akan kita bahas lebih rinci ketika kita beralih ke serangan terhadap kriptografi kunci publik.

Serangan kriptografi: penjelasan untuk pikiran yang bingungKerentanan FREAK (juga dikenal sebagai "Smack TLS") terungkap ketika peneliti menganalisis implementasi klien/server TLS dan menemukan bug yang aneh. Dalam implementasi ini, jika klien bahkan tidak meminta untuk menggunakan kriptografi ekspor yang lemah, namun server masih merespons dengan kunci tersebut, klien mengatakan "Baiklah" dan beralih ke rangkaian sandi yang lemah.

Pada saat itu, kriptografi ekspor secara luas dianggap ketinggalan jaman dan terlarang, sehingga serangan tersebut benar-benar mengejutkan dan mempengaruhi banyak domain penting, termasuk situs Gedung Putih, IRS, dan NSA. Lebih buruk lagi, ternyata banyak server yang rentan mengoptimalkan kinerja dengan menggunakan kembali kunci yang sama daripada membuat kunci baru untuk setiap sesi. Hal ini memungkinkan, setelah menurunkan versi protokol, untuk melakukan serangan pra-perhitungan: memecahkan satu kunci masih relatif mahal ($100 dan 12 jam pada saat publikasi), namun biaya praktis untuk menyerang koneksi berkurang secara signifikan. Cukup memilih kunci server satu kali dan memecahkan enkripsi untuk semua koneksi berikutnya sejak saat itu.

Dan sebelum kita melanjutkan, ada satu serangan lanjutan yang perlu disebutkan...

Serangan Oracle

Serangan kriptografi: penjelasan untuk pikiran yang bingungMoxie Marlinspike paling dikenal sebagai bapak aplikasi perpesanan kripto lintas platform, Signal; tapi kami pribadi menyukai salah satu inovasinya yang kurang dikenal - prinsip malapetaka kriptografi (Prinsip Kehancuran Kriptografi). Untuk sedikit memparafrasekannya, kita dapat mengatakan ini: “Jika protokolnya berfungsi apapun melakukan operasi kriptografi pada pesan dari sumber yang berpotensi berbahaya dan berperilaku berbeda tergantung pada hasilnya, maka pesan tersebut akan hancur." Atau dalam bentuk yang lebih tajam: “Jangan mengambil informasi dari musuh untuk diproses, dan jika harus, setidaknya jangan tunjukkan hasilnya.”

Mari kita kesampingkan buffer overflows, injeksi perintah, dan sejenisnya; mereka berada di luar cakupan diskusi ini. Pelanggaran terhadap "prinsip malapetaka" menyebabkan peretasan kriptografi yang serius karena fakta bahwa protokol tersebut berperilaku persis seperti yang diharapkan.

Sebagai contoh, mari kita ambil desain fiktif dengan sandi substitusi yang rentan, lalu tunjukkan kemungkinan serangan. Meskipun kita telah melihat serangan terhadap sandi substitusi menggunakan analisis frekuensi, ini bukan sekadar "cara lain untuk memecahkan sandi yang sama". Sebaliknya, serangan oracle adalah penemuan yang jauh lebih modern, dapat diterapkan pada banyak situasi di mana analisis frekuensi gagal, dan kita akan melihat demonstrasi mengenai hal ini di bagian berikutnya. Di sini sandi sederhana dipilih hanya untuk membuat contoh lebih jelas.

Jadi Alice dan Bob berkomunikasi menggunakan sandi substitusi sederhana menggunakan kunci yang hanya mereka ketahui. Mereka sangat ketat dalam hal panjang pesan: panjangnya tepat 20 karakter. Jadi mereka sepakat bahwa jika seseorang ingin mengirim pesan yang lebih pendek, mereka harus menambahkan beberapa teks tiruan di akhir pesan agar tepat 20 karakter. Setelah beberapa diskusi, mereka memutuskan bahwa mereka hanya akan menerima teks tiruan berikut: a, bb, ccc, dddd dll. Dengan demikian, teks tiruan dengan panjang berapa pun yang diperlukan diketahui.

Ketika Alice atau Bob menerima pesan, pertama-tama mereka memeriksa apakah panjang pesan tersebut benar (20 karakter) dan akhiran adalah teks tiruan yang benar. Jika hal ini tidak terjadi, maka mereka merespons dengan pesan kesalahan yang sesuai. Jika panjang teks dan teks tiruan baik-baik saja, penerima akan membaca pesan itu sendiri dan mengirimkan respons terenkripsi.

Selama serangan itu, penyerang menyamar sebagai Bob dan mengirimkan pesan palsu ke Alice. Pesan-pesan tersebut benar-benar tidak masuk akal - penyerang tidak memiliki kuncinya, dan oleh karena itu tidak dapat memalsukan pesan yang bermakna. Namun karena protokol tersebut melanggar prinsip malapetaka, penyerang masih dapat menjebak Alice untuk mengungkapkan informasi penting, seperti yang ditunjukkan di bawah ini.

Pencuri: PREWF ZHJKL MMMN. LA

Alice: Teks tiruan tidak valid.

Pencuri: PREWF ZHJKL MMMN. LB

Alice: Teks tiruan tidak valid.

Pencuri: PREWF ZHJKL MMMN. LC

Alice: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

Pencuri itu tidak tahu apa yang baru saja dikatakan Alice, tetapi memperhatikan simbol itu C harus sesuai a, karena Alice menerima teks tiruan itu.

Pencuri: REWF ZHJKL MMMN. LAA

Alice: Teks tiruan tidak valid.

Pencuri: REWF ZHJKL MMMN. LBB

Alice: Teks tiruan tidak valid.

Setelah beberapa kali mencoba...

Pencuri: REWF ZHJKL MMMN. LGG

Alice: Teks tiruan tidak valid.

Pencuri: REWF ZHJKL MMMN. LHH

Alice: TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.

Sekali lagi, penyerang tidak tahu apa yang baru saja dikatakan Alice, namun mencatat bahwa H harus cocok dengan b karena Alice menerima teks tiruan.

Begitu seterusnya hingga penyerang mengetahui arti dari masing-masing karakter.

Sekilas, metode ini menyerupai serangan teks biasa yang dipilih. Pada akhirnya, penyerang memilih teks tersandi, dan server dengan patuh memprosesnya. Perbedaan utama yang membuat serangan ini dapat dilakukan di dunia nyata adalah bahwa penyerang tidak memerlukan akses ke transkrip sebenarnya—respon server, bahkan respons yang tidak berbahaya seperti “Teks dummy tidak valid”, sudah cukup.

Meskipun serangan khusus ini bersifat instruktif, jangan terlalu terpaku pada skema "teks tiruan" spesifik, sistem kriptografi spesifik yang digunakan, atau urutan pesan yang dikirim oleh penyerang. Ide dasarnya adalah bagaimana Alice bereaksi secara berbeda berdasarkan properti dari teks biasa, dan melakukannya tanpa memverifikasi bahwa teks tersandi yang bersangkutan benar-benar berasal dari pihak yang dipercaya. Dengan demikian, Alice mengizinkan penyerang untuk memeras informasi rahasia dari jawabannya.

Ada banyak hal yang bisa diubah dalam skenario ini. Simbol-simbol yang Alice bereaksi, atau perbedaan besar dalam perilakunya, atau bahkan sistem kriptografi yang digunakan. Namun prinsipnya akan tetap sama, dan serangan secara keseluruhan akan tetap dapat dilakukan dalam satu atau lain bentuk. Implementasi dasar dari serangan ini membantu mengungkap beberapa bug keamanan, yang akan segera kita bahas; tapi pertama-tama ada beberapa pelajaran teoritis yang bisa dipelajari. Bagaimana cara menggunakan "skrip Alice" fiktif ini dalam serangan yang dapat bekerja pada sandi modern yang nyata? Apakah ini mungkin, bahkan secara teori?

Pada tahun 1998, kriptografer Swiss Daniel Bleichenbacher menjawab pertanyaan ini dengan setuju. Dia mendemonstrasikan serangan oracle pada sistem kriptografi kunci publik RSA yang banyak digunakan, menggunakan skema pesan tertentu. Dalam beberapa implementasi RSA, server merespons dengan pesan kesalahan yang berbeda tergantung pada apakah teks biasa cocok dengan skema atau tidak; ini cukup untuk melakukan serangan.

Empat tahun kemudian, pada tahun 2002, kriptografer Perancis Serge Vaudenay mendemonstrasikan serangan oracle yang hampir sama dengan yang dijelaskan dalam skenario Alice di atas - kecuali bahwa alih-alih menggunakan sandi fiktif, ia memecahkan seluruh kelas sandi modern yang digunakan manusia. Secara khusus, serangan Vaudenay menargetkan cipher dengan ukuran input tetap ("block cipher") ketika digunakan dalam apa yang disebut "mode enkripsi CBC" dan dengan skema padding tertentu yang populer, pada dasarnya setara dengan yang ada dalam skenario Alice.

Juga pada tahun 2002, kriptografer Amerika John Kelsey - rekan penulis Twofish — mengusulkan berbagai serangan Oracle pada sistem yang mengompresi pesan dan kemudian mengenkripsinya. Yang paling menonjol di antaranya adalah serangan yang memanfaatkan fakta bahwa panjang asli teks biasa sering kali dapat disimpulkan dari panjang teks tersandi. Secara teori, hal ini memungkinkan terjadinya serangan Oracle yang memulihkan sebagian teks biasa asli.

Di bawah ini kami memberikan penjelasan lebih rinci tentang serangan Vaudenay dan Kelsey (kami akan memberikan penjelasan lebih rinci tentang serangan Bleichenbacher ketika kita beralih ke serangan terhadap kriptografi kunci publik). Meskipun kami telah berupaya semaksimal mungkin, teks ini menjadi agak teknis; jadi jika cara di atas sudah cukup bagi Anda, lewati dua bagian berikutnya.

Serangan Vodene

Untuk memahami serangan Vaudenay, pertama-tama kita perlu membahas lebih banyak tentang cipher blok dan mode enkripsi. Sebuah "block cipher" adalah, seperti disebutkan, sebuah cipher yang mengambil kunci dan input dengan panjang tetap tertentu ("panjang blok") dan menghasilkan blok terenkripsi dengan panjang yang sama. Block cipher banyak digunakan dan dianggap relatif aman. DES yang sekarang sudah pensiun, dianggap sebagai sandi modern pertama, adalah sandi blok. Seperti disebutkan di atas, hal yang sama juga berlaku untuk AES yang banyak digunakan saat ini.

Sayangnya, block cipher mempunyai satu kelemahan yang mencolok. Ukuran blok tipikal adalah 128 bit, atau 16 karakter. Jelasnya, kriptografi modern memerlukan penggunaan data masukan yang lebih besar, dan di sinilah mode enkripsi berperan. Mode enkripsi pada dasarnya adalah peretasan: ini adalah cara untuk menerapkan sandi blok yang hanya menerima masukan dengan ukuran tertentu ke masukan dengan panjang sewenang-wenang.

Serangan Vodene difokuskan pada mode operasi CBC (Cipher Block Chaining) yang populer. Serangan tersebut memperlakukan cipher blok yang mendasarinya sebagai kotak hitam ajaib yang tidak dapat ditembus dan sepenuhnya mengabaikan keamanannya.

Berikut diagram yang menunjukkan cara kerja mode CBC:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Tanda plus yang dilingkari menandakan operasi XOR (eksklusif OR). Misalnya, blok ciphertext kedua diterima:

  1. Dengan melakukan operasi XOR pada blok plaintext kedua dengan blok ciphertext pertama.
  2. Mengenkripsi blok yang dihasilkan dengan cipher blok menggunakan kunci.

Karena CBC sangat banyak menggunakan operasi XOR biner, mari kita ingat kembali beberapa propertinya:

  • Idempotensi: Serangan kriptografi: penjelasan untuk pikiran yang bingung
  • Komutatifitas: Serangan kriptografi: penjelasan untuk pikiran yang bingung
  • Asosiatif: Serangan kriptografi: penjelasan untuk pikiran yang bingung
  • Reversibilitas diri: Serangan kriptografi: penjelasan untuk pikiran yang bingung
  • Ukuran byte: byte n dari Serangan kriptografi: penjelasan untuk pikiran yang bingung = (byte n dari Serangan kriptografi: penjelasan untuk pikiran yang bingung) Serangan kriptografi: penjelasan untuk pikiran yang bingung (byte n dari Serangan kriptografi: penjelasan untuk pikiran yang bingung)

Biasanya, sifat-sifat ini menyiratkan bahwa jika kita memiliki persamaan yang melibatkan operasi XOR dan ada satu persamaan yang tidak diketahui, maka persamaan tersebut dapat diselesaikan. Misalnya kita mengetahuinya Serangan kriptografi: penjelasan untuk pikiran yang bingung dengan yang tidak diketahui Serangan kriptografi: penjelasan untuk pikiran yang bingung dan terkenal Serangan kriptografi: penjelasan untuk pikiran yang bingung и Serangan kriptografi: penjelasan untuk pikiran yang bingung, maka kita dapat mengandalkan properti yang disebutkan di atas untuk menyelesaikan persamaannya Serangan kriptografi: penjelasan untuk pikiran yang bingung. Dengan menerapkan XOR pada kedua ruas persamaan dengan Serangan kriptografi: penjelasan untuk pikiran yang bingung, kita mendapatkan Serangan kriptografi: penjelasan untuk pikiran yang bingung. Ini semua akan menjadi sangat relevan suatu saat nanti.

Ada dua perbedaan kecil dan satu perbedaan besar antara skenario Alice dan serangan Vaudenay. Dua yang kecil:

  • Dalam naskahnya, Alice mengharapkan teks biasa diakhiri dengan karakter a, bb, ccc dan seterusnya. Dalam serangan Wodene, korban mengharapkan teks biasa diakhiri sebanyak N kali dengan N byte (yaitu, heksadesimal 01 atau 02 02, atau 03 03 03, dan seterusnya). Ini murni perbedaan kosmetik.
  • Dalam skenario Alice, mudah untuk mengetahui apakah Alice telah menerima pesan tersebut dengan respons "Teks tiruan salah". Dalam serangan Vodene, diperlukan lebih banyak analisis dan implementasi yang tepat di pihak korban adalah hal yang penting; namun demi singkatnya, anggap saja analisis ini masih memungkinkan.

Perbedaan utama:

  • Karena kita tidak menggunakan kriptosistem yang sama, hubungan antara byte ciphertext yang dikendalikan penyerang dan rahasia (kunci dan plaintext) jelas akan berbeda. Oleh karena itu, penyerang harus menggunakan strategi yang berbeda saat membuat ciphertext dan menafsirkan respons server.

Perbedaan besar ini adalah bagian terakhir dari teka-teki untuk memahami serangan Vaudenay, jadi mari kita luangkan waktu sejenak untuk memikirkan mengapa dan bagaimana serangan oracle terhadap CBC dapat dilakukan.

Misalkan kita diberi ciphertext CBC sebanyak 247 blok, dan kita ingin mendekripsinya. Kami dapat mengirim pesan palsu ke server, sama seperti kami mengirim pesan palsu ke Alice sebelumnya. Server akan mendekripsi pesan untuk kami, tetapi tidak akan menampilkan dekripsinya - sebagai gantinya, sekali lagi, seperti halnya Alice, server hanya akan melaporkan satu bit informasi: apakah teks biasa memiliki padding yang valid atau tidak.

Pertimbangkan bahwa dalam skenario Alice kita memiliki hubungan berikut:

$$display$$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key}) = teks{plaintext}$$display$$

Sebut saja ini "persamaan Alice". Kami mengendalikan ciphertext; server (Alice) membocorkan informasi yang tidak jelas tentang teks biasa yang diterima; dan ini memungkinkan kami untuk menyimpulkan informasi tentang faktor terakhir - kuncinya. Dengan analogi, jika kita dapat menemukan hubungan seperti itu untuk skrip CBC, kita mungkin dapat mengekstrak beberapa informasi rahasia di sana juga.

Untungnya, memang ada hubungan di luar sana yang bisa kita manfaatkan. Pertimbangkan keluaran dari panggilan terakhir untuk mendekripsi sandi blok dan nyatakan keluaran ini sebagai Serangan kriptografi: penjelasan untuk pikiran yang bingung. Kami juga menunjukkan blok teks biasa Serangan kriptografi: penjelasan untuk pikiran yang bingung dan blok ciphertext Serangan kriptografi: penjelasan untuk pikiran yang bingung. Lihatlah lagi diagram CBC dan perhatikan apa yang terjadi:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Sebut saja ini “persamaan CBC”.

Dalam skenario Alice, dengan memonitor ciphertext dan mengamati kebocoran plaintext yang terkait, kami dapat melakukan serangan yang memulihkan suku ketiga dalam persamaan—kuncinya. Dalam skenario CBC, kami juga memantau ciphertext dan mengamati kebocoran informasi pada plaintext terkait. Jika analoginya berlaku, kita dapat memperoleh informasi tentang Serangan kriptografi: penjelasan untuk pikiran yang bingung.

Anggap saja kita benar-benar pulih Serangan kriptografi: penjelasan untuk pikiran yang bingung, lalu bagaimana? Baiklah, kita bisa mencetak seluruh blok teks biasa terakhir sekaligus (Serangan kriptografi: penjelasan untuk pikiran yang bingung), cukup dengan memasukkan Serangan kriptografi: penjelasan untuk pikiran yang bingung (yang kami miliki) dan
diterima Serangan kriptografi: penjelasan untuk pikiran yang bingung ke dalam persamaan CBC.

Kini setelah kita optimis mengenai rencana penyerangan secara keseluruhan, sekarang saatnya untuk memikirkan rinciannya. Harap perhatikan dengan tepat bagaimana informasi teks biasa bocor di server. Dalam skrip Alice, kebocoran terjadi karena Alice hanya akan merespons dengan pesan yang benar jika $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ diakhiri dengan baris a (Atau bb, dan seterusnya, namun kemungkinan terjadinya kondisi tersebut secara kebetulan sangat kecil). Mirip dengan CBC, server menerima padding jika dan hanya jika Serangan kriptografi: penjelasan untuk pikiran yang bingung diakhiri dengan heksadesimal 01. Jadi mari kita coba trik yang sama: mengirimkan ciphertext palsu dengan nilai palsu kita sendiri Serangan kriptografi: penjelasan untuk pikiran yang bingungsampai server menerima pengisian.

Ketika server menerima padding untuk salah satu pesan palsu kami, itu berarti:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Sekarang kita menggunakan properti XOR byte-byte:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Kita tahu istilah pertama dan ketiga. Dan kita telah melihat bahwa ini memungkinkan kita memulihkan sisa istilah - byte terakhir dari Serangan kriptografi: penjelasan untuk pikiran yang bingung:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Ini juga memberi kita byte terakhir dari blok teks biasa akhir melalui persamaan CBC dan properti byte-demi-byte.

Kita bisa berhenti di situ dan merasa puas bahwa kita telah melakukan serangan terhadap sandi yang secara teoritis kuat. Namun sebenarnya kita dapat melakukan lebih banyak lagi: kita sebenarnya dapat memulihkan seluruh teks. Ini memerlukan trik yang tidak ada dalam skrip asli Alice dan tidak diperlukan untuk serangan oracle, tapi masih layak untuk dipelajari.

Untuk memahaminya, perhatikan dulu hasil keluaran nilai byte terakhir yang benar adalah Serangan kriptografi: penjelasan untuk pikiran yang bingung kami memiliki kemampuan baru. Sekarang, saat memalsukan ciphertext, kita dapat memanipulasi byte terakhir dari plaintext yang bersangkutan. Sekali lagi, ini terkait dengan persamaan CBC dan properti byte-demi-byte:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Karena sekarang kita mengetahui suku kedua, kita dapat menggunakan kendali kita atas suku pertama untuk mengendalikan suku ketiga. Kita cukup menghitung:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Kami tidak dapat melakukan ini sebelumnya karena kami belum memiliki byte terakhir Serangan kriptografi: penjelasan untuk pikiran yang bingung.

Bagaimana hal ini dapat membantu kita? Misalkan kita sekarang membuat semua cipherteks sedemikian rupa sehingga dalam teks biasa yang sesuai, byte terakhirnya sama 02. Server sekarang hanya menerima padding jika teks biasa diakhiri dengan 02 02. Karena kami mengoreksi byte terakhir, ini hanya akan terjadi jika byte kedua dari belakang teks biasa juga 02. Kami terus mengirimkan blok teks tersandi palsu, mengubah byte kedua dari belakang, hingga server menerima padding untuk salah satunya. Pada titik ini kita mendapatkan:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Dan kami mengembalikan byte kedua dari belakang Serangan kriptografi: penjelasan untuk pikiran yang bingung sama seperti yang terakhir dipulihkan. Kami melanjutkan dengan semangat yang sama: kami mengoreksi dua byte terakhir teks biasa menjadi 03 03, kami mengulangi serangan ini untuk byte ketiga dari akhir dan seterusnya, pada akhirnya memulihkan sepenuhnya Serangan kriptografi: penjelasan untuk pikiran yang bingung.

Bagaimana dengan sisa teksnya? Harap dicatat bahwa nilainya Serangan kriptografi: penjelasan untuk pikiran yang bingung sebenarnya adalah $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$. Kita dapat menempatkan blok lain sebagai gantinya Serangan kriptografi: penjelasan untuk pikiran yang bingung, dan serangan itu akan tetap berhasil. Faktanya, kita dapat meminta server untuk melakukan $inline$text{BLOCK_DECRYPT}$inline$ untuk data apa pun. Pada titik ini, permainan berakhir - kita dapat mendekripsi ciphertext apa pun (lihat lagi diagram dekripsi CBC untuk melihatnya; dan perhatikan bahwa IV bersifat publik).

Metode khusus ini memainkan peran penting dalam serangan oracle yang akan kita temui nanti.

serangan Kelsey

John Kelsey yang ramah memaparkan prinsip-prinsip yang mendasari banyak kemungkinan serangan, bukan hanya rincian serangan spesifik terhadap sandi tertentu. Miliknya Artikel 2002 tahun ini adalah studi tentang kemungkinan serangan terhadap data terkompresi terenkripsi. Apakah menurut Anda informasi bahwa data dikompresi sebelum enkripsi tidak cukup untuk melakukan serangan? Ternyata itu sudah cukup.

Hasil yang mengejutkan ini disebabkan oleh dua prinsip. Pertama, terdapat korelasi yang kuat antara panjang plaintext dan panjang ciphertext; untuk banyak sandi persamaan yang tepat. Kedua, ketika kompresi dilakukan, terdapat juga korelasi yang kuat antara panjang pesan yang dikompresi dan tingkat "kebisingan" teks biasa, yaitu proporsi karakter yang tidak berulang (istilah teknisnya adalah "entropi tinggi" ).

Untuk melihat penerapan prinsip ini, pertimbangkan dua teks biasa:

Teks biasa 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Teks biasa 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

Anggaplah kedua teks biasa dikompresi dan kemudian dienkripsi. Anda mendapatkan dua ciphertext yang dihasilkan dan harus menebak ciphertext mana yang cocok dengan plaintext mana:

Teks sandi 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

Teks sandi 2: DWKJZXYU

Jawabannya jelas. Di antara teks biasa, hanya teks biasa 1 yang dapat dikompresi menjadi teks tersandi kedua yang panjangnya sedikit. Kami menemukan jawabannya tanpa mengetahui apa pun tentang algoritme kompresi, kunci enkripsi, atau bahkan sandi itu sendiri. Dibandingkan dengan hierarki kemungkinan serangan kriptografi, ini agak gila.

Kelsey lebih lanjut menunjukkan bahwa dalam keadaan tertentu yang tidak biasa, prinsip ini juga dapat digunakan untuk melakukan serangan oracle. Secara khusus, ini menjelaskan bagaimana penyerang dapat memulihkan teks biasa rahasia jika dia dapat memaksa server untuk mengenkripsi data formulir (teks biasa diikuti oleh Serangan kriptografi: penjelasan untuk pikiran yang bingungsementara dia memegang kendali Serangan kriptografi: penjelasan untuk pikiran yang bingung dan entah bagaimana dapat memeriksa panjang hasil terenkripsi.

Sekali lagi, seperti serangan Oracle lainnya, kami memiliki hubungan:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Sekali lagi, kami mengontrol satu suku (Serangan kriptografi: penjelasan untuk pikiran yang bingung), kami melihat sedikit kebocoran informasi tentang anggota lain (ciphertext) dan mencoba memulihkan yang terakhir (plaintext). Terlepas dari analoginya, ini adalah situasi yang agak tidak biasa dibandingkan dengan serangan oracle lain yang pernah kita lihat.

Untuk mengilustrasikan cara kerja serangan tersebut, mari kita gunakan skema kompresi fiktif yang baru saja kita buat: TOYZIP. Ini mencari baris teks yang telah muncul sebelumnya dalam teks dan menggantinya dengan tiga byte placeholder yang menunjukkan di mana menemukan contoh baris sebelumnya dan berapa kali baris tersebut muncul di sana. Misalnya saja garis helloworldhello dapat dikompresi menjadi helloworld[00][00][05] Panjang 13 byte dibandingkan dengan 15 byte asli.

Misalkan seorang penyerang mencoba memulihkan teks biasa suatu formulir password=..., yang kata sandinya sendiri tidak diketahui. Menurut model serangan Kelsey, penyerang dapat meminta server untuk mengompresi dan kemudian mengenkripsi pesan formulir (teks biasa diikuti dengan Serangan kriptografi: penjelasan untuk pikiran yang bingung), dimana Serangan kriptografi: penjelasan untuk pikiran yang bingung - teks bebas. Ketika server selesai bekerja, ia melaporkan panjang hasilnya. Serangannya seperti ini:

Pencuri: Harap kompres dan enkripsi teks biasa tanpa bantalan apa pun.

Server: Panjang hasil 14.

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=a.

Server: Panjang hasil 18.

Catatan cracker: [asli 14] + [tiga byte yang diganti password=] + a

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=b.

Server: Panjang hasil 18.

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=с.

Server: Panjang hasil 17.

Catatan cracker: [asli 14] + [tiga byte yang diganti password=c]. Ini mengasumsikan bahwa teks biasa asli berisi string password=c. Artinya, kata sandi diawali dengan huruf c

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=сa.

Server: Panjang hasil 18.

Catatan cracker: [asli 14] + [tiga byte yang diganti password=с] + a

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=сb.

Server: Panjang hasil 18.

(… Beberapa waktu kemudian…)

Pencuri: Harap kompres dan enkripsi teks biasa yang ditambahkan password=со.

Server: Panjang hasil 17.

Catatan cracker: [asli 14] + [tiga byte yang diganti password=co]. Dengan menggunakan logika yang sama, penyerang menyimpulkan bahwa kata sandi diawali dengan huruf co

Begitu seterusnya hingga seluruh kata sandi pulih.

Pembaca akan dimaafkan jika berpikir bahwa ini murni latihan akademis dan skenario serangan seperti itu tidak akan pernah muncul di dunia nyata. Sayangnya, seperti yang akan segera kita lihat, lebih baik jangan menyerah pada kriptografi.

Kerentanan merek: CRIME, POODLE, DROWN

Terakhir, setelah mempelajari teorinya secara mendetail, kita dapat melihat bagaimana teknik ini diterapkan dalam serangan kriptografi di kehidupan nyata.

KEJAHATAN

Serangan kriptografi: penjelasan untuk pikiran yang bingungJika serangan ditujukan pada browser dan jaringan korban, ada yang lebih mudah dan ada yang lebih sulit. Misalnya, mudah untuk melihat lalu lintas korban: cukup duduk bersamanya di kafe yang sama yang memiliki WiFi. Oleh karena itu, calon korban (yaitu semua orang) umumnya disarankan untuk menggunakan koneksi terenkripsi. Akan lebih sulit, namun tetap memungkinkan, untuk membuat permintaan HTTP atas nama korban ke beberapa situs pihak ketiga (misalnya Google). Penyerang harus memikat korban ke halaman web berbahaya dengan skrip yang membuat permintaan tersebut. Browser web akan secara otomatis menyediakan cookie sesi yang sesuai.

Ini nampaknya luar biasa. Jika Bob pergi ke evil.com, bisakah skrip di situs ini meminta Google mengirimkan kata sandi Bob ke email [email protected]? Secara teori ya, tetapi kenyataannya tidak. Skenario ini disebut serangan pemalsuan permintaan lintas situs (Pemalsuan Permintaan Lintas Situs, CSRF), dan populer sekitar pertengahan tahun 90an. Hari ini jika evil.com mencoba trik ini, Google (atau situs web terkemuka lainnya) biasanya akan merespons dengan, “Bagus, tetapi token CSRF Anda untuk transaksi ini akan... um... три триллиона и семь. Silakan ulangi nomor ini." Browser modern memiliki sesuatu yang disebut "kebijakan asal yang sama" yang mana skrip di situs A tidak memiliki akses ke informasi yang dikirim oleh situs B. Jadi skrip di evil.com dapat mengirim permintaan ke google.com, namun tidak dapat membaca respons atau menyelesaikan transaksi.

Kita harus menekankan bahwa kecuali Bob menggunakan koneksi terenkripsi, semua perlindungan ini tidak ada artinya. Penyerang cukup membaca lalu lintas Bob dan memulihkan cookie sesi Google. Dengan cookie ini, dia cukup membuka tab Google baru tanpa meninggalkan browsernya sendiri dan menyamar sebagai Bob tanpa menghadapi kebijakan asal yang sama. Namun, sayangnya bagi pencuri, hal ini semakin jarang terjadi. Internet secara keseluruhan telah lama menyatakan perang terhadap koneksi yang tidak terenkripsi, dan lalu lintas keluar Bob mungkin dienkripsi, suka atau tidak suka. Selain itu, sejak awal penerapan protokol, lalu lintas juga terganggu menyusut sebelum enkripsi; ini adalah praktik umum untuk mengurangi latensi.

Di sinilah hal ini berperan KEJAHATAN (Infoleak Rasio Kompresi Menjadi Mudah, kebocoran sederhana melalui rasio kompresi). Kerentanan ini diungkapkan pada bulan September 2012 oleh peneliti keamanan Juliano Rizzo dan Thai Duong. Kami telah memeriksa seluruh landasan teori, yang memungkinkan kami memahami apa yang mereka lakukan dan bagaimana caranya. Penyerang dapat memaksa browser Bob untuk mengirimkan permintaan ke Google dan kemudian mendengarkan respons di jaringan lokal dalam bentuk terkompresi dan terenkripsi. Oleh karena itu kami memiliki:

Serangan kriptografi: penjelasan untuk pikiran yang bingung

Di sini penyerang mengontrol permintaan dan memiliki akses ke traffic sniffer, termasuk ukuran paket. Skenario fiksi Kelsey menjadi nyata.

Memahami teori tersebut, penulis CRIME menciptakan eksploitasi yang dapat mencuri cookie sesi untuk berbagai situs, termasuk Gmail, Twitter, Dropbox, dan Github. Kerentanan ini mempengaruhi sebagian besar browser web modern, mengakibatkan dirilisnya patch yang secara diam-diam mengubur fitur kompresi di SSL sehingga tidak dapat digunakan sama sekali. Satu-satunya yang terlindung dari kerentanan adalah Internet Explorer yang terhormat, yang tidak pernah menggunakan kompresi SSL sama sekali.

PODLE

Serangan kriptografi: penjelasan untuk pikiran yang bingungPada bulan Oktober 2014, tim keamanan Google membuat gebrakan di komunitas keamanan. Mereka mampu mengeksploitasi kerentanan dalam protokol SSL yang telah ditambal lebih dari sepuluh tahun lalu.

Ternyata ketika server menjalankan TLSv1.2 baru yang mengkilap, banyak yang meninggalkan dukungan untuk SSLv3 lama untuk kompatibilitas dengan Internet Explorer 6. Kita sudah membicarakan tentang serangan downgrade, jadi Anda bisa membayangkan apa yang terjadi. Sabotase protokol jabat tangan yang diatur dengan baik dan server siap untuk kembali ke SSLv3 lama yang baik, yang pada dasarnya membatalkan penelitian keamanan selama 15 tahun terakhir.

Untuk konteks sejarah, berikut rangkuman singkat sejarah SSL hingga versi 2 dari Matthew Green:

Transport Layer Security (TLS) adalah protokol keamanan terpenting di Internet. [..] hampir setiap transaksi yang Anda lakukan di Internet bergantung pada TLS. [..] Tapi TLS tidak selalu TLS. Protokol ini mulai berlaku pada tahun Komunikasi Netscape disebut "Lapisan Soket Aman" atau SSL. Rumor mengatakan bahwa versi pertama SSL sangat buruk sehingga pengembang mengumpulkan semua cetakan kode dan menguburnya di tempat pembuangan sampah rahasia di New Mexico. Akibatnya, versi SSL pertama yang tersedia untuk umum sebenarnya adalah versi SSL 2. Ini cukup menakutkan, dan [..] itu adalah produk dari pertengahan tahun 90an, yang oleh para kriptografer modern dianggap sebagai "zaman kegelapan kriptografi" Banyak serangan kriptografi paling keji yang kita ketahui saat ini belum ditemukan. Akibatnya, para pengembang protokol SSLv2 pada dasarnya dibiarkan meraba-raba dalam kegelapan, dan mereka menghadapi masalah banyak monster yang mengerikan - yang membuat mereka kecewa dan menguntungkan kita, karena serangan terhadap SSLv2 meninggalkan pelajaran berharga bagi protokol generasi berikutnya.

Setelah kejadian ini, pada tahun 1996, Netscape yang frustrasi mendesain ulang protokol SSL dari awal. Hasilnya adalah SSL versi 3 yang memperbaiki beberapa masalah keamanan yang diketahui dari pendahulunya.

Untungnya bagi pencuri, “beberapa” tidak berarti “semua”. Secara keseluruhan, SSLv3 menyediakan semua blok bangunan yang diperlukan untuk meluncurkan serangan Vodene. Protokol ini menggunakan cipher blok mode CBC dan skema padding yang tidak aman (hal ini telah diperbaiki di TLS; oleh karena itu diperlukan serangan downgrade). Jika Anda ingat skema padding dalam deskripsi asli kami tentang serangan Vaudenay, skema SSLv3 sangat mirip.

Namun sayangnya bagi pencuri, “serupa” bukan berarti “identik”. Skema padding SSLv3 adalah "N byte acak diikuti dengan angka N". Cobalah, dalam kondisi ini, untuk memilih blok teks sandi imajiner dan lakukan semua langkah skema asli Vaudene: Anda akan menemukan bahwa serangan tersebut berhasil mengekstrak byte terakhir dari blok teks biasa yang sesuai, tetapi tidak melangkah lebih jauh. Mendekripsi setiap byte ke-16 dari ciphertext adalah trik yang bagus, tapi itu bukan kemenangan.

Menghadapi kegagalan, tim Google mengambil jalan terakhir: mereka beralih ke model ancaman yang lebih kuat - yang digunakan dalam CRIME. Dengan asumsi penyerang adalah skrip yang berjalan di tab browser korban dan dapat mengekstrak cookie sesi, serangan tersebut masih mengesankan. Meskipun model ancaman yang lebih luas kurang realistis, kita telah melihat di bagian sebelumnya bahwa model khusus ini layak dilakukan.

Mengingat kemampuan penyerang yang lebih kuat ini, serangan kini dapat dilanjutkan. Perhatikan bahwa penyerang mengetahui di mana cookie sesi terenkripsi muncul di header dan mengontrol panjang permintaan HTTP sebelumnya. Oleh karena itu, ia dapat memanipulasi permintaan HTTP sehingga byte terakhir cookie sejajar dengan akhir blok. Sekarang byte ini cocok untuk dekripsi. Anda cukup menambahkan satu karakter ke permintaan, dan byte kedua dari belakang cookie akan tetap berada di tempat yang sama dan cocok untuk dipilih menggunakan metode yang sama. Serangan berlanjut dengan cara ini sampai file cookie pulih sepenuhnya. Ini disebut POODLE: Padding Oracle pada Enkripsi Lama yang Diturunkan.

MENENGGELAMKAN

Serangan kriptografi: penjelasan untuk pikiran yang bingungSeperti yang kami sebutkan, SSLv3 memiliki kekurangannya, namun secara fundamental berbeda dari pendahulunya, karena SSLv2 yang bocor adalah produk dari era yang berbeda. Di sana Anda dapat menyela pesan di tengah: соглашусь на это только через мой труп berubah menjadi соглашусь на это; klien dan server dapat bertemu secara online, membangun kepercayaan dan bertukar rahasia di depan penyerang, yang kemudian dapat dengan mudah meniru keduanya. Ada juga masalah dengan kriptografi ekspor, yang kami sebutkan saat mempertimbangkan FREAK. Ini adalah kriptografi Sodom dan Gomora.

Pada bulan Maret 2016, tim peneliti dari berbagai bidang teknis berkumpul dan membuat penemuan mengejutkan: SSLv2 masih digunakan dalam sistem keamanan. Ya, penyerang tidak dapat lagi menurunkan versi sesi TLS modern ke SSLv2 karena lubang tersebut ditutup setelah FREAK dan POODLE, namun mereka masih dapat terhubung ke server dan memulai sendiri sesi SSLv2.

Anda mungkin bertanya, mengapa kami peduli dengan apa yang mereka lakukan di sana? Mereka memiliki sesi yang rentan, tetapi hal itu tidak akan memengaruhi sesi lain atau keamanan server - bukan? Ya, kurang tepat. Ya, secara teori seharusnya begitu. Namun tidak - karena pembuatan sertifikat SSL menimbulkan beban tertentu, sehingga banyak server menggunakan sertifikat yang sama dan, sebagai hasilnya, kunci RSA yang sama untuk koneksi TLS dan SSLv2. Lebih buruk lagi, karena bug OpenSSL, opsi "Nonaktifkan SSLv2" dalam penerapan SSL populer ini tidak benar-benar berfungsi.

Hal ini memungkinkan terjadinya serangan lintas protokol terhadap TLS, yang disebut MENENGGELAMKAN (Mendekripsi RSA dengan Enkripsi Usang dan Lemah, mendekripsi RSA dengan enkripsi usang dan lemah). Ingatlah bahwa ini tidak sama dengan serangan singkat; penyerang tidak perlu bertindak sebagai "orang di tengah" dan tidak perlu melibatkan klien untuk berpartisipasi dalam sesi yang tidak aman. Penyerang cukup memulai sesi SSLv2 yang tidak aman dengan server itu sendiri, menyerang protokol yang lemah, dan memulihkan kunci privat RSA server. Kunci ini juga valid untuk koneksi TLS, dan mulai saat ini, keamanan TLS apa pun tidak dapat mencegahnya disusupi.

Namun untuk memecahkannya, Anda memerlukan serangan yang berfungsi terhadap SSLv2, yang memungkinkan Anda memulihkan tidak hanya lalu lintas tertentu, tetapi juga kunci rahasia server RSA. Meskipun ini adalah pengaturan yang rumit, para peneliti dapat memilih kerentanan apa pun yang ditutup sepenuhnya setelah SSLv2. Mereka akhirnya menemukan opsi yang cocok: serangan Bleichenbacher, yang telah kami sebutkan sebelumnya dan akan kami jelaskan secara detail di artikel berikutnya. SSL dan TLS dilindungi dari serangan ini, namun beberapa fitur acak SSL, dikombinasikan dengan kunci pendek dalam kriptografi tingkat ekspor, memungkinkannya implementasi spesifik DROWN.

Pada saat publikasi ini diterbitkan, 25% situs teratas di Internet terkena dampak kerentanan DROWN, dan serangan tersebut dapat dilakukan dengan sumber daya sederhana yang tersedia bahkan bagi peretas yang nakal sekalipun. Mengambil kunci RSA server memerlukan delapan jam komputasi dan $440, dan SSLv2 berubah dari usang menjadi radioaktif.

Tunggu, bagaimana dengan Heartbleed?

Ini bukan serangan kriptografi seperti yang dijelaskan di atas; Ini adalah buffer overflow.

Mari kita istirahat

Kami memulai dengan beberapa teknik dasar: brute force, interpolasi, downgrade, lintas-protokol, dan pra-perhitungan. Kemudian kita melihat salah satu teknik canggih, yang mungkin merupakan komponen utama serangan kriptografi modern: serangan oracle. Kami menghabiskan cukup banyak waktu untuk mencari tahu - dan memahami tidak hanya prinsip yang mendasarinya, tetapi juga rincian teknis dari dua implementasi spesifik: serangan Vaudenay pada mode enkripsi CBC dan serangan Kelsey pada protokol enkripsi pra-kompresi.

Dalam meninjau serangan downgrade dan prakomputasi, kami menguraikan secara singkat serangan FREAK, yang menggunakan kedua metode tersebut dengan meminta situs target menurunkan versi ke kunci yang lemah dan kemudian menggunakan kembali kunci yang sama. Untuk artikel selanjutnya, kita akan menyimpan serangan Logjam (sangat mirip), yang menargetkan algoritma kunci publik.

Kami kemudian melihat tiga contoh penerapan prinsip-prinsip ini. Pertama, CRIME dan POODLE: dua serangan yang mengandalkan kemampuan penyerang untuk menyuntikkan teks biasa sembarang di sebelah teks biasa target, kemudian memeriksa respons server dan lalu,menggunakan metodologi serangan Oracle, mengeksploitasi informasi yang jarang ini untuk memulihkan sebagian teks biasa. CRIME mengikuti jalur serangan Kelsey pada kompresi SSL, sementara POODLE malah menggunakan varian serangan Vaudenay pada CBC dengan efek yang sama.

Kami kemudian mengalihkan perhatian kami ke serangan DROWN lintas-protokol, yang membuat koneksi ke server menggunakan protokol SSLv2 lama dan kemudian memulihkan kunci rahasia server menggunakan serangan Bleichenbacher. Kami telah melewatkan detail teknis serangan ini untuk saat ini; seperti Logjam, kita harus menunggu sampai kita memiliki pemahaman yang baik tentang sistem kriptografi kunci publik dan kerentanannya.

Pada artikel berikutnya kita akan membahas tentang serangan tingkat lanjut seperti serangan meet-in-the-middle, kriptanalisis diferensial, dan serangan ulang tahun. Mari kita lihat sekilas serangan saluran samping, lalu beralih ke bagian yang menyenangkan: sistem kriptografi kunci publik.

Sumber: www.habr.com

Tambah komentar