Як важливо зберігати довжину пароля в таємниці

Підтримання критичного пароля при збереженні безпеки?

пароля

Хто-небудь знає, що у вас є пароль довжиною 17, кажуть, що набагато простіше примусити пароль?

10 відповідей

Що ж, почнемо з математики: якщо припустити, що ваш пароль складається із спусків, граней та цифр, можна вибрати 62 символи (лише для полегшення математики, справжні паролі також використовують символи). Пароль довжини 1 має 62 можливості, пароль довжини 2 має 62 ^ 2 можливості. пароль довжиною n має 62 можливості.

Отже, це означає, що якщо я знаю, що ваш пароль має рівно 17 символів, то я можу пропустити всі паролі довжиною менше 17 і спробувати лише 62 ^ 17 паролів.

Але скільки паролів існує довжиною менше 17 порівняно з 62 ^ 17?

Ну, якщо скласти 62 ^ n і розділити на 62 ^ 17, отримаємо (сума від n = 1 до n = 16 з 62 ^ n)/62 ^ 17 = 0,016 (посилання на розрахунок), тому перевіряємо лише паролі довжини 17 лише на 1,6% швидше ніж перевірка всіх паролів довжиною до 17

Якщо у нас є схема паролів, яка дозволяє всі 95 символів ASCII для друку, тоді економія від того, що не потрібно випробовувати паролі коротші за 17, зменшується до 1,06% (посилання на розрахунок).

Цікавою математичною взаємодією щодо цього співвідношення кількості паролів, коротших за n, до кількості паролів довжиною n є те, що воно взагалі не залежить від n. Це пов’язано з тим, що ми вже дуже близькі до асимптоти 1/95 = 0,0105 . Отже, зловмисник отримує однакову відносну або процентну економію часу від цього фокусу, незалежно від довжини пароля; це завжди між 1% - 2%. Хоча, звичайно, абсолютний час, який потрібно, збільшується в порядку розміру з кожним новим доданим вами символом.

У наведеній вище математиці передбачається простий нападник, який спробує a, b, c,. aa, ab,. Що є хорошою моделлю (іш) для правильного злому комп'ютерних паролів, але це жахлива модель для вгадування паролів, створених людьми.

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

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

Як згадували @SteveSether, @xeon та @CountIblis, розкриття довжини (або ентропії) пароля також може мати ефект, якщо зловмисник навіть намагається зламати ваш пароль, відбиваючи їх від надійних паролів і замість того, щоб їх залучати. слабкі. Отже, якщо ви знаєте, що маєте надійний пароль, розкрийте його! Однак виявлення довжини пароля (або ентропій) для всіх користувачів системи має наслідком посилення надійних паролів, а слабких - слабшими.

Нижня лінія:

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

Окрім детальної математики @Mike, ми вважаємо, що довжина пароля не вистачає скрізь:

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

У класичному сценарії "веб-браузера" ім'я користувача та пароль будуть надіслані на сервер через HTTPS POST. Шар SSL буде шифрувати дані, але SSL не приховує довжину даних, тому пасивний спостерігач мережі також дізнається довжину пароля.

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

Тому правильним підходом є розгляд довжини пароля як загальнодоступних даних. Деякі зловмисники не матимуть до нього доступу (тип зловмисників, які скопіювали копію бази даних сервера); інші знатимуть. Дуже важко знати, наскільки секретною є довжина пароля, і оскільки безпека пов’язана з кількісною оцінкою речей, добре припустити, що всі зловмисники можуть знати довжину пароля. Вірити, що ви можете тримати це в таємниці, і оцінювати безпеку, виходячи з цього поняття, було б занадто небезпечно.

Виявлення довжини пароля виявляє дещо про потужність пароля. Отже, по суті, ви даєте комусь пропозицію про те, як важко було б здогадатися.

Отже, якщо ваш пароль дуже довгий (17 символів у вашому прикладі), інформація здебільшого марна. Якщо пароль короткий (6 символів), він повідомляє зловмиснику, що на вас можуть напасти. Зловмисники йдуть за найлегшими цілями.

