# Bit entropy là gì, và tại sao chúng tôi không đưa cho bạn một con số phần trăm

> Phần trăm độ mạnh chẳng nói lên điều gì. Một bit thì có: mỗi bit nhân đôi số lần thử của kẻ muốn đoán mật khẩu của bạn. Cách đọc con số mà trình tạo mật khẩu hiển thị, không cần một phương trình nào dọa bạn.

2026-01-22 · David Carrero · password.es
Original: https://password.es/vi/blog/bit-entropy-la-gi/

---

Phần trăm độ mạnh là một ý kiến cá nhân được làm tròn tới hai chữ số thập phân.

Khi một trang web bảo rằng mật khẩu của bạn “an toàn 92 %”, câu hỏi hiển nhiên
là: 92 % của cái gì? Đâu là mốc 100 %? Không hề có. Chưa ai công bố cái mật khẩu
hoàn hảo để lấy đó làm thước đo cho phần còn lại. Con số kia bước ra từ một phép
quy tắc tam suất mà ai đó ứng biến vào một buổi chiều thứ Ba — chữ hoa được ngần
này điểm, ký hiệu được ngần kia — và công việc thật sự duy nhất của nó là bật cho
bạn cái vạch màu xanh để bạn bấm tiếp.

**Bit thì ngược lại, luôn có đúng một ý nghĩa.** Và cái ý nghĩa đó là thứ bạn
dùng được.

## Một bit là một câu hỏi có hoặc không

Toàn bộ ý tưởng gói gọn trong một câu: **mỗi bit nhân đôi số lần thử mà một kẻ
không biết gì về bạn phải bỏ ra**.

Một bit là hai khả năng. Hai bit là bốn. Ba bit, tám. Mười bit là 1.024 và hai
mươi bit là hơn một triệu một chút. Con số không tăng dần, nó tự nhân đôi, và
chính chuyện nhân đôi là thứ khiến trực giác của chúng ta rơi tự do xuống vực.

Thế nên câu “40 bit tốt gấp đôi 20 bit” sai đến mức gần như buồn cười. Giữa 20 và
40 bit có hai mươi lần nhân đôi, tức là hệ số 2²⁰: **40 bit không gấp đôi 20, mà
gấp một triệu lần**. Và 60 bit cũng chẳng gấp ba 20: nó gấp một triệu lần 40. Đầu
óc chúng ta đọc thang đo này như đọc một cái thước kẻ, mà nó đâu phải thước. Nó
là thang kiểu độ Richter của động đất hay decibel của âm thanh, nơi một bước nhỏ
xíu trên con số là một cú nhảy khủng khiếp ngoài đời thật.

Đó là toàn bộ lợi thế của bit so với phần trăm. Phần trăm cho bạn một cảm giác.
Bit cho bạn một khối lượng công việc.

## Chữ ấy từ đâu ra

Chữ *entropy* áp dụng cho thông tin đến từ một bài báo năm 1948: *A Mathematical
Theory of Communication*, của **Claude Shannon**.

Cần nói cho chính xác, vì chỗ này hay bị trích dẫn sai: Shannon không hề nghĩ tới
mật khẩu. Thời đó chẳng có mật khẩu máy tính nào đáng để nhắc tên. Ông đang làm
việc ở Bell Labs với một bài toán rất khác — một thông điệp thật sự chở được bao
nhiêu thông tin, và nén được tới đâu trước khi nó vỡ — và ông cần đo một thứ trơn
tuột: **sự bất định của người ở đầu bên kia**.

Phát hiện của ông, nói nôm na, là thông tin và sự bất ngờ chỉ là một. Một thông
điệp mà bạn đã biết rồi thì chẳng cho bạn thêm gì. Một thông điệp không tài nào
đoán trước được thì cho bạn cực nhiều. Entropy đo lượng bất ngờ có trong cái
nguồn sinh ra các thông điệp, và nó được đo bằng bit.

Chuyện thứ đó lại dùng được cho mật khẩu gần như là một tai nạn may mắn. Mật khẩu
chính xác là một thông điệp buộc phải không thể đoán trước.

## Cái khóa số có bánh xe

Đây là công thức duy nhất của bài, và tôi hứa là nó miễn phí:

> **H = L × log₂(N)**

Tạm quên logarit đi một lát và hãy nghĩ tới mấy cái khóa xe đạp có bánh xe số.
Bạn có hai cách làm khó kẻ muốn mở nó:

- **Lắp thêm bánh xe.** Đó là **độ dài** (`L`): mật khẩu của bạn có bao nhiêu ký tự.
- **Cho thêm ký hiệu lên mỗi bánh xe.** Đó là **bảng chữ** (`N`): mỗi bánh chỉ có
  mười chữ số, hay 26 chữ cái, hay cả chữ lẫn số lẫn ký hiệu.

Logarit chỉ làm đúng một việc: dịch “một bánh xe mang bao nhiêu ký hiệu” sang
“bánh xe đó đóng góp bao nhiêu bit”. Một bánh xe 26 chữ cái đóng góp khoảng 4,7
bit. Một bánh xe mang cả 95 ký tự in được trên bàn phím đóng góp khoảng 6,6.

Và cái tréo ngoe nằm ở đó. Hãy để ý vị trí của từng thứ trong công thức. **Bảng
chữ nằm bên trong logarit, bị nén bẹp; độ dài nằm bên ngoài, đứng nhân.**

Tăng số ký hiệu trên mỗi bánh lên gần gấp bốn — từ 26 chữ cái lên 95 ký tự — chỉ
mua cho bạn chưa tới hai bit mỗi bánh. Lắp thêm một bánh xe thì mua nguyên một
log₂(N), rồi lại một lần nữa, rồi lại nữa. Thế nên mười hai chữ cái thường và
không gì khác (khoảng 56 bit) thắng tám ký tự có chữ hoa, số và mấy cái ký hiệu
mà biểu mẫu nào cũng bắt phải điền (khoảng 53). `P@ssw0rd` thua
`nguadungpinbamghim`, mà còn thua chẳng sát nút gì cả.

**NIST**, trong **SP 800-63B**, đi đường khác nhưng tới đúng chỗ đó: họ ném qua
cửa sổ các quy tắc tổ hợp — một chữ hoa, một chữ số, một ký hiệu — và giữ lại độ
dài cùng việc đối chiếu mật khẩu với các danh sách bị lộ. Đừng gán vào miệng họ
cái họ không nói: lập luận của họ không phải là chuyện công thức này, mà là bắt
người ta nhét vào một ký hiệu thì chẳng làm họ khó đoán hơn, chỉ làm họ dễ đoán
theo một kiểu khác. Thực tế, chính tài liệu đó tỏ ra hoài nghi với việc ước lượng
entropy của một mật khẩu do con người chọn. Hai lối lập luận khác nhau, cùng một
kết luận. Độ phức tạp bắt buộc làm việc bên trong logarit. Độ dài làm việc bên
ngoài.

## Dòng chữ nhỏ mà gần như không ai đọc

Có một cái bẫy, và đây là phần thành thật nhất của tất cả chuyện này: **entropy
không đo mật khẩu của bạn, nó đo cái quy trình đã sinh ra mật khẩu đó.**

`4$Kp!9zQ` không có 53 bit kia vì trông nó khó nhằn. Nó có 53 bit nếu — và chỉ
nếu — nó bước ra từ một cuộc rút thăm thật sự ngẫu nhiên giữa 95 phím. Nếu chính
bạn gõ nó ra trong lúc cố tỏ ra ngẫu nhiên thì công thức không áp dụng được: bạn
đâu phải một cuộc rút thăm. Bạn đặt chữ hoa lên đầu, con số xuống cuối, và ký
hiệu thì là dấu `!`. Kẻ tấn công bạn không thử đủ 95 lựa chọn ở từng vị trí: nó
thử trước những lựa chọn mà con người hay dùng.

Từ đó sinh ra cái bất đối xứng khó chịu của an toàn mật khẩu. Entropy là một
**trần nhà**, không phải một cái sàn. Nếu máy sinh ra nó, cái trần đó là thật.
Nếu bạn tự chọn, thứ duy nhất bạn biết là mình đang ở dưới trần, còn dưới bao
nhiêu thì chịu.

Thế nên mới có hai công cụ chứ không phải một. [Trình tạo mật khẩu](/vi/) rút
thăm thật, nên nó mới dám mặt tỉnh bơ đưa bạn xem số bit: nó biết mình có bao
nhiêu bánh xe (`L`), biết mỗi bánh mang bao nhiêu ký hiệu (`N`) và làm phép nhân
ngay trước mặt bạn. Nếu bạn kéo thanh trượt và thấy con số leo lên, đó là bạn
đang thấy `L` đẩy. Còn [trình kiểm tra](/vi/kiem-tra/) thì không thể làm vậy với
một mật khẩu đã tồn tại: nó chẳng biết mật khẩu đó ra đời thế nào, nên nó làm
điều duy nhất hợp lý, là đi lục nó trong từ điển, danh sách tên riêng và các mẫu
gõ bàn phím, rồi giả định điều tệ nhất.

## Những thứ cần mang về

Ba câu:

- **Một bit là một lần nhân đôi.** Thêm mười bit là gấp nghìn lần công sức; thêm
  hai mươi bit, gấp một triệu.
- **Độ dài thì nhân, bảng chữ thì gần như chỉ cộng thêm chút đỉnh.** Thêm một từ
  đáng giá hơn thêm một dấu chấm than.
- **Bit chỉ có giá trị nếu sự ngẫu nhiên là thật.** Một cái máy có thể hứa được
  điều đó. Bạn, gõ tay, thì không.

Shannon đi tìm xem một thông điệp chứa được bao nhiêu bất ngờ. Bảy mươi mấy năm
sau, hóa ra đó lại đúng là câu hỏi cần hỏi về một mật khẩu: không phải nó trông
có rắc rối hay không, mà là nó mang bao nhiêu bất ngờ bên trong đối với kẻ chẳng
quen biết gì bạn.

---

*Nguồn: C. E. Shannon, “A Mathematical Theory of Communication”, Bell System
Technical Journal, 1948 · NIST SP 800-63B, Digital Identity Guidelines
(Authentication and Lifecycle Management) · trình tạo mật khẩu của password.es,
tính H = L × log₂(N) và hiển thị L, N cùng số bit thu được.*
