15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
14.10.2024

Як визначити надійність пароля: технічний посібник з ентропії, стійкості до злому та безпечного управління обліковими даними

Надійність пароля — це кількісна міра його стійкості до несанкціонованого виявлення через атаки методом перебору, словникові атаки, підстановку облікових даних та статистичне вгадування. Вона визначається трьома складовими змінними: довжина, різноманітність символьного простору та непередбачуваність (ентропія). Пароль, що набирає понад 60 біт ентропії Шеннона та містить щонайменше 16 символів із змішаного набору символів, вважається криптографічно стійким за поточними стандартами NIST SP 800-63B.

Розуміння надійності пароля — це не просто дотримання контрольного списку: воно вимагає осягнення математичного зв’язку між пулами символів, довжиною пароля та обчислювальними витратами, що покладаються на зловмисника. Цей посібник охоплює цей зв’язок у точних технічних термінах, пояснює, як фахові інженери з безпеки оцінюють облікові дані, та надає практичні рекомендації як для індивідуальних користувачів, так і для системних адміністраторів, які керують політиками автентифікації на серверах та хостинговій інфраструктурі.

Що насправді вимірює надійність пароля

Надійність пароля є показником вартості атаки — зокрема, кількості спроб, які зловмисник повинен зробити, перш ніж знайти правильні облікові дані. Ця вартість виражається в бітах ентропії за формулою:

H = L × log₂(N)

Де H — ентропія в бітах, L — довжина пароля в символах, а N — розмір пулу символів (кількість різних символів, які зловмисник повинен враховувати).

Вище значення ентропії означає експоненційно більший обсяг роботи з вгадування. Різниця між 40 та 80 бітами — це не вдвічі більша складність, а складність у 2^40 разів більша, що відповідає приблизно одному трильйону додаткових спроб.

Пул символів та його вплив на ентропію

Набір символівРозмір пулу (N)Ентропія на символ
Лише малі літери (a–z)264,70 біт
Малі + великі літери525,70 біт
Буквено-цифрові (a–z, A–Z, 0–9)625,95 біт
Повний друкований ASCII (з символами)956,57 біт
Парольна фраза Diceware (великий список EFF)7 776 слів12,92 біт на слово

Ця таблиця ілюструє, чому додавання навіть одного символу до суто алфавітного пароля дає вимірюване збільшення ентропії, і чому парольна фраза Diceware з чотирьох слів може перевершити складний, але короткий пароль.

Ключові фактори, що визначають надійність пароля

Довжина пароля

Довжина є найбільш впливовою змінною у формулі ентропії. Подвоєння довжини пароля зводить у квадрат простір пошуку для фіксованого пулу символів. Розгляньте контраст:

  • 8-символьний пароль із повним друкованим ASCII: H = 8 × 6.57 = ~52.6 bits
  • 16-символьний пароль із тим самим набором символів: H = 16 × 6.57 = ~105 bits

При 52,6 бітах сучасні GPU-прискорені системи злому, що запускають Hashcat на хешах MD5, можуть вичерпати простір за години. При 105 бітах те саме обладнання потребувало б геологічних часових масштабів. NIST SP 800-63B рекомендує мінімум 8 символів для паролів, обраних користувачем, але адміністратори, що дбають про безпеку, повинні встановлювати мінімум 12–16 символів, без штучного верхнього обмеження.

Різноманітність символів та складність

