Entropi Password: Cara Mengukur dan Memaksimalkan Kekuatan Password Anda
Anda mungkin pernah diberi tahu bahwa “password yang kuat” memerlukan huruf besar, angka, dan karakter khusus. Tapi P@$$w0rd! memenuhi semua aturan tersebut — dan bisa dicrack dalam waktu kurang dari satu detik.
Ukuran sebenarnya dari kekuatan password bukan karakter apa yang Anda gunakan. Ini adalah entropi: sebuah konsep dari teori informasi yang mengukur seberapa tidak dapat diprediksi password Anda sebenarnya.
Artikel ini menjelaskan bagaimana entropi bekerja, cara menghitungnya, dan cara membuat password yang benar-benar sulit dicrack.
Apa Itu Entropi Password?
Entropi password mengukur seberapa tidak dapat diprediksi sebuah password, dinyatakan dalam bit. Setiap bit entropi tambahan menggandakan jumlah tebakan yang dibutuhkan penyerang untuk memecahkannya melalui brute force.
Bayangkan seperti dadu. Dadu 6 sisi memiliki sekitar 2,6 bit entropi per lemparan — hanya ada 6 kemungkinan hasil. Dadu 20 sisi memiliki sekitar 4,3 bit — lebih banyak sisi berarti lebih banyak ketidakpastian.
Password bekerja dengan cara yang sama: lebih banyak karakter yang mungkin (“dadu” yang lebih besar) dan lebih banyak karakter dalam password (lebih banyak “lemparan”) keduanya meningkatkan entropi.
Inilah mengapa entropi adalah ukuran yang lebih baik daripada aturan kompleksitas. Password bisa terlihat kompleks (Tr0ub4dor&3) tapi memiliki entropi rendah karena mengikuti pola yang dapat diprediksi. Sementara itu, passphrase yang terlihat sederhana (correct horse battery staple) bisa memiliki entropi tinggi karena diambil dari kumpulan kemungkinan yang besar.
Rumus: Cara Menghitung Entropi Password
Rumusnya cukup sederhana:
E = L × log₂(R)
Di mana:
- E = entropi dalam bit
- L = panjang password (jumlah karakter)
- R = ukuran pool (jumlah karakter yang mungkin per posisi)
Ukuran Pool Karakter
| Tipe Karakter | Ukuran Pool (R) | Bit per Karakter |
|---|---|---|
| Huruf kecil saja (a-z) | 26 | 4,70 |
| Huruf kecil + angka | 36 | 5,17 |
| Huruf besar + kecil + angka | 62 | 5,95 |
| ASCII cetak penuh | 94 | 6,55 |
| Daftar kata Diceware | 7.776 | 12,92 per kata |
Hitung dengan Kode
// Menghitung entropi password dalam JavaScript
const entropy = (length, poolSize) =>
length * Math.log2(poolSize);
entropy(8, 26); // → 37.60 bit (huruf kecil saja)
entropy(12, 62); // → 71.45 bit (alfanumerik)
entropy(16, 94); // → 104.87 bit (charset penuh)
import math
def entropy(length: int, pool_size: int) -> float:
return length * math.log2(pool_size)
entropy(8, 26) # → 37.60 bit
entropy(12, 62) # → 71.45 bit
entropy(16, 94) # → 104.87 bit
Penting: rumus ini mengasumsikan setiap karakter dipilih secara acak dan seragam. Jika manusia memilih password menggunakan pola atau kata kamus, entropi aktualnya jauh lebih rendah dari maksimum teoretis.
Berapa Banyak Entropi yang Cukup?
Jawabannya tergantung pada apa yang Anda lindungi dan seberapa cepat penyerang bisa menebak.
GPU modern dapat menguji lebih dari 10¹² (satu triliun) hash password per detik terhadap algoritma cepat seperti MD5. Berikut artinya dalam praktik:
| Entropi (bit) | Kekuatan | Waktu Crack pada 10¹² tebakan/detik | Direkomendasikan Untuk |
|---|---|---|---|
| < 40 | Lemah | Kurang dari 1 detik | Jangan pernah digunakan |
| 40–59 | Cukup | Detik hingga jam | Akun sekali pakai |
| 60–79 | Kuat | Hari hingga abad | Akun reguler |
| 80–99 | Sangat kuat | Ribuan tahun+ | Email, perbankan |
| 100+ | Ekstrem | Melampaui kematian panas alam semesta | Kunci enkripsi, master password |
Password 16 karakter menggunakan set ASCII cetak penuh memberikan sekitar 105 bit entropi — jauh masuk ke zona “ekstrem”. Anda bisa membuatnya secara instan dengan Random Password Generator kami, yang menampilkan analisis entropi real-time untuk setiap password.
Apa Kata NIST (Pembaruan 2024)
NIST SP 800-63B, diperbarui pada 2024, membuat perubahan signifikan pada pedoman password:
- Menghapus aturan kompleksitas wajib (tidak ada lagi paksaan karakter khusus)
- Menghapus perubahan password berkala wajib
- Menaikkan minimum menjadi 15 karakter (naik dari 8 di versi sebelumnya)
- Menekankan penyaringan terhadap password yang sudah bocor
- Mengutamakan panjang dan keacakan daripada kompleksitas
Perubahan ini mencerminkan apa yang selalu ditunjukkan oleh matematika entropi: panjang dan keacakan lebih penting daripada variasi karakter.
Mengapa Panjang Mengalahkan Kompleksitas
Mari kita lihat matematikanya. Pertimbangkan dua cara untuk meningkatkan entropi password 12 karakter:
Opsi A — Tetap 12 karakter, beralih dari alfanumerik (62) ke ASCII penuh (94):
- 12 × log₂(94) - 12 × log₂(62) = 78,66 - 71,45 = +7,21 bit
Opsi B — Tetap alfanumerik (62), tambah satu karakter lagi (12 → 13):
- 13 × log₂(62) - 12 × log₂(62) = 77,40 - 71,45 = +5,95 bit
Menambah satu karakter memberikan entropi hampir sama dengan beralih ke set karakter yang jauh lebih besar. Tambah dua karakter dan Anda sudah melampauinya.
Sekarang pertimbangkan P@$$w0rd! (9 karakter). Password ini menggunakan pool ASCII penuh tapi terlalu pendek. Lebih buruk lagi, ia mengikuti pola “leet speak” yang sudah dicakup oleh serangan kamus, sehingga entropi efektifnya jauh di bawah 59 bit teoretis.
Kesimpulannya: untuk password yang benar-benar acak, menambah panjang lebih efisien daripada menambah tipe karakter. Tapi musuh sebenarnya adalah prediktabilitas, bukan kependekan.
Passphrase vs Password Acak
| Dimensi | Password Acak | Passphrase (Diceware) |
|---|---|---|
| Contoh | kX#9mP$2vL!nQ7wR | correct horse battery staple |
| Bit per unit | 6,55 per karakter | 12,92 per kata |
| Panjang untuk ~78 bit | 12 karakter | 6 kata |
| Kemudahan diingat | Buruk | Baik |
| Pengetikan di mobile | Menyulitkan | Mudah |
| Terbaik untuk | Entri password manager | Master password, login yang dihafalkan |
Cara Kerja Diceware
Diceware menggunakan daftar kata berisi 7.776 entri (6⁵ = 7.776). Anda melempar lima dadu untuk memilih setiap kata, memberikan tepat 12,92 bit entropi per kata.
Empat kata memberikan ~51 bit; enam kata memberikan ~77 bit.
Mana yang Harus Anda Gunakan?
- Untuk password yang disimpan di manager: gunakan password acak 16+ karakter dengan set karakter penuh. Anda tidak pernah mengetiknya secara manual, jadi kemudahan diingat tidak penting. Random Password Generator kami bisa menghasilkan batch hingga 50 sekaligus.
- Untuk master password Anda: gunakan passphrase Diceware 5-6 kata. Cukup mudah diingat untuk diketik sehari-hari sambil memberikan 64-77 bit entropi.
- Untuk API key dan token: gunakan
openssl randataucrypto.randomBytes()untuk entropi maksimum tanpa persyaratan memori manusia.
Entropi dalam Praktik: Tool dan Kode Developer
Berikut cara paling umum developer menghasilkan secret berentropi tinggi:
Browser (Web Crypto API)
// Pembuatan password yang aman secara kriptografis
function generatePassword(length, charset) {
const array = new Uint32Array(length);
crypto.getRandomValues(array);
return Array.from(array, v => charset[v % charset.length]).join('');
}
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
generatePassword(16, chars);
// → 'kX#9mP$2vL!nQ7wR' (acak setiap kali)
Node.js
const crypto = require('crypto');
const token = crypto.randomBytes(32).toString('base64url');
// → 'Ql2Hj8xK9mNp3rVw5tYz7uBa0cEf4gIk' (43 karakter, 256 bit)
Python
import secrets
token = secrets.token_urlsafe(32) # 256 bit entropi
password = secrets.token_hex(16) # 128 bit, format hex
Command Line
# 192 bit entropi, encoding base64
openssl rand -base64 24
# 256 bit, encoding hex
openssl rand -hex 32
Perbandingan Entropi per Metode
| Metode | Panjang Output | Entropi (bit) |
|---|---|---|
| UUID v4 | 36 karakter | 122 |
openssl rand -base64 24 | 32 karakter | 192 |
| 16 karakter ASCII penuh | 16 karakter | 105 |
| 6 kata Diceware | ~30 karakter | 78 |
| 4 kata Diceware | ~20 karakter | 52 |
Jangan pernah gunakan
Math.random()untuk apa pun yang berkaitan dengan keamanan. Fungsi ini menggunakan PRNG non-kriptografis — outputnya bisa diprediksi jika penyerang mengetahui seed-nya. Selalu gunakancrypto.getRandomValues()di browser ataucrypto.randomBytes()di Node.js.
Penyimpanan Password: Mengapa Entropi Saja Tidak Cukup
Bahkan password 128-bit pun tidak berguna jika server menyimpannya sebagai hash MD5 polos. Ketika database bocor, penyerang bisa menguji triliunan hash MD5 per detik pada satu GPU.
Di sinilah algoritma hashing lambat berperan. Algoritma ini sengaja membuat setiap tebakan menjadi mahal:
| Algoritma | Kecepatan di GPU | Perlambatan Efektif |
|---|---|---|
| MD5 | ~10 miliar/detik | Baseline (jangan digunakan) |
| SHA-256 | ~5 miliar/detik | ~2× lebih lambat |
| bcrypt (cost=12) | ~5/detik | ~2 miliar× lebih lambat |
| argon2id | ~2/detik | ~5 miliar× lebih lambat |
Parameter cost bcrypt sangat elegan: setiap peningkatan menggandakan kerja yang diperlukan. Cost factor 12 berarti 2¹² = 4.096 putaran hashing. Ini secara efektif menambahkan 12 bit “entropi penyimpanan” di atas entropi password itu sendiri.
Model perlindungan ganda: password berentropi tinggi melindungi terhadap brute force offline, sementara hashing lambat melindungi terhadap kebocoran database. Anda memerlukan keduanya.
Untuk lebih lanjut tentang algoritma hash, baca perbandingan MD5 vs SHA-256 kami dan coba MD5 Hash Generator untuk mengeksplorasi bagaimana algoritma yang berbeda menghasilkan output yang berbeda.
Mitos Password Umum yang Dibantah
”Ganti password Anda setiap 90 hari”
Pedoman NIST 2024 secara eksplisit merekomendasikan untuk tidak melakukan perubahan berkala wajib. Rotasi yang sering menyebabkan pengguna memilih password yang lebih lemah dan lebih mudah ditebak — menambahkan angka di akhir, berputar melalui set kecil. Ganti password hanya ketika Anda punya alasan untuk percaya bahwa password telah dikompromikan.
”a→@, e→3 membuatnya lebih kuat”
Substitusi leet speak adalah salah satu pola pertama yang diperiksa oleh serangan kamus. Mengganti a dengan @ di password menambahkan hampir nol entropi karena penyerang sudah mengharapkannya.
Keacakan sejati — bukan substitusi pintar — adalah yang meningkatkan entropi.
”8 karakter dengan simbol sudah cukup”
Bahkan dengan set ASCII 94 karakter penuh, 8 karakter hanya memberikan 52 bit entropi. Pada 10¹² tebakan per detik, itu bisa dicrack dalam sekitar 75 menit.
Gunakan minimal 12 karakter, 16+ untuk akun penting.
”Semakin kompleks terlihat, semakin aman”
Kompleksitas visual dan entropi adalah dua hal berbeda. Tr0ub4dor&3 terlihat kompleks tapi mengikuti pola kata-dasar-plus-substitusi yang dapat diprediksi. mfYq8kL2nR terlihat lebih sederhana tapi memiliki entropi lebih tinggi karena benar-benar acak.
Untuk lebih lanjut tentang membangun strategi keamanan yang komprehensif, baca Dasar-Dasar Keamanan Web.
FAQ
Berapa bit entropi yang dianggap aman?
Untuk sebagian besar akun online, 60-80 bit memberikan perlindungan kuat. Untuk target bernilai tinggi seperti master password atau kunci enkripsi, targetkan 100+ bit. Setiap bit tambahan menggandakan usaha yang diperlukan penyerang.
Apakah menambahkan karakter khusus selalu meningkatkan entropi?
Hanya jika karakter dipilih secara acak dari seluruh pool. Substitusi yang dapat diprediksi seperti @ untuk a atau ! di akhir menambahkan hampir nol entropi karena penyerang sudah memperhitungkan pola ini dalam kamus mereka.
Berapa entropi passphrase Diceware 4 kata?
Menggunakan daftar kata Diceware standar 7.776 kata, setiap kata menyumbang 12,92 bit. Empat kata memberikan kira-kira 51,7 bit — cukup untuk penggunaan keamanan rendah. Untuk akun penting, gunakan 5-6 kata (64-78 bit).
Apakah Math.random() aman untuk membuat password?
Tidak. Math.random() adalah generator angka pseudorandom yang tidak aman secara kriptografis. Gunakan crypto.getRandomValues() di browser atau crypto.randomBytes() di Node.js untuk pembuatan acak yang sensitif terhadap keamanan.
Bagaimana cost factor bcrypt memengaruhi keamanan?
Setiap peningkatan cost factor bcrypt menggandakan komputasi yang diperlukan untuk hashing (dan karenanya untuk brute-force) sebuah password. Cost 12 berarti 2¹² = 4.096 iterasi, secara efektif menambahkan 12 bit kesulitan di atas entropi intrinsik password.
Apa yang berubah di pedoman password NIST 2024?
NIST SP 800-63B menghapus persyaratan kompleksitas wajib (paksaan karakter khusus, huruf campuran) dan rotasi password berkala. Panduan baru mengutamakan password yang lebih panjang (15+ karakter direkomendasikan), penyaringan terhadap database password yang bocor, dan mengizinkan semua karakter cetak termasuk spasi.
Poin-Poin Utama
- Entropi = L × log₂(R) — setiap bit ekstra menggandakan jumlah tebakan yang diperlukan
- Panjang > kompleksitas — menambah satu karakter lebih efektif daripada memperluas set karakter
- Gunakan crypto API —
crypto.getRandomValues()ataucrypto.randomBytes(), jangan pernahMath.random() - Password manager + pembuatan acak adalah praktik terbaik untuk kebanyakan orang
- Sisi server juga penting — gunakan bcrypt atau argon2, jangan pernah simpan password dengan MD5
Siap membuat password berentropi tinggi? Coba Random Password Generator kami — menampilkan analisis entropi real-time untuk setiap password yang Anda buat.