Saya sering melihat checksum yang diberikan di sebelah file yang tersedia untuk diunduh. Tujuan dari praktik ini tidak ada pada saya. Jelas untuk mendeteksi file yang korup, tetapi apa yang bisa menjadi penyebab korupsi ini dan apakah mungkin?
Tentunya file tidak akan rusak oleh kesalahan transmisi karena mereka terdeteksi oleh protokol jaringan. Dan tentunya penyerang yang dapat mengubah file untuk tujuan jahat juga dapat mengubah checksum yang diberikan. Apakah kita memeriksa kesalahan hard drive? Apakah itu lebih mungkin terjadi ketika menulis daripada saat membaca? Apakah saya melewatkan sesuatu yang penting?
networking
files
checksum
Karolis Juodelė
sumber
sumber
Jawaban:
Mendeteksi korupsi tidak sepenuhnya benar. Untuk memastikan integritas perangkat lunak akan menjadi penggunaan yang lebih benar. Biasanya suatu perangkat lunak tidak didistribusikan dari satu server. Perangkat lunak yang sama dapat didistribusikan dari banyak server. Jadi ketika Anda mengunduh perangkat lunak tertentu, server yang paling dekat dengan tujuan Anda dipilih sebagai sumber unduhan untuk meningkatkan kecepatan unduh. Namun, server 'tidak resmi' (pihak ketiga) ini tidak selalu dapat dipercaya. Mereka mungkin / dapat memasukkan trojan / virus / adware / backdoors ke dalam program yang tidak baik .
Jadi untuk memastikan bahwa perangkat lunak yang diunduh persis sama dengan perangkat lunak 'resmi' yang dirilis oleh organisasi terkait, checksum digunakan. Algoritma yang digunakan untuk menghasilkan checksum sedemikian rupa sehingga bahkan sedikit perubahan dalam hasil program dalam checksum yang sama sekali berbeda.
Contoh diambil dari Praktis Unix dan Keamanan Internet
MD5 (Ada $ 1500 di kotak biru.) = 05f8cfc03f4e58cbee731aa4a14b3f03
MD5 (Ada $ 1100 di kotak biru.) = D6dee11aae89661a45eb9d21e30d34cb
Pesan, yang berbeda hanya dengan satu karakter (dan, di dalam karakter itu, hanya dengan satu bit biner), memiliki intisari pesan yang sangat berbeda.
Jika file yang diunduh memiliki checksum yang sama dengan checksum yang diberikan di situs web 'resmi', maka perangkat lunak dapat diasumsikan tidak dimodifikasi.
Catatan Sisi: Secara teori, dua file yang berbeda BISA memiliki nilai hash yang sama. Agar algoritma Hash / checksum dianggap aman, komputer harus sangat mahal untuk menemukan file lain yang menghasilkan checksum yang sama.
sumber
Tidak selalu.
Anda dapat memiliki tautan konten bersama dengan checksum yang disajikan di HTTPS. Tautan dapat berupa tautan yang tidak dienkripsi - HTTP polos atau FTP, atau yang lainnya.
Pada sisi negatifnya, koneksi yang tidak terenkripsi dapat dengan mudah dilakukan oleh orang-orang tengah, di sisi atas, dapat lebih cepat atau lebih nyaman bagi webmaster (lebih sedikit sumber daya komputasi yang dibutuhkan dan peluang jaringan untuk menyimpan hal-hal seperti itu).
Jika checksum disajikan pada koneksi tepercaya yang tidak terputus dan payload cocok dengan checksum, Anda mendapatkan yang terbaik dari kedua dunia (asalkan checksum itu aman secara kriptografi).
Yang mengatakan, Anda telah mengingatkan saya bahwa ada distro di luar sana yang mengklaim sebagai "aman" dan situs web mereka hanya pada HTTP, seperti juga tautan ke gambar mereka.
Contoh:
Agak lucu karena Anda tidak mungkin mendapatkan lebih tidak aman daripada itu. Sekalipun mereka sendiri tidak jahat, ISP mana pun dapat dengan mudah mengganti situs web dan gambar dengan palsu, dan membuat seseorang memasang sistem operasi yang dicurangi sambil membuatnya seolah-olah mereka mendapatkan distro Linux "aman" adalah yang utama pwnage
sumber
Sejauh mengapa pengecekan kesalahan TCP / IP tidak menangkap semuanya: Dari /programming//a/17083365/2551539
Ada beberapa kesalahan yang dapat terjadi (yang akan dideteksi TCP) [ditunjukkan oleh Jacob Krall] :
Edit dengan beberapa info tambahan:
Halaman 9 dari penelitian ini: http://paperhub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf menunjukkan bahwa ada kesalahan yang bisa tidak terdeteksi oleh TCP. Pemahaman saya adalah bahwa hal itu terjadi ketika datagram yang salah (disebut "kembar buruk" dalam penelitian) memiliki checksum yang sama dengan datagram yang dimaksud (disebut "kembar baik" dalam penelitian).
sumber
Kesalahan transmisi dapat terjadi. Protokol layer-link biasanya berisi checksum atau kode koreksi kesalahan untuk menghindarinya, tetapi mereka tidak sempurna: ada kemungkinan kecil bahwa kesalahan tidak akan diperbaiki. Paket TCP juga mengandung checksum, yang mengurangi kemungkinan kesalahan sebesar 2 ^ 16. Itu membuat probabilitas yang sangat kecil, tetapi bukan nol dari kesalahan transmisi. Ini adalah jenis hal yang kebanyakan orang tidak akan pernah temui secara tidak sadar dalam hidup mereka, tetapi itu bukan pada kisaran kemungkinan yang pernah ada dalam satu miliar tahun dari kriptografi kriptografi.
Kesalahan perangkat keras pada klien, seperti kerusakan disk, tidak mungkin terdeteksi dengan memeriksa segera setelah mengunduh, karena checksum akan dihitung dari salinan yang di-cache. Sebaliknya, memeriksa media booting jika gagal melakukan booting bermanfaat - Anda benar-benar menguji media, dan Anda memiliki anggapan bahwa perangkat kerasnya mungkin buruk.
Alasan sebenarnya untuk menghitung checksum sebenarnya adalah untuk mendeteksi kesalahan tingkat perangkat lunak. Ini memang terjadi. Kemungkinan kesalahan termasuk:
Dalam praktiknya, memeriksa ukuran file yang diunduh menangkap kesalahan yang paling umum, yang terpotong atau file yang dikonversi secara tidak sah. Checksum memiliki keuntungan karena mereka mendeteksi lebih banyak masalah.
sumber
Secara teori, jaringan akan mengirimkan setiap segmen dengan benar dan mereka akan dipasang dengan benar pada disk dan tidak ada yang salah.
Pada kenyataannya, komputer adalah mesin dan perangkat lunak, yang keduanya dirancang dan dibangun oleh manusia yang bisa keliru. Dalam hal suatu unduhan entah bagaimana tidak turun tepat karena satu dan lain alasan, seperti unduhan yang melalui beberapa perangkat perantara apakah tidak berbahaya atau jahat yang merusak data, ada baiknya memiliki cara untuk memeriksa apakah file tersebut hampir pasti adalah diunduh sebagai replika akurat file di pihak penyedia.
Sebuah checksum berkualitas tinggi adalah metode yang dapat diandalkan untuk memvalidasi integritas data.
sumber
Tidak ada checksum yang dapat diandalkan 100% karena banyak file memetakan ke checksum yang sama.
Ketika kita menambahkan checksum lain ke dalam kereta, kita mengalikan probabilitas mendeteksi kesalahan.
Ada begitu banyak lalu lintas di internet sehingga kesalahan sebenarnya cukup umum.
sumber
Checksum juga akan membantu mencegah unduhan yang rusak karena situasi berikut:
Server memiliki kesalahan internal saat melayani unduhan sehingga unduhan dihentikan.
Ketika itu terjadi, ada beberapa kemungkinan hasil:
Saya telah melihat perilaku ini di antara alat klien dan kerangka kerja server yang populer, jadi ketika Anda tidak menggunakan checksum, maka dalam kasus "server yang baik + klien yang buruk" atau "server yang buruk + klien apa pun", unduhan Anda yang rusak akan tidak diperhatikan .
sumber