Учебники

Криптография Цифровые подписи

Цифровые подписи являются примитивами открытого ключа аутентификации сообщений. В физическом мире часто используют рукописные подписи на рукописных или печатных сообщениях. Они используются для привязки подписи к сообщению.

Точно так же цифровая подпись — это метод, который связывает человека / сущность с цифровыми данными. Эта привязка может быть независимо подтверждена как получателем, так и любой третьей стороной.

Цифровая подпись — это криптографическое значение, которое рассчитывается на основе данных и секретного ключа, известного только подписывающему лицу.

В реальном мире получатель сообщения нуждается в гарантии того, что сообщение принадлежит отправителю, и он не должен иметь возможность отрицать происхождение этого сообщения. Это требование очень важно в бизнес-приложениях, так как вероятность возникновения спора по поводу обмена данными очень высока.

Модель цифровой подписи

Как упоминалось ранее, схема цифровой подписи основана на криптографии с открытым ключом. Модель схемы цифровой подписи изображена на следующей иллюстрации —

Модель Цифровая Подпись

Следующие пункты подробно объясняют весь процесс —

  • У каждого человека, принимающего эту схему, есть пара открытый-закрытый ключ.

  • Обычно пары ключей, используемые для шифрования / дешифрования и подписи / проверки, различны. Закрытый ключ, используемый для подписи, называется ключом подписи, а открытый ключ — ключом проверки.

  • Подписывающий передает данные в хеш-функцию и генерирует хеш-данные.

  • Хэш-значение и ключ подписи затем передаются в алгоритм подписи, который создает цифровую подпись для данного хэша. Подпись добавляется к данным, а затем оба отправляются верификатору.

  • Верификатор подает цифровую подпись и ключ проверки в алгоритм проверки. Алгоритм проверки дает некоторое значение в качестве вывода.

  • Верификатор также выполняет ту же хеш-функцию для полученных данных, чтобы сгенерировать хеш-значение.

  • Для проверки сравниваются это значение хеш-функции и выходные данные алгоритма проверки. На основании результата сравнения верификатор решает, является ли цифровая подпись действительной.

  • Поскольку цифровая подпись создается «закрытым» ключом подписавшего, и никто другой не может иметь этот ключ; подписывающее лицо не может отказаться от подписи данных в будущем.

У каждого человека, принимающего эту схему, есть пара открытый-закрытый ключ.

Обычно пары ключей, используемые для шифрования / дешифрования и подписи / проверки, различны. Закрытый ключ, используемый для подписи, называется ключом подписи, а открытый ключ — ключом проверки.

Подписывающий передает данные в хеш-функцию и генерирует хеш-данные.

Хэш-значение и ключ подписи затем передаются в алгоритм подписи, который создает цифровую подпись для данного хэша. Подпись добавляется к данным, а затем оба отправляются верификатору.

Верификатор подает цифровую подпись и ключ проверки в алгоритм проверки. Алгоритм проверки дает некоторое значение в качестве вывода.

Верификатор также выполняет ту же хеш-функцию для полученных данных, чтобы сгенерировать хеш-значение.

Для проверки сравниваются это значение хеш-функции и выходные данные алгоритма проверки. На основании результата сравнения верификатор решает, является ли цифровая подпись действительной.

Поскольку цифровая подпись создается «закрытым» ключом подписавшего, и никто другой не может иметь этот ключ; подписывающее лицо не может отказаться от подписи данных в будущем.

Следует отметить, что вместо подписи данных напрямую с помощью алгоритма подписи обычно создается хеш данных. Поскольку хеш данных является уникальным представлением данных, достаточно подписать хеш вместо данных. Наиболее важной причиной использования хеша вместо данных непосредственно для подписания является эффективность схемы.

Предположим, RSA используется в качестве алгоритма подписи. Как обсуждалось в главе о шифровании с открытым ключом, процесс шифрования / подписи с использованием RSA включает модульное возведение в степень.

