Хеширование и цифровые подписи

Мини-картинка

Одностороннее хеширование

Хешфункция реализует специальный алгоритм преобразования данных. Ее результатом является хешкод. Одностороннее хеширование — это математическое преобразование, обладающее следующими свойствами:

ш на вход функции поступают данные переменного размера, а на выходе получается строка фиксированной длины (иногда называется дайджестом сообщения);

ш вычисление хешкода — легкая процедура;

ш определение исходных данных по имеющемуся хешкоду сопряжено с немалыми вычислительными трудностями;

ш невозможно найти два набора данных, которые при трансформации дадут одинаковый хешкод.

Идея заключается в том, чтобы создать для каждого файла или сообщения идентификационную метку, меняющуюся при модификации файла. Но в связи с тем, что средства хеширования свободно доступны, злоумышленник может поменять не только файл, но и хешкод, чтобы нельзя было обнаружить изменение. Есть ряд способов защиты от подобного жульничества. Один из них — вычислить хешкоды важных файлов в их исходном виде и сохранить их на внешнем носителе или в системе, недоступной злоумышленнику. Такой подход реализован в программах Bastille и Tripwire. Другой способ — вычислить хешкод и зашифровать его. Можно, к примеру, включить хешкод в цифровую подпись.

Одно из назначений хешфункций — гарантировать целостность данных. Об этом пойдет речь при описании программ Bastille и Tripwire. Другое назначение — аутентификация, о которой будет рассказываться при рассмотрении модулей РАМ и одноразовых паролей.

Имеется множество алгоритмов хеширования. Среди них назовем MD4, MD5, SHA1, являющийся частью более общей спецификации DSA (Digital Signature Algorithm — алгоритм создания цифровой подписи), и RIPEMD.

Пароли не шифруются, а хешируются

Мини-картинка

В Linux для хеширования применяется функция crypt (). Она реализует модифицированный алгоритм DES, в котором на вход поступает не более 64 бит данных (8 символов), а на выходе получается 104разрядный хешкод (13 символов, первые два из которых не являются частью хешкода). Эта функция является стандартным средством хеширования паролей. Тринадцатибайтовый пароль каждого пользователя хранится в файле /etc/shadow (или, если его нет, в файле /etc/passwd). Хешированные пароли часто называют зашифрованными, что подразумевает возможность их расшифровки. Однако по отношению к хешированному паролю это сделать чрезвычайно сложно (если вообще возможно), особенно в случае применения алгоритма MD5. На практике расшифровка вообще не выполняется. Когда пользователь вводит пароль, он хешируется функцией crypt (), а полученный хешкод сравнивается с содержимым соответствующего поля файла /etc/shadow. При совпадении пароль принимается.


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок