Новыми задачами криптографии в последнее время стали гарантирование целостности, аутентификация и обеспечение невозможности подделки авторства или отказа от него. Для их решения применяют механизмы хеширования и цифровой подписи.
Гарантирование целостности информации, т.е. фактически ее защита от модификации и подмены, реализуется путем хеширования. На вход криптографической хэш-функции поступает вся передаваемая информация, а на выходе получается комбинация фиксированной длины, которая будет претерпевать значительные изменения в случае, если в хешируемых данных хоть что-то изменится. На принимающей стороне повторяется хеширование полученной информации и сравниваются результаты. Если они совпадают, то информация считается не измененной в процессе доставки.
Простейшими видами хэш-функций в данном контексте являются широко применяемые в вычислительной технике контрольные суммы CRC16 и CRC32. За рубежом наиболее применяемыми в настоящее время хэш-функциями являются MD5 и SHA-1. В России применяются собственные алгоритмы: по ГОСТ 28147-89 в режиме имитовставки (см. выше), а также по ГОСТ Р 34.10-94 и пришедшего ему на смену ГОСТ Р 34.10-2001.
Аутентификация информации (невозможность подделки авторства) и невозможность отказа от авторства реализуются с использованием схемы с открытым ключом, либо хеширования с ключами и заключается в создании цифровой подписи. Отметим, что цифровая подпись одновременно обеспечивает и гарантию целостности информации.
Рассмотрим оба способа.
Исходными данными для цифровой подписи в случае применения схемы с открытым ключом является закрытый ключ отправителя и хэш передаваемой информации, речь о котором шла выше.
Отправитель шифрует хэш отправляемой информации своим закрытым ключом и направляет его вместе с информацией получателю (обычно в зашифрованном каким-либо способом виде). Использование в качестве шифруемых данных хэша в данном случае однозначно связывает информацию и цифровую подпись.
Получатель расшифровывает цифровую подпись открытым ключом отправителя. Вычисляет хэш-функцию от полученной информации и сравнивает оба значения. Их совпадение одновременно аутентифицирует и информацию, и отправителя.
Ведь в случае неавторизованного отправителя открытый ключ не подойдет для расшифрования хэш-функции. С другой стороны получатель не сможет подделать подпись, заявляя, что он получил какое-то нужное ему сообщение, поскольку он не знает секретного ключа отправителя. Отправитель также не сможет отказаться от авторства, поскольку успешное расшифрование хэша говорит об использовании именно его закрытого ключа при шифровании.
В случае применения хеширования с ключами решается только задача аутентификации отправителя и информации. Обеспечение невозможности отказа от авторства и присвоения авторства в данном случае не реализуется, поскольку используется общий секретный ключ, известный обоим абонентам.
Исходными данными здесь является сама информация и общий секретный ключ.
Информация хешируется с применением специальной процедуры, в результате чего значение хэша зависит от используемого ключа. На приемной стороне хеширование происходит снова и результаты сравниваются. Их совпадение говорит о том, что и информация не изменилась, и отправитель тот, за которого он себя выдает, поскольку секретный ключ известен только отправителю.
В качестве примеров вычисления цифровой подписи по схеме с открытым ключом можно привести рассмотренный выше алгоритм RSA, а также ГОСТ Р 34.10-94 и ГОСТ Р 34.10-2001.
Примерами выработки цифровой подписи с ключом являются режим выработки имитовставки по ГОСТ 28147-89, а также зарубежный стандарт вычисления аутентифицирующей комбинации Hash Message Authentication Codes (HMAC), использующий произвольные криптографические хэш-функции.