"Информатика (углублённый уровень)", Калинин И.А., Самылкина Н.Н.
Электронная подпись помогает проверить, кто подписал электронный документ, и убедиться, что после подписания его не изменили. Для этого используют пару ключей: закрытый ключ хранит владелец, а открытый доступен получателям. Обычно подписывают не весь текст, а его короткий хеш — результат работы специальной функции. Подпись не скрывает содержание документа, а подтверждает его целостность и связь с ключом; личность владельца подтверждается только при надёжной проверке самого открытого ключа.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Электронная подпись — данные, связанные с электронным документом и позволяющие проверить его автора и неизменность. Она не является картинкой с изображением росчерка: такое изображение можно скопировать, и оно само по себе не показывает, меняли ли текст. Криптографическая подпись зависит от содержимого документа и ключа, поэтому помогает обнаружить подмену. Её применяют, чтобы получатель мог проверить происхождение и целостность файла или сообщения.
Хеш-функция — правило, которое преобразует сообщение любой длины в хеш, то есть значение фиксированной длины. Даже большой документ превращается в короткую последовательность данных, с которой удобно выполнять операции подписи и проверки. Хеш зависит от содержимого: изменение символа обычно меняет результат. Поэтому получатель может сравнить хеш подписанного документа с хешем полученной версии и заметить расхождение.
Закрытый ключ — секретный ключ из пары ключей, принадлежащий владельцу. Им создают электронную подпись, поэтому посторонний, получивший этот ключ, сможет выдавать свои подписи за подписи владельца. Ключ нельзя передавать другим или хранить без защиты: утрата контроля над ним ставит под сомнение все созданные им подписи. Его сохраняют в безопасном месте и применяют только для подписания.
Открытый ключ — доступный другим участникам ключ из той же пары, которым проверяют подпись. Он математически связан с закрытым, но устроен так, что по открытому ключу нельзя практически восстановить секретный. Получатель может использовать его для проверки, не получая доступа к закрытому ключу. При этом открытый ключ нужно надёжно связать с его владельцем, иначе неизвестно, чью именно подпись удалось проверить.
Перед подписанием вычисляют хеш документа, потому что для длинного сообщения удобнее обработать короткое значение фиксированной длины. Хеш связан с содержимым, поэтому он служит компактным представлением конкретной версии документа. Если бы подпись относилась только к имени отправителя, текст можно было бы заменить, сохранив имя. Связь подписи с хешем помогает проверить именно тот документ, который был подписан.
Для создания подписи отправитель вычисляет хеш документа и преобразует его с помощью закрытого ключа, используя алгоритм цифровой подписи. Полученный результат и есть подпись, которую передают вместе с документом. Она зависит от хеша, а значит — от содержимого документа, и от закрытого ключа. Поэтому тот же ключ не должен быть доступен посторонним: иначе они смогут создавать подписи, которые будут проверяться соответствующим открытым ключом.
Получатель сначала вычисляет хеш документа, который ему прислали, а затем проверяет подпись с помощью открытого ключа. Алгоритм проверки позволяет убедиться, что подпись могла быть создана соответствующим закрытым ключом, и получить значение, которое она подтверждает. Получатель сопоставляет это значение с хешем своего экземпляра документа. Если они совпадают, подпись соответствует полученному содержимому; если нет, документ или подпись не прошли проверку.
Изменение документа обычно обнаруживается потому, что хеш изменённой версии отличается от хеша исходного текста. Подпись подтверждает результат для первоначального содержимого, а не для любого файла с тем же именем. Даже небольшая правка — например, замена одного слова — приводит к вычислению нового хеша. Поэтому проверка не подтверждает изменённую версию, если только её заново не подписали.
Успешная проверка показывает, что содержимое соответствует подписи, созданной с использованием закрытого ключа, парным к указанному открытому ключу. Так подтверждаются целостность документа и его связь с владельцем ключевой пары. Но математическая проверка сама по себе не сообщает, кому принадлежит открытый ключ. Чтобы сделать вывод об авторе, нужно получить ключ из надёжного источника или проверить сертификат, связывающий его с человеком или организацией.
| Этап | Действия отправителя | Действия получателя | Что проверяется |
|---|---|---|---|
| Подготовка документа | Готовит окончательную версию документа для подписания. | Получает документ, который нужно проверить. | Какую именно версию документа подписывают. |
| Вычисление хеша | Вычисляет хеш подготовленного документа. | Вычисляет хеш полученного документа. | Связь короткого значения с содержимым документа. |
| Создание подписи закрытым ключом | Создаёт подпись для хеша с помощью закрытого ключа. | — | Использован ли ключ, парный открытому ключу. |
| Передача документа, подписи и открытого ключа | Отправляет документ, подпись и открытый ключ либо сведения для его получения. | Получает эти данные и проверяет происхождение открытого ключа. | Можно ли надёжно связать открытый ключ с заявленным владельцем. |
| Проверка подписи и сравнение хешей | — | Проверяет подпись открытым ключом и сопоставляет подтверждённое значение с вычисленным хешем. | Соответствуют ли подпись и документ друг другу, не изменилось ли содержимое. |
Читайте таблицу как последовательность: отправитель сначала готовит документ, затем создаёт подпись и передаёт данные получателю. Получатель выполняет собственные вычисления, а не полагается на сообщение отправителя о том, что файл не менялся. Для проверки личности отдельно смотрят, кому принадлежит открытый ключ.
Строки с тире показывают, что участник не выполняет действие на данном этапе. Подпись и документ должны проверяться как связанные данные: нельзя взять подпись от одного файла и считать её подтверждением другого. Успешный результат сравнения хешей отвечает за целостность, а проверка принадлежности открытого ключа — за установление владельца.
Отправитель хочет подписать электронное сообщение. Укажите, какой ключ он использует для создания подписи и какой получатель использует для проверки. Здесь важно не перепутать назначение двух ключей в паре: один должен оставаться секретным, а другой можно сообщать участникам обмена. Проследим весь путь подписи от отправителя к получателю.
Ответ: отправитель создаёт подпись закрытым ключом, а получатель проверяет её соответствующим открытым ключом. Эта схема позволяет проверять подпись, не раскрывая секрет отправителя. Чтобы считать подпись именно подписью этого человека, получателю ещё нужно убедиться, что открытый ключ действительно ему принадлежит.
После подписания документа в нём заменили одно слово. Объясните, что произойдёт при проверке подписи и почему. Не достаточно заметить, что текст изменился: нужно связать это изменение с операциями проверки. Подпись создавали для конкретного содержимого, представленного его хешем.
Ответ: проверка подписи для изменённого документа, как правило, не пройдёт. Причина не в том, что алгоритм распознаёт смысл заменённого слова, а в том, что замена меняет данные и обычно меняет хеш. Если документ после правки подписать заново, новая подпись будет относиться уже к его изменённой версии.
Получатель проверил подпись успешно, но не знает, кому принадлежит открытый ключ. Может ли он уверенно установить автора документа? Чтобы ответить, разделим два вопроса: подходит ли подпись к документу и кому принадлежит ключ. Криптографическая проверка отвечает на первый, а для второго требуется достоверная привязка ключа к владельцу.
Ответ: нет, одного успешного результата недостаточно, чтобы уверенно установить автора. Он подтверждает связь документа с ключом, но не личность владельца ключа. Пока принадлежность открытого ключа не подтверждена, неизвестный человек мог создать пару ключей и подписать документ ею.
Первая ошибка — считать, что для создания и проверки применяют один и тот же ключ. Так думают, потому что при обычной работе с паролем или шифром часто представляют один общий секрет. В электронной подписи закрытый ключ создаёт подпись, а соответствующий открытый — проверяет её. Проверь себя вопросом: может ли получатель проверять подпись, не получая секрет отправителя?
Вторая ошибка — путать подписание с шифрованием. Подпись проверяет связь документа с ключом и помогает обнаружить изменение, но не скрывает текст от посторонних. Путаница возникает потому, что обе операции относятся к криптографии. Проверь себя: если файл отправили только с подписью, сможет ли прочитать его тот, у кого есть сам файл? Да, если содержимое не зашифровано отдельно.
Третья ошибка — думать, что подпись прикреплена только к имени автора. Тогда кажется, что документ можно изменить, не затрагивая подпись. На деле подпись связана с хешем содержимого, поэтому изменение текста обычно приводит к ошибке проверки. Проверь себя: совпадёт ли хеш изменённого файла с хешем исходной версии? Как правило, нет.
Четвёртая ошибка — считать успешную проверку безусловным доказательством личности. Проверка подтверждает связь документа с закрытым ключом, соответствующим открытому, но сама не устанавливает владельца ключа. Эту ошибку допускают, когда принимают полученный ключ за подлинный без проверки. Проверь себя: есть ли надёжное подтверждение, что открытый ключ принадлежит заявленному человеку или организации?
Для понимания электронной подписи полезно знать основы шифрования, различие открытого и закрытого ключей и принцип хеширования данных. Эти темы объясняют, почему секретный ключ нельзя раскрывать и как короткое значение может представлять содержимое большого файла. Электронная подпись применяется при обмене документами через интернет, в электронных государственных и банковских сервисах. Она также служит основой для дальнейшего изучения криптографии и информационной безопасности.
Можно ли проверить электронную подпись открытым ключом?
Да. Открытый ключ предназначен для проверки подписи, созданной соответствующим закрытым ключом. Получатель также сравнивает результат проверки с хешем, вычисленным для полученного документа.
Зачем вычислять хеш документа перед подписанием?
Хеш — короткое значение фиксированной длины, связанное с содержимым документа. Подписывать его удобнее, чем обрабатывать сообщение целиком, а изменение документа обычно приводит к другому хешу.
Что произойдёт, если изменить документ после подписания?
При проверке для изменённого текста вычислится новый хеш. Он, как правило, не совпадёт со значением, подтверждённым подписью, поэтому проверка сообщит, что подпись недействительна для этого документа.
Электронная подпись шифрует содержимое документа?
Нет, сама по себе подпись не скрывает текст и не делает его недоступным посторонним. Она помогает проверить целостность документа и его связь с владельцем ключа; для сокрытия содержания применяют шифрование.
Как узнать, кому принадлежит открытый ключ?
Нужно проверить надёжную привязку ключа к владельцу, например с помощью сертификата и удостоверяющей инфраструктуры. Без такой проверки успешный криптографический тест подтверждает использование соответствующего закрытого ключа, но не устанавливает личность подписанта.
§ 24. Электронная подпись