Glosarium

Apa itu bcrypt?

bcrypt adalah fungsi hashing password berbasis block cipher Blowfish yang menyertakan salt bawaan dan faktor biaya yang dapat dikonfigurasi, dirancang agar mahal secara komputasi dengan cara yang secara khusus menahan akselerasi oleh GPU dan perangkat keras khusus.

Juga dikenal sebagai: bcrypt hash, Blowfish crypt

bcrypt dirancang pada tahun 1999 oleh Niels Provos dan David Mazieres khusus untuk hashing password, pada saat sebagian besar sistem menggunakan fungsi hash cepat seperti MD5 atau SHA-1. Inovasi utamanya adalah faktor biaya — parameter yang mengontrol berapa banyak iterasi pengaturan kunci Blowfish yang mendasarinya yang dilakukan. Setiap kenaikan faktor biaya menggandakan waktu komputasi, memungkinkan pembela untuk menyesuaikan tingkat kesulitan seiring bertambah cepatnya perangkat keras.

Yang membedakan bcrypt dari PBKDF2 adalah ketahanannya terhadap akselerasi GPU. PBKDF2 menggunakan operasi HMAC yang sesuai dengan arsitektur GPU, memungkinkan penyerang dengan GPU konsumen mencapai paralelisme masif. Key schedule berbasis Blowfish milik bcrypt memerlukan akses sering ke tabel state berukuran 4KB yang harus dimodifikasi selama komputasi. Pola akses memori ini tidak dapat diparalelkan secara efisien di GPU, memaksa penyerang kembali ke kecepatan serangan berbasis CPU.

bcrypt menghasilkan string 60 karakter yang mengodekan versi algoritma, faktor biaya, salt, dan hash secara bersamaan — membuatnya bersifat mandiri dan portabel. Hash bcrypt tipikal terlihat seperti $2b$12$... di mana 12 adalah faktor biaya. Faktor biaya minimum yang direkomendasikan saat ini adalah 10 (sekitar 100ms per hash pada perangkat keras modern), meskipun 12–14 umum untuk aplikasi yang dapat menoleransi waktu login yang sedikit lebih lambat. bcrypt tersedia di hampir setiap bahasa pemrograman dan tetap menjadi salah satu algoritma hashing password yang paling banyak digunakan.

Cara Vaulted menggunakan bcrypt

Vaulted menggunakan PBKDF2 daripada bcrypt untuk penurunan kunci berbasis passphrase karena PBKDF2 tersedia secara native melalui Web Crypto API di browser, sementara bcrypt tidak. Web Crypto API tidak mengekspos bcrypt, sehingga menggunakannya akan memerlukan implementasi JavaScript yang mengorbankan manfaat keamanan dari eksekusi native yang berjalan dalam waktu konstan. Untuk aplikasi sisi server yang melakukan hashing password untuk autentikasi, bcrypt tetap merupakan pilihan yang sangat baik — tetapi untuk penurunan kunci sisi klien di browser, PBKDF2 via Web Crypto adalah pendekatan standar.