5-значный PIN-код лучше, чем большинство паролей? - PullRequest
36 голосов
/ 20 июня 2009

Это то, что беспокоило меня много лет: почему большинство онлайн-сервисов высоко ценят энтропию пароля , ссылаясь на нее в качестве меры безопасности и применяя ее при выборе пользователем пароля?

Я решил выступить с этим вопросом после прочтения статьи «Считают ли что-нибудь надежные веб-пароли?» (и, конечно, классический мультфильм Дильберта ).

Типичная политика интернет-сайта - требовать не менее 6 или 8 цифр верхнего + нижнего регистра + цифрового пароля. Эта длина в некоторой степени относится к сложности атаки методом перебора, например восстановить пароль из хэша. Но типичный способ гадания в Интернете происходит, когда кто-то пытается войти на сервер, который можно отменить после нескольких попыток.

Давайте представим, например, что мы защищаем некую услугу среднего размера с помощью PIN-кода из всех цифр. Кто-то сразу вспоминает о 4-значных или 6-значных выводах, но это может быть не очень хорошей идеей, поскольку слишком многие люди будут испытывать желание ввести дни рождения своих детей, которые по сути являются общедоступными.

Итак, вот мое предложение 5-значный PIN . Я оставляю для каждого пользователя флаг «возможной атаки».

  1. Пользователь входит в систему правильно -> OK
  2. В противном случае продолжите сеанс https и разрешите еще 2 попытки
  3. Пользователь входит в систему -> OK
  4. В противном случае разрешите еще 2 попытки с 5-минутным перерывом перед ними
  5. Пользователь входит в систему -> OK
  6. Пользователь прерывает сеанс -> установить флаг
  7. Пользователь прерывает сеанс, но обычно входит в систему позже: предоставляет пользователю диалоговое окно и позволяет снять флажок
  8. Пользователь исчерпывает попытки выше: отправьте электронное письмо со ссылкой; разрешить очистить флаг
  9. Если в течение месяца имеется более 100 флагов, установите глобальный флаг «возможной атаки», который требует, чтобы люди, у которых нет файла cookie, отвечали на секретные вопросы
  10. В некоторых случаях автоматически очищать флаг пользователя (например, пользователь, наконец, вошел в систему с того же компьютера)

Давайте предположим, что имена пользователей каким-то образом известны (обратите внимание, что это не будет верно для большинства сайтов). Атака грубой силы против одного пользователя безнадежна - вы заблокированы после 5 попыток, поэтому у вас есть шанс 1/200000. Если вы попытаетесь угадать пароль более 200 раз в месяц, флаг исчезнет, ​​и вы ничего не получите. Если вы пробуете <200 пользователей в месяц, через год у вас будет <1% шанс сломать одного пользователя; вам гораздо лучше с фишингом, вирусами, социальной инженерией или чем-то еще. </p>

Размер сайта важен только в том смысле, что он не дает ложных срабатываний, то есть пользователей, которые искренне забывают свой пароль (скажем, 1% в месяц), восстанавливают его, но не снимают флажок (скажем, 1% из них), и когда вы не можете снять флаг автоматически (скажем, 10% из них). Это составляет 10 ожидаемых ложных положительных флагов в месяц на 10 6 пользователей - это означает, что сайт среднего размера имеет достаточно низкую вероятность входа в режим "паники", что в любом случае не так уж плохо .

Я считаю, что эта схема очень практична. Вот некоторые очевидные первые факты об этом (обновления) :

  • пособие : PIN-код легче запомнить. Я считаю, что это большое преимущество, поскольку теперь можно потребовать, чтобы пользователь запомнил сгенерированный вами пароль. Я считаю, что большинство людей гораздо лучше запоминают 5 случайных цифр, чем любой другой тип случайного пароля.
  • компромисс : хеширование не сильно поможет, если ваш злоумышленник знает как хешированный PIN-код, так и соль. Это возможно, если кто-то проник в вашу базу данных и узнает, каков ваш процесс посола. Однако я считаю, что стандартная энтропия паролей в этом случае тоже не поможет.
  • преимущество : люди гораздо счастливее запоминают случайные 5 цифр, чем случайные буквенно-цифровые пароли; поэтому гораздо проще также потребовать, чтобы мы генерировали пароль, а не пользователя. Это исключает атаки по словарю и личным данным.

Мои вопросы:

  1. Каковы другие компромиссы / преимущества моей схемы по сравнению с той, которую я описал как типичную?
  2. Не будут ли лучше сайты и организации среднего размера с моей схемой паролей?
  3. По каким причинам они выбирают схему, которую имеют?

Примечание : Я не рекомендую всегда иметь короткие пароли. Мои собственные веб-пароли обычно генерируются случайным образом и шифруются менеджером паролей (1Password) с 12-символьным паролем с высокой энтропией. Но я думаю, что часто схема выше будет лучше, чем у нас на практике.

Ответы [ 13 ]

42 голосов
/ 20 июня 2009

Нет, вы ошибаетесь. Атаки грубой силой - это одно, но реальная опасность - это Rainbow Tables, которая из хеш-значения дает вам открытый текстовый пароль.

Сначала вы никогда ничего не храните в виде открытого текста. Если кто-то нарушает вашу безопасность (или даже если у сотрудника есть злой умысел), вы не хотите раскрывать пароль пользователя. Таким образом, вы будете использовать правильно посоленный хеш.

Затем, с 5-значным PIN-кодом, он слишком короток, чтобы его можно было защитить с помощью хэша. Существуют радужные таблицы (или даже поиски в Google), которые позволят кому-то вернуть пароль, если он получит хэш.

14 голосов
/ 20 июня 2009

