SecuredKit

Опубліковано: · Оновлено: · автор:

Ентропія пароля: чому 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Біт на символ
Цифри103,32
Малі літери264,70
Малі літери + цифри365,17
Великі + малі літери525,70
Літери + цифри625,95
Усі друковані ASCII956,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 4090bcrypt cost 101,8 × 10¹¹37,4
1 000 RTX 4090bcrypt cost 101,8 × 10¹⁴47,4
1 RTX 4090MD55,2 × 10¹⁸62,2
1 000 RTX 4090MD55,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 слів зі словника EFF77,5–90,5 біта
Сайт обмежує довжину 12–16 символамиМаксимум, повний набір, плюс 2FA78,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 біт у лічильнику на основі набору символів і майже миттєво падає під атакою за словником. Надійність придуманого пароля залежить від того, наскільки далеко він стоїть у списку спроб зловмисника, а не від класів символів.

Спробуйте безкоштовний генератор паролів

Генеруйте надійні, безпечні паролі миттєво. 100% приватно, на стороні клієнта.

Відкрити генератор паролів