Это то, что не дает мне покоя уже много лет: почему большинство онлайн-сервисов высоко ценят энтропию пароля, ссылаясь на нее как на меру безопасности, и принудительно вводят ее, когда пользователи выбирают пароль?
Я решил ответить на этот вопрос после прочтения статьи "Do Strong Web Passwords Accomplish Anything? " (и, конечно же, классического мультфильма Дилберта).
Типичная политика онлайн-сайтов - требовать, по крайней мере, 6 или 8-значный пароль из верхнего+нижнего регистра+цифр. Эта длина имеет некоторое значение для сложности атаки перебором, чтобы, например, восстановить пароль из хэша. Но типичный способ угадывания пароля в Интернете заключается в том, что кто-то пытается войти на сервер, который может отказать после нескольких попыток.
Представим, например, что мы защищаем какой-то сервис среднего размера с помощью полнозначного PIN-кода. Сразу возникает мысль о 4-значных или 6-значных пинах, но это может быть не очень хорошей идеей, так как слишком много людей будут склонны вводить дни рождения своих детей, которые, по сути, являются общеизвестными.
Итак, вот мое предложение 5-значного PIN-кода. Я храню для каждого пользователя флаг "возможной атаки".
Предположим, что имена пользователей каким-то образом известны (обратите внимание, что для большинства сайтов это не так). Атака методом перебора на одного пользователя безнадежна - вас заблокируют после 5 попыток, так что у вас 1/200000 шансов. Если вы попытаетесь угадать пароль более 200 раз за месяц, флаг сработает, и вы ничего не получите. Если вы пытаетесь <угадать пароль 200 пользователей в месяц, то через год у вас будет <1% шансов взломать одного пользователя; вам гораздо лучше использовать фишинг, вирусы, социальную инженерию или что-то еще.
Размер сайта имеет значение только в смысле отсутствия ложных срабатываний, то есть пользователей, которые действительно забывают свой пароль (допустим, 1% в месяц), восстанавливают его, но не снимают флаг (допустим, 1% из них), и когда вы не можете снять флаг автоматически (допустим, 10% из них). Это составляет 10 ожидаемых ложных срабатываний в месяц на 106 пользователей - что означает, что сайт среднего размера имеет достаточно низкую вероятность перехода в режим "паники", что в любом случае не так уж и плохо.
Я считаю, что эта схема очень практична. Вот несколько очевидных первых фактов о ней (обновления):
Мои вопросы таковы:
Примечание: Я не сторонник того, чтобы всегда иметь короткие пароли. Мои собственные веб-пароли обычно генерируются случайным образом и шифруются менеджером паролей (1Password
) с 12-символьным паролем с высокой энтропией. Но я думаю, что часто приведенная выше схема будет лучше, чем то, что мы имеем на практике.
Нет, вы ошибаетесь. Атаки грубой силы - это одно, но реальную опасность представляют Rainbow Tables, которые из хэш-значения выдают пароль в открытом виде.
Во-первых, никогда не храните ничего в открытом виде. Если кто-то нарушит вашу безопасность (или даже если сотрудник имеет злой умысел), вы не захотите раскрывать пароль пользователя. Поэтому вы будете использовать правильно соленый хэш.
В таком случае, если PIN-код состоит из 5 цифр, он слишком короткий для защиты хэшем. Существуют радужные таблицы (или даже поиск в Google), которые позволят кому-то получить пароль обратно, если он узнает хэш.
Имейте в виду, что злоумышленник с 3.000 попытки могут успешно заблокировать 1.000 счетов в течение нескольких минут. Другое дело, что он может изменить шансы успешного входа в систему, пробуя тысячи разных аккаунтов в день. Это OpenID не вариант?
Обновление
Просто немного вдохновения о 5-значный вещь. Если 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
По этой логике, если 5 цифр легче запомнить, чем 8 символов, но содержать достаточную энтропию, то одну цифру и три без учета регистра букв должно быть еще проще!
10**5 = 100,000
26**3 * 10 = 175,760
Сейчас только четыре маленьких героев, пока они передают больше энтропия!
Может быть, я'я просто использовать мои инициалы следуют цифры 1 . . .
Я'м не то, что'ы доказали кроме того, что там'ы большой неоднозначное серой зоне между доведенной до абсурда и сарказма.
Я до сих пор не'т понять, почему люди ограничивают длину пароля. Не'т это будет легче для меня, чтобы запомнить предложение или фразу? Например, я хочу, чтобы мой пароль, чтобы быть "Это мое и StackOverflow пароль в
". Я бы некоторые серьезные проблемы с памятью, если я забыл, что. Это's длина составляет 34 символа, а только использует алфавит из 27 персонажей, но все же представляется, практически невозможно переломить хэш (4,6 х 10<суп>48</суп> возможных перестановок).
В сочетании с вашими идеями о том, что "Атака" и правильного соления/хеширования методы, это было бы идеальным решением, на мой взгляд.
Остерегайтесь сессии-обращение
Я Дон'т слишком много знаю о работе сессии, но, как я знаю, он большую часть времени сделал через куки. Когда у вас есть схема как у тебя, надо писать ложные потуги в базу данных или в специальные файлы на своем сервере, так как вы можете'т полагаться на сеанс обработки (в вашем описании это звучит немного, как вы только можете "провести сеанс", чтобы у всех правда...) ... с тех пор сессий через интернет, являются очень уязвимыми. Это просто конструкция из куки (которые могут быть удалены) и/или названия страницы (те, также может быть заражена). Единственное, что вы можете положиться, является то, что пользователь по-прежнему занимает сессии-вы можете'т действительно определить ли некоторые (seamingly) новое подключение не старого пользователя ...
Специально, это не имеет никакого смысла, чтобы differenciate между "у пользователей до сих пор сессия" и "пользователем сессии" (Ваш пункт 7) это всего лишь очень маленьким разницу, а также может стать безопасность отверстие.
Воспоминания-это на самом деле не легче
Можно также сказать, что вспоминая 5 цифры более легче. Что может быть правильным для вашей кредитной карты или банковских карт (в Германии, у нас есть 4-значный пин) код безопасности, но для сайтов, у вас всегда есть проблема, что те многие сайты имеют пароли. Вспомнить десятки 5 значных чисел так же трудно, как много паролей.
Лучше всего использовать пароли с солеными хэшами. Соль предотвращает большинство радужных атак, и пароль гораздо сложнее перебрать. Даже при атаке по словарю вы с большей вероятностью получите более быстрое попадание на 5-значный пин-код, чем на пароль аналогичной длины.
Настоящая проблема? Люди.
Я знаю, что школьный округ с 4 пароли: 1111, 2222, 3333 и 4444. Почему? Пользователи собрались вместе и согласились на это, чтобы они всегда могли попасть в, когда сотрудник заболел и остался дома. Слишком много боли, чтобы попасть в запертую деньги на обед компьютере, когда работник обед был болен.
Ах да, я видел на компьютере обед без присмотра много раз. И, да, вы можете попросить вашего баланса превращены в наличные деньги в любое время.
Пользователи сошли с ума.
Я думаю, что это'd быть легче запомнить, что "фраз победить любой день штырит!", который будет держать атаки грубой силы на что-то вроде 400 триллионов лет.
В прошлом я предлагал схему, подобную вашей, потому что видел много случаев, когда пользователи просто записывали пароли на липкой записке рядом с монитором, ссылаясь на то, что их слишком сложно запомнить. Я утверждал, что пароли не имеют большого значения, потому что хакер, скорее всего, найдет другие дыры в системе, будь то через приложение или просто с помощью небольшой социальной инженерии.
Я думаю, что некоторым людям, особенно техническим менеджерам, которые не совсем понимают, о чем вы говорите, нравится ощущение безопасности. Большой сложный пароль кажется надежным. Это как гарантия на коробке, она заставляет вас чувствовать себя хорошо. Как зубная фея
"Томми: Откуда ты знаешь, что зубная фея - это не какой-то сумасшедший нюхач клея. 'Строю модели самолетов, ' говорит он им. Ну, я на это не куплюсь. Он пробирается в ваш дом один раз, и это все, что нужно. Следующее, что вы узнаете, это то, что у вас пропали деньги из ящика комода, а ваша дочь залетела"
В конечном счете, такой простой пароль, как пин-код, скорее всего, будет взломан или угадан с помощью обычных комбинаций, и это не дает ощущения безопасности. Пин-код в сочетании с RSA SecurId - это то, на чем мы все смогли сойтись.
Штыри против пароли, пароли выиграть, не идеальный, но с сильной политикой, гораздо лучше, чем штыри.
А кто сказал, Многие люди не'т писать свои контакты на заметки, ее легче будет запомнить слово, сочетание, чем 5-значный номер, лично я помню цифры простой, и таким образом мои пароли более чем числовые буквенные.
Как таковой, опираясь на блокировка для безопасности имеет неудачный опыт пользователей и приведет к атакующим замок из нескольких учетных записей, ведущих к неудобства для реальных пользователей. Вместо того, чтобы использовать сильные пароли с соленый хэш, который труднее сломать, используя грубую силу и не восприимчивы к атакам радужную таблицу, если выбор стоит между ПИН и пароль. Если выбор между парольной фразы, пароль и ПИН-код. Моя рекомендация состоит в том, чтобы пойти с паролем, затем пароль, а затем закрепить в порядке убывания предпочтений. Парольную фразу (>10 символов) обычно более безопасно, чем пароль(от 6 до 8 символов), но не'т предоставить большой опыт, как пользователь должен ввести парольную фразу (>10 символов) каждый раз !! Сделать выбор, исходя из того, насколько чувствительны данные и хороший опыт пользователя, которого вы хотите обеспечить. Минуточку.. исследуйте новые области пароль менее аутентификации с использованием мобильного устройства в качестве аутентификатора.
Другим фактором является легкость входа. ПИН-код-это удобно для быстрого ввода на цифровой клавиатуре, как вы идете на большой сложности простоты входа падает. Легкость зависит от устройства. На стандартной клавиатуре с сенсорным ввода можно ввести символы и легко УНЦ. На смартфоне это я найти его трудно ввести строчные буквы надежную и символы являются трудным и медленным, чтобы войти, потому что клавиатура меньше. Числовой PIN-код быстро, чтобы войти, и я помню и легко войти в длинную последовательность цифр. Человек-наблюдатель будет легче захватить пароль, если запись идет медленно и использует необычные движения, которые отдать то, что вводится.
Короче нужно учитывать не только сложность пароля и как она хранится, но и легкостью держать ее в тайне и удобство надевания.
Я также экспериментировал с булавки и пароли. Это зависит от общей безопасности приложение, которое вы пытаетесь построить, но пароли обычно выиграть каждый раз, если вы включите проверку пароля. Я понимаю, что хорошую фразу, которая является по меньшей мере 14+ символов может быть даже лучше, чем на "Типичный" и пароль. Это позволяет людям типа в том, что они могут легко запомнить, но кое-что может быть труднее повторить в атаку. Просто только чистое количество символов делает его трудно взломать.
Если вы совместили пароль с блокировки подход, вы можете иметь более безопасную систему.