Имейте в виду, что злоумышленник с 3000 попыток может успешно заблокировать 1000 учетных записей в течение нескольких минут. Другое дело, что он может изменить шансы одного успешного входа в систему, пробуя тысячи разных аккаунтов в день. OpenID не вариант?

Обновление

Просто было немного вдохновения о пятизначном. Если 5 цифр (10 ^ 5 = 100.000) действительно легко запомнить и одновременно безопасны, как насчет этих случаев:

4 letters all lowercase (26^4 = 456.976) => abcd
3 letters with mixed cases (52^3 = 140.608) => aBc
3 letters lowercase + numbers (36^3 = 46.656) => ab1
2 голосов
/ 29 июля 2009

По этой логике, если 5 цифр легче запомнить, чем 8 символов, но при этом содержат достаточную энтропию, тогда одна цифра и три буквы без учета регистра должны быть еще проще!

10**5 = 100,000
26**3 * 10 = 175,760

Теперь всего четыре маленьких персонажа, но они передают больше энтропии!

Возможно, я просто буду использовать свои инициалы, за которыми следует цифра 1. , .

Я не то, что доказано этим, за исключением того, что между reductio ad absurdum и сарказмом есть большая неоднозначная серая область.

2 голосов
/ 11 июля 2009

Реальная проблема? Люди.

Я знаю школьный округ с 4 паролями: 1111, 2222, 3333 и 4444. Почему? Пользователи собрались и согласились сделать это, чтобы они всегда могли войти, когда персонал дома болен. Слишком много боли, чтобы забраться в запертый компьютер для денег на обед, когда работник больницы был болен.

О да, я много раз видел обеденный компьютер без присмотра. И, да, вы можете в любое время попросить, чтобы ваш баланс был превращен в наличные . Пользователи безумны.

2 голосов
/ 20 июня 2009

Я до сих пор не понимаю, почему люди вообще ограничивают длину пароля. Не проще ли мне запомнить предложение или фразу? Например, я мог бы хотеть, чтобы мой пароль был "this is my stackoverflow password". У меня были бы серьезные проблемы с памятью, если бы я забыл это. Его длина составляет 34 символа и использует только алфавит из 27 символов, но все же было бы практически невозможно изменить хеш (4.6 x 10 48 возможных перестановок).

В сочетании с вашими идеями относительно "флага атаки" и правильной техники посола / хеширования, на мой взгляд, это было бы идеальным решением.

2 голосов
/ 20 июня 2009

Остерегайтесь обработки сессий

Я не слишком много знаю об обработке сессий, но, насколько я знаю, большую часть времени они создаются с использованием файлов cookie.Когда у вас есть схема, подобная вашей, необходимо записывать ложные попытки в базу данных или в специальные файлы на вашем сервере, поскольку вы не можете полагаться на обработку сеанса (в вашем описании это звучит немного, как вы просто можете "проведите сессию «чтобы получить всю правду ...) - поскольку сеансы через Интернет очень уязвимы.Это просто структура файлов cookie (которые могут быть удалены) и / или имен страниц (которые также могут быть испорчены).Единственное, на что вы можете положиться, это то, что пользователь все еще удерживает сеанс - вы не можете точно определить, какое новое (непривлекательное) соединение не является вашим старым пользователем ...

Специально, оно не делаетЧувство различия между «У пользователя есть сеанс» и «Сеанс пользователя прерывается» (ваш пункт 7), это просто незначительная разница и может также стать дырой в безопасности.1010 *

Вы также говорите, что запомнить 5 цифр легче.Это может быть правильным для вашей кредитной карты или банковской карты (в Германии у нас есть 4-значный PIN-код), но для веб-сайтов у вас всегда возникает проблема с паролями этих многих веб-сайтов.Запоминать десятки пятизначных чисел так же сложно, как множество паролей.

2 голосов
/ 20 июня 2009

Пароли с солеными хэшами лучше. Соль предотвращает большинство радужных атак, а взломать пароль гораздо сложнее. Даже при атаке по словарю было бы проще получить более быстрые попадания на 5-значный пин-код, чем на пароль такой же длины.

1 голос
/ 16 марта 2016

Таким образом, полагаться на блокировку в целях безопасности плохо для пользователя и привести к тому, что злоумышленник заблокирует несколько учетных записей, что приведет к неудобствам для реальных пользователей. Вместо этого используйте более надежные пароли с соленым хешем, которые сложнее взломать с помощью грубой силы и которые не подвержены атакам Rainbow-таблиц, если выбор между PIN-кодом и паролем. Если выбор между парольной фразой, паролем и пин-кодом. Я рекомендую идти с паролем, затем парольной фразой и затем PIN-кодом в порядке убывания предпочтений. Фраза-пароль (> 10 символов) обычно более безопасна, чем пароль (от 6 до 8 символов), но не дает большого опыта, поскольку пользователю необходимо вводить фразу-пароль (> 10 символов) каждый раз !! Сделайте выбор в зависимости от того, насколько важны данные и насколько удобен пользовательский интерфейс. Подождите минуту ... Исследуйте новую область аутентификации без пароля, используя мобильное устройство в качестве аутентификатора.

1 голос
/ 20 июня 2009

Я думаю, что было бы проще вспомнить «парольные фразы бьют PIN-коды в любой день!», Которые выдержат атаку грубой силой в течение примерно 400 триллионов лет.

1 голос
/ 20 июня 2009

ПИН-кодов против паролей, пароли выигрывают, не идеально, но при строгой политике, намного лучше, чем ПИН-коды.

И кто сказал, что многие люди не пишут свои PIN-коды на заметках, многим легче запомнить комбинацию слов, чем пятизначное число, лично я помню цифры проще всего, и поэтому мои пароли являются более числовыми, чем буквенные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...