Это то, что беспокоило меня много лет: почему большинство онлайн-сервисов высоко ценят энтропию пароля , ссылаясь на нее в качестве меры безопасности и применяя ее при выборе пользователем пароля?
Я решил выступить с этим вопросом после прочтения статьи «Считают ли что-нибудь надежные веб-пароли?» (и, конечно, классический мультфильм Дильберта ).
Типичная политика интернет-сайта - требовать не менее 6 или 8 цифр верхнего + нижнего регистра + цифрового пароля. Эта длина в некоторой степени относится к сложности атаки методом перебора, например восстановить пароль из хэша. Но типичный способ гадания в Интернете происходит, когда кто-то пытается войти на сервер, который можно отменить после нескольких попыток.
Давайте представим, например, что мы защищаем некую услугу среднего размера с помощью PIN-кода из всех цифр.
Кто-то сразу вспоминает о 4-значных или 6-значных выводах, но это может быть не очень хорошей идеей, поскольку слишком многие люди будут испытывать желание ввести дни рождения своих детей, которые по сути являются общедоступными.
Итак, вот мое предложение 5-значный PIN . Я оставляю для каждого пользователя флаг «возможной атаки».
- Пользователь входит в систему правильно -> OK
- В противном случае продолжите сеанс https и разрешите еще 2 попытки
- Пользователь входит в систему -> OK
- В противном случае разрешите еще 2 попытки с 5-минутным перерывом перед ними
- Пользователь входит в систему -> OK
- Пользователь прерывает сеанс -> установить флаг
- Пользователь прерывает сеанс, но обычно входит в систему позже: предоставляет пользователю диалоговое окно и позволяет снять флажок
- Пользователь исчерпывает попытки выше: отправьте электронное письмо со ссылкой; разрешить очистить флаг
- Если в течение месяца имеется более 100 флагов, установите глобальный флаг «возможной атаки», который требует, чтобы люди, у которых нет файла cookie, отвечали на секретные вопросы
- В некоторых случаях автоматически очищать флаг пользователя (например, пользователь, наконец, вошел в систему с того же компьютера)
Давайте предположим, что имена пользователей каким-то образом известны (обратите внимание, что это не будет верно для большинства сайтов). Атака грубой силы против одного пользователя безнадежна - вы заблокированы после 5 попыток, поэтому у вас есть шанс 1/200000. Если вы попытаетесь угадать пароль более 200 раз в месяц, флаг исчезнет, и вы ничего не получите. Если вы пробуете <200 пользователей в месяц, через год у вас будет <1% шанс сломать одного пользователя; вам гораздо лучше с фишингом, вирусами, социальной инженерией или чем-то еще. </p>
Размер сайта важен только в том смысле, что он не дает ложных срабатываний, то есть пользователей, которые искренне забывают свой пароль (скажем, 1% в месяц), восстанавливают его, но не снимают флажок (скажем, 1% из них), и когда вы не можете снять флаг автоматически (скажем, 10% из них). Это составляет 10 ожидаемых ложных положительных флагов в месяц на 10 6 пользователей - это означает, что сайт среднего размера имеет достаточно низкую вероятность входа в режим "паники", что в любом случае не так уж плохо .
Я считаю, что эта схема очень практична. Вот некоторые очевидные первые факты об этом (обновления) :
- пособие : PIN-код легче запомнить. Я считаю, что это большое преимущество, поскольку теперь можно потребовать, чтобы пользователь запомнил сгенерированный вами пароль. Я считаю, что большинство людей гораздо лучше запоминают 5 случайных цифр, чем любой другой тип случайного пароля.
- компромисс : хеширование не сильно поможет, если ваш злоумышленник знает как хешированный PIN-код, так и соль. Это возможно, если кто-то проник в вашу базу данных и узнает, каков ваш процесс посола. Однако я считаю, что стандартная энтропия паролей в этом случае тоже не поможет.
- преимущество : люди гораздо счастливее запоминают случайные 5 цифр, чем случайные буквенно-цифровые пароли; поэтому гораздо проще также потребовать, чтобы мы генерировали пароль, а не пользователя. Это исключает атаки по словарю и личным данным.
Мои вопросы:
- Каковы другие компромиссы / преимущества моей схемы по сравнению с той, которую я описал как типичную?
- Не будут ли лучше сайты и организации среднего размера с моей схемой паролей?
- По каким причинам они выбирают схему, которую имеют?
Примечание : Я не рекомендую всегда иметь короткие пароли. Мои собственные веб-пароли обычно генерируются случайным образом и шифруются менеджером паролей (1Password
) с 12-символьным паролем с высокой энтропией. Но я думаю, что часто схема выше будет лучше, чем у нас на практике.