← Semua materi
Hands-on LabSecurityPemulaBARU

Verifikasi integritas file dengan SHA-256 di Linux

Hitung dan bandingkan checksum SHA-256 untuk memastikan file unduhan tidak berubah, membaca hasil OK atau FAILED, dan menilai apakah sumber checksum dapat dipercaya.

Tujuan latihan

Memverifikasi integritas file di Linux dengan sha256sum, membedakan kecocokan dari ketidakcocokan, serta memahami batas checksum sebelum menjalankan installer atau image unduhan.

Persiapan

Terminal Linux dengan GNU Coreutils dan satu file latihan yang aman. Contoh nama file, hash, serta output pada artikel ini adalah simulasi dan bukan hasil pengujian terhadap file produksi.

File unduhan
Hitung SHA-256
Bandingkan checksum resmi
Cocok: lanjut / Berbeda: berhenti

Masalah

File ISO, installer, archive, atau package dapat rusak saat dipindahkan dan dapat pula diganti oleh pihak lain. Ukuran file yang terlihat benar belum membuktikan isinya sama. Checksum SHA-256 memberi fingerprint deterministik: perubahan satu byte menghasilkan nilai berbeda, sehingga kita dapat membandingkan file lokal dengan nilai yang diterbitkan sumber resmi.

Apa yang dibuktikan checksum

Kecocokan checksum membuktikan file lokal identik dengan file yang menghasilkan nilai pembanding. Checksum tidak otomatis membuktikan siapa penerbit file. Jika file dan checksum diambil dari lokasi tidak tepercaya yang sama, penyerang dapat mengganti keduanya. Karena itu, sumber nilai pembanding sama pentingnya dengan command yang digunakan.

Persiapan dan batas aman

Gunakan file latihan atau unduhan dari vendor resmi. Jangan menjalankan file sebelum verifikasi selesai. Catat nama file persis, versi, arsitektur, URL sumber, dan algoritma yang disebut penerbit. Tutorial ini memakai SHA-256; jangan membandingkan keluaran SHA-256 dengan hash MD5 atau SHA-1 karena panjang dan algoritmanya berbeda.

1. Pastikan command tersedia

Tujuan langkah ini adalah memastikan tool dapat dipanggil sebelum memproses file. command -v menampilkan path executable tanpa menjalankan checksum. Jika tidak ada output atau exit code non-zero, pasang GNU Coreutils melalui package manager resmi distribusi Anda sebelum melanjutkan.

command -v sha256sum
sha256sum --version | head -n 1

Contoh hasil tool (simulasi)

Path dan versi berikut hanya contoh. Baris pertama menunjukkan shell menemukan executable. Baris kedua membantu mencatat implementasi yang digunakan; nomor versi dapat berbeda antar-distribusi.

/usr/bin/sha256sum
sha256sum (GNU coreutils) 9.4

2. Masuk ke direktori unduhan

Pindah ke direktori yang berisi file lalu tampilkan nama dengan aman. pwd memastikan lokasi kerja, sedangkan ls --quoting-style=shell membantu memperlihatkan spasi atau karakter khusus. Jangan menyalin command dengan wildcard jika direktori berisi banyak file dan target belum jelas.

cd "$HOME/Downloads"
pwd
ls -lh --quoting-style=shell

3. Pastikan target adalah file yang dimaksud

Periksa nama, tipe, dan ukuran sebelum menghitung hash. Ini mencegah checksum dihitung terhadap file versi atau arsitektur yang salah. file mengidentifikasi format berdasarkan isi awal, sedangkan stat mencatat ukuran byte. Informasi ini bukan pengganti checksum, tetapi berguna untuk mendeteksi salah target.

file -- sample-tool-1.2.0-linux-amd64.tar.gz
stat --printf='name=%n\nsize_bytes=%s\nmodified=%y\n' -- sample-tool-1.2.0-linux-amd64.tar.gz

4. Hitung SHA-256 file lokal

Gunakan nama file eksplisit setelah -- agar nama yang diawali tanda minus tidak dibaca sebagai opsi. Output terdiri dari 64 karakter heksadesimal, pemisah, dan nama file. Proses dapat membutuhkan waktu untuk file besar; jangan membatalkan hanya karena terminal belum menampilkan output.

sha256sum -- sample-tool-1.2.0-linux-amd64.tar.gz

Contoh checksum lokal (simulasi)

Nilai berikut bukan checksum file nyata dan hanya menunjukkan format. Salin seluruh 64 karakter bila membandingkan manual; perbedaan satu karakter berarti hasil tidak cocok.

4f6b3a1f7c9e2d8a5b0c6e4f1a3d7b9c2e5f8a0b6d1c4e7f9a2b5c8d0e3f6a1b  sample-tool-1.2.0-linux-amd64.tar.gz

5. Ambil checksum pembanding dari kanal resmi

Cari file checksum atau nilai SHA-256 pada halaman release resmi yang menggunakan HTTPS. Cocokkan versi, nama file, operating system, dan arsitektur. Bila tersedia, ambil checksum melalui kanal berbeda dari file—misalnya file dari mirror dan checksum dari halaman release resmi—atau verifikasi signature checksum sesuai panduan vendor.

6. Bandingkan satu nilai secara manual dengan aman

Untuk satu file, simpan nilai resmi dan nama file dalam format yang dipahami sha256sum. Dua spasi sebelum nama file adalah format untagged yang umum. Gunakan printf dengan string tetap; jangan memasukkan text lain dari halaman. Setelah membuat file kecil ini, tampilkan lagi untuk memastikan hash dan nama tidak terpotong.

printf '%s  %s\n' \
  '4f6b3a1f7c9e2d8a5b0c6e4f1a3d7b9c2e5f8a0b6d1c4e7f9a2b5c8d0e3f6a1b' \
  'sample-tool-1.2.0-linux-amd64.tar.gz' \
  > SHA256SUMS.local
cat SHA256SUMS.local

7. Jalankan pemeriksaan otomatis

Opsi --check membaca nilai dan nama file dari manifest, menghitung ulang file lokal, lalu membandingkannya. Jalankan dari direktori yang memuat file atau pastikan path dalam manifest benar. Perhatikan teks OK/FAILED dan exit code; automation sebaiknya menggunakan exit code, bukan hanya mencocokkan tampilan.

sha256sum --check SHA256SUMS.local
printf 'check_exit=%s\n' "$?"

Contoh hasil cocok (simulasi)

OK dan check_exit=0 berarti file lokal cocok dengan nilai di manifest. Kesimpulan ini tetap bergantung pada keaslian manifest atau nilai pembanding.

sample-tool-1.2.0-linux-amd64.tar.gz: OK
check_exit=0

Contoh hasil tidak cocok (simulasi)

FAILED dan exit code non-zero berarti isi file tidak menghasilkan hash yang diharapkan. Jangan menjalankan, mengekstrak, atau menginstal file tersebut. Ketidakcocokan dapat berasal dari unduhan rusak, versi salah, nama manifest mengarah ke file lain, atau file telah berubah.

sample-tool-1.2.0-linux-amd64.tar.gz: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
check_exit=1

8. Verifikasi manifest resmi berisi banyak file

Manifest vendor sering memuat checksum untuk beberapa platform. Pastikan baris target memang ada sebelum menjalankan pemeriksaan. Untuk membatasi verifikasi ke satu nama exact tanpa menjalankan pattern sebagai expression, awk membandingkan field terakhir lalu membuat manifest kecil. Periksa hasilnya sebelum digunakan.

target='sample-tool-1.2.0-linux-amd64.tar.gz'
awk -v target="$target" '$NF == target {print}' SHA256SUMS > SHA256SUMS.target
cat SHA256SUMS.target
sha256sum --check SHA256SUMS.target

9. Tangani pesan file tidak ditemukan

Pesan 'No such file or directory' biasanya berarti nama atau path dalam manifest berbeda dari file lokal. Jangan mengganti hash agar pemeriksaan terlihat sukses. Bandingkan ls dengan baris manifest, lalu pindahkan file ke direktori yang benar atau buat manifest target dengan nama yang benar hanya jika nilai hash resmi dan pemetaan filenya sudah dipastikan.

10. Ulangi unduhan secara terkendali bila mismatch

Jika checksum berbeda, hapus atau karantina file bermasalah secara manual sesuai kebijakan, lalu unduh ulang dari URL resmi. Hindari melanjutkan dengan opsi yang mengabaikan TLS error. Setelah unduh ulang, hitung dan bandingkan lagi. Mismatch yang berulang perlu dieskalasikan ke penerbit; jangan mencoba 'memperbaiki' archive dengan menyalin sebagian isi.

11. Bedakan integritas, autentikasi, dan malware scan

SHA-256 membandingkan isi, bukan reputasi atau keamanan program. Digital signature membantu mengikat artifact ke identitas pemegang key, sedangkan malware scan mencari indikator berbahaya dengan keterbatasannya sendiri. Untuk software sensitif, ikuti semua mekanisme yang disediakan vendor: checksum, signature, provenance, serta verifikasi package manager.

Decision path

Jika sha256sum tidak tersedia, pasang Coreutils dari repository resmi. Jika file target tidak ditemukan, periksa direktori dan nama versi sebelum menghitung ulang. Jika hasil OK dan checksum berasal dari kanal resmi yang tepercaya, lanjutkan ke verifikasi signature atau proses instalasi vendor. Jika FAILED, berhenti dan unduh ulang. Jika file baru tetap FAILED, konfirmasi versi dan arsitektur lalu eskalasi ke penerbit. Jika checksum hanya tersedia di lokasi yang sama dan tidak ada signature, anggap tingkat keyakinannya lebih rendah.

Kesalahan umum

Jangan membandingkan hanya beberapa karakter hash, mengandalkan ukuran file, memakai checksum dari forum acak, atau mengambil file dan checksum dari mirror tidak tepercaya yang sama. Jangan mengubah isi manifest tanpa memahami nama target. Jangan menyimpulkan file aman dari malware hanya karena checksum cocok. Hindari menjalankan installer sebelum pemeriksaan dan jangan mengabaikan exit code pada script.

Checklist verifikasi

Pastikan algoritma SHA-256; nama, versi, OS, dan arsitektur target tepat; file berasal dari sumber resmi; nilai pembanding berasal dari kanal tepercaya; hash lengkap 64 karakter; sha256sum --check menghasilkan OK; exit code 0; mismatch tidak diabaikan; serta signature atau mekanisme provenance vendor diperiksa bila tersedia.

Pelajaran

Checksum berguna ketika digunakan sebagai rantai bukti: pilih file yang tepat, hitung hash secara repeatable, bandingkan seluruh nilai, baca exit code, dan nilai kepercayaan sumber checksum. Hasil cocok membuktikan kesamaan isi terhadap referensi—bukan otomatis membuktikan penerbit atau keamanan software.

Referensi resmi

GNU Coreutils — sha2 utilities ↗GNU Coreutils — cksum common options ↗NIST FIPS 180-4 — Secure Hash Standard ↗
Lihat semua materi →