Що таке словникова атака?

click fraud protection

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

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

Хоча багато зусиль витрачається на запобігання витоку даних, рекомендується стратегія глибокого захисту. Зокрема, рекомендації щодо безпеки стверджують, що паролі слід хешувати, причому зберігається лише хеш пароля. Хеш-функція — це одностороння функція, яка завжди перетворює той самий вхідний сигнал у той самий вихідний. Однак навіть незначна зміна вхідних даних дає зовсім інший результат. Важливо те, що немає способу змінити функцію та повернути виведений хеш назад у вихідний вхід. Що ви можете зробити, це хешувати новий вхід і перевірити, чи результат відповідає хешу, який зберігається в базі даних. Якщо так, ви знаєте, що пароль збігся, навіть не знаючи справжнього пароля.

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

Злом хешів паролів за допомогою Smarts

Злом хешу пароля — це процес визначення оригінального пароля, який представляє хеш. Тому що немає способу змінити хеш-функцію та перетворити хеш на пароль. Єдиний спосіб зламати хеш - це вгадати пароль. Одним із методів є використання атаки грубою силою. Це буквально передбачає спробу кожного можливого пароля. Це означає, починаючи з «а», пробуючи кожну букву, в обох випадках, і кожну цифру та символ. Потім зловмиснику потрібно спробувати всі комбінації з двох символів, комбінації з трьох символів і так далі. Збільшення можливих комбінацій символів є експоненціальним щоразу, коли ви додаєте символ. Це ускладнює ефективне вгадування довгих паролів, навіть якщо використовуються швидкі алгоритми хешування з потужними системами злому GPU.

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

Проблема з атаками грубої сили полягає в тому, що вони не дуже розумні. Атака за словником є ​​набагато більш цілеспрямованим варіантом. Замість того, щоб просто спробувати будь-який можливий пароль, він спробує список указаних паролів. Успіх цього типу атаки залежить від списку паролів і словника.

Робити обґрунтовані припущення

Словники паролів, як правило, створюються на основі раніше зламаних паролів від інших витоків даних. Ці словники можуть містити тисячі або мільйони записів. Це ґрунтується на концепції, що люди погано створюють унікальні паролі. Докази витоку даних також показують, що це так, на жаль. Люди все ще використовують варіації слова «пароль». Інші поширені теми: спортивні команди, імена домашніх тварин, назви місць, назви компаній, ненависть до роботи та паролі на основі дати. Це останнє, як правило, трапляється, коли люди змушені регулярно змінювати свої паролі.

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

Рівень успіху можна ще більше підвищити за допомогою алгоритмів спотворення слів. Ці алгоритми беруть кожне слово зі словника паролів, а потім дещо його змінюють. Ці зміни, як правило, є стандартними замінами символів і додаванням кінцевих чисел або символів. Наприклад, зазвичай люди замінюють літеру «e» на «3», «s» на «$» або додають знак оклику в кінці. Алгоритми спотворення слів створюють дублікати кожного запису в словнику паролів. Кожен дублікат має різну варіацію цих замін символів. Це значно збільшує кількість паролів, які потрібно вгадати, а також підвищує рівень успіху, у деяких випадках понад 90%.

Висновок

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

Одна з головних речей, які ви повинні зробити, коли придумаєте пароль, це переконатися, що він не з’явиться в списку слів. Один із способів зробити це – створити складний пароль, інший – створити довгий пароль. Як правило, найкращим варіантом є створення довгого пароля з кількох слів. Важливо лише, щоб ці слова не були справжньою фразою, про яку можна здогадатися. Вони повинні бути абсолютно не пов’язані між собою. Рекомендовано вибирати пароль із 10 символів із 8 як абсолютним мінімумом.