Подписание больших данных посредством модульного возведения в степень затратно в вычислительном отношении и отнимает много времени. Хеш данных представляет собой сравнительно небольшой дайджест данных, поэтому подписывание хеша более эффективно, чем подпись всех данных .

Важность цифровой подписи

Из всех криптографических примитивов цифровая подпись с использованием криптографии с открытым ключом считается очень важным и полезным инструментом для обеспечения информационной безопасности.

Помимо возможности обеспечить отказ от сообщения, цифровая подпись также обеспечивает аутентификацию сообщения и целостность данных. Давайте кратко посмотрим, как это достигается с помощью цифровой подписи —

  • Аутентификация сообщения — когда верификатор проверяет цифровую подпись, используя открытый ключ отправителя, он уверен, что подпись была создана только отправителем, который обладает соответствующим секретным закрытым ключом, и никем другим.

  • Целостность данных. Если злоумышленник имеет доступ к данным и изменяет их, проверка цифровой подписи на стороне получателя не выполняется. Хэш измененных данных и выходные данные, предоставленные алгоритмом проверки, не будут совпадать. Следовательно, получатель может безопасно отклонить сообщение, предполагая, что целостность данных была нарушена.

  • Безотказность — поскольку предполагается, что только подписавшая сторона знает ключ подписи, он может создавать уникальную подпись только для данных. Таким образом, получатель может представить данные и цифровую подпись третьей стороне в качестве доказательства, если в будущем возникнет спор.

Аутентификация сообщения — когда верификатор проверяет цифровую подпись, используя открытый ключ отправителя, он уверен, что подпись была создана только отправителем, который обладает соответствующим секретным закрытым ключом, и никем другим.

Целостность данных. Если злоумышленник имеет доступ к данным и изменяет их, проверка цифровой подписи на стороне получателя не выполняется. Хэш измененных данных и выходные данные, предоставленные алгоритмом проверки, не будут совпадать. Следовательно, получатель может безопасно отклонить сообщение, предполагая, что целостность данных была нарушена.

Безотказность — поскольку предполагается, что только подписавшая сторона знает ключ подписи, он может создавать уникальную подпись только для данных. Таким образом, получатель может представить данные и цифровую подпись третьей стороне в качестве доказательства, если в будущем возникнет спор.

Добавив шифрование с открытым ключом к схеме цифровой подписи, мы можем создать криптосистему, которая может обеспечить четыре основных элемента безопасности, а именно — конфиденциальность, аутентификация, целостность и отказ от авторства.

Шифрование с цифровой подписью

Во многих цифровых коммуникациях желательно обмениваться зашифрованными сообщениями, а не открытым текстом, для достижения конфиденциальности. В схеме шифрования с открытым ключом открытый (шифрующий) ключ отправителя доступен в открытом домене, и, следовательно, любой может подделать свою личность и отправить любое зашифрованное сообщение получателю.

Это делает необходимым, чтобы пользователи, использующие PKC для шифрования, искали цифровые подписи вместе с зашифрованными данными, чтобы быть уверенными в подлинности сообщений и их отсутствии.

Это может быть заархивировано путем объединения цифровых подписей со схемой шифрования. Давайте кратко обсудим, как выполнить это требование. Есть две возможности: подписать, затем зашифровать и зашифровать, затем подписать .

Тем не менее, криптосистема, основанная на методе «подписать-затем-шифровать», может быть использована получателем для подделки идентификационных данных отправителя и отправки этих данных третьей стороне. Следовательно, этот метод не является предпочтительным. Процесс шифрования и подписи является более надежным и широко распространенным. Это изображено на следующей иллюстрации —

Шифрование с цифровой подписью

Получатель после получения зашифрованных данных и подписи на них сначала проверяет подпись, используя открытый ключ отправителя. Убедившись в достоверности подписи, он затем извлекает данные путем расшифровки, используя свой закрытый ключ.