Калькулятор стойкости пароля
Результат
Энтропия
- Набор символов
- 62
- Энтропия на символ
- 5,95 bit
- Комбинаций (степень 10)
- 28
Стойкость пароля — это арифметика, и страница занимается арифметикой, а не догадками. Выберите длину пароля и набор символов — и получите размер пула, который описывают эти решения, энтропию в битах и то, сколько времени понадобится современной видеокарте, чтобы перебрать все комбинации: с быстрым хешем и с правильно настроенным медленным. Разрыв между двумя последними числами — самое полезное на этой странице: один и тот же пароль, который падает за три года против утёкшей базы MD5, выдерживает миллионы лет против bcrypt. Длина — вторая половина дела. Каждый лишний символ умножает работу на размер пула, тогда как добавление целого набора символов при фиксированной длине умножает её один раз.
Время взлома по полосам энтропии
| Полоса | Энтропия | Комбинаций | Секунд при 10^10/с | Секунд при 10^4/с |
|---|---|---|---|---|
| Слабый | 28–35 бит | 8 | -2 | 4 |
| Средний | 36–59 бит | 10 | 0 | 6 |
| Сильный | 60–127 бит | 18 | 8 | 14 |
| Очень сильный | 128 бит и выше | 38 | 28 | 34 |
Две последние колонки читайте как степени десятки: −2 означает 10^-2 секунды, а 3 — тысячу секунд. Правая колонка — тот же противник против правильно настроенного медленного хеша, поэтому две колонки различаются в миллион раз. Энтропия — нижняя граница полосы, и поэтому эта таблица и значок стойкости всегда совпадают. Комбинации округлены вниз до степени десятки, чтобы их никогда не завысить.
Формула
энтропия (бит) = длина пароля × log₂(размер пула), а число комбинаций равно 2^энтропия
- password length
- Сколько символов в пароле
- pool size
- Сколько различных символов доступно: 26 строчных, 26 прописных, 10 цифр, 32 символа
- log₂
- Логарифм по основанию 2, поэтому результат и считается в битах
Берите её, чтобы сравнить две политики паролей до того, как вы её напишете, или чтобы проверить, стоит ли сохранять пароль, который у вас уже есть. Она точна для пароля, сгенерированного случайно из известного набора символов, и даёт лишь верхнюю границу для придуманного человеком: люди выбирают шаблоны, поэтому 12-символьный пароль, который кто-то сочинил, несёт куда меньше энтропии, чем 12 случайных символов. Полный перебор к тому же не единственная атака: пароль, повторно использованный на разных сайтах, компрометируется утечкой на другом сайте, и никакая длина тут не поможет.
Разобранные примеры
16 символов, буквы и цифры
- Пул: 26 + 26 + 10 = 62 символа
- Энтропия на символ: log₂(62) = 5,95 бита
- Общая энтропия: 16 × 5,95 = 95,3 бита
- Комбинаций: 10^28 — инструмент показывает степень десятки, а не все 29 цифр
95,3 бита с большим запасом проходят полосу 60 бит и попадают в верхнюю, обычно зарезервированную за 128. Если включить ещё и символы, пул вырастет до 94, а энтропия до 104,6 бита — это 9,3 бита, то есть примерно как добавить 1,6 символа.
8 символов, только строчные
- Пул: 26 символов
- Энтропия на символ: log₂(26) = 4,70 бита
- Общая энтропия: 8 × 4,70 = 37,6 бита
- Комбинаций: 2^37,6 ≈ 2,1 × 10^11, то есть 10^11
37,6 бита попадают в среднюю полосу — это примерно семь секунд работы для быстрого хеша на одной карте. Удвоение длины до 16 символов доводит её до 75,2 бита, тогда как длина 8 со всеми включёнными наборами символов даёт лишь 52,5 бита. Длина на каждое нажатие клавиши делает больше, чем разнообразие.
Ограничения
Значение энтропии предполагает, что пароль был сгенерирован равномерно случайно из выбранного вами набора символов. У любого пароля, придуманного человеком, её меньше, часто намного меньше, потому что люди тянутся к словам, датам и клавиатурным узорам, которые взломщик пробует первыми. Поэтому страница измеряет политику, а не пароль. Времена взлома — оценки порядка величины для одной современной видеокарты, а не замер какой-то конкретной машины: целеустремлённый противник с кластером или просто с более новой картой обходит их с большим отрывом, а украденную базу хешей можно атаковать офлайн сколько угодно долго. Ничто здесь не учитывает, повторно ли используется пароль, не получен ли он фишингом, не перехвачен ли клавиатурным шпионом и не сброшен ли через службу поддержки — а падают пароли в жизни именно так, и энтропия на всё это не влияет. И наконец, страница не сгенерирует вам пароль: безопасному генератору нужен криптографический источник случайности, а чистое вычисление дать его не может.
Частые вопросы
- Как считается энтропия пароля?
- Энтропия — это длина пароля, умноженная на логарифм размера пула по основанию 2. Выбор строчных букв, прописных букв и цифр даёт пул из 62 символов, log₂(62) равен 5,95 бита на символ, и 16-символьный пароль из такого пула несёт поэтому 95,3 бита. Число возможных комбинаций — это 2 в степени энтропии, и потому энтропия удобна как единица: она складывается, когда пароль становится длиннее.
- Достаточно ли 60 бит энтропии и как читать время взлома?
- Целиком зависит от того, как сайт хранит ваш пароль. При 10^10 попыток в секунду — одна современная карта против быстрого хеша без соли — 60 бит это примерно три года непрерывной работы. Против bcrypt с параметром cost 12 та же карта выдаёт около 10^4 попыток в секунду, и тот же пароль занимает миллионы лет. Так что 60 бит достаточно против добросовестного сайта и на грани против небрежного; 80 бит достаточно против обоих.
- Что лучше — символы и разный регистр или просто длина?
- Длина обычно выгоднее, и всегда проще для запоминания. Переход с 8-символьного пароля из строчных на 16 символов стоит 37,6 бита; если оставить 8 символов, но включить все наборы, это даст 15 бит. Пул умножается только один раз, когда вы его расширяете, а каждый добавленный символ умножает снова. Берите символы тогда, когда сайт их требует, а не потому, что это эффективный способ добавить стойкости.
- Почему страница не сгенерирует мне пароль?
- Пароль настолько непредсказуем, насколько непредсказуем источник случайности за ним, а страница, которая вычисляет показываемое число, не может заодно черпать из криптографически стойкого источника: именно этот источник и отличает генератор от калькулятора. Воспользуйтесь генератором в вашем менеджере паролей или в операционной системе — там он есть, — а эту страницу используйте, чтобы проверить, стоят ли выбранные там длина и наборы символов того.
- Всегда ли длинный пароль значит более стойкий?
- Только если он был сгенерирован случайно. Длина — это то, что поощряет арифметика, и именно из-за неё парольная фраза из четырёх слов может обыграть короткую мешанину из символов. Но 20-символьный пароль, собранный из строки песни, дня рождения и имени, вскрывается словарём, и его настоящая стойкость совсем не та, что у 20 случайных символов, которые измеряет эта страница. Страница даёт потолок для политики паролей; пароль, придуманный человеком, лежит заметно ниже него.
Источники
- NIST Special Publication 800-63B: Digital Identity Guidelines — Authentication and Lifecycle Management — National Institute of Standards and Technology
- NIST Special Publication 800-57 Part 1 Revision 5: Recommendation for Key Management — National Institute of Standards and Technology
- Password Storage Cheat Sheet — OWASP Foundation