Enkripsi (lanjut)
Enkripsi Standar
Ada beberapa algoritma enkripsi yang sudah menjadi standar di negara tertentu, misalnya DES, AES. Dan sebagian lain cukup dikenal dalam berbagai implementasi khusus (misalnya TEA yang sering dipakai di embedded system).
Crypto hash
Fungsi hash intinya adalah memetakan sebuah string atau data menjadi bilangan yang relatif singkat (dibandingkan panjang messagenya), misalnya file ratusan megabyte hanya menjadi 16 byte saja. Contoh "hashing" paling sederhana: jumlahkan saja semua bytenya dan modulus dengan bilangan tertentu. Hash ini tidak aman karena kita bisa dengan mudah membuat file lain yang hashnya sama.
Cryptographic hash memiliki properti bahwa jika kita mengubah satu byte saja di data/file aslinya, maka hashnya akan berubah. Secara teori pasti ada dua file dengan hash yang sama, tapi probabilitas ini bisa terjadi amat sangat kecil, dan jika algoritmanya dianggap aman, berarti tidak dikenal cara yang mungkin membuat kita menyusun file atau string sehingga hashnya tertentu.
Ada banyak cryptographic hash di dunia ini, tapi yang sangat sering dipakai adalah MD5 dan SHA1.
MD5
Ini soal yang paling banyak muncul. Jika kita diberi hash MD5, maka ada kemungkinan bisa dicari apa string yang dihash dengan mencarinya online.
MD5 juga memiliki berbagai kelemahan. Silakan baca lengkapnya di http://www.ilmuhacking.com/cryptography/md5-itu-berbahaya/
Perlu dicatat bahwa aturan type conversion di PHP sifatnya aneh dan mempengaruhi kasus tertentu (md5('240610708') == md5('QNKCDZO'
)
https://news.ycombinator.com/item?id=9484757
Via command line kita bisa menggunakan md5sum
di Linux, contoh:
echo -n "yohanes" | md5sum
493331a7321bf622460493a8cda5e4c4 -
Opsi -n
supaya echo tidak menambahkan new line (\n
).
SHA1
Dalam implementasi tertentu, algoritma SHA1 juga bisa diserang dengan hash length extension attack
https://en.wikipedia.org/wiki/Length_extension_attack
Via command line kita bisa menggunakan md5sum
di Linux, contoh:
echo -n "yohanes" | sha1sum
bb4a754c233192de7bcd540688f617730b79f08e -
Brute force dan Dictionary Attack
Brute force artinya mencoba semua kemungkinan key, ini bisa dilakukan jika key ternyata kecil atau berasal dari randoom yang keyspacenya kecil. Dictionary attack artinya mencoba kata-kata yang ada dalam daftar sebagai key (ini jarang sekali terpakai di CTF yang baik).
Mode Operasi Enkripsi Blok
ECB
Dalam mode ECB, block dienkrip apa adanya (per blok). Perhatikan efeknya jika yang dienkrip adalah gambar.
https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29
CBC
Dalam mode CBC, enkripsi blok berikut tergantung dari hasil enkripsi blok sebelumnya. Jika ada satu blok hilang, maka dari titik itu sampai akhir tidak bisa didekrip.
CFB
Varian dari CBC. Ada mekanisme sehingga bisa recover jika blok ada yang hilang.
OFB
Dalam mode ini, tiap blok input di XOR-kan dengan output dari algoritma enkripsi.
HMAC
Untuk memproteksi data dari modifikasi, kita bisa menggunakan MAC (message authentication code). Biasanya MAC ini bisa didasarkan pada Hash data, bukan data itu sendiri (sehingga yang banyak dipakai adalah HMAC).
Public Key Cryptography
RSA
Soal RSA merupakan salah satu soal yang paling banyak muncul. Sampai saat ini sudah cukup banyak varian soal RSA ini.
- Recovery key RSA yang hilang parsial
- Bisa difaktorisasi dengan faktorisasi Fermat
- Faktornya ada di factordb
- Wiener attack
EC
Elliptic Curve.
Contoh Soal
Hidden in Plain Sight
Soal enkripsi sederhana
http://blog.rentjong.net/2014/10/hacklu-ctf-2014-hidden-in-plain-sight.html
Dragon CTF 2014 Teaser (WEB400)
Soal web, tapi butuh pengetahuan mendalam tentang PHP dan juga enkripsi
http://blog.rentjong.net/2014/04/confidence-dragon-sector-ctf-teaser.html
Plaid CTF 2014 RSA
Memodifikasi program yang sudah ada (hasil googling) untuk rekonstruksi RSA
http://blog.rentjong.net/2014/04/plaidctf2014-write-up-rsaforensic450.html
RSA (PicoCTF 2013)
Soal RSA yang benar-benar dasar
https://github.com/ctfs/write-ups-2013/tree/master/pico-ctf-2013/rsa
RSA 2070
Faktornya ada di factordb
https://0x90r00t.com/2015/09/20/ekoparty-pre-ctf-2015-cry100-rsa-2070-write-up/
Radioactive
Varian dari bit rsa yang rusak
http://mslc.ctf.su/wp/plaidctf-2016-radioactive-crypto-275/
Wiener
Sesuai judul soalnya
https://ctfcrew.org/writeup/87
Copyright © 2009-2018 Yohanes Nugroho