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

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

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

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

32
задан Chris 26 November 2019 в 13:33
поделиться

6 ответов

При выборе метода шифрования для системы входа в систему затем, скорость не является другом, у Jeff был to-frow с Thomas Ptacek о паролях и , заключение состояло в том, что необходимо использовать самое медленное, большая часть метода надежного шифрования, которому можно предоставить.

Из блога Thomas Ptacek:
Скорость точно, что Вы don’t хотят в функции хэша пароля.

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

Возрастающие взломщики don’t предварительно вычисляют все возможные взломанные пароли. Они рассматривают каждый хэш пароля индивидуально, и они подают свой словарь через функцию хэша пароля тем же путем, Ваша страница входа в систему PHP была бы. Взломщики таблицы Rainbow как Ophcrack используют пространство для нападения на пароли; возрастающие взломщики как John Превосходный человек, Трещина и LC5 работают со временем: статистические данные и вычисляют.

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

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

32
ответ дан 27 November 2019 в 20:29
поделиться

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

От моего чтения, bcrypt специально предназначен для хеширования безопасного пароля. Это основано на шифре, и существуют многие реализация.

Для 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

15
ответ дан 27 November 2019 в 20:29
поделиться

Нужно указать, что Вы не хотите к , шифруют пароль, Вы хотите к [1 112] хеш это.

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

<час>

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

  • SHA-256

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

  • пароль: password1
  • соль: PasswordSaltDesignedForThisQuestion

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

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
8
ответ дан 27 November 2019 в 20:29
поделиться

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

7
ответ дан 27 November 2019 в 20:29
поделиться

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

Это не должно быть самым безопасным, я не ввожу в заблуждение для банка (прямо сейчас), но я, конечно НЕ БУДУ хранить пароли как простой текст.

1
ответ дан 27 November 2019 в 20:29
поделиться

Используйте эту функцию при вставке в базу данных Password_harsh ($password, PASSWORD_DEFAULT); И при выборе из базы данных Вы сравниваете пароль, который Вы вставляете с тем в базу данных с помощью функции, если (password_verify ($password, $databasePassword)) {

}else{
echo "password not correct";
}

Это будет резкий пароль в безопасном формате

0
ответ дан 27 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: