Отправляет email-рассылки с помощью сервиса Sendsay

Килограмм килобайтов

  Все выпуски  

Килограмм килобайтов


Килограмм килобайтов

Сайт рассылки: Smarty IT Выпуск №54, 2009-12-26
Блог рассылки в Живом Журнале
Статьи
 
СУБД Oracle
Общие вопросы программирования
WEB-программирование
Java-программирование

Здравствуйте, уважаемые подписчики.

Поздравляю вас с Новым Годом и Рождеством.
Желаю успехов и, самое главное, здоровья.
В новом году я планирую продолжать выпускать рассылку. Основными темами будут: Oracle и PHP, немного MySQL и Java.

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

v:1.0 2009.12.26

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

------------------------------------------------------

Примеры использования

MD5 позволяет получать относительно надёжный идентификатор для блока данных. Такое свойство алгоритма широко применяется в разных областях. Оно позволяет искать дублирующиеся файлы на компьютере, сравнивая MD5 файлов, а не их содержимое. Как пример, dupliFinder - графическая программа под Windows и Linux. Такой же поиск может работать и в интернете.

С помощью MD5 проверяют целостность скачанных файлов - так, некоторые программы идут вместе со значением хеша. Например, диски для инсталляции.

MD5 используется для хеширования паролей. В системе UNIX каждый пользователь имеет свой пароль и его знает только пользователь. Для защиты паролей используется хеширование. Получить настоящий пароль можно только полным перебором. При появлении UNIX единственным способом хеширования был DES (Data Encryption Standard), но им могли пользоваться только жители США, потому что исходные коды DES нельзя было вывозить из страны. Во FreeBSD решили эту проблему. Пользователи США могли использовать библиотеку DES, а остальные пользователи имеют метод, разрешённый для экспорта. Поэтому в FreeBSD стали использовать MD5 по умолчанию.

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

  1. Пароли хранятся как есть. При взломе такой базы все пароли станут известны.
  2. Хранятся только хеши паролей (с помощью MD5, SHA). Найти пароли можно только полным перебором. Но сейчас такая задача решается за доли секунды. Пароль из таблицы был найден всего за 0,036059 сек.
  3. Хранятся хеши паролей и несколько случайных символов. К каждому паролю добавляется несколько случайных символов (их ещё называют "salt" или "соль") и результат ещё раз хешируется. Например, md5(md5(pass)+word). Найти пароль с помощью таблиц таким методом не получится.
Пример базы данных
способ id login password
1 5 anton mydata
2 5 anton md5(mydata)
3 5 anton md5(md5(mydata)+word) и word

------------------------------------------------------

От себя хочу добавить, что имеет смысл к хешированию по MD5 добавить еще и хеширование по sha-1. Т.е. пример приведенный выше примет такой вид: sha-1(md5(md5(mydata)+word)).
На практике часто имеет смысл подмешать в эту формулу еще имя пользователя.

И пара слов о практическом применении хеширования.
В php и MySQL есть встроенные функции md5('String') и sha1('String').
На php предложенная формула будет выглядеть так:
sha1(md5(md5('mydata').'word')).

Петрелевич Сергей
petrelevich@yandex.ru
www.SmartyIT.ru

Обсудить статью в ЖЖ

Ведущий рассылки: Петрелевич Сергей


В избранное