GNU/Linux >> Belajar Linux >  >> Linux

Pengantar hashing dan checksum di Linux

Kemungkinan besar Anda telah melihat referensi ke hash atau checksum saat Anda mengunduh perangkat lunak dari Internet. Seringkali, perangkat lunak akan ditampilkan, dan kemudian di dekat tautan ada checksum. Checksum dapat diberi label sebagai MD5, SHA, atau dengan beberapa nama serupa lainnya. Berikut adalah contoh menggunakan salah satu game lama favorit saya dari tahun 1990-an bernama Nethack:

Banyak orang tidak tahu persis apa arti informasi ini atau bagaimana menggunakannya. Dalam artikel ini, saya membahas tujuan hashing, beserta cara menggunakannya.

[ Pembaca juga menikmati: Memulai GPG (GnuPG) ]

Tujuan kriptografi

Di bagian pertama ini, saya ingin Anda melupakan sesuatu. Secara khusus, saya ingin Anda memutuskan hubungan di kepala Anda antara kata enkripsi dan kata rahasia . Banyak dari kita menganggap dua kata ini sebagai sinonim padahal sebenarnya tidak demikian. Kriptografi, yang mencakup enkripsi, bisa memberikan kerahasiaan, tetapi juga dapat memenuhi tujuan lain.

Kriptografi sebenarnya memiliki tiga tujuan:

  • Kerahasiaan - untuk menjaga agar konten file tidak dibaca oleh pengguna yang tidak berwenang
  • Keaslian - untuk membuktikan dari mana asal file
  • Integritas - untuk membuktikan bahwa file tidak berubah secara tiba-tiba

Ini adalah konsep ketiga, integritas , yang kami minati di sini. Dalam konteks ini, integritas berarti membuktikan bahwa data tidak berubah secara tiba-tiba. Membuktikan integritas berguna dalam banyak skenario:

  • Unduhan internet seperti distribusi Linux, perangkat lunak, atau file data
  • Transfer file jaringan melalui NFS, SSH, atau protokol lain
  • Memverifikasi pemasangan perangkat lunak
  • Membandingkan nilai yang disimpan, seperti sandi, dengan nilai yang dimasukkan oleh pengguna
  • Cadangan yang membandingkan dua file untuk melihat apakah keduanya telah berubah

Apa itu hashing?

Kriptografi menggunakan hashing untuk mengonfirmasi bahwa file tidak berubah. Penjelasan sederhananya adalah bahwa metode hashing yang sama digunakan pada file di setiap akhir unduhan Internet. File di-hash di server web oleh administrator web, dan hasil hash dipublikasikan. Seorang pengguna mengunduh file dan menerapkan metode hash yang sama. Hasil hash, atau checksum , dibandingkan. Jika checksum dari file yang diunduh sama dengan file asli, maka kedua file tersebut identik, dan tidak ada perubahan yang tidak terduga karena kerusakan file, serangan man-in-the-middle, dll.

Hashing adalah proses satu arah. Hasil hash tidak dapat dibalik untuk mengekspos data asli. Checksum adalah string output yang merupakan ukuran yang ditetapkan. Secara teknis, itu berarti hashing bukanlah enkripsi karena enkripsi dimaksudkan untuk dibalik (decrypted).

Jenis kriptografi hash apa yang mungkin Anda gunakan dengan Linux?

Intisari Pesan dan Algoritma Hash Aman

Di Linux, Anda cenderung berinteraksi dengan salah satu dari dua metode hashing:

  • MD5
  • SHA256

Alat kriptografi ini dibangun di sebagian besar distribusi Linux, serta macOS. Windows biasanya tidak menyertakan utilitas ini, jadi Anda harus mengunduhnya secara terpisah dari vendor pihak ketiga jika Anda ingin menggunakan teknik keamanan ini. Menurut saya, alat keamanan seperti ini adalah bagian dari Linux dan macOS.

Intisari Pesan versus Algoritma Hash Aman

Apa perbedaan antara intisari pesan dan algoritma hash yang aman? Perbedaannya terletak pada matematika yang terlibat, tetapi keduanya mencapai tujuan yang sama. Sysadmin mungkin lebih suka yang satu daripada yang lain, tetapi untuk sebagian besar tujuan, mereka berfungsi sama. Mereka tidak, bagaimanapun, dipertukarkan. Sebuah hash yang dihasilkan dengan MD5 di salah satu ujung koneksi tidak akan berguna jika SHA256 digunakan di ujung lainnya. Metode hash yang sama harus digunakan di kedua sisi.

SHA256 menghasilkan hash yang lebih besar, dan mungkin membutuhkan lebih banyak waktu dan daya komputasi untuk menyelesaikannya. Ini dianggap sebagai pendekatan yang lebih aman. MD5 mungkin cukup baik untuk sebagian besar pemeriksaan integritas dasar, seperti unduhan file.

Di mana Anda menemukan hashing di Linux?

Linux menggunakan hash di banyak tempat dan situasi. Checksum dapat dibuat secara manual oleh pengguna. Anda akan melihat dengan tepat bagaimana melakukannya nanti di artikel. Selain itu, kemampuan hash disertakan dengan /etc/shadow , rsync , dan utilitas lainnya.

