Skip to content
Kembali ke Blog
Keamanan

Entropi Password: Hitung & Perkuat Password Anda

Kuasai entropi password: rumus perhitungan, matematika brute-force, dan mengapa panjang mengalahkan kompleksitas. Termasuk kode JS/Python dan generator gratis.

10 menit baca

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 KarakterUkuran Pool (R)Bit per Karakter
Huruf kecil saja (a-z)264,70
Huruf kecil + angka365,17
Huruf besar + kecil + angka625,95
ASCII cetak penuh946,55
Daftar kata Diceware7.77612,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)KekuatanWaktu Crack pada 10¹² tebakan/detikDirekomendasikan Untuk
< 40LemahKurang dari 1 detikJangan pernah digunakan
40–59CukupDetik hingga jamAkun sekali pakai
60–79KuatHari hingga abadAkun reguler
80–99Sangat kuatRibuan tahun+Email, perbankan
100+EkstremMelampaui kematian panas alam semestaKunci 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

DimensiPassword AcakPassphrase (Diceware)
ContohkX#9mP$2vL!nQ7wRcorrect horse battery staple
Bit per unit6,55 per karakter12,92 per kata
Panjang untuk ~78 bit12 karakter6 kata
Kemudahan diingatBurukBaik
Pengetikan di mobileMenyulitkanMudah
Terbaik untukEntri password managerMaster 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 rand atau crypto.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

MetodePanjang OutputEntropi (bit)
UUID v436 karakter122
openssl rand -base64 2432 karakter192
16 karakter ASCII penuh16 karakter105
6 kata Diceware~30 karakter78
4 kata Diceware~20 karakter52

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 gunakan crypto.getRandomValues() di browser atau crypto.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:

AlgoritmaKecepatan di GPUPerlambatan Efektif
MD5~10 miliar/detikBaseline (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

  1. Entropi = L × log₂(R) — setiap bit ekstra menggandakan jumlah tebakan yang diperlukan
  2. Panjang > kompleksitas — menambah satu karakter lebih efektif daripada memperluas set karakter
  3. Gunakan crypto APIcrypto.getRandomValues() atau crypto.randomBytes(), jangan pernah Math.random()
  4. Password manager + pembuatan acak adalah praktik terbaik untuk kebanyakan orang
  5. 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.

Artikel Terkait

Lihat semua artikel