Security+ Academy · Pelajaran

Pencincangan dan Integriti Data

Pelajari cara SHA-256, MD5 dan HMAC menghasilkan ringkasan panjang tetap untuk mengesahkan bahawa data tidak diubah semasa penghantaran atau penyimpanan.

Pelajaran 3 daripada 413 langkah

Pencincangan dan Integriti Data ialah pelajaran Security+ Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Security+ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Security+ Academy merangkumi sejumlah 4 pelajaran.

Apakah Fungsi Hash?

Fungsi hash kriptografi ialah algoritma matematik yang menerima masukan dalam apa-apa saiz dan menghasilkan output dengan panjang tetap yang dipanggil hash, ringkasan atau cap jari. Fungsi hash adalah sehala: berdasarkan hash, amat tidak praktikal dari segi pengiraan untuk menentukan masukan asal. Fungsi ini bersifat deterministik: masukan yang sama sentiasa menghasilkan hash yang sama. Fungsi hash menjadi asas kepada pengesahan integriti data, tandatangan digital, penyimpanan kata laluan dan banyak lagi mekanisme keselamatan.

Sifat Fungsi Hash Selamat

Fungsi hash kriptografi yang selamat mesti mempunyai empat sifat utama. Rintangan praimej: berdasarkan output hash, amat tidak praktikal dari segi pengiraan untuk mencari sebarang masukan yang menghasilkannya. Rintangan praimej kedua: berdasarkan sesuatu masukan, amat tidak praktikal untuk mencari masukan lain yang mempunyai hash yang sama. Rintangan perlanggaran: amat tidak praktikal untuk mencari mana-mana dua masukan berbeza yang menghasilkan output hash yang sama. Kesan Avalanche: perubahan walaupun satu bit masukan menyebabkan output hash yang sama sekali berbeza, lalu menjadikan pengubahan mudah dikesan.

# Avalanche effect demonstration
echo -n 'Hello' | sha256sum
# 185f8db32...  (completely different when one char changes)
echo -n 'Hello!' | sha256sum
# 334d016f7...  (entirely different hash)

# Same input ALWAYS produces same hash (deterministic)
echo -n 'Security+' | sha256sum
echo -n 'Security+' | sha256sum
# Both outputs are identical

MD5: Rosak dan Tidak Lagi Disyorkan

MD5 (Message Digest 5) menghasilkan hash 128-bit dan pernah digunakan secara meluas. Walau bagaimanapun, penyelidik menunjukkan serangan perlanggaran terhadap MD5 pada tahun 2004 — ini bermakna dua masukan berbeza yang menghasilkan hash yang sama boleh dicari. Hal ini amat merosakkan pengesahan integriti: penyerang boleh menggantikan fail berniat jahat yang mempunyai hash MD5 yang sama seperti fail asal. MD5 telah rosak sepenuhnya untuk keselamatan kriptografi dan tidak boleh digunakan untuk pengesahan integriti, tandatangan digital atau pencincangan kata laluan. Ia kadangkala masih digunakan untuk jumlah semak bukan keselamatan (pengesahan fail legasi), yang hanya boleh diterima bagi mengesan kerosakan tidak sengaja.

Keluarga SHA: SHA-1, SHA-256, SHA-3

Keluarga Secure Hash Algorithm (SHA) ialah set fungsi hash yang paling penting untuk Security+. SHA-1 (160-bit) menjadi piawaian selama bertahun-tahun tetapi telah dipecahkan oleh serangan perlanggaran praktikal pada tahun 2017 (projek SHAttered oleh Google) — dan kini tidak lagi disyorkan. SHA-256 (sebahagian daripada keluarga SHA-2, dengan output 256-bit) ialah piawaian industri semasa untuk tandatangan digital, sijil TLS dan pengesahan integriti fail. SHA-3 (Keccak) ialah algoritma alternatif NIST yang menawarkan rintangan terhadap serangan yang menyasarkan struktur SHA-2, walaupun SHA-256 kekal sebagai pilihan dominan bagi kebanyakan aplikasi.

# Common hash computations
echo -n 'password123' | sha256sum
# a665a4592...64 hex chars = 256 bits

echo -n 'password123' | sha512sum  
# b109f3bb...128 hex chars = 512 bits (SHA-512)

# File integrity check
sha256sum /path/to/downloaded_file.iso > file.sha256
sha256sum -c file.sha256
# file.iso: OK

