Matasano Crypto Challenge 17: CBC Padding Oracle

Pada tulisan sebelumnya dibahas mengenai cara melakukan serangan terhadap CBC dengan bitflipping. Untuk tulisan hari ini akan dibahas mengenai keterkaitan padding oracle dan CBC.

Crypto Challenge Set 3

Ini adalah lanjutan dari set mengenai challenge cipher blok kriptografi (stuff disini memainkan blok cipher secara acak).

Set ini mempunyai tingkat kesulitan moderate (menengah). Termasuk serangan yang paling populer terhadapa mode CBC dan tiruan serangan populer lainnya seperti RNG yang dapat membuat anda jengkel dan gemas untuk mencari solusinya.

Matasano juga menjangkau poin pada crypto challenge untuk semua challenge, dengan kemungkinan untuk pengecualian, yang nantinya sangat bernilai dalam memecahkan masalah kriptografi di dunia sesungguhnya.

Challenge

Ini adalah serangan best-known pada kriptografi modern khususnya cipher blok.

Kombinasikan coding tentang padding dan CBC anda sebelumnya, untuk menulis dua fungsi.

Fungsi pertama harus memilih satu string dibawah ini secara acak:

MDAwMDAwTm93IHRoYXQgdGhlIHBhcnR5IGlzIGp1bXBpbmc=
MDAwMDAxV2l0aCB0aGUgYmFzcyBraWNrZWQgaW4gYW5kIHRoZSBWZWdhJ3MgYXJlIHB1bXBpbic=
MDAwMDAyUXVpY2sgdG8gdGhlIHBvaW50LCB0byB0aGUgcG9pbnQsIG5vIGZha2luZw==
MDAwMDAzQ29va2luZyBNQydzIGxpa2UgYSBwb3VuZCBvZiBiYWNvbg==
MDAwMDA0QnVybmluZyAnZW0sIGlmIHlvdSBhaW4ndCBxdWljayBhbmQgbmltYmxl
MDAwMDA1SSBnbyBjcmF6eSB3aGVuIEkgaGVhciBhIGN5bWJhbA==
MDAwMDA2QW5kIGEgaGlnaCBoYXQgd2l0aCBhIHNvdXBlZCB1cCB0ZW1wbw==
MDAwMDA3SSdtIG9uIGEgcm9sbCwgaXQncyB0aW1lIHRvIGdvIHNvbG8=
MDAwMDA4b2xsaW4nIGluIG15IGZpdmUgcG9pbnQgb2g=
MDAwMDA5aXRoIG15IHJhZy10b3AgZG93biBzbyBteSBoYWlyIGNhbiBibG93

Kemudian buat sebuah kunci acak AES (yang bisa disimpan untuk enkripsi selanjutnya), tambahkan padding hingga 16-byte ukuran blok AES dan enkrip CBC dengan kunci tersebut, juga jangan lupa sediakan caller untuk ciphertext dan IV.

Fungsi kedua harus mengambil masukkan ciphertext yang dihasilkan fungsi pertama, lakukan dekrip, cek padding, dan kembalikan nilai true atau false berdasarkan padding valid atau tidak.

Apa yang anda kerjakan disini?

Pasangan fungsi ini kurang lebih menggambarkan enkripsi AES-CBC yang dipakai pada aplikasi web serverside; fungsi kedua memodelkan pemakaian server dalam mengenkripsi session token, yang biasa tersimpan dalam cookie.

Hal tersebut sangat mungkin untuk melakukan dekrip ciphertext yang disediakan oleh fungsi pertama.

Dekripsi disini bergantung pada terungkapnya side-channel oleh fungsi dekripsi. String yang terungkap adalah pesan error yang kemudian divalidasi dengan fungsi padding sebelumnya.

Anda dapat menemukan 100 halaman web dimana serangan ini berjalan, jadi intinya:

Wawasan dasar dibelakang serangan ini adalah dimana byte 01h merupakan padding yang valid dan akan terjadi dalam 1/256 percobaan pada plaintext acak yang dihasilkan oleh dekripsi ciphertext yang rusak.

02h dalam isolasi bukanlah padding yang valid.

02h 02h adalah valid padding, namun sepertinya jarang terjadi secara acak dibanding 01h.

03h 03h 03h sangat sedikit sepertinya.

Jadi anda dapat mengansumsikan jika dekripsi menjadi korup dan hanya mempunyai padding yang valid, anda akan tahu byte termasuk jenis padding apa.

Hal tersebut akan mudah untuk menjegal fakta bahwa plaintext CBC telah ditambahkan padding. Padding oracle tidak berarti apapun dan hanya sebagai padding aktual pada plaintext CBC. Ini akan digunakan untuk menyerang target secara spesifik dalam bit yang kemudian ditangani dengan coding dekripsi anda. Anda dapat mount padding oracle pada blok CBC mana pun, entah ditambahkan padding maupun tidak.

Solved

Karena kemarin proses penyelesaian terlalu panjang dan membuat blog menjadi lambat, kembali saya share penampakannya saja :).

cbc_padding_oracle

Mengapa hanya share screenshot saja? Alasannya bisa anda lihat pada tulisan ikhtisar MCC sebelumnya.

Sekian tulisan hari ini, semoga bermanfaat.

Keep Fun Coding 😀

[1] Unknown. (????). CBC Padding Oracle. Tersedia: cryptopals.com/sets/3/challenges/17/. [21 Januari 2015].

Advertisements

One thought on “Matasano Crypto Challenge 17: CBC Padding Oracle

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s