Одна из возможностей пресечь атаку на протокол Диффи - Хеллмана, описанную в конце предыдущего параграфа, заключается в визировании сообщений. В этом случае обе стороны доподлинно знают, с кем ведут обмен сообщениями. Подписи — важнейший момент в криптографии с открытым ключом. Они были предложены Диффи и Хеллманом все в той же статье 1976 года, но первая практическая разработка подписи принадлежит Ривесту, Шамиру и Адле-ману. Движущая пружина подписей в криптографии с открытым ключом изображена на следующей схеме:
Криптографическая хэш-функция h — это функция, определенная на битовых строках произвольной длины со значениями в строках битов фиксированной длины. Ее значение часто называют хэш-кодом или хэш-значением. В информатике тоже используются своего рода хэш-функции, но важное отличие криптографических хэш-функций от стандартных состоит в том, что первые должны быть односторонними. Другими словами, должно быть невозможно в вычислительном отношении по элементу Y из множества значений хэш-функции подобрать такой х из области определения, при котором h(x) = Y. Другая характеризация односторонних хэш-функций — сказать о них, что они защищены от восстановления прообразов. Применение криптографических хэш-функций позволяет создать схему подписи RSA без восстановления сообщения, что намного эффективней для
Несколько хэш-функций находят широкое применение. Все они по своей природе итерационны. Назовем три из них: MD5, RIPEMD-160 и SHA-1. Алгоритм MD5 производит 128-битовые строки, в то время как значения RIPEMD-160 и SHA-1 имеют длину в 160 битов. Недавно национальный институт стандартов и технологий США предложил новые хэш-функции: SHA-256, SHA-384 и SHA-512, значения которых — 256-, 384- и 512-битовые строки соответственно. Все они — обобщение более раннего и простого алгоритма, который называется MD4. Семь основных алгоритмов семейства MD4. представлены следующим списком:
Хэш-функции можно строить с помощью n-битового блочного шифра
Есть несколько способов такого конструирования. Все они используют постоянное открытое начальное значение N. Некоторые схемы привлекают еще функцию g, переводящую n-битовые строки в ключи.
Мы уже рассказывали об одной из схем цифровой подписи, а именно о схеме RSA. Можно спросить: зачем нужны еще какие-то схемы подписей? Ответ разобьем на несколько утверждений:
- Что если кто-то вскроет алгоритм RSA или решит задачу разложения на множители?
- Алгоритм RSA неприменим в некоторых приложениях, поскольку генерирование подписи с его помощью — слишком дорогостоящая операция.
Множество вариантов схем подписей основывается на дискретных логарифмах. С практической точки зрения интересен алгоритм, носящий название подписи Шнорра. Расскажем об этом алгоритме в его оригинальном виде, оставив читателю разбираться самостоятельно с его обобщением на эллиптические кривые.