Что такое общий показатель степени со знаком RSA?

#encryption #cryptography #rsa #digital-signature

#шифрование #криптография #rsa #цифровая подпись

Вопрос:

Есть ли какая-либо разница между показателем шифрования / дешифрования RSA и показателем RSA sign / check?

Комментарии:

1. Что вы подразумеваете под «подписью / проверкой»? Если это какой-либо вид авторизации или цифровой подписи, это делается с помощью шифрования и дешифрования. Если я зашифрую сообщение своим закрытым ключом, а вы расшифруете его с помощью моего открытого ключа, вы знаете, что сообщение было отправлено кем-то с моим закрытым ключом, предположительно мной.

2. ну, да, но при подписании вы подтверждаете фрагмент зашифрованного текста, при шифровании вы создаете новый фрагмент зашифрованного текста.

Ответ №1:

Нет. Открытый ключ пары RSA public / private состоит из показателя степени и модуля, независимо от того, используется ли он для подписи или шифрования. Наиболее распространенным показателем является 0x10001.

Статья Википедии о RSA довольно хороша.

Комментарии:

1. Вы имеете в виду 0x10001 (65537)?

Ответ №2:

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

С другой стороны, существуют различия между частными и общедоступными показателями:

  • Общедоступный показатель может быть относительно небольшим, что сокращает размер ключа и ускоряет шифрование и проверку подписи. Как сказал Чарли Мартин, 0x10001 = 2 ^ 16 1 = 65537 является обычным выбором.

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

    Это делает наивную подпись / дешифрование медленнее, чем соответствующие общедоступные операции, но, с другой стороны, это можно немного ускорить, используя разложение по модулю и китайскую теорему об остатках, т. е. вычисляя по модулю p и q отдельно вместо по модулю m = p·q , а затем объединяя результаты.

Обратите внимание, что мы проводим различие между общедоступными (шифрование / проверка) и частными (расшифровка / подписание) показателями, а не между показателями подписи / проверки и шифрования / дешифрования.

Ответ №3:

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

Подводя итог подробным ответам на Должен ли общедоступный показатель RSA быть только в {3, 5, 17, 257 или 65537} из соображений безопасности?) на security.stackexchange.com:

Теоретически, все распространенные реализации должны позволять использовать любое простое число > 2, кроме чисел Ферма — чисел вида 2 ^ n 1, например 3, 5, 17, 257, 65537 — которые, как известно, являются простыми, часто предпочтительнее, потому что они ускоряют вычисления на одной стороне операции (шифрование / дешифрование, подпись / проверка) — и 65537, вероятно, является наиболее распространенным показателем, используемым на данный момент времени (2020/11).

Однако ваша конкретная реализация может ограничить максимальное значение, которое вы можете использовать на практике.