Misalnya, kata sandi yang disimpan di /etc/shadow file sebenarnya hash. Saat Anda masuk ke sistem Linux, proses otentikasi membandingkan nilai hash yang disimpan dengan versi hash dari kata sandi yang Anda ketikkan. Jika kedua checksum identik, maka kata sandi asli dan yang Anda ketikkan sama. Dengan kata lain, Anda memasukkan kata sandi yang benar. Ini ditentukan, bagaimanapun, tanpa pernah benar-benar mendekripsi kata sandi yang tersimpan di sistem Anda. Periksa dua karakter pertama dari kolom kedua untuk akun pengguna Anda di /etc/shadow . Jika dua karakter $1 , kata sandi Anda dienkripsi dengan MD5. Jika karakternya $5 , kata sandi Anda dienkripsi dengan SHA256. Jika nilainya $6 , SHA512 sedang digunakan. SHA512 digunakan pada mesin virtual Fedora 33 saya, seperti yang terlihat di bawah ini:

Cara membuat checksum secara manual

Menggunakan utilitas hash sangat sederhana. Saya akan memandu Anda melalui skenario yang sangat mudah untuk diselesaikan di komputer lab atau sistem Linux apa pun yang Anda miliki. Tujuan dari skenario ini adalah untuk menentukan apakah sebuah file telah berubah.

Pertama, buka editor teks favorit Anda dan buat file bernama original.txt dengan sebaris teks yang berbunyi:Informasi asli.

[damon@localhost ~]$ vim original.txt
[damon@localhost ~]$ cat original.txt
Original information.
[damon@localhost ~]$

Selanjutnya, jalankan file melalui algoritma hash. Saya akan menggunakan MD5 untuk saat ini. Perintahnya adalah md5sum . Ini contohnya:

[damon@localhost ~]$ md5sum original.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

Perhatikan nilai checksum yang dihasilkan. Nilai ini cukup besar sehingga sulit untuk dikerjakan. Mari kita simpan nilai itu untuk digunakan di masa mendatang dengan mengarahkannya ke file:

[damon@localhost ~]$ md5sum original.txt > hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

Pada titik ini, Anda memiliki file asli. Salin file itu ke /tmp direktori dengan nama duplicate.txt . Salin file dengan menggunakan perintah berikut (pastikan untuk menyalin, tidak memindahkan):

[damon@localhost ~]$ cp original.txt /tmp/duplicate.txt
[damon@localhost ~]$

Jalankan perintah berikut untuk membuat checksum dari file yang disalin:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Selanjutnya, tambahkan hasil hash ke hashes.txt file dan kemudian membandingkan keduanya. Berhati-hatilah saat menggunakan >> tambahkan operator redirect di sini, karena > akan menimpa nilai hash dari original.txt berkas.

Jalankan perintah berikut:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Kedua hasil hash tersebut identik, sehingga file tidak berubah selama proses penyalinan.

Selanjutnya, simulasikan perubahan. Ketik perintah berikut untuk mengubah /tmp/duplicate.txt isi file, lalu jalankan kembali md5sum perintah dengan >> tambahkan operator:

[damon@localhost ~]$ hostname >> /tmp/duplicate.txt
[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$

Anda tahu bahwa duplicate.txt file tidak lagi identik dengan original.txt file, tapi mari kita buktikan bahwa:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt
[damon@localhost ~]$

Kedua nilai checksum tidak identik, dan oleh karena itu dua file dari mana checksum dihasilkan tidak identik.

Pada contoh di atas, Anda membandingkan nilai hash secara manual dengan menampilkannya dengan cat . Anda dapat menggunakan --check pilihan untuk memiliki md5sum melakukan perbandingan untuk kita. Saya telah menyertakan kedua metode di bawah ini:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt

[damon@localhost ~]$ md5sum --check hashes.txt
original.txt: OK
/tmp/duplicate.txt: FAILED
/tmp/duplicate.txt: OK
md5sum: WARNING: 1 computed checksum did NOT match
[damon@localhost ~]$

Anda dapat mengulangi langkah-langkah di atas dengan mengganti sha256sum untuk md5sum perintah untuk melihat cara kerja proses menggunakan algoritma SHA. sha256sum perintah juga menyertakan --check checksum opsi yang membandingkan hash yang dihasilkan dan menampilkan pesan apakah file tersebut berbeda.

Catatan :Jika Anda mentransfer file antara Linux, macOS, dan Windows, Anda masih dapat menggunakan hashing untuk memverifikasi integritas file. Untuk menghasilkan nilai hash di macOS, jalankan md5 memerintah. Untuk melakukan ini di Windows, Anda harus mengunduh program pihak ketiga. Secara pribadi, saya menggunakan md5checker . Pastikan untuk memahami lisensi untuk utilitas ini. Anda mungkin dapat menggunakan cmdlet PowerShell get-filehash , tergantung pada versi PowerShell yang telah Anda instal.

[ Kursus gratis:Tinjauan Teknis Satelit Red Hat. ] 

Menutup

Hashing mengonfirmasi bahwa data tidak berubah secara tiba-tiba selama transfer file, unduhan, atau peristiwa lainnya. Konsep ini dikenal sebagai integritas file. Hashing tidak memberi tahu Anda apa yang berubah, hanya sesuatu yang berubah. Setelah hashing memberi tahu Anda bahwa dua file berbeda, Anda dapat menggunakan perintah seperti diff untuk menemukan perbedaan apa yang ada.


Linux
  1. Apa itu NFS dan bagaimana cara menginstalnya di Linux

  2. Temukan File dengan Perintah Temukan dan Temukan di Linux

  3. Metode kompresi dan arsip di Linux

  1. Izin Linux:Pengantar chmod

  2. Pipes dan Redirection di Linux - Dijelaskan!

  3. Cara memasang dan memasang sistem file di Linux

  1. Pengantar pemantauan akun pengguna Linux

  2. Pengantar file Linux /etc/fstab

  3. Cara Mengarahkan Output ke File dan Stdout di Linux