Аутентификация
Кроме сохранения информации, у современной криптографии есть еще одна важная область применения — проверка подлинности. Например, если пользователь ошибся при вводе пароля, неплохо сообщить ему об ошибке, а после пяти неудачных попыток — заблокировать содержимое архива. Конечно, эта защита от подбора не сработает, если злоумышленник сам реализует алгоритм дешифровки, в обход стандартной процедуры. Самый простой способ аутентификации изучают еще в школе — пользователю выдается ключ, которым кодируется определенное слово (например, «угадал»). Конечно, с точки зрения криптоаналитической стойкости такой способ не выдерживает никакой критики. Текст сообщения всегда известен (скорее всего, жестко зашит в программе), и восстановить необходимый пароль будет совсем не сложно. На сегодняшний день чаще всего применяют односторонние преобразования — так называемые хэширующие функции. Достаточно «пропустить» пароль через это преобразование — и мы получаем последовательность, которая будет однозначно идентифицировать ключ. Так как функция однонаправленна, то «размотать» ее обратно не представляется возможным. Конечно, в таком подходе есть несколько уязвимых мест. Во-первых, алгоритм может только казаться однонаправленным. В большинстве случаев преобразующая функция — интегро-дифференциальная, а методы решения подобных уравнений продолжают совершенствоваться. Еще одна ахиллесова пята односторонних функций — возможность так называемых «коллизий» или совпадений результатов работы алгоритмов при разных изначальных ключах. Это не слишком страшно, если мы проверяем правильность пароля для расшифровки — в крайнем случае, злоумышленник получит в свое распоряжение абсолютно неудобоваримый текст и умрет от старости, пытаясь его разгадать. Хуже, если аутентификация проверяет права пользователя на вход в систему или на открытие почтового ящика.
|