Замечательно, просто прелестно. От это я понимаю, работа на большого брата. Слов нет, одни эмоции. Одно радйет, что паранойя меня бережет. На каждую учетку новый пароль. Пароль в базу, базу на флешку… флешку сжечь.
Изначально фраза звучала двусмысленно: «Многие уже, наверное, знают о том, что в ночь с 21 по 22 марта сайт free-lance.ru был подвержен DDoS-атаке. Есть мнение, что в результате «утекла» вся пользовательская база вместе с логинами/паролями».
На самом деле это и есть первая, потому что сама по себе утечка паролей с фриланса нас, грубо говоря, мало касается. А вот тот факт, что пароли могут совпадать (и, я уверен, у многих совпадают), озвучен вполне доходчиво.
Человек, который хотя бы попытается реализовать подобную систему, достоин хорошего подзатыльника как минимум. А тот, который реализует — недельных пыток щекоткой.
А если серьезно, то жестко решать за пользователя, какой у него будет пароль, не давая при этом его сменить, — крайняя степень невежества. Такое допустимо в исключительных случаях.
«но мы не сможем его полноценно защитить, если пользователь этому препятствует, устанавливая пароль вида «123456» или «qwerty»»
Препятствуйте пользователю устанавливать такие пароли ;)
Уже препятствуем. Однако мы не можем предусмотреть все возможные варианты глупостей. Кроме того, у пользователя своя голова на плечах, и в идеале она должна работать без нашей помощи :)
Неа. Даже если они одинаковые были — не сойдется. Они ведь находились в разных местах. Hash(«ABC»)!=Hash(«CAB») для любой более-менее адекватной хеш-функции.
Не факт — положение цифр может быть и одинаковым, если учитывать, что мы живём в многомерном пространстве. А собственно порядок цифр в обоих случаях мог совпадать. Мыслям тоже свойственны колизии. Например, если попросить вас закрыть глаза и подумать о инструменте, то большая вероятность что вы подумаете о красном молотке. :)
Хм… я почему-то сначала о скрипке подумал, потом о инструментальном профилировании в Visual Studio, потом прочитал о молотке и вспомнил что еще и такие инструменты бывают :)
А о порядке — это да, я ошибся. Если в базе данных мира эти два пароля шли подряд без разделительных байтов и цифры были убраны в конце одного и добавлены в начале другого пароля, то да, сойдется.
На самом деле есть такой прикол — там правда, нужно подготовительную работу провести. В конце концов потом предложиьт подумать об инструменте. Я первый раз, когда читал — подумал, о чём-то другом, а потом через год где-то забыл уже об этом «тесте» проходил его снова и… подумал о красном молотке. :)
Я не минусовал, но объясню: часто приходится регаться на разных рандомных сайтах, для галочки.
На этот случай есть дефолтовый лёгкий пароль.
Кой-то чёрт дёрнул меня когла-то зарегать себе аккаунт на фрилансру, блин, теперь придётся поменять пароль в паре мест, где аккаунт мне стал более-менее дорог.
Да, я прекрасно понимаю когда для всяких одноразовых сайтов используется один и тот же пароль, сохранять или запоминать разные пароли для сотен сайтов — бредово.
Но аккаунты на хабре и фрилансе я бы к обычным не отнес (первый — в связи с нелегкодоступностью, второй — так как обычно это все таки бизнес, какой-никакой)
Одинаковые пароли на разные сервисы?! Это надо исключительно доверять абсолютно всем сервисам, где зарегистрирован и верить, что ни один из них не провтыкает твой пароль и и не использует его в корыстных целях. Я как-то себе такого пофигизма позволить не могу — во многих ведь областях деньги крутятся. А Вы как?
В используемых мной чаще 6.
Вполне достаточно для случайной смеси цифр и букв.
Для чего-нибудь более серьезного, где аккаунт ну очень важен — придумываю сам.
А храню пароли очень просто — это делает за меня браузер. Пусть это и не очень секурно, зато без заморочек.
Насколько я понимаю, подобные случаи — хорошая иллюстрация, почему лучше хранить «соленые» хэши паролей (т.е. пару salt, md5(salt + passwd) вместо просто md5(passwd)).
Вихрь Мерсенна (Mersenne twister) — это генератор псевдослучайных чисел (ГПСЧ), разработанный в 1997 японскими учёными Макото Мацумото (松本 眞) и Такудзи Нисимура (西村 拓士).… этот генератор не является криптостойким, что ограничивает его использование в криптографии.
… Вихрь Мерсенна реализован в библиотеке gLib и стандартных библиотеках для PHP, Python и Руби.
Вообще, очень хороший вариант иметь соль в коде. При утечки БД, расшифровка паролей стновится очень тяжелой задачей.
Случайная соль для каждого юзера… одно другому не мешает, можете почитать комментарии ниже :-)
Так соль должна быть случайная для каждого пароля.
Так что взломщику для взлома пароля будет требоваться не просто база md5 от известных паролей, а база md5 от известных паролей для всех возможных солей — а это будут на порядок большие объемы данных (в зависимости от битности соли).
Ну как — очень просто. В базе лежат тройки:
user salt md5(salt+passwd)
соответсвенно если какой-то user ввел пароль, то берем salt из таблички, солим введенный пользователем пароль, берем md5 и сравниваем со значением в табличке.
Не вижу ничего плохого в том, чтобы прятать соль в базе. Если соль содержит в себе хоть несколько символов (например 3-4), то тогда размер базы разных md5(salt+passwd) для взломщика будет настолько чрезмерным, что смысла взламывать не будет.
почему это менее секьюрно? Если соль хранится в базе то это не усложняет «перебор», а доступные по размерам hdd rainbow расчитываются видеокартами за дни. соль в базе сегодня почти бесмысленна. функция генерирующая соль по user_id лучше, т.к. можно иметь доступ к базе и не иметь доступа к исходникам.
Вы будете спорить с тем, что user_id менее случаен чем соль?..
Про fixed_salt в сорцах можно согласиться. Кстати, я бы предложил делать hash(peruser_salt + password + fixed_salt), т.е. fixed_salt ставить на последнее место. Почему? Хэши обычно проходят по строке в прямом порядке, т.е. для всех строк после прохода fixed_salt состояние будет одинаковым. Читал про так называемые атаки «с общим префиксом»…
Ну, если у атакующего есть вся база данных, то user_id и «случайная» соль, хранящаяся в этой же базе, одинаково «случайны», так сказать :)
А вообще я и не собирался ни с чем спорить — возможно, Вы меня просто где-то не так поняли. Ничего плохого в случайно соли, естественно, нет, вот только если она утекает вместе с хэшами (и известно, как она используется), то и толку с неё я особо не вижу.
То, что вы не видите с неё толку — не говорит о том, что его нет. Хотя, возможно, вы знаете что-то, чего не знаю я про эту часть современной прикладной криптографии, например, какие-то конкретные цифры эффективности посола паролей относительно текущих вычислительных мощностей.
Вот поэтому я и говорю, что «я не вижу», а не «его нет», обозначая, что это моё ощущение, а не строгое утверждение, и рассчитывая на то, что меня поправят, если я неправ, а не попросят его доказать :)
Э-эх… Если бы везде был OpenID, у меня бы под клавиатурой не было записан 130 паролей от «не важных» сайтов. :-)
Ну и, пожалуй, своему OpenID провайдеру я бы не доверил доступ на free-lance.ru (и любой другой сервис, где есть данные моей кредитной карты, какие-либо счета и т.п.).
Извиняюсь за беспокойство, но уже минут 20 не могу сменить пароль. При каждой попытке выдается сообщение об ошибке: «Пустоту сохранить невозможно!», хотя, я там все нужные поля заполняю.
И еще, я не специалист в этом, но мне кажется, что URI вида
«http://username.habrahabr.ru/ajax/users/settings/?userdata%5Bpassword_old%5D=йцукенqwerty&userdata%5Bpassword%5D=qwerty&userdata%5Bpassword_repeat%5D=qwerty» не совсем безопасны… Но, если я не прав, это не странно, ведь, я не специалист.
то ли лыжи не едут, то ли я такой дурак — надо автоматически генерировать пароль и высылать пользователю на ящик, а в таких случаях — принудительно повторять операцию
Внимание! Пароли!