302
правки
Изменения
RSA
,→Реализация
|statement=Уравнения <tex>(1)</tex> и <tex>(2)</tex>, на которых основана схема <tex>\mathtt{RSA}</tex>, определяют взаимно обратные преобразования множества <tex>\mathbb{Z}_n</tex>
|proof=
Действительно, для <mathtex>\forall m \in \mathbb{Z}_{n}</mathtex>: <mathtex>D\left( {E\left( m \right)} \right) = E\left( {D\left( m \right)} \right) = m^{ed} \mod n</mathtex>
Покажем, что:
: <mathtex>\forall m \in \mathbb{Z}_{n}: m^{ed} \equiv m \mod p</mathtex>.
Возможны два случая:
* <mathtex>m \not\equiv 0 \mod p</mathtex>.
Поскольку числа <mathtex>e</mathtex> и <mathtex>d</mathtex> являются взаимно обратными относительно умножения по модулю <mathtex>\varphi(n)=(p-1)(q-1)</mathtex>, т.eто есть
: <mathtex>ed=1+k(p-1)(q-1)</mathtex> для некоторого целого <mathtex>k</mathtex>,
тогда:
: <mathtex>\begin{align}
m^{ed} & \equiv m^{1 + k\left( {p - 1} \right)\left( {q - 1} \right)} & \equiv & \mod p \\
& \equiv m\left( {m^{p - 1} } \right)^{k\left( {q - 1} \right)} & \equiv & \mod p \\
& \equiv m\left( 1 \right)^{k\left( {q - 1} \right)} & \equiv m & \mod p
\end{align}</mathtex>
где второе тождество следует из [[Теорема_Ферма|теоремы Ферма]].
* Рассмотрим второй случай:
: <mathtex>m \equiv 0 \mod p</mathtex>,
тогда
: <mathtex>m^{ed} \equiv 0 \equiv m \mod p</mathtex>
Таким образом, при всех <mathtex>m</mathtex> выполняется равенство
::: <mathtex>m^{ed} \equiv m \mod p</mathtex>
Аналогично можно показать, что:
: <mathtex>\forall m \in \mathbb{Z}_{n}: m^{ed} \equiv m \mod q</mathtex>.
Тогда, из [[китайская теорема об остатках|китайской теоремы об остатках]]
: <mathtex>\forall m \in \mathbb{Z}_{n}: m^{ed} \equiv m \mod n</mathtex>
}}
===Криптографическая стойкость===
Стойкость алгоритма основывается на сложности вычисления обратной функции к функции шифрования
: <tex>c = E(m) = m ^ e \mod n</tex>.
Для вычисления <tex>m</tex> по известным <tex>c, e, n</tex> нужно найти такой <tex>d</tex>, чтобы
: <tex>e \cdot d \equiv 1 \pmod{\varphi(n)},</tex>
то есть
: <tex>d \equiv e^{-1} \pmod{\varphi(n)}.</tex>
Вычисление обратного элемента по модулю не является сложной задачей, однако злоумышленнику неизвестно значение <tex>\varphi(n)</tex>. Для вычисления [[функция Эйлера|функции Эйлера]] от известного числа <tex>n</tex> необходимо знать разложение этого числа на простые множители. Нахождение таких множителей и является сложной задачей, а знание этих множителей — '''«потайной дверцей»''' (англ. ''backdoor''), которая используется для вычисления <tex>d</tex> владельцем ключа. Существует множество алгоритмов для нахождения простых сомножителей, факторизации, самый быстрый из которых на сегодняшний день — общий метод решета числового поля, скорость которого для k-битного целого числа составляет
: <tex> \exp (( c + o(1))k^{\frac{1}{3}} \log^{\frac{2}{3}}k)</tex> для некоторого <tex>c < 2</tex>.
В 2010 году группе учёных из Швейцарии, Японии, Франции, Нидерландов, Германии и США удалось успешно вычислить данные, зашифрованные при помощи криптографического ключа стандарта <tex>\mathtt{RSA}</tex> длиной 768 бит. Нахождение простых сомножителей осуществлялось общим методом решета числового поля. По словам исследователей, после их работы в качестве надежной системы шифрования можно рассматривать только <tex>\mathtt{RSA}</tex>-ключи длиной 1024 бита и более. Причём от шифрования ключом длиной в 1024 бит стоит отказаться в ближайшие три-четыре года. С 31 декабря 2013 года браузеры Mozilla перестали поддерживать сертификаты удостоверяющих центров с ключами <tex>\mathtt{RSA}</tex> меньше 2048 бит.
==Применение==