Fungsi Hash untuk Penyimpanan Kata Laluan

Menyimpan kata laluan sebagai teks biasa tidak pernah boleh diterima. Apabila pengguna mencipta kata laluan, hash disimpan dalam pangkalan data dan bukannya kata laluan itu sendiri. Apabila pengguna log masuk, kata laluan yang dimasukkan akan dicincang dan dibandingkan dengan hash yang disimpan. Walau bagaimanapun, SHA-256 standard terlalu pantas untuk penyimpanan kata laluan — penyerang menggunakan GPU untuk menguji berbilion-bilion hash sesaat terhadap pangkalan data kata laluan yang dicuri. Fungsi pencincangan kata laluan yang dibina khusus seperti bcrypt, PBKDF2 dan Argon2 menambah kos pengiraan (faktor kerja) serta keperluan memori yang menjadikan pemecahan secara pukal tidak praktikal.

# bcrypt hash example (Python-style pseudocode)
import bcrypt
password = b'mySecretPassword'
# Hash with work factor of 12 (2^12 = 4096 iterations)
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Stored in DB: $2b$12$H0qS/LkPkAiH8KlxJb3lFuK...

# Verify (never compare raw hashes for bcrypt)
bcrypt.checkpw(password, hashed)  # Returns True

Pemberian Salt: Mengatasi Jadual Rainbow

Jadual rainbow ialah jadual carian yang telah dikira terlebih dahulu dan memetakan kata laluan lazim kepada hash masing-masing — membolehkan penyerang mencari hash dengan serta-merta dan mendapatkan kata laluan asal. Untuk mengatasi jadual rainbow, hash kata laluan mesti diberi salt. Salt ialah nilai rawak yang ditambahkan pada kata laluan sebelum pencincangan, lalu menjadikan hash setiap pengguna unik walaupun dua pengguna mempunyai kata laluan yang sama. Salt disimpan bersama hash (ia tidak perlu dirahsiakan). Walaupun penyerang memperoleh keseluruhan pangkalan data kata laluan anda, jadual rainbow yang telah dikira terlebih dahulu tidak berguna kerana setiap hash menggunakan salt yang berbeza.

# Salt demonstration
# Without salt: same password = same hash (rainbow table attack works)
# SHA256('password123') = always the same hash

# With salt: same password + random salt = unique hash
# SHA256('password123' + 'aBc8xZ') = unique hash for this user
# SHA256('password123' + 'mK2pYq') = completely different hash

# The salt is stored in the database alongside the hashed value
# Format: $salt$hash or combined as in bcrypt output

HMAC: Menambahkan Pengesahan pada Pencincangan

HMAC (Hash-based Message Authentication Code) ialah binaan yang menggunakan fungsi hash bersama key rahsia untuk menghasilkan kod pengesahan. Berbeza daripada hash biasa, HMAC hanya boleh dikira dan disahkan oleh pihak yang mengetahui key rahsia. Hal ini menyediakan integriti (mengesan perubahan) dan pengesahan (membuktikan bahawa mesej datang daripada seseorang yang memiliki key tersebut). HMAC-SHA256 digunakan secara meluas dalam pengesahan API (menandatangani permintaan API), token JWT dan operasi MAC TLS. Ia menghalang penyerang yang memintas mesej daripada menggantikannya dengan alternatif yang direka khas.

# Compute HMAC-SHA256 with OpenSSL
openssl dgst -sha256 -hmac 'my-secret-api-key' -hex api_request.json
# Output: HMAC-SHA256(api_request.json)= 3d4e2f...

# Only someone with 'my-secret-api-key' can generate or verify this HMAC
# Used in AWS Signature V4 for API authentication
# Used in JWT HS256 algorithm for token integrity

Fungsi Hash dalam Tandatangan Digital

Fungsi hash memainkan peranan utama dalam tandatangan digital. Apabila menandatangani dokumen besar, anda tidak menyulitkan keseluruhan dokumen dengan key persendirian (yang akan menjadi sangat perlahan). Sebaliknya, anda: (1) mengira hash dokumen (pantas dan menghasilkan ringkasan kecil dengan panjang tetap), kemudian (2) menandatangani hash kecil itu dengan key persendirian. Tandatangan tersebut hanyalah hash yang disulitkan. Pengesahan mengikut corak yang sama: nyahsulit tandatangan untuk mendapatkan hash, cincang dokumen secara berasingan dan bandingkan kedua-duanya. SHA-256 diwajibkan dalam semua sijil PKI moden; SHA-1 dilarang dalam sijil baharu.

