Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2
Bandingkan algoritme pencacahan kata sandi berdasarkan ketahanannya terhadap serangan GPU dan ASIC, serta pahami cara faktor kerja dan kekerasan memori disesuaikan.
Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2 adalah pelajaran Security+ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Security+ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Security+ Academy mencakup 4 pelajaran total.
Mengapa Hash Kata Sandi Berbeda
Menyimpan kata sandi memerlukan kelas khusus fungsi kriptografi yang disebut fungsi hash kata sandi (PHF) atau fungsi derivasi kunci (KDF). Hash kriptografi biasa seperti SHA-256 dirancang agar cepat — GPU modern dapat menghitung miliaran hash SHA-256 per detik. Kecepatan ini sangat berbahaya untuk penyimpanan kata sandi: penyerang yang mencuri basis data hash dapat mencoba miliaran tebakan per detik. KDF kata sandi sengaja dibuat lambat dan dapat disesuaikan agar serangan brute force tidak layak dilakukan secara komputasional, sekaligus tetap memungkinkan proses masuk yang sah dalam hitungan milidetik.
Salt: Mengalahkan Tabel Pelangi
Sebelum KDF khusus untuk kata sandi tersedia, penyerang menggunakan tabel pelangi — pemetaan yang telah dihitung sebelumnya dari nilai hash kembali ke kata sandi teks biasa. Salt adalah nilai acak yang unik untuk setiap pengguna, yang ditambahkan di awal atau akhir kata sandi sebelum hashing, sehingga setiap hash menjadi unik meskipun kata sandinya sama. Salt disimpan bersama hash dalam basis data — salt tidak bersifat rahasia, melainkan hanya acak. Salt yang benar harus: berukuran minimal 16 byte, dihasilkan oleh pembangkit bilangan acak yang aman secara kriptografis, dan disimpan untuk setiap pengguna (tidak pernah digunakan ulang di antara akun).
PBKDF2: Standar Kata Sandi
PBKDF2 (Password-Based Key Derivation Function 2) didefinisikan dalam RFC 8018 dan disetujui oleh NIST. Cara kerjanya adalah menerapkan fungsi HMAC (biasanya HMAC-SHA-256) berulang kali pada kata sandi dan salt, sebanyak iterasi yang dapat dikonfigurasi. Jumlah iterasi merupakan faktor kerja — NIST merekomendasikan setidaknya 600.000 iterasi PBKDF2-HMAC-SHA256 per 2023. PBKDF2 banyak digunakan (Django, iOS Keychain, WPA2-PSK), tetapi memiliki satu kelemahan: algoritma ini dapat diimplementasikan secara efisien pada GPU, sehingga ketahanannya terhadap GPU lebih rendah dibandingkan alternatifnya.
# PBKDF2 example (Python pseudocode concept)
# import hashlib
# dk = hashlib.pbkdf2_hmac(
# 'sha256', # hash algorithm
# b'password', # password bytes
# b'random_salt', # salt bytes
# 600000 # iterations
# )bcrypt: Ketahanan terhadap Memori dan CPU
bcrypt dirancang oleh Niels Provos dan David Mazieres pada 1999 dan masih banyak digunakan. Inovasi utamanya adalah faktor biaya (parameter putaran), yang setiap kenaikannya menggandakan waktu komputasi. bcrypt menggunakan sandi Blowfish yang dimodifikasi dengan penyiapan kunci Eksblowfish yang intensif terhadap CPU dan memori, sehingga jauh lebih sulit dipercepat pada GPU dibandingkan PBKDF2. bcrypt juga membatasi masukan kata sandi hingga 72 byte (kata sandi yang lebih panjang akan dipotong), sehingga pada beberapa implementasi kata sandi yang panjang harus terlebih dahulu di-hash dengan SHA-256.
# bcrypt cost factor
# Cost 10 = ~100ms on modern hardware
# Cost 12 = ~400ms
# Cost 14 = ~1600ms
# Each +1 doubles the work
# Recommended: cost 12-14 for web apps
# Command: htpasswd -bnBC 12 username passwordArgon2: Pilihan Modern Terbaik
Argon2 memenangkan Password Hashing Competition pada 2015 dan saat ini menjadi rekomendasi OWASP. Argon2 memiliki tiga varian: Argon2d (lebih cepat, rentan terhadap saluran samping, paling sesuai untuk mata uang kripto), Argon2i (waktu konstan, paling sesuai untuk hashing kata sandi), dan Argon2id (hibrida, direkomendasikan untuk sebagian besar penggunaan). Argon2id dapat dikonfigurasi dalam tiga dimensi: biaya waktu (iterasi), biaya memori (RAM yang diperlukan), dan paralelisme (utas). Kebutuhan memori yang tinggi membuatnya sangat sulit diparalelkan pada GPU dan sama sekali tidak layak dijalankan pada ASIC.
# Argon2id recommended parameters (OWASP 2023)
# Memory: 64MB (65536 KiB)
# Iterations: 3
# Parallelism: 4 threads
# Output length: 32 bytes
# argon2 -id -t 3 -m 16 -p 4 -l 32Ketahanan Memori: Mengapa Serangan GPU Dapat Dikalahkan
GPU memiliki ribuan inti, tetapi memori per intinya terbatas — GPU unggul dalam memparalelkan komputasi sederhana yang hanya membutuhkan sedikit memori. Fungsi yang membutuhkan banyak memori seperti Argon2 dan scrypt memerlukan RAM dalam jumlah besar untuk setiap komputasi hash. Jika penyerang ingin menjalankan 10.000 komputasi Argon2id secara paralel dan masing-masing memerlukan memori 64MB, mereka membutuhkan RAM GPU sebesar 640GB — jauh melebihi kapasitas yang tersedia pada klaster GPU mana pun. Sifat ini, yang disebut ketahanan memori, memaksa penyerang menggunakan komputasi berurutan yang lambat atau menginvestasikan biaya perangkat keras yang sangat besar, sehingga serangan menjadi tidak ekonomis.
Penyesuaian Faktor Kerja dalam Praktik
Faktor kerja yang tepat bergantung pada perangkat keras Anda dan latensi yang dapat diterima. Sasaran umumnya adalah 100–300 md pada perangkat keras produksi server untuk setiap autentikasi. Seiring peningkatan kemampuan perangkat keras, Anda harus meningkatkan faktor kerja — inilah alasan bcrypt dan Argon2 menyimpan parameternya bersama hash, sehingga memungkinkan peningkatan transparan: saat proses masuk berikutnya, verifikasi kata sandi, lalu buat hash ulang dengan parameter baru yang lebih tinggi. OWASP memelihara parameter minimum yang direkomendasikan dan terbaru untuk PBKDF2, bcrypt, dan Argon2id, yang sebaiknya ditinjau setiap tahun.
scrypt: KDF Lain yang Membutuhkan Banyak Memori
scrypt, yang dirancang oleh Colin Percival pada 2009, merupakan KDF pertama yang membutuhkan banyak memori dan diadopsi secara luas; scrypt digunakan oleh Litecoin dan banyak pengelola kata sandi. Parameter scrypt terdiri atas N (biaya CPU/memori), r (ukuran blok), dan p (faktor paralelisasi). Seperti Argon2, nilai N yang tinggi memerlukan RAM dalam jumlah besar untuk setiap komputasi. scrypt dianggap aman, tetapi Argon2id umumnya lebih disukai untuk aplikasi baru karena memenangkan PHC dan telah menerima lebih banyak analisis kriptografi. Keduanya merupakan pilihan yang dapat diterima.
Yang TIDAK Boleh Digunakan: MD5, SHA-1, dan SHA Tanpa Salt
Beberapa pendekatan hashing tidak boleh digunakan untuk kata sandi: MD5 (telah rusak, mampu menghasilkan miliaran hash per detik pada perangkat keras konsumen), SHA-1 (memiliki masalah yang sama), SHA-256 tanpa salt (cepat, tabel pelangi mudah digunakan), dan enkripsi sederhana (dapat dibalik, sehingga pencurian kunci berarti semua kata sandi terbongkar). Kebocoran historis seperti LinkedIn (2012) menggunakan SHA-1 tanpa salt dan mengekspos 117 juta kata sandi yang berhasil dipecahkan dalam hitungan hari. Adobe (2013) mengenkripsi, bukan melakukan hashing terhadap, kata sandi — sebuah kesalahpahaman mendasar yang mengekspos 153 juta akun. Insiden-insiden ini termasuk dalam cakupan pengetahuan ujian Security+.
Derivasi Kunci untuk Kunci Enkripsi
KDF juga digunakan untuk menurunkan kunci enkripsi dari kata sandi (berbeda dari menyimpan hash kata sandi). Saat pengguna menetapkan kata sandi utama untuk penyimpanan terenkripsi, aplikasi menggunakan KDF untuk menurunkan kunci enkripsi AES-256 yang sebenarnya dari kata sandi tersebut. Inilah alasan pengelola kata sandi dapat mendekripsi penyimpanan Anda secara lokal — pengelola tersebut menjalankan KDF pada kata sandi utama Anda untuk merekonstruksi kunci enkripsi, yang tidak pernah meninggalkan perangkat Anda. HKDF (HMAC-based Key Derivation Function) adalah standar untuk menurunkan beberapa kunci dari satu rahasia dengan entropi tinggi, yang digunakan dalam TLS 1.3 untuk menurunkan kunci jabat tangan dan aplikasi.
Pengisian Kredensial dan Perlindungan KDF
Serangan pengisian kredensial menggunakan kembali pasangan nama pengguna/kata sandi yang dicuri dari satu kebocoran pada layanan lain. KDF yang kuat mempersempit waktu yang tersedia untuk pembobolan luring setelah kebocoran—jika penyerang harus menghabiskan 300 md untuk setiap tebakan, bukan mikrodetik, pembobolan kata sandi acak sepanjang 10 karakter menjadi tidak layak secara komputasi. Namun, KDF tidak melindungi dari penggunaan ulang kata sandi di berbagai situs—untuk itu, pengguna harus menggunakan kata sandi yang unik. Kombinasi kata sandi unik + penyimpanan Argon2id + MFA membuat serangan berbasis kredensial secara praktis tidak efektif.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep CompTIA Security+ (SY0-701) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa KDF kata sandi sengaja dibuat lambat dengan faktor kerja yang dapat disesuaikan untuk membuat serangan brute force luring tidak layak secara komputasi, fungsi yang sulit diparalelkan di memori seperti Argon2id dan scrypt menggagalkan paralelisasi GPU dengan memerlukan RAM dalam jumlah besar untuk setiap komputasi, dan MD5, SHA-1, serta hash tanpa salt sama sekali tidak memadai untuk penyimpanan kata sandi, sebagaimana ditunjukkan oleh berbagai kebocoran besar yang mendapat perhatian luas. Selanjutnya, kita akan membahas kriptografi pascakuantum dan algoritme yang dipilih oleh NIST untuk menggantikan RSA dan ECC.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2” gratis?
Ya — teks lengkap “Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Security+ Academy, upgrade ke CoddyKit PRO. Kursus Security+ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2”?
Bandingkan algoritme pencacahan kata sandi berdasarkan ketahanannya terhadap serangan GPU dan ASIC, serta pahami cara faktor kerja dan kekerasan memori disesuaikan. Kamu berlatih Security+ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Security+ Academy?
Tidak diperlukan pengalaman sebelumnya. Security+ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Security+ Academy ini?
Ya. Setiap pelajaran Security+ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Jabat Tangan TLS 1.3 dan Penyambungan Kembali 0-RTT
- Enkripsi Terautentikasi: AES-GCM dan ChaCha20-Poly1305
- Fungsi Derivasi Kunci: PBKDF2, bcrypt, dan Argon2
- Kriptografi Pascakuantum: CRYSTALS-Kyber dan Dilithium