Как получатель узнает, какой алгоритм хеширования использовать для данных, полученных от отправителя в цифровой подписи
Я понял процесс цифровой подписи
- отправитель дает ответ в виде data + hash of data (хешируется алгоритмом, скажем, X и подписывается закрытым ключом)
- получатель вычисляет хеш данных, которые получатель получил с шага 1, используя алгоритм X.
- Если хэш, полученный в качестве ответа на шаге 1 от отправителя (расшифровать pt с помощью открытого ключа) и получатель хеша, рассчитанный на основе полученных данных, одинаков, мы хороши, но если он отличается, данные будут подделаны.
до сих пор все в порядке. но мой вопрос в том, как получатель или отправитель решает, какой алгоритм использовать для хеширования. в приведенном выше случае, каково значение X. Как это решить?
Согласно моему пониманию, получатель должен сначала указать отправителю, какой алгоритм хэширования он должен использовать. я прав?
Пожалуйста, дайте мне знать взгляды на это.
1 ответ
Цифровая подпись включает в себя как алгоритм дайджеста, так и значение дайджеста, закодированное в ASN.1. См. RFC 3447 PKCS # 1 v2.1.
A.2.4 RSASSA-PKCS1-v1_5
DigestInfo ::= SEQUENCE { digestAlgorithm DigestAlgorithm, digest OCTET STRING }
Таким образом, в процессе проверки можно определить, является ли алгоритм digestAlgorithm ожидаемым.
Но обычно дело в том, что алгоритм подписи включается в качестве атрибута в сам формат подписи, так что часть проверки может применить соответствующий.
Если вы используете формат, который не включает алгоритм подписи, отправитель и получатель должны согласовать это предварительно