Praktik Kriptografi: kalkulasi hash, efek avalanche, RSA, Diffie-Hellman
Kriptografi yang dihitung dengan tangan: menghitung hash dan menyaksikan efek avalanche, mengoperasikan RSA kecil, serta menyimulasikan pertukaran kunci Diffie-Hellman.
Catatan keamanan dan legal: lab ini murni perhitungan matematika di mesin milikmu sendiri (VM Kali Linux dari pertemuan 2). Tidak ada jaringan yang disentuh dan tidak ada sistem lain yang diuji. Angka RSA dan Diffie-Hellman di sini sengaja dibuat kecil untuk pembelajaran: jangan pernah memakai kunci kecil semacam ini di dunia nyata. Panduan mengikuti Lab Exercise 5.03 (Hashing) dan 5.04 (Diffie-Hellman Key Exchange) dari Lab Manual (2021), dengan Lab 5.01 dan 5.02 sebagai konteks; perhitungan RSA angka kecil berasal dari indikator RPS dan tidak ada di Lab Manual (dinyatakan eksplisit).
Tujuan pembelajaran
Sesuai RPS TL455 pertemuan 9, setelah lab ini kamu mampu menghitung hash, efek avalanche, RSA, dan simulasi Diffie-Hellman. Tujuan eksplisit Lab 5.03: *hash plaintext into a message digest* dan memahami mengapa hashing berbeda dari enkripsi; tujuan Lab 5.04: menyaksikan pertukaran kunci DH dengan warna dan dengan angka.
Alat dan Persiapan
- VM Kali Linux dari pertemuan 2, terminal dengan
python3bawaan. - Peramban untuk alat hash daring yang dipakai Lab 5.03: fileformat.info/tool/hash.htm dan onlinemd5.com.
- ISO Kali Linux yang kamu unduh di pertemuan 2 (untuk verifikasi hash, Langkah 3).
Langkah Pekerjaan
- Hitung hash dan saksikan avalanche (Lab 5.03, Step 1). Lab Manual memakai alat daring fileformat.info/tool/hash.htm: ketik
bobdi *String Hash*, klik *Hash*, lalu bandingkan denganBob: satu huruf berbeda huruf besar, hasilnya berbeda total. Di terminal, pola yang sama:
echo -n "bob" | sha256sum
echo -n "Bob" | sha256sum
echo -n "keamanan jaringan" | sha256sum
echo -n "keamanan jaringan " | sha256sumPerhatikan dua karakteristik pertama hash dari daftar Lab 5.03: input sepanjang apa pun menghasilkan output berpanjang tetap, dan perubahan satu bit membuat output berubah total (bandingkan input panjang vs pendek: ukuran digestnya sama). Eksperimen tambahan: bandingkan sha256sum dan md5sum; MD5 masih jalan tapi sudah tak layak untuk keamanan, sebagaimana kasus SHA-1 di bawah.
- Pahami lima karakteristik hash (Lab 5.03). Lab Manual merinci limanya: input variabel berpanjang tetap; satu bit berubah mengubah semuanya; preimage resistance (tidak bisa kembali ke input); second preimage resistance (sulit menemukan input kedua untuk hash yang sama dari input yang diberi); collision resistance (sulit menemukan dua input apa pun dengan hash sama). Kasus nyata yang dikutip lab: SHAttered (Februari 2017) meruntuhkan SHA-1 lewat serangan tabrakan, disusul serangan chosen-prefix ("SHA-1 is a Shambles", 2019) yang lebih kuat. Analogi satu arah dari lab: smoothie pisang-strawberi-susu; kamu tahu isinya, tapi tidak bisa mendapatkan kembali pisangnya.
- Verifikasi integritas unduhan (Lab 5.03, Step 3). Buka halaman unduhan resmi Kali Linux (kali.org/get-kali): tiap ISO punya SHA-256 sum resmi dari pengembangnya. Hitung hash ISO-mu dengan
sha256sum namafile.isoatau lewat onlinemd5.com, lalu cocokkan. Sama berarti file asli; beda berarti berubah di tengah jalan. Inilah pemakaian hash untuk integritas file yang diunduh, dan hubungannya dengan basis data sandi (hash sandi disimpan, bukan sandinya).
- RSA mini di kertas (dari indikator RPS; tidak ada di Lab Manual). Ambil prima kecil
p = 5,q = 11:
n = p * q = 55
phi(n) = (p-1)(q-1) = 4 * 10 = 40
pilih e = 3 (coprime dengan 40)
d = 27 (karena 3 * 27 = 81 ≡ 1 (mod 40))Kunci publik (3, 55), kunci privat (27, 55). Enkripsi m = 8: c = 8^3 mod 55 = 22; dekripsi m = 22^27 mod 55 = 8. Verifikasi:
python3 -c "print(pow(8, 3, 55))" # 22
python3 -c "print(pow(22, 27, 55))" # 8Kaitannya ke Bab 5: keamanan RSA berdiri di atas sulitnya faktorisasi (contoh buku: 293 × 307 = 89.951 mudah dihitung, faktornya sulit ditebak). Angka kecil ini hanyalah untuk belajar; RSA nyata memakai kunci minimal 2048 bit.
- Simulasi Diffie-Hellman dengan angka Lab 5.04. Lab Manual memakai prime
p = 29dan generatorg = 2; Bob memilih rahasiab = 12, Alice memiliha = 5:
Bob: B = 2^12 mod 29 = 7 → dikirim ke Alice
Alice: A = 2^5 mod 29 = 3 → dikirim ke Bob
Bob: kunci bersama = 3^12 mod 29 = 16
Alice: kunci bersama = 7^5 mod 29 = 16Verifikasi di terminal:
python3 -c "print(pow(2,12,29), pow(2,5,29), pow(3,12,29), pow(7,5,29))"
# 7 3 16 16 : kedua sisi sampai pada shared secret 16Analogi warna dari Lab 5.04: kuning publik, biru dan merah rahasia, campuran hijau/oranye ditukar, hasil cokelat identik yang tak pernah dikirim. Buku menambah penjelasan matematisnya: Bob sebenarnya menghitung 3^12 ≡ (2^5)^12 ≡ 2^60 ≡ 16 (mod 29), dan Alice 7^5 ≡ (2^12)^5 ≡ 2^60 ≡ 16: sifat perpangkatan yang sama inilah yang membuat kedua sisi bertemu. Latihan dari lab: ulangi dengan p = 13, g = 6, rahasia 5 dan 4; lalu p = 11, g = 7, rahasia 3 dan 6.
Hasil yang Diharapkan
- Hash
bobdanBob(dan input panjang vs pendek) terbukti berbeda total dengan ukuran digest sama. - Lima karakteristik hash bisa kamu sebutkan dengan kata-katamu sendiri.
- RSA mini:
8 → 22 → 8dengan pemahaman peran e, d, dan n. - Diffie-Hellman (p = 29, g = 2): kedua sisi sampai pada shared secret 16 tanpa mengirim rahasianya.
Troubleshooting Umum
- Hasil hash tampak salah:
echotanpa-nmenambahkan baris baru di akhir input; konsisten memakaiecho -n. - `pow` memberi hasil tak terduga: cek urutan argumen
pow(basis, eksponen, modulus). - RSA mini tidak mengembalikan pesan asli: pastikan d benar (3 × 27 = 81, dan 81 mod 40 = 1).
- DH hasil tidak sama: pastikan tidak menukar urutan; kunci bersama selalu (nilai lawan)^(rahasia sendiri) mod p.
Checklist Selesai
- [ ] Avalanche terbukti lewat
bob/Bobdan input panjang berbeda. - [ ] Lima karakteristik hash (termasuk preimage, second preimage, collision resistance) bisa dijelaskan.
- [ ] SHA-256 ISO Kali terverifikasi terhadap sum resmi.
- [ ] RSA mini terenkripsi dan terdekripsi dengan benar.
- [ ] Diffie-Hellman mencapai shared secret 16 dari kedua sisi; dua latihan lab selesai.