Select Page

Mungkin kamu pernah melihat atau mendengar tentang MD5, CRC16, CRC32, SHA-1, SHA-256, SHA-512, hash checksum, dan kawan-kawannya. Misal seperti pada gambar berikut yang saya capture dari halaman download aplikasi Putty:

File Checksum

Putty MD5 Checksums

Makhluk apa sih sebenarnya itu?

Well, boleh dibilang mereka adalah sidik jarinya (fingerprint) suatu file/berkas yang digunakan untuk mengidentifikasi dan memverifikasi keaslian (authenticity) dan keutuhan (integrity) suatu file. Hal ini dibutuhkan karena tidak menutup kemungkinan file-file yang kita kirim maupun terima sudah tidak asli dan tidak utuh lagi (corrupted) baik karena kesalahan dalam proses transfer file maupun akibat lain.

Mari kita lanjutkan…

Apa itu verifikasi file? Bagaimana mendapatkan sidik jari suatu file? Bagaimana proses verifikasi keaslian dan keutuhan suatu file? Mengapa perlu dilakukan proses verifikasi tersebut? Berikut saya jabarkan secara singkat dengan mengutip artikel dari Wikipedia;

A. Integrity verification (Verifikasi integritas):

File integrity can be compromised, usually referred to as the file becoming corrupted. A file can become corrupted by a variety of ways: faulty storage media, errors in transmission, write errors during copying or moving, software bugs, and so on (Integritas file dapat diubah, pada umumnya hal ini berkaitan dengan file yang rusak. Sebuah file dapat rusak dikarenakan beberapa sebab: kerusakan pada media penyimpanan, kesalahan dalam proses transmisi, kesalahan penulisan pada saat menyalin atau memindahkan, kesalahan software, dan lain sebagainya).

Hash-based verification ensures that a file has not been corrupted by comparing the file’s hash value to a previously calculated value. If these values match, the file is presumed to be unmodified (Verifikasi berbasis hash memastikan bahwa suatu file tidak rusak dengan cara membandingkan nilai hash file tersebut dengan suatu nilai yang telah dikalkulasi sebelumnya. Jika nilai tersebut identik, maka file tersebut dapat dipastikan tidak termodifikasi).

B. Authenticity verification (Verifikasi keaslian):

It is often desirable to verify that a file hasn’t been modified in transmission or storage by untrusted parties, for example, to include malicious code such as viruses or backdoors. To verify the authenticity, a classical hash function is not enough as they are not designed to be collision resistant; it is computationally trivial for an attacker to cause deliberate hash collisions, meaning that a malicious change in the file is not detected with by a hash comparison. In cryptography, this attack is called the collision attack (Terkadang proses verifikasi file dilakukan untuk mengetahui bahwa suatu file belum/tidak dimodifikasi selama transmisi atau penyimpanan oleh pihak-pihak yang tidak dipercayai, misalnya: dengan menambahkan kode jahat seperti virus atau backdoor. Untuk memastikan keaslian suatu file, fungsi hash klassik tidaklah cukup karena mereka tidak didesain untuk tahan terhadap tubrukan/pemalsuan)..

For this purpose, cryptographic hash functions are employed often. As long as the hash sums cannot be tampered with — for example, if they are communicated over a secure channel — the files can be presumed to be intact. Alternatively, digital signatures can be employed to assure tamper resistance (Untuk tujuan ini, fungsi kriptografis hash lebih sering digunakan. Selama nilai hash tidak terpengaruh–misalnya, bila mereka dikomunikasikan melalui kanal yang aman–file tersebut dapat dipastikan sementara masih utuh/tidak berubah. Alternatif lain, tanda tangan digital dapat digunakan untuk mengamankan file).

Ada beberapa jenis algoritma yang digunakan dalam verifikasi file, diantaranya:

  • CRC16/CRC32: merupakan bentuk yang paling lemah dalam proses verifikasi file, dan tidak dapat digunakan untuk memverifikasi keutuhan/integritas suatu file karena algoritma ini mudah diubah dalam suatu file.
  • SHA-1: merupakan bentuk hash checksum yang menggunakan algoritma enkripsi SHA-1 160 bit.
  • MD5: merupakan bentuk hash checksum yang menggunakan algoritma enkripsi MD5 128 bit.
  • Dsb.

Selanjutnya, bagaimana memverifikasi suatu file?

Sebagai bahan latihan, saya telah membuat suatu aplikasi yang dapat digunakan untuk memverifikasi file dengan algoritma SHA-1 dan MD5. Aplikasi ini saya beri nama NvH Studios File Integrity Checker dan dapat di-download di sini.

Sekarang mari kita coba download aplikasi Putty dari link ini, dan buka halaman ini sebagai referensi hash checksum yang berbasis MD5 atau halaman ini sebagai referensi hash checksum yang berbasis SHA-1. Dalam contoh ini, saya men-download file putty-0.67-installer.msi. Referensi nilai hash checksum MD5 yang disediakan oleh developer Putty adalah f9cb22dc22e4c33fca5bc62c6670af20 dan referensi hash checksum SHA-1 dengan nilai f7e4eff6ef17a88c4854654f93d87e1de01d7182.

Jalankan aplikasi NvH Studios File Integrity Checker, kemudian buka file putty-0.67-installer.msi yang telah di-download. Pilih algoritma MD5 (atau SHA-1, sesuai preferensi). Masukkan nilai f9cb22dc22e4c33fca5bc62c6670af20 pada kolom File Hash to Compare. Lalu klik Check!. Dari hasil yang didapatkan pada kolom Hash Compare Result dapat diketahui bahwa file yang telah kita download tadi adalah asli dan utuh, dengan kata lain file yang kita download sesuai dan sama persis dengan file yang tersedia di server.

Putty Installer Hash Checksum Result

Namun apabila hasil Hash Compare Result menunjukkan ketidaksesuaian, dapat dipastikan bahwa file yang di-download rusak/tidak utuh/berubah.

Okay, semoga artikel singkat ini dapat memberikan sedikit gambaran tentang proses verifikasi keaslian dan keutuhan file. Bila ada sesuatu hal yang perlu ditanyakan, jangan sungkan untuk menuliskannya pada kolom komentar 🙂

Salam.