Как получатель узнает, какой алгоритм хеширования использовать для данных, полученных от отправителя в цифровой подписи

Я понял процесс цифровой подписи

  1. отправитель дает ответ в виде данных + хэш данных (хэшируется с помощью алгоритма, скажем, X и подписывается закрытым ключом)
  2. получатель вычисляет хэш данных, которые получатель получил на шаге 1, используя алгоритм X.
  3. Если хэш, полученный в качестве ответа на шаге 1 от отправителя (расшифровать pt с использованием открытого ключа) и хэш-получатель, рассчитанный на основе полученных данных, одинаковы, все в порядке, но если они разные, данные подделаны.

до сих пор все в порядке. но мой вопрос заключается в том, как получатель или отправитель решает, какой алгоритм использовать для хэширования. в приведенном выше случае каково значение X. Как это решить?

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

Пожалуйста, дайте мне знать мнение о нем.


person Suri    schedule 23.11.2017    source источник


Ответы (1)


Цифровая подпись включает в себя как алгоритм дайджеста, так и значение дайджеста, закодированное в ASN.1. См. RFC 3447 PKCS#1 v2.1.

A.2.4 RSASSA-PKCS1-v1_5

DigestInfo ::= SEQUENCE {
      digestAlgorithm DigestAlgorithm,
      digest OCTET STRING
  }

Таким образом, в процессе проверки можно определить, является ли используемый дайджест-алгоритм ожидаемым.

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

Пример XMLSignature xmldsig

Подпись JWT/JWS jwt

Если вы используете формат, который не включает алгоритм подписи, то отправитель и получатель должны предварительно согласовать его.

person pedrofb    schedule 23.11.2017