Ентропія: скільки спроб, а не як воно виглядає
Реальна міцність пароля полягає не в тому, наскільки складним він здається людині, а в тому, який розмір простору пошуку має до себе зломщик, щоб спробувати. Якщо пароль випадковим чином витягується з алфавіту з N можливих символів і складається з L символів, його Шеннонівська ентропія в бітах становить:
H = L * log2(N) лише малі літери (N=26), L=8 -> H ≈ 37.6 біт + цифри + символи (N≈94) -> H ≈ 52.4 біти (однакова довжина!) 4 випадкових слова з словника -> H ≈ log2(7776^4) ≈ 51.7 біт (diceware) Жива демонстрація · ентропія та оцінений час зламу під час введення● LIVE Ентропія вимірює лише розмір простору, в якому має шукати зломщик, який знає ваш метод — вона нічого не говорить про те, чи знаходиться ваш конкретний пароль у очевидному кутку цього простору, що саме експлуатують реальні атаки.
H = L * log2(N) lowercase only (N=26), L=8 -> H ≈ 37.6 bits + digits + symbols (N≈94) -> H ≈ 52.4 bits (same length!) 4 random dictionary words -> H ≈ log2(7776^4) ≈ 51.7 bits (diceware)
Два дуже різних нападники
Брут-форс нападник не робить жодних припущень і спробує кожну можливу послідовність символів, збільшуючи довжину або перебираючи всі символи з повної абетки — це єдиний напад, який безпосередньо обмежує ентропію Шеннона, і проти нього ентропія та час розкриття безпосередньо пов'язані: подвоєння кількості символів або додавання символів геометрично множить простір пошуку. Атакуючий на основі словника/шаблонів замість цього спочатку перевіряє реальні паролі: витік списків паролів, загальні слова, імена, дати та всі популярні заміни символів (наприклад, a to @, o to 0, s to $), застосовуючи їх до них. Цей нападник не шукає у всьому просторі — він шукає дуже малу, щільно населену область, яку насправді використовують люди, і зазвичай виграє першим.
Оцінки ймовірності: що таке "швидко" насправді
Час розкриття визначається як ентропія поділена на лог2(ймовірність вгадування), а ймовірність вгадування повністю залежить від того, що атакує зловмисник. Онлайн форми входу з блокуванням можуть дозволити невелику кількість спроб на секунду. Офлайн атаки проти викраденої бази даних швидких хешів (незакодовані MD5 або SHA1) можуть перевищувати десятки мільярдів спроб на секунду на споживчих GPU. Бази даних, захищені навмисно повільним хешем, що вимагає багато пам'яті — bcrypt або Argon2 — знижують це до сотень або тисяч спроб на секунду на GPU, оскільки сам хеш розрахований на реальний час і використання пам’яті, що не може бути компенсовано довжиною пароля.
crack_time ≈ (2^H / 2) / guesses_per_second online, rate-limited login ~10 guesses/sec offline, fast unsalted hash ~10^10 guesses/sec (GPU cluster) offline, bcrypt/Argon2 ~10^2-10^3 guesses/sec
Чому 'P@ssw0rd!' слабший, ніж здається
Зміщення символів створює відчуття множення простору пошуку, але нападник-словник не здійснює безпосередній перебір всіх літер алфавіту — він бере слово 'password', застосовує десяток або кілька використаних підстановок і перевіряє ці варіанти біля верху списку здогадок. Візуальна складність реальна проти наївного атакувальника та майже безцінна проти нападника, який виграє в практиці. Довге слово-пароль, побудоване з кількох незалежних випадкових слів, перемагає коротке, замінене слово не тому, що воно виглядає складнішим, а тому, що воно взагалі не живе всередині словника будь-якого нападника.
Часті запитання
Що таке Шеннонівське ентропія в контексті паролів?
Це кількість біт, необхідних для визначення пароля, вибраного випадковим чином із заданого методу генерації: H = L * log2(N) для випадкового рядка довжиною L з алфавіту розміром N. Це вимірює розмір простору пошуку, який повинен вичерпати нападник-грубер, що знає ваш метод – не те, наскільки пароль здається сильним.
Чому довгий фразовий пароль перемагає короткий складний пароль?
Тому що атакуючі за словником і за шаблонами не шукають у повному алфавітному просторі, вони шукають невеликий набір реальних слів, імен та загальних підстановок, які люди насправді використовують – а короткий підставлене слово, таке як P@ssw0rd, знаходиться біля вершини цього списку. Кілька незалежних випадкових слів мають порівнянний або вищий ентропію і взагалі не зустрічаються в жодному словнику.
Чому повільні хеш-функції, такі як bcrypt, важливі?
Тому що якщо нападник викраде базу даних паролів, час розкриття залежить від ентропії, поділеної на досяжну кількість здогадок за секунду, і ця швидкість зовсім інша для швидких хешів (мільярди/сек на GPU) порівняно з навмисно повільними, пам'яттю-жорсткими хешами, такими як bcrypt або Argon2 (сотні до тисяч/сек) – алгоритм хешування може бути важливішим за сам пароль.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Password Strength Analyzer і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Password Strength Analyzer