Cara Kerja Kriptografi Public-Key Sebenarnya
Panduan praktis enkripsi asimetrik, pasangan kunci, dan tanda tangan digital, tanpa analogi matematika yang berbelit-belit.
Setiap kali Anda SSH ke server atau memuat situs HTTPS, dua kunci yang terhubung secara matematis melakukan pekerjaan berat. Satu bersifat publik, satu bersifat privat, dan hubungan di antara keduanya itulah yang membuat komunikasi aman melalui jaringan yang tidak terpercaya menjadi mungkin sejak awal.
Ide dasarnya
Dengan enkripsi simetrik, satu kunci mengunci dan membuka kunci data. Itu berfungsi baik jika kedua pihak sudah berbagi rahasia, tetapi mendistribusikan rahasia itu dengan aman adalah bagian yang sulit. Kriptografi public-key (asimetrik) menyelesaikan ini dengan menghasilkan sepasang yang terhubung secara matematis: kunci publik yang Anda bagikan kepada siapa saja, dan kunci privat yang tidak pernah Anda bagikan.
Data yang dienkripsi dengan kunci publik hanya dapat didekripsi dengan kunci privat yang cocok. Data yang ditandatangani dengan kunci privat dapat diverifikasi oleh siapa saja yang memegang kunci publik. Kedua sifat itu mencakup hampir semua yang kami gunakan untuk ini: kerahasiaan dan autentikasi.
RSA, contoh klasiknya
RSA mengandalkan fakta bahwa mengalikan dua bilangan prima besar itu cepat, tetapi memfaktorkan produk kembali menjadi bilangan prima itu sangat berat secara komputasi pada skala besar. Kunci RSA 2048-bit dibangun dari dua bilangan prima sekitar 1024-bit masing-masing. Kunci publik adalah (n, e) — n adalah produk bilangan prima, e adalah eksponen tetap seperti 65537. Kunci privat diturunkan menggunakan totient dari n dan melibatkan pengetahuan tentang bilangan prima asli.
Enkripsi adalah eksponensial modular: c = m^e mod n. Dekripsi membaliknya dengan eksponen privat d: m = c^d mod n. Tidak ada yang benar-benar mengenkripsi muatan besar langsung dengan RSA dalam praktik, meskipun — itu lambat dan memiliki batasan ukuran yang terikat pada panjang kunci. Sebagai gantinya, RSA biasanya membungkus kunci sesi simetrik (AES-256, misalnya), dan cipher simetrik menangani data massal. Itulah pendekatan hybrid yang digunakan TLS.
Kriptografi kurva eliptik dan mengapa ia mengambil alih
ECC memberikan Anda keamanan setara dengan RSA dengan kunci yang jauh lebih kecil. Kunci ECC 256-bit (seperti curve secp256r1 atau Curve25519) kira-kira sebanding dalam kekuatan dengan kunci RSA 3072-bit. Kunci yang lebih kecil berarti handshake lebih cepat dan bandwidth lebih sedikit, itulah mengapa konfigurasi TLS modern, implementasi SSH, dan protokol Signal semuanya mengandalkan ECC.
Matematinya berbeda — didasarkan pada masalah logaritma diskrit atas titik pada kurva eliptik daripada faktorisasi bilangan bulat — tetapi hubungan kunci publik/privat dan jaminannya secara konseptual sama.
Tanda tangan digital: separuh lainnya dari persamaannya
Enkripsi menjaga data tetap rahasia. Tanda tangan membuktikan autentisitas dan integritas. Untuk menandatangani pesan, Anda menghashnya (SHA-256, biasanya) dan mengenkripsi hash itu dengan kunci privat Anda. Siapa saja dengan kunci publik Anda dapat menghash pesan sendiri, mendekripsi tanda tangan Anda, dan memeriksa kedua hash cocok.
Ini persis apa yang terjadi ketika Anda menjalankan git commit -S dengan kunci GPG, atau ketika Certificate Authority menandatangani sertifikat TLS. Kunci privat CA menandatangani cert Anda; browser dikirimkan dengan kunci publik CA yang dipercaya sebelumnya, sehingga mereka dapat memverifikasi keaslian cert Anda tanpa pernah berbicara langsung dengan CA.
Di mana ini muncul setiap hari
Autentikasi kunci SSH adalah penerapan langsung: ssh-keygen -t ed25519 menghasilkan pasangan kunci, Anda melepaskan setengah publik ke ~/.ssh/authorized_keys di server, dan autentikasi terjadi melalui challenge-response menggunakan kunci privat, tidak ada password yang pernah dikirim.
Handshake TLS menggunakan crypto asimetrik sebentar, hanya untuk membangun kunci simetrik bersama (melalui pertukaran kunci ECDHE dalam setup modern), lalu turun ke enkripsi simetrik cepat untuk sesi aktual. Enkripsi email PGP/GPG mengikuti pola hybrid juga — enkripsi pesan dengan kunci AES acak, lalu enkripsi kunci AES itu dengan kunci publik RSA atau ECC penerima.
Apa yang benar-benar rusak dalam praktik
Matematika di balik RSA dan ECC tidak telah dipecahkan melalui komputasi klasik. Yang salah hampir selalu implementasi: pembangkitan angka acak yang lemah saat membuat kunci (bug Debian OpenSSL dari 2008 adalah kasus textbook), nonce yang digunakan kembali dalam tanda tangan ECDSA yang membocorkan kunci privat, atau padding oracle attacks terhadap RSA yang diimplementasikan dengan buruk (Serangan Bleichenbacher terhadap padding PKCS#1 v1.5). Komputasi quantum adalah ancaman teoritis jangka panjang — algoritma Shor akan memecahkan RSA dan ECC jika komputer quantum yang cukup besar ada — itulah mengapa NIST sudah menstandarkan algoritma post-quantum seperti ML-KEM (sebelumnya Kyber) untuk migrasi masa depan.
Jika Anda ingin melangkah lebih jauh dengan ini, track kriptografi Korra Studio mencakup protokol pertukaran kunci dan internal fungsi hash secara lebih mendalam, dan segmen networking menunjukkan bagaimana semua ini sesuai ke dalam handshake TLS aktual byte demi byte.
Ditulis dengan bantuan AI, ditinjau dan dipublikasikan oleh Michal Pilch (CISSP), Korra Studio.
Ini satu catatan dari basis pengetahuan Korra Studio — platform ini memasangkan setiap topik dengan bimbingan privat.
Mulai gratisarrow_forward