Криптосистема Дамгорда — Юрика
Криптосистема Дамгорда — Юрика — криптосистема с открытым ключом, предложенная Иваном Дамгордом и Мадсом Юриком в 2000 г. Является обобщением криптосистемы Пэйе для больших модулей с целью расширения области применения.
Предпосылки: Обобщение схемы Пэйе
Описываемая криптосистема использует расчётный модуль n s + 1 {displaystyle {n^{s+1}}} , где n {displaystyle n} — модуль RSA, а s {displaystyle s} — натуральное число. В случае, если s = 1 {displaystyle s=1} , представляет собой схему криптосистемe Пэйе.
Пусть n = p q {displaystyle {n=pq}} , где p {displaystyle p} , q {displaystyle q} — нечётные простые числа. Заметим, что мультипликативная группа Z n s + 1 ∗ {displaystyle {Z_{n^{s+1}}^{*}}} является декартовым произведением G × H {displaystyle {G imes H}} , где G {displaystyle G} — циклическая группа порядка n s {displaystyle {n^{s}}} , а H {displaystyle H} — изоморфна группе Z n ∗ {displaystyle {Z_{n}^{*}}} . Таким образом, факторгруппа G ¯ = Z n s + 1 ∗ / {displaystyle {{overline {G}}=Z_{n^{s+1}}^{*}/}} H {displaystyle H} тоже является циклической порядка n s {displaystyle {n^{s}}} . Каждому произвольному элементу a ∈ Z n s + 1 ∗ {displaystyle {ain Z_{n^{s+1}}^{*}}} мы ставим в соответствие элемент a ¯ = a H {displaystyle {{overline {a}}=aH}} из факторгруппы G ¯ {displaystyle {overline {G}}} .
Для объяснения дальнейших рассуждений, сформулируем следующую лемму
Лемма: Для любых s < p , q {displaystyle s<p,q} , элемент N + 1 {displaystyle N+1} имеет порядок n s {displaystyle {n^{s}}} в мультипликативной группе Z n s + 1 ∗ {displaystyle {Z_{n^{s+1}}^{*}}} .
Как только порядок H {displaystyle H} становится взаимно простым с n s {displaystyle {n^{s}}} , мы можем считать, что элемент 1 + n ¯ := ( 1 + n ) H ∈ G ¯ {displaystyle {{overline {1+n}}:=(1+n)Hin {overline {G}}}} является генератором группы G ¯ {displaystyle {overline {G}}} , кроме, возможно, s ⩾ p , q {displaystyle sgeqslant p,q} . Таким образом, смежными классами для H {displaystyle H} и Z n s + 1 ∗ {displaystyle {Z_{n^{s+1}}^{*}}} являются:
H , ( 1 + n ) H , ( 1 + n ) 2 H , … , ( 1 + n ) n s − 1 , {displaystyle {H,(1+n)H,(1+n)^{2}H,dots ,(1+n)^{n^{s}-1},}}
что приводит к естественной нумерации этих смежных классов.
Ещё одним техническим приёмом, необходимым для обоснования дальнейших вычислений, является простой способ определения i {displaystyle i} по ( 1 + n ) i mod n s + 1 {displaystyle {(1+n)^{i}{mod {n}}^{s+1}}} . Для его реализации, обозначим функцию L ( b ) = ( b − 1 ) / {displaystyle {L(b)=(b-1)/}} n {displaystyle n} , тогда
L ( ( 1 + n ) i mod n s + 1 ) = ( i + ( i 2 ) n + . . . + ( i s ) n s − 1 ) mod n s {displaystyle {L((1+n)^{i}{mod {n}}^{s+1})=(i+{dbinom {i}{2}}n+...+{dbinom {i}{s}}n^{s-1}){mod {n}}^{s}}}
Далее, последовательно вычисляем:
i 1 = i mod n , i 2 = i mod n 2 , … {displaystyle {i_{1}=i{mod {n}},i_{2}=i{mod {n}}^{2},dots }}
Достаточно просто вычислить i 1 {displaystyle i_{1}} :
i 1 = L ( ( 1 + n ) i mod n 2 ) = i mod n {displaystyle {i_{1}=L((1+n)i{mod {n}}^{2})=i{mod {n}}}}
Дальнейшие вычисления проводим по индукции: на j {displaystyle j} -ом шаге мы знаем i j − 1 {displaystyle i_{j-1}} . Тогда i j = i j − 1 + k n j − 1 {displaystyle {i_{j}=i_{j-1}+kn^{j-1}}} для некоторого 0 ≤ k < n {displaystyle {0leq k<n}} . Используем это соотношение:
L ( ( 1 + n ) i mod n j + 1 ) = ( i j + ( i j 2 ) n + . . . + ( i j j ) n ( j − 1 ) ) mod n j {displaystyle {L((1+n)^{i}{mod {n}}^{j+1})=(i_{j}+{dbinom {i_{j}}{2}}n+...+{dbinom {i_{j}}{j}}n^{(j-1)}){mod {n}}^{j}}}
Заметим, что каждый член ( i j t + 1 ) n t {displaystyle {{dbinom {i_{j}}{t+1}}n^{t}}} для j > t > 0 {displaystyle {j>t>0}} удовлетворяет ( i j t + 1 ) n t = ( i j − 1 t + 1 ) n t mod n j {displaystyle {{dbinom {i_{j}}{t+1}}n^{t}={dbinom {i_{j-1}}{t+1}}n^{t}{mod {n}}^{j}}} . Следовательно:
L ( ( 1 + n ) i mod n j + 1 ) = ( i j − 1 + k n j − 1 + ( i j − 1 2 ) n + . . . + ( i j − 1 j ) n ( j − 1 ) ) mod n j {displaystyle {L((1+n)^{i}{mod {n}}^{j+1})=(i_{j-1}+kn^{j-1}+{dbinom {i_{j-1}}{2}}n+...+{dbinom {i_{j-1}}{j}}n^{(j-1)}){mod {n}}^{j}}}
Таким образом, получаем:
i j = i j − 1 + k n j − 1 = i j − 1 + L ( ( 1 + n ) i mod n j + 1 ) − ( i j − 1 + ( i j − 1 2 ) n + ⋯ + ( i j − 1 j ) n ( j − 1 ) ) mod n j = {displaystyle {i_{j}=i_{j-1}+kn^{j-1}=i_{j-1}+L((1+n)^{i}{mod {n}}^{j+1})-(i_{j-1}+{dbinom {i_{j-1}}{2}}n+dots +{dbinom {i_{j-1}}{j}}n^{(j-1)}){mod {n}}^{j}=}}
= L ( ( 1 + n ) i mod n j + 1 ) − ( ( i j − 1 2 ) n + ⋯ + ( i j − 1 j ) n ( j − 1 ) ) mod n j {displaystyle {=L((1+n)^{i}{mod {n}}^{j+1})-({dbinom {i_{j-1}}{2}}n+dots +{dbinom {i_{j-1}}{j}}n^{(j-1)}){mod {n}}^{j}}}
Описание схемы
Генерация ключа
Замечание:это можно сделать проще, если сначала случайно выбрать j {displaystyle j} и x {displaystyle x} , а затем по ним вычислить g {displaystyle g} .
Таким образом, открытым ключом будет пара ( n , g ) {displaystyle (n,g)} , а секретным — d {displaystyle d} .
Шифрование
Расшифровка
Гомоморфизм
Система гомоморфна относительно сложения в Z n s {displaystyle {Z_{n^{s}}}} :
E ( x 1 ) ⋅ E ( x 2 ) = E ( x 1 + x 2 mod n s ) {displaystyle {{mathcal {E}}(x_{1})cdot {mathcal {E}}(x_{2})={mathcal {E}}(x_{1}+x_{2};{mod {;}}n^{s})}} .