Опубліковано: · Оновлено: · автор: kodewright
Ентропія пароля: чому 12 символів — це мінімум
Ентропія пароля в бітах, скільки біт зловмисник реально перебирає за рік і чому 12 випадкових символів — нижня межа, а NIST вимагає 15.

Ентропія пароля — це кількість біт, які зловмиснику доведеться перебрати. Для випадкового пароля вона дорівнює довжина × log₂(розмір набору символів). Дванадцять символів, вибраних випадково з усіх 95 друкованих символів ASCII, дають 78,8 біта. Це найкоротша довжина, яку навіть ферма з 1 000 GPU не перебере за десятиліття, хай навіть сайт зберігав пароль як несолений MD5. Тому для згенерованих паролів я вважаю 12 символів нижньою межею. Для паролів, які люди вигадують самі, межа вища: NIST тепер називає 15.
Далі пояснюю, звідки обидва числа, і один випадок, коли формула вас обманює.
Формула ентропії пароля
H = L × log₂(R)
H — ентропія в бітах, L — кількість символів, R — розмір набору, з якого вибирають кожен символ. Пароль з ентропією H біт має 2^H можливих значень. Зловмисник, який перебирає їх усі, в середньому знаходить пароль на півдорозі.
Значення на один символ для поширених наборів:
| Набір | R | Біт на символ |
|---|---|---|
| Цифри | 10 | 3,32 |
| Малі літери | 26 | 4,70 |
| Малі літери + цифри | 36 | 5,17 |
| Великі + малі літери | 52 | 5,70 |
| Літери + цифри | 62 | 5,95 |
| Усі друковані ASCII | 95 | 6,57 |
Таблиця показує, чому виграє довжина. Перехід від літер і цифр до всіх 95 символів додає log₂(95/62), тобто приблизно 0,62 біта на символ: 6,2 біта на весь 10-символьний пароль. Один додатковий символ при R = 95 додає 6,57 біта. Тож у типовому паролі вимога «хоча б один спецсимвол» дає менше, ніж одне натискання клавіші.
Парольні фрази рахуються за тією ж формулою, тільки зі словами замість символів. Великий словник EFF містить 7 776 слів, тож кожне випадкове слово додає log₂(7776) ≈ 12,92 біта, а шість слів дають 77,5 біта.
Скільки біт зловмисник реально може перебрати
Сама по собі ентропія — просто число. Рекомендацією щодо довжини вона стає, коли порівняти її з тим, скільки зловмисник встигає перебрати за певний час. За бенчмарком hashcat 6.2.6 для однієї RTX 4090 (164,1 млрд спроб MD5 за секунду, близько 5 750 за секунду для bcrypt з cost 10) ось скільки біт кожна конфігурація вичерпує за рік:
| Зловмисник | Хеш | Спроб за рік | Біт перебрано |
|---|---|---|---|
| Онлайн, вхід за правилами NIST | будь-який | 100 невдалих спроб, далі блокування | менше 7 |
| 1 RTX 4090 | bcrypt cost 10 | 1,8 × 10¹¹ | 37,4 |
| 1 000 RTX 4090 | bcrypt cost 10 | 1,8 × 10¹⁴ | 47,4 |
| 1 RTX 4090 | MD5 | 5,2 × 10¹⁸ | 62,2 |
| 1 000 RTX 4090 | MD5 | 5,2 × 10²¹ | 72,1 |
Перший рядок пояснює, чому онлайн-атакам ентропія взагалі байдужа. NIST SP 800-63B Rev. 4 обмежує сервіс 100 невдалими спробами поспіль на обліковий запис, тож онлайн-зловмисник пробує лише найпоширеніші паролі. Ентропія важить після витоку, коли база хешів уже на обладнанні зловмисника і жодного блокування немає.
Під останній рядок я і розраховую. Ви не знаєте, чи сайт використовує bcrypt, чи голий MD5 з 2012 року, а злита база може роками лежати в чиємусь архіві, перш ніж її візьмуться ламати. Якщо велика ферма перебирає 72 біти за рік, то все, що близько до цієї межі, — питання бюджету, а не можливості.
Чому 12 випадкових символів — нижня межа
Випадковий 12-символьний пароль з ASCII має 78,8 біта, тобто приблизно 5,4 × 10²³ комбінацій. Проти MD5 це близько 104 000 років у найгіршому випадку на одній RTX 4090. Орендуйте 1 000 таких карт, і в середньому злам усе одно триватиме близько 52 років. Саме такий запас я хочу мати проти найгіршого зберігання, якому, можливо, довіряю.
Десять символів з того ж набору дають 65,7 біта. Одній GPU все ще потрібно 11,6 року, щоб перебрати все, і це звучить нормально, поки не масштабувати: та сама ферма з 1 000 GPU проходить увесь простір ключів приблизно за чотири дні. Вісім символів (52,6 біта) не витримують і доби на одній карті.
Дванадцять малих літер, тобто довжина, яка часто проходить політику «мінімум 12», — це лише 56,4 біта: приблизно тиждень для однієї GPU проти MD5. Межа — це 12 символів з повного набору, а не 12 будь-яких символів.
Повна таблиця за довжиною, набором символів і хешем є в статті за скільки зламають пароль. Тут я її не повторюю.
Чому NIST каже 15
NIST SP 800-63B Rev. 4 (2025) встановлює мінімум 15 символів, коли пароль — єдиний автентифікатор, і 8, коли він працює разом із MFA. Також документ вимагає від сервісів приймати щонайменше 64 символи, відмовитися від правил складу і примусової зміни пароля та перевіряти нові паролі за списками витоків і поширених паролів.
Це не суперечить межі у 12 символів. NIST пише правила для паролів, які люди обирають самі, і реальна ентропія таких паролів значно нижча, ніж показує формула. П'ятнадцять символів дають придуманому паролю більше шансів пережити атаки за словником і правилами, а блокліст відсікає найгірші варіанти. Для згенерованого пароля 15 символів з повного набору — це 98,5 біта, далеко за межами всього, що є в таблиці вище. Якщо пароль підставляє менеджер паролів, зупинятися на 12 немає сенсу; я використовую 16–20.
Ентропія описує процес, а не рядок
Формула припускає, що кожен символ вибрано рівномірно випадково з набору. Для генератора це так, для людини — ні. Ентропія пароля — властивість того, як його створили, тому виміряти її, дивлячись на результат, неможливо.
Моя власна Перевірка стійкості пароля добре показує цю межу. Вона працює повністю у вашому браузері й нікуди нічого не надсилає, а L × log₂(R) застосовує до тих класів символів, які бачить. Введіть Password1!, і вона покаже близько 65 біт, бо бачить великі й малі літери, цифри та спецсимвол у 10 символах. Насправді цей рядок є в кожному словнику, і атака з правилами знаходить його серед перших кількох тисяч спроб. Сприймайте будь-яку оцінку за формулою, зокрема й мою, як верхню межу, яка справджується лише для згенерованих паролів.
Оцінювачі, які моделюють людські звички, як-от zxcvbn від Dropbox, точніші для придуманих паролів: вони рахують спроби через словники, клавіатурні послідовності й дати, а не через символи. Але це теж лише оцінки.
Практична відповідь — перестати вигадувати. Генератор дає повну ентропію лише тоді, коли його випадковість криптографічна: Генератор паролів бере кожен символ із crypto.getRandomValues(), тобто з CSPRNG (криптографічно стійкого генератора псевдовипадкових чисел) операційної системи. Math.random() у V8 — це xorshift128+, і його внутрішній стан можна відновити з кількох виходів, після чого кожен наступний «випадковий» пароль стає передбачуваним.
Що використовувати
| Ситуація | Довжина | Ентропія |
|---|---|---|
| Зберігається в менеджері паролів | 16–20 випадкових символів, повний набір | 105–131 біт |
| Треба вводити або пам'ятати (майстер-пароль менеджера, шифрування диска) | 6–7 слів зі словника EFF | 77,5–90,5 біта |
| Сайт обмежує довжину 12–16 символами | Максимум, повний набір, плюс 2FA | 78,8–105 біт |
| Ваша власна форма входу | Вимагайте 15 (8 з MFA), дозволяйте 64+, перевіряйте за блоклістом | — |
Якщо ви замінюєте старий пароль після витоку, порядок дій важить більше за довжину. Про це я писав у статті що робити після витоку даних.
FAQ
Скільки біт ентропії потрібно надійному паролю?
Для всього, що може опинитися в украденій базі хешів, орієнтуйтеся на 75–80 біт і більше. Одна RTX 4090 за рік перебирає близько 62 біт проти MD5, ферма з 1 000 GPU — близько 72, тож 78,8 біта (12 випадкових друкованих символів) залишають реальний запас. Для захисту лише від онлайн-атак потрібно значно менше, бо блокування обмежує зловмисника приблизно сотнею спроб.
Чому 12 символів — мінімальна довжина пароля?
Дванадцять випадкових символів з усіх 95 друкованих — найкоротший пароль, який велика GPU-ферма не перебере за розумний час навіть проти несоленого MD5. Це стосується лише згенерованих паролів. Придуманий вами 12-символьний пароль може відповідати шаблону, який правила злому перевіряють одним із перших.
Що дає більше: спецсимволи чи довжина?
Довжина. Спецсимволи розширюють набір із 62 до 95 символів, а це приблизно 0,62 біта на символ. Один додатковий символ дає 6,57 біта. Якщо сайт вимагає спецсимвол, додайте його, але стійкість беріть із довжини.
Ентропія пароля і його надійність — це одне й те саме?
Лише коли пароль згенеровано випадково. Для придуманих паролів формула сильно завищує результат: Password1! отримує близько 65 біт у лічильнику на основі набору символів і майже миттєво падає під атакою за словником. Надійність придуманого пароля залежить від того, наскільки далеко він стоїть у списку спроб зловмисника, а не від класів символів.