Шифрование паролей

голоса
27

Какой самый быстрый, но надежный способ для шифрования паролей в PHP (предпочтительно), и для которых когда-либо метод, который Вы выбираете, это портативный компьютер?

Другими словами, если я позже перенести свой сайт на другой сервер будет продолжать мои пароли работать?

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

Задан 03/08/2008 в 12:50
источник пользователем
На других языках...                            


7 ответов

голоса
29

Если вы выбираете метод шифрования для вашей системы авторизации , то скорость не ваш друг, Джефф был к-и-Frow с Томасом Ptacek о паролях и вывод в том , что вы должны использовать медленный, наиболее безопасный метод шифрования вы можете позволить себе ,

Из блога Томаса Ptáček в:
Скорость именно то , что вы не хотите в функции хэш пароля.

Современные схемы паролей атакованы с возрастающими крекерами пароля.

Возрастающие крекеры не предвычислять все возможные взломанные пароли. Они считают, что каждый хэш пароля по отдельности, и они питаются их словарем с помощью функции хэша пароля так же, как ваша страницы Войти PHP будет. Радужные столы крекеры как Ophcrack использовать пространство для атаки паролей; дополнительные крекеры, как Джон Потрошителя, Crack и Lc5 работа со временем: статистика и вычисления.

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

Чем лучше вы можете оптимизировать свой пароль хэш-функции, тем быстрее ваш пароль хэш-функция получает, тем слабее ваша схема. MD5 и SHA1, даже обычных блочных шифров, как DES, предназначены, чтобы быть быстрым. MD5, SHA1 и DES слабые хэши паролей. На современных процессорах, сырье криптографические строительные блоки, как DES и MD5 может быть bitsliced, векторизации и распараллелить, чтобы поиски пароля молниеносно. Game-за реализации FPGA стоят только сотни долларов.

Ответил 03/08/2008 в 13:48
источник пользователем

голоса
14

Я с Питером. Разработчик, кажется, не понимают пароли. Мы все забрать (и я виновен в этом тоже) MD5 или SHA1, потому что они быстро. Думая об этом ( "Потому что кто-то недавно указал мне на это), что не имеет никакого смысла. Мы должны выбирать алгоритм хэширования это глупо медленно. Я имею в виду, по шкале вещей, занятой сайт хеширования паролей Что? каждая 1/2 минуты? Кто заботится, если это займет 0,8 секунды против 0,03 сервера секунд мудро? Но что дополнительная медленность огромна, чтобы предотвратить все виды обычных бессловесных-forcish атак.

Из моего чтения, Bcrypt специально разработана для безопасного хэширования пароля. Он основан на Blowfish, и есть много реализации.

Для PHP, проверить PHPPass http://www.openwall.com/phpass/

Для тех , кто делает .NET, проверить BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Ответил 03/08/2008 в 14:48
источник пользователем

голоса
8

Следует отметить, что вы не хотите , чтобы зашифровать пароль, вы хотите , чтобы хэш его.

Зашифрованные пароли могут быть расшифрованы, позволить кому-то увидеть пароль. Хэш это односторонний операция настолько оригинальный пароль пользователя является (криптографическим) ушли.


Что же касается какого алгоритма вы должны выбрать - использовать в настоящее время принято стандартом один:

  • SHA-256

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

  • пароль: password1
  • поваренная соль: PasswordSaltDesignedForThisQuestion

Добавьте соль к паролю пользователя:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Ответил 17/09/2008 в 19:06
источник пользователем

голоса
7

Что бы вы ни делали, не написать свой собственный алгоритм шифрования. Делая это почти гарантия (если вы не криптограф), что будет ошибка в алгоритме, который будет делать это тривиально, чтобы взломать.

Ответил 17/09/2008 в 19:16
источник пользователем

голоса
2

Рассмотрим использование bcryptиспользуется во многих современных структур , как Laravel.

Ответил 16/07/2016 в 07:47
источник пользователем

голоса
2

Я не обязательно ищет самый быстрый, но хороший баланс, некоторые сервера, что этот код разрабатывается для довольно медленный, скрипт, который хэшей и хранит пароль берет 5-6 секунд, чтобы бежать, и я сузил его до хеширования (если комментарий хеширования вне он работает, в течение 1-2 секунд).

Он не должен быть самым безопасным, я не codding для банка (прямо сейчас) , но я , конечно , НЕ хранить пароли как обычный текст.

Ответил 05/08/2008 в 00:07
источник пользователем

голоса
0

password_hash ( string $password , int $algo [, array $options ] ), (PHP 5> = 5.5.0, PHP-7)

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

Ответил 18/05/2018 в 18:27
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more