Matasano Crypto Challenge 12: Byte at a Time ECB Decryption Simple

Pada tulisan sebelumnya dibahas mengenai cara mendeteksi ECB atau CBC dengan padding oracle. Untuk tulisan hari ini akan dibahas mengenai dekripsi ECB sederhana.

Challenge

Salin fungsi oracle anda ke dalam fungsi baru yang mampu untuk mengenkripsi buffer ke dalam mode ECB menggunakan consistent namun kunci tidak diketahui (Untuk contoh, tetapkan kunci single yang yang acak, sekali dan termasuk variabel global).

Sekarang ambil fungsi yang sama dan tambahkan ke dalam plaintext sebelum dienkripsi, ini dia stringnya:

Um9sbGluJyBpbiBteSA1LjAKV2l0aCBteSByYWctdG9wIGRvd24gc28gbXkg
aGFpciBjYW4gYmxvdwpUaGUgZ2lybGllcyBvbiBzdGFuZGJ5IHdhdmluZyBq
dXN0IHRvIHNheSBoaQpEaWQgeW91IHN0b3A/IE5vLCBJIGp1c3QgZHJvdmUg
YnkK

Spoiler Alert
Jangan lakukan decode string sekarang. Jangan lakukan!

Lakukan decode dengan base64 pada string sebelum ditambahkan. Ingat! Jangan decode string ke base64 dengan manual; lakukan dengan kode anda. Poinnya adalah anda tidak tahu kontennya.

Yang anda dapat sekarang adalah fungsi yang dapat menghasilkan:
AES-128-ECB(your-string || unknown-string, random-key)

Anda bisa melakukan dekrip dengan pemanggilan berulang fungsi oracle yang telah anda buat!

Ini dia garis besar cara melakukannya:

1. Beri byte yang identik ke dalam string anda ke fungsi dalam satu waktu yang sama — mulai dengan 1 byte (“A”), kemudian “AA”, kemudian “AAA” dan seterusnya.

2. Deteksi fungsi yang menggunakan ECB. Anda sudah tahu ini pada challenge sebelumnya, namun lakukan langkah ini lagi.

3. Cari tahu ukuran blok, terka dengan masukkan blok yang tepatnya minimal 1 byte (Misalnya jika blok berukuran 8 byte, buat ‘AAAAAAAA’). Pikirkan tentang fungsi oracle yang digunakan untuk meletakkan posisi byte terakhir.

4. Buat sebuah kamus untuk setiap byte terakhir yang mungkin untuk memberi string yang berbeda ke dalam oracle; misalnya, “AAAAAAAA”, “AAAAAAAB”, “AAAAAAAC”, ingat blok pertama untuk setiap pembacaan.

5. Cocokkan luaran minimal 1 byte yang dimasukkan ke dalam salah satu entri dalam kamus anda. Sekarang anda sudah menemukan byte pertama dalam string yang tidak diketahui.

6. Ulangi juga terhadap byte selanjutnya.

Congratulations
Ini adalah challenge yang matasano berikan dimana solusinya merupakan cara memecahkan crypto yang sesungguhnya. Banyak orang tahu ketika anda mengenkripsi dengan mode ECB, anda dapat melihat penguin melewatinya. Namun tidak banyak dari mereka yang dapat melakukan dekrip konten dari ciphertext dan sekarang anda bisa. Jika pengalaman matasano dalam pedoman apapun, serangan ini akan membuat coding anda berguna dalam melakukan test keamanan suatu sistem.

Solved

Ini dia penyelesainnya.

ecb_decryption_simple

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. (????). Byte-at-a-time ECB decryption (Simple)
Tersedia: cryptopals.com/sets/2/challenges/12/. [12 Januari 2015].

Advertisements

3 thoughts on “Matasano Crypto Challenge 12: Byte at a Time ECB Decryption Simple

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