Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

Защищаем данные односторонним хэшем

Данный сценарий осуществляет одностороннюю трансформацию данных- другими словами, вы можете сделать хэш какого-нибудь пароля, но никто никогда не сможет расшифровать его и восстановить исходный пароль. Для чего это нужно? Для хранения паролей Администратор не должен знать пароли пользователей, пароль пользователя должен знать только пользователь. Такая модель хранения паролей на протяжении многих лет используется в Unix.

Одностороннее шифрование паролей работает, как показано ниже:

1. Когда пользователь или администратор создает или изменяет пароль пользователя, система хэширует пароль и сохраняет результат. Система отклоняет незашифрованные пароли.

2. Когда пользователь входит в систему, система снова хэширует введенный пароль.

3. Система отвергает незашифрованный пароль.

4. Только что созданный хэш пароля сравнивается с ранее сохраненным хэшем.

5. Если хэши совпадают, система предоставляет доступ.

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

Шифрование против хэширования

Выражаясь технически, хэширование - это не шифрование. Хэш отличается от шифрования следующим:

• В отличие от шифрования, данные не могут быть дешифрованы.

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

function hash_ish($string)   { return md5($string);
}
Функция md5 () возвращает 32-символьную шестнадцатеричную строку, основанную на алгоритме RSA Data Security Inc. Message-Digest Algorithm (он также известен как MD5). Эту 32-символьную строку можно использовать в вашей базе данных, сравнивать с другими М05-строками и выполнять другие действия.

Изучаем сценарий

Фактически невозможно расшифровать М05-данные. Это очень сложно. Однако вы все еще нуждаетесь в хорошем пароле, поскольку очень просто сделать хэши для всех словарных слов. В Интернете можно найти онлайн-словари, где вы можете ввести 06d80eb0c50b49a509b49f2424e8c805 и по-лучить результат «dog». Однако даже при том, что MD5 технически невозможно расшифровать, он все еще уязвим, если кто-то получит вашу базу данных с паролями, поскольку злоумышленник будет консультироваться с MDS-словарем. В ваших интересах создавать пароли длиной минимум шесть символов и содержащие не только буквы, но и числа. Также убедитесь, что вы не используете в качестве пароля словарное слово.

 
Предыдущая   На главную   Следующая