Apa itu Derivasi Kunci?
Derivasi kunci adalah proses mengubah nilai sumber — biasanya kata sandi, passphrase, atau rahasia bersama — menjadi satu atau lebih kunci kriptografi menggunakan algoritma deterministik yang dirancang untuk menghasilkan materi kunci dengan entropi tinggi.
Kata sandi yang dipilih manusia secara inheren lemah sebagai kunci kriptografi. Kata sandi pendek, memiliki set karakter terbatas, dan mengikuti pola yang dapat diprediksi. Fungsi derivasi kunci (KDF) menjembatani kesenjangan ini dengan memproses kata sandi melalui algoritma intensif komputasi yang menghasilkan kunci dengan panjang tetap yang cocok untuk enkripsi.
Fungsi derivasi kunci secara sengaja dirancang untuk lambat dan intensif sumber daya. Ini kontra-intuitif bagi sebagian besar perangkat lunak, di mana kecepatan dihargai, tetapi untuk KDF, kelambatan adalah fitur keamanan. Penyerang yang mencoba brute-force kata sandi harus menjalankan KDF untuk setiap tebakan. Jika KDF membutuhkan 100 milidetik per percobaan, mencoba satu miliar kata sandi akan membutuhkan lebih dari tiga tahun — dibandingkan detik dengan fungsi hash cepat.
KDF yang umum mencakup PBKDF2, bcrypt, scrypt, dan Argon2. Masing-masing menyeimbangkan sumber daya yang berbeda (waktu CPU, memori, paralelisme) untuk menahan strategi serangan yang berbeda. Pilihan KDF bergantung pada lingkungan: aplikasi berbasis browser biasanya menggunakan PBKDF2 karena tersedia melalui Web Crypto API, sementara aplikasi sisi server mungkin lebih memilih Argon2 karena ketahanan memorinya.
Cara Vaulted menggunakan Derivasi Kunci
Saat kamu menetapkan passphrase opsional pada sebuah rahasia, Vaulted menggunakan derivasi kunci untuk mengubah passphrase tersebut menjadi kunci wrapping. Secara spesifik, Vaulted menjalankan PBKDF2 dengan 100.000 iterasi, SHA-256, dan salt 16-byte acak melalui Web Crypto API. Kunci yang diturunkan digunakan dengan AES-KW untuk membungkus kunci enkripsi AES-256-GCM asli. Penerima harus memasukkan passphrase yang sama untuk menurunkan kunci wrapping yang sama dan membuka kunci enkripsi sebelum mendekripsi rahasia.