почему emBits = modBits - 1 в RSASSA-PSS - PullRequest
0 голосов
/ 12 июня 2018

Стандарт (PKCS # 1) говорит, что длина сообщения, используемого для подписи, должна быть emBits = modBits - 1. Но откуда она?Я имею в виду, что в этом стандарте сигнатура основана на хэше, а хэш дополняется до длины emBits.Но почему это должно быть modBits - 1?Чтобы создать цифровую подпись нужного размера?

1 Ответ

0 голосов
/ 13 июня 2018

Давайте представим, что у вас есть значение модуля 0b1010111111 (10 бит).

Если вы запустите EMSA-PSS-Encode(M, 10), то оно может (если оно способно генерировать числа, которые малы), производить 0b1111001011.Это значение превышает модуль, поэтому оно математически эквивалентно 0b100001100.При запуске проверки вы получите промежуточное значение 0b100001100, а затем обнаружите, что ваша подпись не может быть проверена.Вы подписываете это снова, на этот раз это работает.Путаница в изобилии.

В конечном счете, ответ заключается в том, чтобы «иметь стабильный алгоритм, который максимально приближается к значению модуля, но не превышает его».Аналогичным образом, EMSA-PKCS1-v1_5 начинается с нулевого байта, чтобы гарантировать, что модуль всегда будет больше, чем закодированное значение.

...