Pemantauan Integriti Fail (FIM)

Pemantauan Integriti Fail (FIM) menggunakan fungsi hash untuk mengesan perubahan tanpa kebenaran pada fail sistem yang kritikal. Pada peringkat asas, alat FIM mencincang semua fail yang dipantau dan menyimpan hash tersebut dengan selamat. Secara berkala (atau berterusan), alat itu mencincang semula fail dan membandingkannya dengan asas. Sebarang ketidakpadanan menunjukkan bahawa fail telah diubah — berkemungkinan oleh perisian hasad atau tindakan pentadbir tanpa kebenaran. Alat FIM seperti Tripwire, AIDE (Linux) dan pemeriksaan integriti terbina dalam Windows menggunakan hash SHA-256. FIM diwajibkan oleh rangka kerja pematuhan seperti PCI-DSS untuk melindungi persekitaran data pemegang kad.

# AIDE (Advanced Intrusion Detection Environment) - Linux FIM
# Initialize baseline database
aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

# Check for changes (run via cron daily)
aide --check
# Output shows any files that were added, changed, or deleted
# File: /etc/passwd changed
# MD5 : old_hash != new_hash

Jumlah Semak berbanding Hash Kriptografi

Penting untuk membezakan jumlah semak daripada hash kriptografi. Jumlah semak seperti CRC32 direka untuk mengesan kerosakan data tidak sengaja semasa penghantaran — ia pantas dan ringkas tetapi boleh dipalsukan dengan mudah oleh penyerang. Hash kriptografi (SHA-256) direka supaya tahan terhadap perlanggaran dan dapat menunjukkan pengubahan walaupun berdepan manipulasi oleh pihak lawan. Gunakan jumlah semak apabila anda hanya perlu mengesahkan bahawa muat turun tidak rosak semasa penghantaran; gunakan hash kriptografi apabila anda perlu mengesahkan bahawa fail tidak sengaja diubah oleh pihak lawan.

Serangan Perlanggaran Hash dalam Amalan

Serangan perlanggaran hash memberikan kesan dalam dunia sebenar. Pada tahun 2017, penyelidik mencipta dua fail PDF berbeza yang mempunyai hash SHA-1 yang sama — menunjukkan bahawa sijil SHA-1 boleh dipalsukan. Pada tahun 2008, penyelidik menggunakan perlanggaran MD5 untuk mencipta sijil CA palsu yang kelihatan sah. Serangan ini ialah sebab pelayar menolak sijil MD5 dan SHA-1, serta sebab pihak berkuasa sijil mesti menggunakan sekurang-kurangnya SHA-256. Memahami serangan perlanggaran membantu anda menerangkan sebab keputusan untuk menghentikan penggunaan algoritma dibuat dan sebab hujah “tetapi ia masih menghasilkan hash” tidak mencukupi untuk menyokong penggunaan algoritma yang telah rosak.

Semakan Pantas

Uji pemahaman anda tentang konsep CompTIA Security+ (SY0-701) daripada pelajaran ini.

Rumusan Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa: fungsi hash menghasilkan ringkasan dengan panjang tetap untuk pengesahan integriti; MD5 dan SHA-1 telah rosak dan tidak lagi disyorkan; SHA-256 ialah piawaian semasa; pemberian salt mengatasi serangan jadual rainbow; dan HMAC menambahkan pengesahan pada pencincangan menggunakan key rahsia dikongsi. Seterusnya, kita akan meneroka Pertukaran Key dan Penyulitan Hibrid.

Percuma untuk bermula

Pelajari Security+ Academy dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Pencincangan dan Integriti Data” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Security+ Academy, termasuk “Pencincangan dan Integriti Data”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Security+ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pencincangan dan Integriti Data”?

Pelajari cara SHA-256, MD5 dan HMAC menghasilkan ringkasan panjang tetap untuk mengesahkan bahawa data tidak diubah semasa penghantaran atau penyimpanan. Anda berlatih Security+ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Security+ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Security+ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pencincangan dan Integriti Data” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Security+ Academy ini?

Ya. Setiap pelajaran Security+ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Algoritma Penyulitan Simetri
  2. Penyulitan Tak Simetri dan Pasangan Kunci
  3. Pencincangan dan Integriti Data
  4. Pertukaran Kunci dan Penyulitan Hibrid
← Kembali ke Security+ Academy