Это то, что меня раздражало в течение многих лет: почему большинство онлайн-сервисов высоко оценивают энтропию пароля, ссылаясь на него как на меру безопасности и применяя его, когда пользователи выбирают пароль?Является ли 5-значный PIN-код лучше, чем большинство паролей?
Я решил выступить с этим вопросом после прочтения статьи "Do Strong Web Passwords Accomplish Anything?" (и, конечно же, classic Dilbert cartoon).
Типичная политика онлайн-сайта состоит в том, чтобы требовать минимум 6 или 8 цифр с верхним + строчным + цифровым паролем. Эта длина несколько важна для сложности атаки грубой силы, например, восстановить пароль из хэша. Но типичный способ угадывания происходит в Интернете, так это то, что кто-то пытается войти на сервер, который может отказаться после нескольких попыток.
Давайте представим, например, что мы защищаем некоторый сервис среднего размера с помощью PIN-кода со всеми цифрами. Немедленно думает о 4-значных или 6-значных контактах, но это может быть не очень хорошо, поскольку слишком много людей будут испытывать желание ввести дни рождения своих детей, которые по сути являются общественными знаниями.
Итак, вот мой 5-значный PIN предложение. Я сохраняю для каждого пользователя флаг «возможной атаки».
- пользователь входит в систему правильно -> OK
- В противном случае, держать HTTPS сессию и позволит еще 2 попытки
- входа пользователя в систему -> OK
- В противном случае, позвольте еще 2 попытки с 5-минутном перерыв перед ними
- журналов пользователя в -> OK
- Пользователь разрывает сеанс -> установите флаг
- Пользователь разрывает сеанс, но журналы в обычно позже: настоящий пользователь диалога и разрешить для очистки флага
- Пользователь исчерпывает попытки выше: отправить электронное письмо со ссылкой; разрешить очистить флаг
- Если в течение месяца установлено более 100 флагов, установите глобальный флаг «возможной атаки», который требует, чтобы люди, у которых нет вопросов безопасности ответа cookie
- Автоматически очищать флаг пользователя в некоторых случаях (например, пользователь, наконец, вошел в систему с того же компьютера)
Предположим, что имена пользователей как-то известны (обратите внимание, что это не относится к большинству сайтов). Атака грубой силы против одного пользователя безнадежна - вы заблокированы после 5 попыток, поэтому у вас есть шанс 1/200000. Если вы попытаетесь угадать пароль более 200 раз в месяц, флаг погаснет, и вы ничего не получите. Если вы попробуете < 200 пользователей в месяц, то через год у вас есть < 1% вероятность взлома одного пользователя; вам гораздо лучше с фишингом, вирусами, социальной инженерией или чем-либо еще.
Размер сайта имеет значение только в смысле отсутствия ложных срабатываний, то есть пользователей, которые действительно забывают свой пароль (скажем, 1% в месяц), восстанавливают его, но не очищают флаг (давайте скажем, 1% от них), и когда вы не можете очистить флаг автоматически (скажем, 10% от них). Это составляет 10 ожидаемых ложноположительных флагов в месяц за 10 пользователей --- это означает, что сайт среднего размера имеет достаточно низкую вероятность войти в режим «паники», что в любом случае не так уж плохо.
Я считаю, что эта схема очень практична. Вот некоторые очевидные первые факты о нем (обновления):
- преимущество: PIN-код легче запомнить. Я считаю, что это большое преимущество, так как теперь можно потребовать, чтобы пользователь помнил пароль, который вы создали. Я считаю, что большинство людей гораздо лучше запоминают 5 случайных цифр, чем любой другой случайный пароль.
- tradeoff: Хеширование не поможет, если ваш злоумышленник знает как хэшированный PIN-код, так и соль. Это возможно, если кто-то ворвался в вашу базу данных и узнает, каков ваш процесс соления. Тем не менее, я считаю, что стандартная парольная энтропия тоже не поможет.
- Пособие: люди гораздо счастливее запоминают случайные 5 цифр, чем случайные буквенно-цифровые пароли; поэтому гораздо проще также потребовать, чтобы мы сгенерировали пароль, а не пользователь. Это устраняет атаки на словари/персональные данные.
Мои вопросы:
- Каковы другие компромиссы/выгоды от моей схемы по сравнению с той, которую я описал как типичный?
- Не будет сайтов и организаций среднего размера лучше с моей парольной схемой?
- Каковы причины, по которым они выбирают схему, которую они имеют?
Примечание: Я не защищаю всегда короткие пароли. Мои собственные пароли обычно генерируются случайным образом и зашифровываются менеджером паролей (1Password
) с 12-символьным паролем с высокой энтропией. Но я думаю, что часто вышеприведенная схема была бы лучше, чем у нас на практике.
Это очень ценный вопрос, +1 – dfa
Почему вы ограничиваете выбор паролей ровно 5 числами, минимизируя энтропию? И хранить их в открытом виде? И кто скажет, что многие люди просто не заберут 00000? Внесите свои предложения с помощью обычных паролей, и это намного безопаснее. – molf
Любой, кто будет использовать дату рождения своих детей в качестве знака 4 или 6 цифр, также может использовать его как 5-значный вывод, если он не требует 6 цифр, чего многие не делают. И тогда есть почтовый индекс, который я знаю нескольким людям. Не уверен, что это действительное соображение. – Gerald