Keamanan Digital · Pelajaran 5 dari 8
Enkripsi: mengunci pesan
9 menit baca · BelajarCode
Enkripsi adalah proses mengubah pesan biasa (plaintext) menjadi pesan acak (ciphertext) memakai sebuah kunci. Hanya yang tahu kuncinya yang bisa mengembalikan pesan itu, proses yang disebut dekripsi.
Sandi Caesar
Salah satu enkripsi tertua adalah sandi Caesar: setiap huruf digeser sejauh beberapa posisi dalam abjad. Dengan geseran 3, A menjadi D, B menjadi E, dan seterusnya. Setelah Z, kembali ke A.
1def caesar(teks, geser):2 hasil = ""3 for huruf in teks.upper():4 if "A" <= huruf <= "Z":5 posisi = (ord(huruf) - ord("A") + geser) % 266 hasil += chr(ord("A") + posisi)7 else:8 hasil += huruf9 return hasil1011rahasia = caesar("KUMPUL DI PERPUSTAKAAN", 3)12print(rahasia)13print(caesar(rahasia, -3))NXPSXO GL SHUSXVWDNDDQ KUMPUL DI PERPUSTAKAAN
ord(huruf) - ord("A")mengubah huruf menjadi posisi 0 sampai 25.% 26membuat geseran berputar kembali ke awal abjad.- Dekripsi cukup menggeser ke arah sebaliknya.
Kenapa sandi Caesar mudah dipecahkan?
Sandi Caesar hanya punya 25 kemungkinan kunci. Komputer bisa mencoba semuanya dalam sekejap. Cara memecahkan sandi dengan mencoba semua kemungkinan disebut brute force.
1def caesar(teks, geser):2 hasil = ""3 for huruf in teks.upper():4 if "A" <= huruf <= "Z":5 posisi = (ord(huruf) - ord("A") + geser) % 266 hasil += chr(ord("A") + posisi)7 else:8 hasil += huruf9 return hasil1011rahasia = "NXPSXO GL SHUSXVWDNDDQ"12for kunci in range(1, 26):13 coba = caesar(rahasia, -kunci)14 if "DI" in coba.split():15 print("Kunci", kunci, ":", coba)Kunci 3 : KUMPUL DI PERPUSTAKAAN
Program di atas mencoba 25 kunci dan menampilkan hasil yang mengandung kata "DI".
Enkripsi modern
Enkripsi modern memakai kunci yang sangat panjang, misalnya 256 bit. Banyaknya kemungkinan kunci adalah 2 pangkat 256, sebuah angka dengan 78 digit. Mencoba semuanya, bahkan dengan gabungan seluruh komputer di dunia, butuh waktu jauh lebih lama daripada umur alam semesta. Brute force menjadi mustahil secara praktis.
| Jenis | Cara kerja | Analogi |
|---|---|---|
| Simetris | Satu kunci yang sama untuk mengunci dan membuka | Lemari dengan satu kunci yang dipegang dua orang |
| Asimetris | Kunci publik untuk mengunci, kunci privat untuk membuka | Gembok terbuka yang dibagikan ke siapa saja, tetapi kuncinya hanya dipegang pemiliknya |
HTTPS memakai keduanya: enkripsi asimetris untuk menyepakati kunci rahasia dengan aman, lalu enkripsi simetris yang lebih cepat untuk mengirim data.
Cek pemahaman
Kenapa sandi Caesar tidak aman untuk zaman sekarang?
Latihan
Pecahkan pesan ini
Pesan berikut dienkripsi dengan sandi Caesar geseran 5: XJRFSLFY GJQFOFW. Pakai fungsi caesar untuk membukanya.
Pembahasan
1def caesar(teks, geser):2 hasil = ""3 for huruf in teks.upper():4 if "A" <= huruf <= "Z":5 posisi = (ord(huruf) - ord("A") + geser) % 266 hasil += chr(ord("A") + posisi)7 else:8 hasil += huruf9 return hasil1011print(caesar("XJRFSLFY GJQFOFW", -5))SEMANGAT BELAJAR
Untuk membuka pesan, geser ke arah sebaliknya dengan nilai yang sama, yaitu -5.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.