Re: Хеширование паролей - как лучше и безопаснее это сделать Хм, я всегда думал, что если хакнули ваш код, то никто не будет дешифровать вашу БД, - просто внедрят одну строчку кода и получат все (или почти все) пароли за месяц-другой. 100% гарантию может дать только одно существо во Вселенной. Но я не знаю ни одно человека, кто получил такую гарантию. Цель любой защиты, это увеличение стоимости её преодоления до такой степени, что оно становится невыгодным. Остальное - от лукавого.
Re: Хеширование паролей - как лучше и безопаснее это сделать Зачем им ждать месяц-два, с риском, что закладку обнаружат, если можно в вашем случае первые словарные пароли получить уже через несколько минут? И в течении нескольких дней добить базу. Именно так. Вот вы это и не делаете. Т.е. из-за недальновидности, инертности или еще чего, не знаю, не делаете совершено банальнейших копеечных вещей, которые могут осложнить жизнь злоумышленникам очень прилично.
Re: Хеширование паролей - как лучше и безопаснее это сделать Да не стоит. Понятно, что MD5(string(4-8)) вскрывается легко простым перебором, об этом спору нет. Не стоит тратить время на это. Тут-то спор идёт не о том, что MD5 нельзя вскрыть принципиально, а о том, что MD5(string) достаточен для создания хеша паролей юзеров, чтобы хранить их в БД. Естественно, string должен быть достаточно сложен для этого. При этом аргумент противников MD5, что он быстро просчитывается, уже не катит. Второй аргумент, что если хакнут исходники, то получат алгоритм и быстренько просчитают MD5 по нему, уже более серьёзен. Как-то так...
Re: Хеширование паролей - как лучше и безопаснее это сделать У тя слишком крутая видюха просто =) У меня вот две в сумме даже 700 не вытянули.
Re: Хеширование паролей - как лучше и безопаснее это сделать Тема доставила! Приятно видеть как умные интеллигентные люди готовы убить друг друга и помочиться на труп. Ради Правды, конечно же.
Re: Хеширование паролей - как лучше и безопаснее это сделать Спор не порождает истины, но полезен для ума Добавлено спустя 15 минут 12 секунд: Re: Хеширование паролей - как лучше и безопаснее это сделать? Не совсем правильная аналогия. Скорее так: есть две двери - одна ведёт к коду, другая к БД. За второй (БД) дверью есть сейф (хеш-код), а ключ от этого сейфа лежит за первой дверью. Как-то так. Повторюсь, что если хакер получил доступ к коду, то он в любом случае получит то, за чем пришёл, тем или иным способом. Суть хранения хешей в БД в том, чтобы сильно осложнить получения паролей юзеров тому, кто стырил только БД. При получении доступа к исходникам, толку от них мало, каким бы крипто-алгоритмом их не создавали. п.с. Вообще, я далёк от хакерства и вполне могу не знать на сколько для них всё это сложно. Моё IMHO это просто опыт и знания разработки ПО.
Re: Хеширование паролей - как лучше и безопаснее это сделать Это ваше предположение. Закладки в коде легко находятся. И вот вам хеш $5$rounds=5000000$0123456789ABCDEF$IzlBiJZRhAnEbj7g9uwzTOKpFPkTCzCSSNfgi7/Hr/A Соль тут известна - 0123456789ABCDEF, пароль - 5 знаков A-Za-z0-9. Никаких подмешиваний и изменений исходного пароля. Попробуйте подберите. Добавлено спустя 6 минут 33 секунды: Re: Хеширование паролей - как лучше и безопаснее это сделать? Да лана, чо мелочится. Вот вам трехзначный(!) пароль $5$rounds=7000000$0123456789ABCDEF$IzVTeXkbiqiykCX01Xqp.fM.7421TMC32zlcuyqUryC Вперед, всего 3 знака.
Re: Хеширование паролей - как лучше и безопаснее это сделать Это для меня? Если да, то - не, я и простой MD5 вскрыть не могу, а уж тем более SHA256 с 5 млн. итераций. Я ж написал - я не хакер и далёк от них.
Re: Хеширование паролей - как лучше и безопаснее это сделать А чо вскрывать то? Простой перебор на PHP можете же написать? Проверять стандартно, как в документации Код (Text): if (crypt($test, '$5$rounds=7000000$0123456789ABCDEF$IzVTeXkbiqiykCX01Xqp.fM.7421TMC32zlcuyqUryC') === '$5$rounds=7000000$0123456789ABCDEF$IzVTeXkbiqiykCX01Xqp.fM.7421TMC32zlcuyqUryC') - совпало, в $test верный пароль Добавлено спустя 9 минут 15 секунд: Re: Хеширование паролей - как лучше и безопаснее это сделать? Ну если не хотите, я вам просто объясню фишку. Он считается 3 секунды. Трехзначный пароль A-Za-z0-9 - это 238 тыс. комбинаций. Это 8 дней. Трехзначный(!) пароль. Понятно, что процессоры не стоят на месте (хотя, последнее время, почти стоят), именно по-этому в crypt для blowfish и sha алгоритмов заложено масштабирование. Вот выше sha алгоритм, там rounds=7000000 - по сути затраты на вычисления. Я поставил 7 мил, поддерживается до 999 мил. Понятно, что пароли 123 уязвимы много сильнее. И в принципе если вы хотите подмешивать секретный ключ - ради бога. Чуть повысите безопасность, если сольют только базу. Чуть понизите совместимость, ибо чистый crypt - он у всех один, можно на одну базу паролей посадить несколько приложений не внося в них изменения. Ну это разработчику решать. Но лишь как второстипенная защита.
Re: Хеширование паролей - как лучше и безопаснее это сделать В PHP? Что-то не хочется, учитывая что этот crypt() делает ~1 млн. итераций в секунду. Добавлено спустя 4 минуты 22 секунды: Re: Хеширование паролей - как лучше и безопаснее это сделать? По сути, crypt() делает то же самое, о чём я писал выше - создаёт сложную string. Итерации это один из способов как её создать.
Re: Хеширование паролей - как лучше и безопаснее это сделать Разница лишь в том, что crypt ее никуда ничего прячет - вы хоть сейчас можете пойти и почитать исходники - что именно она делает. А вы пытаетесь во главу стола поставить именно скрытность.
Re: Хеширование паролей - как лучше и безопаснее это сделать Разница есть - при регистрации/логине ~1 чел/сек твой cript положит сервер.
Re: Хеширование паролей - как лучше и безопаснее это сделать Это ты так пошутил? Круто, чо Если у меня будет каждую секунду регистрироваться или даже регистрироваться + авторизоваться пользователь - у меня будет далеко не один сервер. Просто потому, что есть много куда более затратных вещей. И crypt будет все-равно будет меньше процента.
Re: Хеширование паролей - как лучше и безопаснее это сделать Да ничего крутого, - достаточно пары тысяч посетителей, которые вдруг решили залогинеться в течении часа. А пара тыс.посетителей в часы пик это даже не средний уровень. Зависит от. Но точно понятно, что твой crypt потребует отдельный сервер уже при 1 логине/сек в пиковые минуты. Иначе не сервер, а "черепаха".
Re: Хеширование паролей - как лучше и безопаснее это сделать ну это один поток на одно ядро. всё не так просто работает. Добавлено спустя 1 минуту 6 секунд: Re: Хеширование паролей - как лучше и безопаснее это сделать? мд5 плох тем, что его вроде как сводят к меньшему набору битов на перебор. что еще более ускоряет процесс.
Re: Хеширование паролей - как лучше и безопаснее это сделать Угу, делать им нехера было, вот они все побежали логинится Фантазер.
Re: Хеширование паролей - как лучше и безопаснее это сделать А вообще, кстати, такое чувство, что никто не пытался защищать трафик при авторизации. Я этим вопросом озадачивался однажды, когда в 2010 году делал для души аналог твиттера. Я использовал js-библиотеку md5 для хэширования пароля до отправки на сервер. Есть реализации и для blowfish. Это та ситуация, где md5 применительно к обычным паролям пользователей (буквы + цифры, 6-8 символов) сильно уязвим.
Re: Хеширование паролей - как лучше и безопаснее это сделать Да, действительно не всё так просто, crypt($test, '$5$rounds=7000000$0123456789ABCDEF$IzVTeXkbiqiykCX01Xqp.fM.7421TMC32zlcuyqUryC') ~6 секунд на поток на Core i7 3.4Gh, 8 потоков - 1.25 логинов/с на процессор. Добавлено спустя 7 минут 26 секунд: Re: Хеширование паролей - как лучше и безопаснее это сделать? Ты не понял. Если у тебя в сутки в среднем логинется 0.3 чел/сек (~25 тыс/сутки), то в часы пик будет в 3 раза больше. Я не могу сказать сколько должно быть зарегистрированных юзеров для 25 тыс.логинов в сутки, то это точно не крупный проект - там их заметно больше.
Re: Хеширование паролей - как лучше и безопаснее это сделать А вы не путаете логин и автологин по сессионной куке? Вы рассуждаете про такого сферического коня сами знаете в чем, что ясно дело всерьез с какими-то цифрами что-то доказывать... ну я точно не буду. Не нравится секунда - поставьте 0.5, или 0.2. На 0.2 обычный пятизначный пароль будет лет 5 подбираться. Я же вам общую идею показал, а дальше уже сами думайте - сколько процессора вы готовы отдать и сколько за будут эти пароли подбирать. Добавлено спустя 3 минуты 13 секунд: Re: Хеширование паролей - как лучше и безопаснее это сделать? Проблемы тут банальны. JS реализация - медленная. Значит серьезных расчетов не сделаешь, значит подбираться это будет быстро. В общем идея то хорошая, но много проще и эффективнее решается через https. Ну разве что денег на сертификат.