Я не згоден з прийнятою відповіддю. Це правда, що довжина пароля майже марна, якщо всі паролі створюються машиною довільно. Це вже не так, якщо паролі створюються звичайними людьми: на основі слів у словнику змішайте малі літери, замініть деякі символи цифрами або спеціальними символами та додайте префікси та суфікси (наприклад, "! 1") тощо.

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

Сценарій 1: Створіть багато з 10 000 000 паролів з обмеженими ресурсами.

Ми можемо спробувати атаки bruteforce на всі хеші паролів, не диференціюючи їх, якщо ми не знаємо довжину пароля.

Якщо ми використовуємо вичерпну атаку bruteforce (яка гарантовано знаходить пароль), знання довжини пароля забезпечить лише мінімальний виграш. Чому? Примусове використання всіх 7-значних паролів займає близько 1-2%, якщо грубе примушування всіх 8-значних паролів. Єдине, що ми отримуємо, знаючи довжину, це те, що нам не потрібно грубо застосовувати усі 7-значні (і менші) паролі, якщо ми вже знаємо, що пароль має 8 цифр. За винятком того, що атака грубої сили вимагає майже нескінченних ресурсів (обчислювальної потужності та/або часу) і, отже, це не те, що ми можемо чи будемо робити.

Натомість ми перевіряємо серію "ймовірних" паролів для кожної довжини пароля. Один із способів зробити це за допомогою словникової атаки. Тестування ймовірних паролів на кілька порядків дешевше, ніж використання вичерпної грубої сили, але він має величезний недолік: як тільки ми спробували всі "ймовірні" 7-значні паролі проти хешу паролів, але не знайшли відповідного пароля, ми не знайдемо знати, якщо відповідний пароль для цього хешу пароля перевищує 7 цифр. Отже, якщо ми точно не знаємо, що пароль не перевищує 7 цифр, нам все одно доведеться перевірити цей хеш пароля на всіх «ймовірних» 8-значних паролях, 9-значних паролях, 10-значних паролях тощо - і при тестуванні ймовірних паролів, як вичерпна жорстока сила, вартість тестування довших паролів зростає в геометричній прогресії. Оскільки зараз ми знаємо, що пароль має 7 цифр, нам не потрібно перевіряти його на ймовірні 8, 9, 10, 11, 12-значні та навіть довші паролі, заощаджуючи справді величезну кількість роботи.

Їй стає краще. Після того, як ми протестували всі паролі з імовірністю до, скажімо, 20 цифр, тепер ми можемо витратити решту ресурсів на грубу атаку на ці хеші паролів з невеликою довжиною пароля, яку наш пошук попередній для "ймовірних" паролів. Ми говоримо, що у нас залишилося 2 000 000 небажаних паролів, і 100 000 з них мають паролі менше 6 цифр. Майте на увазі, що у нас обмежений бюджет. 6-значні паролі дешево зламати. Але оскільки ми знаємо, що 100 000 - це 6 цифр або менше, тепер нам доводиться грубо 100 000 6-значних паролів зламати 100 000, замість того, щоб грубо змушувати 2 000 000 паролів зламати 100 ' 000 6 цифрових слів. Це 5% роботи за той самий результат!

Якщо ми розглянемо всі переваги в сукупності, точний прибуток, який ми отримаємо від знання довжини паролів, залежить від швидкості нашого методу для тестування "ймовірних" паролів, відповідної швидкості успіху нашого методу для тестування ймовірних паролів для кожної довжини пароля, розподіл довжин паролів у збірці хешей паролів, які ми хочемо зламати, та кількість доступних ресурсів (швидкість обчислення, час). Але, знаючи довжину паролів, ми можемо легко збільшити кількість знайдених паролів із заданою кількістю ресурсів у кілька разів - якщо цифри працюють на нашу користь, ми можемо зменшити витрати ресурсів на злом 30% паролів на порядок або більше.

Сценарій 2: зламайте один пароль під час цілеспрямованої атаки

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

Ми також отримуємо додаткову інформацію, яка може бути надзвичайно цінною при цілеспрямованій атаці:

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

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

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

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