Наряду с конфиденциальностью не менее важной задачей является обеспечение целостности информации, другими словами, — неизменности ее в процессе передачи или хранении. Решение этой задачи предполагает разработку средств, позволяющих обнаруживать не столько случайные искажения (для этой цели вполне подходят методы теории кодирования с обнаружением и исправлением ошибок), сколько целенаправленное навязывание противником ложной информации. Для этого в передаваемую информацию вносится избыточность. Как правило, это достигается добавлением к сообщению некоторой проверочной комбинации, вычисляемой с помощью специального алгоритма и играющей роль контрольной суммы для проверки целостности полученного сообщения. Главное отличие такого метода от методов теории кодирования состоит в том, что алгоритм выработки проверочной комбинации является "криптографическим", то есть зависящим от секретного ключа. Без знания секретного ключа вероятность успешного навязывания противником искаженной или ложной информации мала. Такая вероятность служит мерой имитостойкости шифра, то есть способности самого шифра противостоять активным атакам со стороны противника.
Итак, для проверки целостности к сообщению М добавляется проверочная комбинация S, называемая кодом аутентификации сообщения (сокращенно – КАС) или имитовставкой. В этом случае по каналу связи передается пара С=(М,S). При получении сообщения М пользователь вычисляет значение проверочной комбинации и сравнивает его с полученным контрольным значением S. Несовпадение говорит о том, что данные были изменены.
Как правило, код аутентификации является значением некоторой (зависящей от секретного ключа) криптографической хэш-функции (так называется функция, принимающая значения некоторой фиксированной размерности) от данного сообщения: hk(M) = S. К кодам аутентификации предъявляются определенные требования. К ним относятся:
– невозможность вычисления значения hk(М) = S для заданного сообщения М без знания ключа k;
– невозможность подбора для заданного сообщения М с известным значением hk(M)=S другого сообщения m1 с известным значением hk(М1) = S1, без знания ключа k .
Первое требование направлено против создания поддельных (сфабрикованных) сообщений при атаках типа имитация; второе – против модификации передаваемых сообщений при атаках типа подмена.