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

hash-example.png

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).

dictionary-attack.png

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