Eksploitasi Cryptography: MD5 Collision Attack
Mempelajari kerentanan MD5 hash melalui studi kasus pemakaian digital signature berbasis Schnorr Signature yang salah.

Dalam dunia digital yang semakin kompleks, keamanan informasi menjadi aspek yang tidak bisa diabaikan. Salah satu topik penting dalam bidang ini adalah keamanan kriptografi, yang menjadi tulang punggung perlindungan data. Artikel ini akan membahas tentang salah satu aspek krusial dalam kriptografi: dampak dari MD5 Collision.
Untuk memahami dampak ini secara mendalam, kita akan melakukan studi kasus pada salah satu soal dari Cyber Apocalypse CTF 2023. Soal tersebut menghadirkan sebuah implementasi digital signature berbasis Schnorr Algorithm dengan modifikasi tertentu, di mana generasi nonce didasarkan pada hash MD5. Kita akan menjelajahi bagaimana MD5 Collision dapat memicu nonce reuse attack, sebuah kerentanan serius yang mengancam integritas dan keaslian dari tanda tangan digital.
Nonce reuse attack merupakan masalah yang sering diabaikan namun memiliki konsekuensi yang signifikan, terutama dalam konteks digital signature berbasis Schnorr, yang dikenal karena efisiensinya dan keamanannya. Analisis ini akan membawa kita ke dalam pemahaman mendalam tentang bagaimana nonce reuse attack terjadi, implikasinya terhadap keamanan data, dan pentingnya memilih algoritma hash yang tepat dalam penerapan kriptografi. Pembahasan ini penting tidak hanya untuk ahli kriptografi, tetapi juga untuk siapa saja yang bergantung pada keamanan digital dalam aktivitas sehari-hari mereka.
Overview
Untuk tantangan ini, kami diberikan sebuah file bernama server.py. Berikut adalah kodenya:
Jadi, kami diberikan sebuah server yang mengimplementasikan skema digital signature berbasis Schnorr Algorithm Signature. Detail dari algoritma ini dapat dibaca di Wikipedia. Tantangan ini membagikan public key dari skema digital signature (g, y, dan p), dan memberikan kita tiga kesempatan untuk menggunakan menu yang tersedia:
S, yang merupakan menu untuk menandatangani pesan apa pun yang kita berikan.- Ada pembatasan yang melarang pesan mengandung string
I am the left hand. - Kita mendapatkan nilai
sdanejuga, yang merupakan bagian dari signature.
- Ada pembatasan yang melarang pesan mengandung string
V, yang merupakan menu untuk memvalidasi digital signature kita dari pesan.- Jika signature valid dan pesannya adalah
I am the left hand, itu akan mencetak flag.
- Jika signature valid dan pesannya adalah
Oleh karena itu, tujuan dari tantangan ini adalah untuk mengambil private key dengan dua signature yang kita dapatkan dari server sehingga kita dapat menandatangani pesan I am the left hand secara mandiri, mengirimkannya ke server, dan mengambil flag.
Kesalahan Implementasi
Penting untuk diperhatikan bahwa dalam jenis skema digital signature ini, kerentanan seringkali terletak pada cara penghasilan nilai k (nonce). Generasi k tidak boleh lemah karena dapat dieksploitasi untuk mengambil private key (x).
Seperti yang disebutkan di halaman Wikipedia yang saya bagikan sebelumnya, penggunaan nonce yang sama lebih dari sekali tidak diperbolehkan dalam jenis skema digital signature ini. Alasannya adalah kita dapat memulihkan private key (x) jika menggunakan k yang sama saat menandatangani dua pesan berbeda. Mari kita lihat persamaan penandatanganan di bawah ini untuk memahami mengapa kita dapat memulihkan k jika digunakan kembali untuk menandatangani pesan yang berbeda:
Dengan mengurangkan kedua persamaan di atas, mengambil nilai menjadi sangat mudah karena kita mengetahui nilai , , , , dan . Kita dapat mengatur ulang kedua persamaan tersebut untuk mendapatkan .
Jadi, jika kita menandatangani dua pesan yang berbeda dengan k yang sama, kita akan dapat memulihkan x dan menandatangani pesan yang diperlukan.
Sekarang kita tahu bahwa kita perlu menandatangani dua pesan yang berbeda dengan nilai k yang sama, mari kita lihat bagaimana k dihasilkan.
Perhatikan bahwa generasi k (nonce) pada dasarnya hanya md5(msg || x). Seperti yang disebutkan dalam banyak artikel, menghasilkan collision hash dengan md5 itu mudah. Ini adalah kelemahan dalam implementasinya. Karena kemudahan dalam menghasilkan collision hash md5, sangat mungkin kita dapat menandatangani dua pesan yang berbeda dengan k (nonce) yang sama, yang mengarah pada ekstraksi private key.
Eksploitasi
Membaca artikel ini membantu saya memahami mengapa cara tantangan ini menghasilkan k itu lemah. Mudah untuk menghasilkan collision hash md5, yang berarti kita dapat menandatangani dua pesan yang berbeda dengan nilai k yang sama karena collision tersebut.
Setelah membaca artikel tersebut, saya menyadari bahwa cukup sederhana untuk mengeksploitasi kelemahan md5. Kita hanya perlu mengambil dua string yang memiliki collision hash md5 dan menggunakan itu sebagai pesan kita untuk ditandatangani. Namun, kita perlu berhati-hati karena msg yang kita kirim akan ditambahkan dengan x juga. Oleh karena itu, kita tidak dapat mengirimkan msg mentah ke server. Seperti yang disebutkan dalam artikel sebelumnya, md5 akan melakukan padding terhadap msg terlebih dahulu dengan beberapa byte saat hashing. Jadi, kita perlu mengirimkan pesan yang sudah dipadding ke server. Ini memastikan bahwa sebelum proses md5 menambahkan byte x, kedua pesan yang kita kirim akan memiliki state md5 yang sama. Jadi, ketika algoritma md5 mencoba memproses blok x yang ditambahkan, state akan sama, yang berarti akan menghasilkan hash yang sama.
Setelah kita berhasil menghasilkan collision md5, kita dapat mengambil kembali private key x berdasarkan persamaan sebelumnya yang telah saya jelaskan karena nilai k digunakan kembali.
Berikut adalah script yang kami gunakan untuk mengeksploitasi kerentanan diatas.
Dapat dilihat pada gambar dibawah bahwa script kita berhasil mendapatkan digital signature yang tepat untuk string 'I am the left hand', sehingga server mengembalikan flag yang seharusnya tidak boleh kita dapatkan.
Kesimpulan
Tantangan ini membuka mata kita terhadap pentingnya pemilihan algoritma hash yang kuat dalam skema digital signature. Dengan mengeksplorasi kelemahan md5 dan bagaimana collision hash dapat dieksploitasi, kita dapat melihat betapa mudahnya mengambil kembali private key dalam skema yang menggunakan Schnorr Signature Algorithm dengan nonce yang lemah. Ini menunjukkan bahwa dalam dunia kriptografi, keamanan tidak hanya terletak pada algoritma itu sendiri, tetapi juga pada bagaimana komponen-komponennya, seperti nonce, diimplementasikan. Pemahaman mendalam mengenai topik ini penting tidak hanya bagi para ahli keamanan, tetapi juga bagi siapa saja yang berkecimpung dalam teknologi digital.
Di Cylabus, kami berdedikasi untuk memberikan wawasan dan solusi terbaru dalam bidang keamanan digital dan kriptografi. Jika Anda membutuhkan konsultasi atau layanan terkait keamanan siber, blockchain, atau kriptografi, tim ahli kami di Cylabus siap membantu. Hubungi kami untuk memastikan bahwa infrastruktur digital Anda aman dari ancaman terkini. Melalui kerja keras dan inovasi terus-menerus, Cylabus berkomitmen untuk memajukan keamanan digital dan membantu menciptakan dunia digital yang lebih aman untuk semua.
Baca Artikel Kami Yang Lain

Hati-hati, Screenshot HP Kamu Bisa Bocorin Rahasia!
Demonstrasi Kerentanan Screenshot (CVE-2023-21036) di kehidupan sehari-hari dan simulasinya dalam CTF Digial Forensic

Eksploitasi JS Engine: Bahaya Image WebP
Mengungkap seni eksploitasi QuickJS Engine melalui studi kasus CVE-2023-4863 terkait bahaya gambar dengan format WebP.

Eksploitasi macOS: Tantangan BabyIOKit Driver
Memahami seluk-beluk eksploitasi macOS melalui analisis mendetail terhadap IOKit driver yang rentan.