
УМК Компьютерные сети ч 1 (для студентов)3 / ЭЛЕКТРОННАЯ ЦИФРОВАЯ ПОДПИСЬ
.doc
ЭЛЕКТРОННАЯ ЦИФРОВАЯ ПОДПИСЬ
Применение криптографии с открытым ключом позволяет зашифровать сообщение, сделав его нечитаемым для всех, кому не известен закрытый ключ. Это решает проблему обмена ключами, поскольку знания только открытого ключа не достаточно для расшифровки сообщения. Но при этом у получателя сообщения нет возможности убедиться в том, что отправитель является тем, за кого себя выдает Так, если вы получите сообщение от Билла Гейтса (Bill Gates), вы скорее всего подумаете, что это чья-то шутка и адрес в письме фальшивый. Как доказать, что сообщение было действительно отправлено Биллом и получено в том же виде в каком его послал Билл?
Справиться с такой задачей помогают цифровые подписи (digital signature). Рассмотрим, что произойдет, если вы зашифруете сообщение своим секретным ключом, а не открытым ключом получателя. Поскольку секретный ключ известен только вам, после расшифровки сообщения вашим открытым ключом получатель сможет определить, что оно пришло от вас. Конечно же, это означает, что сообщение сможет расшифровать любой, располагающий копией вашего открытого ключа. Не забывайте о том, что пары из секретного и открытого ключей работают в обоих направлениях. Данные, зашифрованные при помощи одного ключа, поддаются расшифровке только посредством второго ключа.
Поэтому при наличии цифровой подписи обычно шифруется не все сообщение целиком, а только результат вычисления его хэш-функции. Хэш-функция дает строку данных, длина которой, как правило, намного меньше исходного сообщения (например, равна 160 бит). Как показано на рис. 9.1, результат хэш-функции, иногда называемый дайджестом сообщения (message digest), шифруется секретным ключом и пересылается вместе с сообщением. Пользователь может расшифровать результат хэш-функции и самостоятельно вычислить его для данного сообщения. Если вычисленное значение совпадает с расшифрованным, логично считать, что автор сообщения установлен и сообщение не было изменено, то есть была обеспечена целостность данных. При внесении любых изменений в сообщение его хэш-функция изменится.
Как видите, данный метод не позволяет отправителю отрицать, что сообщение было послано им. Такое свойство называется nonrepudiation (буквально «неуклоняемость»), поскольку, если секретный ключ не был разглашен, цифровая подпись могла быть наложена только отправителем сообщения.
Очевидно, что при наличии цифровой подписи не обязательно шифровать сам текст сообщения. При желании это можно сделать, но в алгоритм цифровой подписи такая операция уже не входит. Не исключено, что содержимое сообщения не секретно и вам нужно только удостоверить личность отправителя и целостность сообщения. Хэш-функция вычисляется независимо от того, зашифровано сообщение или нет. Основная идея здесь состоит в том, что одна и та же математическая хэш-функция используется на обоих концах соединения. Так как секретный ключ, с помощью которого была создана цифровая подпись, есть только у отправителя, то таким образом можно проверить источник сообщения.
Отправитель |
|
Отправитель подтвержден, сообщение не было изменено |
|
|
||
|
|
|
Да |
|
|
|
Вычислить дайджест сообщения при помощи хэш-функции
|
|
|
|
|
|
|
|
Соответствует ли вычисленный дайджест расшифрованному?
|
Нет — |
Сообщение было искажено или послано другим отправителем
|
|||
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
Расшифровать присланный вместе с сообщением зашифрованный дайджест при помощи открытого ключа отправителя
|
|
|
|
Зашифровать дайджест сообщения при помощи секретного ключа
|
|
|
|
|||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Вычислить дайджест сообщения при помощи хэш-функции |
|
|
|
|
|
|
|
|
|
|
Переслать сообщение и зашифрованный дайджест получателю |
— |
Получить сообщение и зашифрованный дайджест |
|
|
Цифровая подпись идентифицирует отправителя и проверяет целостность данных
Цифровые сертификаты
Цифровые сертификаты (digital certificate) в чем-то напоминают цифровые подписи. Сертификат - это документ, который утверждает, что вы можете «доверять» определенной информации. Предположим, что вы хотите переслать кому-либо сообщение, используя криптографию с открытым ключом. Для этого вам надо вначале раздобыть открытый ключ получателя. Но как убедиться, что этот ключ действительно принадлежит ему? Предположим, что вы ранее не обменивались с ним зашифрованными сообщениями и открытый ключ приходит в электронном письме или от провайдера подобной услуги в Internet. Как определить в данном случае, принадлежит ли действительно ключ этому человеку? Всегда имеется риск, что это чужой ключ, присланный тем, кто надеется выдать себя за другого! Проверить, является ли на самом деле владельцем открытого ключа тот, кто ВЫ думаете, позволяет цифровой сертификат, применение которого основано на присутствии известной доверенной третьей стороны. Сертификат содержит открытый ключ, информацию о держателе ключа и удостоверяющую сертификат цифровую подпись. Третья сторона, выпускающая сертификаты (она называется Certificate Authority - Сертифицирующим авторитетом, СА), должна быть представлена известным лицом или организацией, которой вы доверяете выпуск сертификата. Примером подобного издателя сертификатов служит компания Verisign. Поскольку вы доверяете издателю сертификата и в состоянии проверить его подпись, вы будете доверять и имеющейся в сертификате информации.
Третья сторона не обязательно должна быть внешней организацией. Для внутренних нужд допустимо использовать специальное программное обеспечение для сервера сертификатов из поставки Windows 2000 Advanced Server. Наличие собственного сервера сертификатов требует создания процедур выпуска и управления сертификатами, но это обойдется дешевле, чем услуги соответствующих коммерческих служб.
Если вам нужны цифровые сертификаты, предоставляющие возможность обмениваться данными с другими организациями или внешними пользователями, воспользуйтесь коммерческими сертификатами, например компании Verisign.