Рейтинг:3

Расшифровка RSA с использованием CRT: как это влияет на сложность?

флаг vn

Существует эффективный вариант RSA с использованием CRT:

\начать{выравнивать*} d_p &= d \pmod{p-1}\ d_q &= d \pmod{p-1} \ q_{\operatorname{inv}} &= q^{-1} \pmod{p} \конец{выравнивание*}

где расшифровка производится следующим образом:

\начать{выравнивать*} c_p &= c \pmod{p} \ c_q &= c \pmod{q} \ m_p &= c_p^{d_p} \pmod{p} \ m_q &= c_q^{d_q} \pmod{q} \ h &= q_{\operatorname{inv}}(m_p - m_q) \pmod{p} \конец{выравнивание*}

Мой первый вопрос довольно общий: Где мне использовать CRT-алгоритм (как там написано)? Я имею в виду, что настройка RSA уже определяет меня $р, д, д, с $ и поэтому у меня нет системы конгруэнтностей.

Мой второй вопрос касается сложности. Предполагать $\log d = \log n = B$ и $\log p = \log q = \frac{B}{2}$ и $ д, д_р, д_к $ иметь одинаково много $0$песок $1$с. Что уж говорить о количестве операций размером $В$ этого варианта?

Рейтинг:7
флаг my

Существует эффективный вариант RSA с использованием CRT.

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

Где использовать CRT-алгоритм (как там написано)?

Всякий раз, когда вы хотите немного больше эффективности (4x) и не возражаете против дополнительной сложности. В большинстве случаев это выгодный компромисс.

Я имею в виду, что установка RSA уже определяет меня p, q, d, c, и поэтому у меня нет системы соответствий.

Собственно, все дополнительные параметры $d_p, d_q, qinv$ легко вычисляются во время генерации ключа, что мы обычно и делаем.

Предполагать $\log d = \log n=B$ и $\log p = \log q = B/2$ и $d,d_p,d_q$ имеют одинаковое количество нулей и единиц. Что уж говорить о количестве операций размером $В$ этого варианта?

На самом деле количество нулей и единиц в основном не имеет значения, мы можем выполнить модульное возведение в степень $В$ битовое значение с $(1 + о(1)) \log_2 В$ модульные умножения (не зависящие от веса Хэмминга показателя степени); в рассматриваемом диапазоне B это может быть $(1 + 1/6) \log_2 В$.

В частной операции учебника RSA это включает в себя одно модульное возведение в степень $В$ битовое значение на $В$ битовая экспонента; это о $(1 + 1/6) \log_2 В$ умножается. Если мы используем $ О (п ^ 2) $ модульный алгоритм умножения (который является оптимальным для обсуждаемого нами диапазона B - существуют процедуры умножения с меньшей асимптотической сложностью, но с гораздо большими константами пропорциональности), мы говорим о $(1 + 1/6) (\log_2 В)^3$

Теперь, с ЭЛТ, есть два модульных возведения в степень двух $B/2$ бит за $B/2$ битовая экспонента (плюс некоторые операции до и после - они оба относительно быстрые). Используя ту же логику, это занимает около $2 (1 + 1/6) (\log_2 B/2)^3 = 1/4 (1 + 1/6) (\log_2 B)$, то есть примерно в 4 раза быстрее (да, это без учета некоторых мелких факторов); однако, даже если мы учтем эти небольшие факторы, ЭЛТ по-прежнему значительно Быстрее

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.