Как OpenSSL/Mozilla NSS RSA Знак и проверка (PK11_SIGN, PK11_VERIFY, PK11_VERIFYRECOVER Функции)?
-
16-10-2019 - |
Вопрос
У меня есть мои государственные и частные ключи RSA (все P, Q, E, N, D) в формате PEM. Мне любопытно узнать:
- Как
PK11_Sign()
,PK11_Verify()
а такжеPK11_VerifyRecover()
(из библиотеки openssl/mozilla nss) работать с RSA? - Как подписано накладка для подписания входного сообщения?
Контекст моего вопроса: я видел, как PK11_Sign () добавляет некоторую накладку к моим входным данным во время подписания. Например (учитывая размер ключа составляет 162 бита):
my input = 31323334353036373839 padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839
Я бы хотел знать:
- Как называется эта схема заполнения и указатели на то, как она работает?
- Какова схема заполнения по умолчанию для вышеупомянутых функций OpenSSL? Например, если я выступаю "
openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt
"Какая схема прокладки будет использоваться?
Решение
PK11_Sign
и т. д. использует подписи PKCS#1 v.1.5, которые включают упоминание, которое вы упоминаете.Схема заполнения является частью алгоритма, называемого EMSA-PKCS1-V1_5-ECODE. Я не верю, что у него есть имя, хотя оно может быть неофициально назвать «PKCS#1 v.1.5 подпись». Это определено в Стандарт PKCS#1.
Согласно с документация по умолчанию для
openssl rsautl
это использовать PKCS#1 v.1.5, которая подразумевает эту заполнение.