Bagaimana CRC dan Checksum Melindungi Integritas Data dalam Perangkat Lunak Sehari-hari

7

Anda mungkin pernah melihat string hash atau nilai checksum selama pembaruan perangkat lunak atau pengunduhan file. Ini terlihat seperti derau acak—rangkaian panjang angka hex atau angka pendek yang dilampirkan pada file. Tapi itu memiliki tujuan penting. Itu adalah sidik jari digital. Jika sedikit saja datanya berubah, sidik jari itu akan berubah sepenuhnya. Mekanisme ini memastikan bahwa apa yang Anda unduh persis seperti yang dikirimkan, hingga byte terakhir.

Dua cara paling umum untuk mencapai hal ini adalah Checksum dan Cyclic Redundancy Checks (CRC). Meskipun terdengar serupa, keduanya beroperasi dengan prinsip yang berbeda dan melayani ceruk yang sedikit berbeda dalam dunia protokol internet dan penyimpanan data. Memahami perbedaannya penting bagi siapa pun yang berurusan dengan transfer file, lalu lintas jaringan, atau diagnostik perangkat keras.

Checksum Sederhana

Pada intinya, checksum adalah nilai yang diperoleh dari blok data digital. Versi paling dasar adalah Internet Checksum yang digunakan pada protokol lama seperti IPv4 dan UDP. Ia bekerja dengan memperlakukan data sebagai rangkaian kata 16-bit dan menjumlahkannya. Jika jumlah byte ganjil, byte padding ditambahkan. Jumlah tersebut kemudian dikomplemenkan.

Metode ini cepat. Sangat cepat. Tapi itu tidak terlalu kuat. Itu bisa melewatkan jenis kesalahan tertentu. Misalnya, jika dua byte bertukar tempat, atau jika pembalikan bit di satu posisi dikompensasi dengan pembalikan bit di posisi lain, checksumnya mungkin tetap tidak berubah. Ibarat memeriksa berat koper tapi mengabaikan isinya. Anda tahu beratnya benar, tapi Anda tidak tahu apakah baju itu masih ada atau sudah diganti dengan batu dengan berat yang sama.

Karena keterbatasan ini, checksum sederhana jarang digunakan untuk pemeriksaan integritas kritis saat ini. Sebagian besar telah digantikan oleh algoritme yang lebih kuat seperti CRC atau hash kriptografi seperti SHA-256. Namun, memahami checksum sederhana membantu menjelaskan mengapa kita memerlukan alat yang lebih baik untuk verifikasi integritas data.

Masukkan Cyclic Redundancy Check (CRC)

CRC adalah tempat di mana segala sesuatunya menjadi menarik. Ini didasarkan pada pembagian polinomial. Daripada hanya menambahkan angka, CRC memperlakukan data sebagai bilangan biner besar dan membaginya dengan polinomial generator yang telah ditentukan sebelumnya. Sisa pembagian ini adalah nilai CRC.

Pendekatan matematis ini membuat CRC lebih baik dalam mendeteksi kesalahan. Itu dapat menangkap semua kesalahan bit tunggal, semua kesalahan bit ganda, dan jumlah kesalahan ganjil. Ia juga menangkap kesalahan burst—bit berturut-turut yang rusak—yang umum terjadi pada saluran transmisi yang berisik. Bayangkan kesalahan burst sebagai kesalahan sesaat pada sinyal radio atau goresan pada CD. CRC dirancang untuk menangani ketidaksempurnaan di dunia nyata ini.

Varian paling umum adalah CRC-32, yang menghasilkan nilai 32-bit. Anda akan menemukannya di mana-mana. Bingkai Ethernet, file ZIP, gambar PNG, dan bahkan beberapa sistem database menggunakan CRC-32. Ini tidak aman secara kriptografis—Anda tidak dapat menggunakannya untuk membuktikan bahwa seseorang tidak sengaja merusak data Anda—tetapi ini sangat baik untuk kerusakan yang tidak disengaja.

Mengapa Ini Penting bagi Anda?

Anda mungkin tidak memikirkan CRC saat melakukan streaming video atau mengirim email. Namun hal ini terjadi di balik layar. Saat Anda mengunduh patch game, sistem Anda menggunakan checksum atau CRC untuk memverifikasi file. Jika nilainya tidak