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.

Python
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))
Keluaran
NXPSXO GL SHUSXVWDNDDQ
KUMPUL DI PERPUSTAKAAN
  • ord(huruf) - ord("A") mengubah huruf menjadi posisi 0 sampai 25.
  • % 26 membuat 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.

Python
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)
Keluaran
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.

Dua jenis enkripsi
JenisCara kerjaAnalogi
SimetrisSatu kunci yang sama untuk mengunci dan membukaLemari dengan satu kunci yang dipegang dua orang
AsimetrisKunci publik untuk mengunci, kunci privat untuk membukaGembok 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.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi