Почему веб-приложения настаивают на определении строгих правил паролей?

Вы все сталкивались с различными веб-сайтами, которые заставляют вас иметь пароль длиной 6 символов, должен иметь 1 цифру и должен рифмоваться со словом «раздражающий».

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

Кажется, что есть более важные вещи, о которых нужно беспокоиться с точки зрения безопасности, если вы беспокоитесь о том, насколько сложен пароль пользователя. Если кто-то действительно может получить этот пароль, то у вас явно есть более серьезные проблемы, о которых нужно беспокоиться. Внесите свой вклад и заблокируйте свою часть системы, прежде чем полагаться на пользователя, который будет беспокоиться о ВАШЕЙ безопасности.

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

Некоторые идеи: засолка,...


person Joe Phillips    schedule 09.01.2009    source источник
comment
Потому что пользователи тупые и выбирают password1 в качестве своего пароля.   -  person Robert C. Barth    schedule 09.01.2009
comment
Я бы проголосовал за этот комментарий, если бы мог. Это единственная причина, по которой в наших системах есть правила для паролей.   -  person Electrons_Ahoy    schedule 09.01.2009
comment
Что меня сводит с ума, так это сайты, которые не принимают мой надежный пароль. Пожалуйста, только цифры и буквы. Аргх.   -  person Sam    schedule 23.01.2009
comment
@Robert Они, вероятно, выбирают пароль1, потому что вынуждены менять его каждые 2 месяца и вынуждены использовать нелепые правила для создания пароля.   -  person Joe Phillips    schedule 31.08.2010


Ответы (6)


Почти каждый сайт будет солить и шифровать ваш пароль независимо от того, что вы выберете. Проблема не в устаревшем коде, безопасности базы данных на стороне сервера или чем-то подобном, в большинстве случаев разработчики позаботятся об этом. Проблема в том, что тупые пользователи отправляют просроченные пароли, которые довольно легко взломать. Смысл правил в том, чтобы ЗАСТАВИТЬ вас не выбирать слишком глупый пароль.

Вот реферальная ссылка. http://www.codinghorror.com/blog/archives/001206.html

person Community    schedule 09.01.2009
comment
Я понимаю причины, но действительно ли это необходимо? Говорить, что ваш пароль должен состоять из 6+ символов, кажется мне хорошим, если вы реализуете систему, не позволяющую злоумышленникам или взломщикам словаря легко пробовать каждый пароль. - person Joe Phillips; 09.01.2009
comment
FWIW, я очень сомневаюсь, что почти каждый сайт правильно солирует / шифрует сохраненные пароли ... остается удивительное (ошеломляющее?) отсутствие понимания безопасности у типичного разработчика веб-приложений. Например, сколько времени потребовалось Amazon, чтобы дать вам возможность не хранить информацию о вашей CC? - person Lawrence Dol; 09.01.2009
comment
@Software Monkey, тогда длинный пароль точно никого не спасет. - person Joe Phillips; 09.01.2009
comment
@Software Monkey: Я бы сказал, что непонимание безопасности у типичного [веб-разработчика] да, ошеломляет, но удивляет? Нет. Я не пытаюсь открыть, что большинство программистов глупы, особенно здесь обсуждаются веб-разработчики, но хорошая безопасность — сложная тема, даже для лучших из нас. - person P Daddy; 09.01.2009
comment
Дело в том, что на asp.net переворачивание соления/хэширования является ВСТРОЕННЫМ. Люди до сих пор не используют его. Это так грустно. В одном месте у меня был босс, настаивающий на том, чтобы пароли не шифровались/хэшировались. Я такой: чтоааааааа? Орехи. Не всегда виноват разработчик. - person Robert C. Barth; 11.01.2009
comment
Если используются правильные методы соления и хэширования, то почему имеет значение, какой пароль использует пользователь? Если хакер может перебирать только несколько паролей в минуту, то о переборе не может быть и речи. Я до сих пор не уверен, что простой пароль — самое слабое звено. - person Joe Phillips; 31.08.2010

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

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

person Charlie Martin    schedule 09.01.2009

Используйте Кипасс

http://keepass.info/

Это наверняка сведет к минимуму хлопоты.

person Otávio Décio    schedule 09.01.2009
comment
Проблема с этим, и с которой я сталкиваюсь прямо сейчас, заключается в том, что я работаю на нескольких машинах, поэтому кажется, что это может в конечном итоге потребовать больше работы, чем просто запоминание или запись паролей. - person Joe Phillips; 09.01.2009
comment
Я использую KeePass, и я согласен - меня поймали, потому что мой пароль OpenID сложный, и я не совсем правильно понял его на нашем ноутбуке... пришлось бежать вниз, запускать рабочий стол, искать пароль... . так близко! - person Lawrence Dol; 09.01.2009
comment
Используйте KeePass в сочетании с Dropbox, чтобы они были на всех ваших компьютерах и всегда синхронизировались. Обязательно используйте файл закрытого ключа на своих компьютерах, чтобы он был более безопасным и не зависел от пароля от самого KeyPass. - person Turnkey; 09.01.2009
comment
stackoverflow.com/questions/310929/ - person P Daddy; 09.01.2009

Хорошо, вот и вся история.

Прежде всего, давайте определим меру «хорошего качества» схемы. В случае с паролями и т. п. мерой является среднее количество попыток, которое требуется для атаки методом грубой силы, чтобы получить доступ.

Допустим, ваши пароли взяты из алфавита S с n символами, а длина пароля составляет k. Тогда общее количество возможных паролей равно nk.

Таким образом, в среднем атака грубой силы находит успешный пароль примерно через nk/2 или nk-1. испытания.

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

Для печатных символов, 8-символьных паролей и отсутствия других правил это число находится в районе 1008 или около 1016; это около 53 бит. Единственное, такие случайные пароли практически невозможно запомнить; они, как правило, заканчиваются на желтых стикерах и становятся уязвимыми для такого рода атак. Тем не менее, это предельный случай. Требуется около 100 триллионов попыток, чтобы угадать это методом грубой силы. Если каждая попытка стоит копейки, то теоретически ваши данные могут стоить до 1 триллиона долларов, прежде чем они будут стоить времени вора.

С другой стороны, общеупотребительных словарных слов всего около 50 000. Это около 16 бит, или грубой силой требуется около 25 000 попыток. Учтите, что каждая попытка стоит копейки: тогда ваши данные не должны стоить больше 250 долларов.

Оба они являются приложениями правила

R = PH

где R — риск, P — вероятность того, что произойдет что-то плохое, а H (опасность) это цена случившегося плохого.

Теперь пенни за попытку слишком дорого, но теперь у вас есть необходимые инструменты. Выясните, сколько стоят данные, и вы можете использовать этот метод, чтобы решить, насколько обширный набор правил вам нужен. (Но будьте осторожны, так как если вы делаете правила слишком строгими, то энтропия набора допустимых паролей становится малой, пока вы не дойдете до старой шутки, что после долгих размышлений Служба безопасности определила лучший пароль из всех — '*8h% Jd!', так что теперь все пользователи начнут использовать этот пароль.)

person Charlie Martin    schedule 10.01.2009

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

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

Что веб-сайт может сделать, так это разрешить все виды надежных паролей. Я ненавижу сайты, где я хочу использовать надежные пароли (обычно финансовые или медицинские), которые имеют такие правила, как «без специальных символов». (Конечно, я не люблю повторно использовать надежные пароли; я не хочу, чтобы кто-либо, взломавший мою систему безопасности HMO, мог свободно делать заказы с моей учетной записи Barnes & Noble.)

Вероятно, это не тот ответ, который вам нужен, но у плохих парней есть возможности, которые превзойдут стандартную безопасность, которая удобна большинству людей.

person David Thornley    schedule 23.01.2009
comment
1. Взломщик должен будет получить хэши, что обычно оказывается сложной задачей. 2. Некоторые радужные таблицы позволяют находить пароли длиной 60 символов всех типов. Я думаю, что использование пользователем сложного пароля — самый слабый способ усилить безопасность IMO. - person Joe Phillips; 24.01.2009

Keepass также имеет то преимущество, что он будет запускаться напрямую (например, даже не нужно его устанавливать) с USB-накопителя в большинстве случаев в Windows. Поместите и Keepass, и файл базы данных на USB-ключ, и у вас будет быстрая и простая переносимая база данных паролей. Убедитесь, что вы защищаете Keepass с помощью хорошего надежного пароля, хотя, как если бы вы потеряли свой USB-накопитель, вы не хотите, чтобы все и каждый попадали в вашу базу данных паролей.

person Jayden    schedule 09.01.2009