Змішування класів символів розширює N і тому збільшує ентропію на символ. Надійний пароль повинен містити символи з:

  • Великих літер (A–Z)
  • Малих літер (a–z)
  • Цифр (0–9)
  • Спеціальних символів (!, @, #, $, %, ^, &, * тощо)

Однак є критичний нюанс, який багато посібників упускають: обов’язкові правила складності можуть парадоксально послаблювати паролі. Коли користувачів змушують включати символ, вони передбачувано додають ! або 1 в кінці слова. Цей шаблон добре відомий зломщикам і закодований у наборах правил, що використовуються такими інструментами, як Hashcat. Справжня складність походить від випадковості, а не від задоволення вимог контрольного списку.

Непередбачуваність та стійкість до шаблонних атак

Сучасний злом паролів — це не суто перебір. Такі інструменти, як Hashcat та John the Ripper, використовують атаки на основі правил, що застосовують перетворення до словникових слів — написання першої літери великою, заміна a на @, додавання років тощо. Пароль на кшталт P@ssw0rd!23 здається складним, але тривіально зламується, оскільки він слідує добре відомому шаблону підстановки.

Справжня непередбачуваність означає:

  • Жодних словникових слів, навіть із заміною символів у стилі leetspeak
  • Жодних послідовностей клавіатури (qwerty, zxcvbn)
  • Жодної особистої інформації (імена, дати народження, клички домашніх тварин)
  • Жодних передбачуваних шаблонів на початку або в кінці (суфікс !, префікс 1)

Найнадійнішим джерелом непередбачуваності є криптографічно стійкий генератор випадкових чисел (CSPRNG), який авторитетні менеджери паролів використовують внутрішньо.

Унікальність між обліковими записами

Повторне використання облікових даних перетворює одне порушення на системний компроміс. Коли сервіс, що зберігає паролі у відкритому тексті або зі слабким MD5, зламується, зловмисники негайно перевіряють ці облікові дані проти інших цінних цілей — техніка, що називається підстановкою облікових даних. Сервіси Gmail, банківські портали та панелі керування хостингом є основними цілями.

Кожен обліковий запис повинен мати окремий пароль. Це операційно неможливо без менеджера паролів для більшості користувачів, що керують більш ніж кількома обліковими записами.

Методи оцінки надійності пароля

Розрахунок ентропії

Формула ентропії H = L × log₂(N) є найбільш об’єктивним показником. Ось довідкові значення для практичної оцінки:

Приклад пароляДовжинаПул символівЕнтропія (біти)Стійкість
`password`826~37,6Незначна
`P@ssw0rd`895~52,6Години (GPU)
`Tr0ub4dor&3`1195~72,3Місяці
`correct-horse-battery-staple`2826+1~130+Століття
Випадковий 16-символьний повний ASCII1695~105Астрономічна

Зверніть увагу, що correct-horse-battery-staple — відома парольна фраза XKCD — досягає надзвичайної ентропії завдяки довжині, незважаючи на використання лише малих літер та дефісів. Це сила довжини над складністю.

Інструменти злому паролів, що використовуються фахівцями з безпеки

Інженери з безпеки та тестувальники на проникнення використовують такі інструменти для емпіричного тестування політик паролів:

Hashcat — галузевий стандарт GPU-прискореного інструменту відновлення паролів. Він підтримує понад 300 типів хешів і може виконувати словникові, перебірні, засновані на правилах та гібридні атаки. На сучасному RTX 4090 Hashcat може перевіряти приблизно 164 мільярди хешів MD5 на секунду — контекст, що робить наведені вище числа ентропії відчутно реальними.

John the Ripper — CPU-зломщик із потужними можливостями атак на основі правил та широкою підтримкою форматів хешів. Він зазвичай використовується у форензичних та аудиторських контекстах.

zxcvbn — клієнтський оцінювач надійності пароля, розроблений Dropbox. На відміну від простих калькуляторів ентропії, він моделює реалістичну поведінку зловмисника, перевіряючи словники, загальні шаблони, послідовності клавіатури та формати дат. Це найточніший вимірювач надійності для призначених для користувача застосунків.

Щоб протестувати хеш пароля офлайн за допомогою Hashcat у режимі бенчмарку:

hashcat -b -m 0

Щоб запустити словникову атаку з правилами проти файлу хешів MD5:

hashcat -a 0 -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Онлайн-інструменти тестування паролів

Кілька браузерних інструментів забезпечують швидку оцінку надійності:

  • Have I Been Pwned (HIBP) Password Check — перевіряє SHA-1 хеш-префікс пароля проти бази даних із понад 800 мільйонами зламаних паролів за допомогою моделі k-анонімності, тобто повний пароль ніколи не передається.
  • Bitwarden Password Strength Tester — використовує zxcvbn під капотом для реалістичної оцінки часу злому.
  • Kaspersky Password Checker — надає аналіз довжини, складності та шаблонів.

Критичне операційне попередження: Ніколи не вводьте реальний, активно використовуваний пароль в жодний онлайн-інструмент. Використовуйте структурно схожі, але відмінні тестові облікові дані. Навіть інструменти, що використовують моделі k-анонімності, не повинні отримувати ваші реальні виробничі паролі.

Вимірювачі надійності пароля в застосунках

Вбудовані вимірювачі надійності суттєво різняться за якістю. Багато з них використовують спрощені евристики (порогові значення довжини, наявність класів символів), якими можна маніпулювати. Вимірювач, що оцінює P@ssw0rd1! як «Надійний», вводить в оману — цей рядок з’являється в кожному великому словнику зламаних паролів. Надавайте перевагу застосункам, що інтегрують zxcvbn або еквівалентні оцінювачі з урахуванням шаблонів.

Вектори атак на паролі: від чого ви насправді захищаєтесь

Розуміння моделі загроз загострює кожне рішення щодо політики паролів.

Атаки методом перебору систематично перебирають кожну можливу комбінацію в межах символьного простору. Вони обмежені обчислювально і стають непрактичними вище ~80 біт ентропії з поточним обладнанням.

Словникові атаки використовують списки слів, отримані з реальних паролів, що витекли в результаті зламів. Набір даних RockYou (14 мільйонів паролів) та його наступники охоплюють переважну більшість паролів, обраних людьми. Якщо ваш пароль з’являється в природній мові, він є у словнику.

Атаки на основі правил застосовують правила перетворення до словникових слів — написання великої літери, додавання чисел, підстановка символів. Вони зламують більшість «складних» паролів, які користувачі створюють, модифікуючи прості слова.

Підстановка облікових даних використовує пари ім’я користувача/пароль з одного зламу для атаки на інші сервіси. Це повністю нейтралізується унікальністю паролів.

Атаки з використанням райдужних таблиць використовують попередньо обчислені відображення хеш-до-відкритого тексту. Вони нейтралізуються належним хешуванням паролів з унікальною сіллю (bcrypt, Argon2, scrypt) на стороні сервера — відповідальність застосунку, а не користувача.

Соціальна інженерія та фішинг повністю обходять надійність пароля. Багатофакторна автентифікація є основним захистом тут.

Найкращі практики створення та управління надійними паролями

Використовуйте менеджер паролів

Менеджер паролів — це єдине найефективніше покращення безпеки, доступне більшості користувачів та адміністраторів. Такі інструменти, як Bitwarden (відкритий код, перевірений аудитом), 1Password та KeePassXC (офлайн, локальне зберігання), генерують криптографічно випадкові паролі та зберігають їх у зашифрованому сховищі. Це усуває когнітивне навантаження запам’ятовування та робить унікальні випадкові паролі з 20+ символів практичними для кожного облікового запису.

Для системних адміністраторів, що керують обліковими даними на серверах — включаючи середовища VPS Хостингу та Виділених серверів — командно-орієнтований менеджер паролів із контролем доступу на основі ролей (наприклад, Bitwarden Teams або HashiCorp Vault) є важливою інфраструктурою.

Генеруйте паролі за допомогою CSPRNG

Ніколи не створюйте паролі вручну. Використовуйте генератор вашого менеджера паролів або на Linux/macOS:

# Generate a 20-character random password using /dev/urandom
LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^&*()-_=+' < /dev/urandom | head -c 20; echo
# Generate a Diceware-style passphrase using OpenSSL
openssl rand -base64 32

Впровадьте багатофакторну автентифікацію (MFA)

MFA є обов’язковим рівнем для будь-якого облікового запису зі значною цінністю. Навіть скомпрометований пароль не може надати доступ без другого фактора. Надавайте перевагу застосункам-автентифікаторам TOTP (Authy, Google Authenticator, Aegis) перед SMS-двофакторною автентифікацією, яка вразлива до атак підміни SIM-карти. Для середовищ з найвищим рівнем гарантій використовуйте апаратні ключі безпеки (YubiKey, FIDO2), які за своєю конструкцією стійкі до фішингу.

На серверах, що запускають веб-застосунки або панелі керування — включаючи середовища, що керуються через Панелі керування VPS — застосовуйте MFA на рівні застосунку та розгляньте автентифікацію на основі SSH-ключів як заміну входу SSH на основі пароля.

Застосовуйте надійні політики паролів на системному рівні

Для адміністраторів, що керують серверами Linux, PAM (Pluggable Authentication Modules) забезпечує детальне застосування політики паролів. Встановіть та налаштуйте libpam-pwquality:

apt install libpam-pwquality

Потім відредагуйте /etc/security/pwquality.conf:

minlen = 16
minclass = 3
maxrepeat = 2
gecoscheck = 1
dictcheck = 1

Це встановлює мінімальну довжину 16 символів, вимагає символів щонайменше з 3 класів, забороняє більше 2 послідовних однакових символів та перевіряє словникові слова та поле GECOS користувача (ім’я).

Для політики старіння паролів відредагуйте /etc/login.defs:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   14

Відстежуйте витоки облікових даних

Інтегруйте моніторинг витоків у ваші операції безпеки. Have I Been Pwned пропонує безкоштовний API для перевірки адрес електронної пошти проти відомих баз даних витоків. Для організаційного використання такі сервіси, як SpyCloud або Enzoic, забезпечують моніторинг облікових даних у реальному часі та можуть ініціювати примусове скидання пароля, коли облікові дані співробітника з’являються в наборі даних витоку.

Безпечне хешування паролів на стороні сервера

Якщо ви керуєте веб-застосунками, що зберігають облікові дані користувачів — чи то на Спільному веб-хостингу, чи у виділеному середовищі — ніколи не зберігайте паролі у відкритому тексті або зі слабкими алгоритмами хешування (MD5, SHA-1, SHA-256 без солі). Використовуйте спеціально призначену функцію хешування паролів:

  • Argon2id — переможець конкурсу Password Hashing Competition; рекомендований OWASP для нових застосунків
  • bcrypt — широко підтримуваний, перевірений часом; використовуйте коефіцієнт роботи 12 або вище
  • scrypt — пам’ятоємний; хороша стійкість до GPU-атак

Приклад із використанням бібліотеки argon2-cffi Python:

from argon2 import PasswordHasher

ph = PasswordHasher(time_cost=2, memory_cost=65536, parallelism=2)
hash = ph.hash("user_supplied_password")
# Verify:
ph.verify(hash, "user_supplied_password")

Парольні фрази як практична альтернатива

Для паролів, які необхідно запам’ятати (головний пароль менеджера паролів, ключ шифрування повного диска), парольна фраза Diceware пропонує найкращий баланс ентропії та запам’ятовуваності. Киньте фізичний кубик п’ять разів, щоб вибрати кожне слово з великого списку слів EFF. П’ять слів дають приблизно 64,6 біт ентропії; шість слів дають 77,5 біт.

Example: "clam-unmasked-revival-stunt-dagger"
Entropy: ~64.6 bits (5 words × 12.92 bits)

Це надійніше, ніж більшість «складних» паролів, обраних користувачами, і значно легше для запам’ятовування.

Захист облікових даних у вашій хостинговій інфраструктурі

Безпека паролів виходить за межі окремих облікових записів і охоплює весь стек інфраструктури. Адміністратори, що керують хостинговими середовищами, повинні застосовувати багаторівневий контроль облікових даних:

  • SSH-доступ: Повністю вимкніть автентифікацію за паролем; використовуйте пари ключів Ed25519 або RSA-4096. Зберігайте приватні ключі з надійною парольною фразою.
  • Облікові дані бази даних: Використовуйте довгі, випадково згенеровані паролі для користувачів бази даних. Ніколи не використовуйте кореневі облікові записи бази даних для підключень застосунків.
  • Облікові записи панелі керування: Застосовуйте надійні паролі та MFA для всіх входів у панель керування. Платформи, доступні через VPS з cPanel, повинні мати налаштування мінімального балу надійності пароля cPanel не менше 65.
  • Облікові записи електронної пошти: Слабкі паролі електронної пошти є основним вектором атаки для захоплення облікових записів. Якщо ви керуєте Хостингом електронної пошти, застосовуйте надійні політики паролів на рівні поштового сервера та увімкніть DMARC, DKIM та SPF для зменшення фішингового впливу.
  • Приватні ключі SSL/TLS: Захищайте приватні ключі, пов’язані з SSL-сертифікатами, за допомогою дозволів файлової системи (chmod 600) та, де можливо, зберігайте їх у апаратному модулі безпеки (HSM) або менеджері секретів.

Надійність пароля проти політики паролів: порівняння

ВимірВідповідальність користувачаВідповідальність адміністратора
Генерація пароляВикористовувати менеджер на основі CSPRNGВстановлювати мінімальні вимоги до ентропії
ЗберіганняЗашифроване сховище (менеджер паролів)Argon2id/bcrypt з унікальними солями
Запобігання повторному використаннюУнікальний пароль для кожного облікового записуЗастосовувати через параметр PAM `remember`
Виявлення витоківВідстежувати HIBPІнтегрувати API витоків у потік автентифікації
MFAУвімкнути на всіх облікових записахЗастосовувати на рівні застосунку/сервера
РотаціяЗмінювати при підозрі на компрометаціюВстановлювати термін дії відповідно до політики (90–180 днів)
SSH-доступВикористовувати пари ключівВимкнути `PasswordAuthentication yes` у `sshd_config`

Матриця рішень та ключові технічні висновки

Використовуйте цей контрольний список для оцінки та зміцнення вашої поточної позиції щодо паролів:

  • Цільова ентропія: Прагніть до мінімуму 80 біт для загальних облікових записів; 100+ біт для привілейованого доступу (root сервера, головний пароль менеджера паролів, ключі шифрування).
  • Мінімальна довжина: Ніколи не приймайте паролі коротші за 12 символів у будь-якій системі, якою ви керуєте; надавайте перевагу 16–20 для облікових записів користувачів, 32+ для службових облікових записів та API-ключів.
  • Пул символів: Використовуйте повний друкований ASCII для випадково згенерованих паролів; використовуйте Diceware для паролів, що запам’ятовуються.
  • Унікальність: Нульова толерантність до повторного використання облікових даних. Розгорніть менеджер паролів, щоб зробити це операційно здійсненним.
  • Алгоритм хешування: Argon2id є поточним золотим стандартом для серверного зберігання паролів. Переходьте від bcrypt лише якщо Argon2id доступний у вашому стеку.
  • Рівень MFA: Мінімум TOTP; FIDO2/WebAuthn для привілейованих та адміністративних облікових записів.
  • Зміцнення SSH: Вимкніть вхід SSH на основі пароля на всіх серверах. Використовуйте PasswordAuthentication no у /etc/ssh/sshd_config.
  • Моніторинг витоків: Підпишіться на сповіщення HIBP для всіх організаційних поштових доменів.
  • Частота аудиту: Запускайте аудити паролів проти власної бази даних хешів за допомогою Hashcat щоквартально, щоб виявляти слабкі облікові дані до того, як це зроблять зловмисники.
  • Застосування політики: Використовуйте PAM pwquality на системах Linux; застосовуйте еквівалентні засоби контролю на Windows через групову політику (Fine-Grained Password Policies).

Часті запитання

Яка мінімальна довжина пароля рекомендована NIST у 2024 році?

NIST SP 800-63B встановлює абсолютний мінімум у 8 символів для паролів, обраних користувачем, але прямо рекомендує, щоб верифікатори дозволяли паролі довжиною щонайменше 64 символи. Фахівці з безпеки повинні встановлювати практичний мінімум у 12–16 символів та заохочувати парольні фрази з 20+ символів для чутливих облікових записів.

Чи є 12-символьний пароль із символами надійнішим за 20-символьну парольну фразу з малих літер?

Не обов’язково. Випадково згенерована 20-символьна парольна фраза з малих літер має приблизно 94 біти ентропії (20 × 4,70), тоді як 12-символьний пароль зі змішаним ASCII має приблизно 78,8 біт (12 × 6,57). Довша парольна фраза перемагає за ентропією, незважаючи на використання меншого пулу символів — довжина накопичується швидше, ніж різноманітність символів.

У чому різниця між словниковою атакою та атакою методом перебору?

Атака методом перебору систематично перебирає кожну можливу комбінацію символів у визначеному просторі — вона є вичерпною, але обмеженою обчислювально. Словникова атака використовує кураторський список слів із реальних паролів, що витекли в результаті зламів, загальних слів та відомих шаблонів. Словникові атаки зламують переважну більшість паролів, обраних людьми, за секунди; перебір застосовується для коротких паролів, де повний простір пошуку є прийнятним.

Чи слід регулярно змінювати паролі, навіть якщо немає витоку?

Поточні рекомендації NIST (SP 800-63B) прямо не рекомендують обов’язкову періодичну ротацію паролів без доказів компрометації, оскільки примусова ротація змушує користувачів робити передбачувані, поступові зміни (наприклад, Password1 до Password2). Змінюйте паролі негайно після підтвердженого або підозрюваного витоку та ротуйте облікові дані службових облікових записів за визначеним графіком (90–180 днів) як практику управління ризиками.

Як перевірити, чи мій пароль вже був розкритий у витоку даних, не надсилаючи його на сторонній сервер?

Використовуйте API Have I Been Pwned Pwned Passwords з його реалізацією k-анонімності. Ваш клієнт обчислює SHA-1 хеш пароля, надсилає лише перші 5 символів цього хешу до API та отримує назад усі відповідні суфікси хешів. Повний хеш — і, отже, пароль — ніколи не залишає вашу машину. Це можна написати у вигляді скрипту безпосередньо:

PASSWORD="YourTestPassword"
HASH=$(echo -n "$PASSWORD" | sha1sum | awk '{print toupper($1)}')
PREFIX="${HASH:0:5}"
SUFFIX="${HASH:5}"
curl -s "https://api.pwnedpasswords.com/range/$PREFIX" | grep "$SUFFIX"

Якщо команда повертає результат, пароль був помічений у витоку і не повинен використовуватися.

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати