Криптосистема Дамгорда — Юрика

Материал из testwiki
Перейти к навигации Перейти к поиску

Криптосистема Дамгорда — Юрика — криптосистема с открытым ключом, предложенная Иваном Дамгордом и Мадсом Юриком в 2000 г. Является обобщением криптосистемы Пэйе для больших модулей с целью расширения области применения[1].

Предпосылки: Обобщение схемы Пэйе

Описываемая криптосистема использует расчётный модуль ns+1, где n — модуль RSA, а s — натуральное число. В случае, если s=1, представляет собой схему криптосистемe Пэйе.

Пусть n=pq, где p, q — нечётные простые числа. Заметим, что мультипликативная группа Zns+1∗ является декартовым произведением G×H, где G — циклическая группа порядка ns, а H — изоморфна группе Zn∗. Таким образом, факторгруппа G‾=Zns+1∗/ H тоже является циклической порядка ns. Каждому произвольному элементу a∈Zns+1∗ мы ставим в соответствие элемент a‾=aH из факторгруппы G‾.

Для объяснения дальнейших рассуждений, сформулируем следующую лемму[2]

Лемма: Для любых s<p,q, элемент N+1 имеет порядок ns в мультипликативной группе Zns+1∗.

Как только порядок H становится взаимно простым с ns, мы можем считать, что элемент 1+n‾:=(1+n)H∈G‾ является генератором группы G‾, кроме, возможно, s⩾p,q. Таким образом, смежными классами для H и Zns+1∗ являются:

H,(1+n)H,(1+n)2H,…,(1+n)ns−1,

что приводит к естественной нумерации этих смежных классов.

Ещё одним техническим приёмом, необходимым для обоснования дальнейших вычислений, является простой способ определения i по (1+n)imodns+1. Для его реализации, обозначим функцию L(b)=(b−1)/n, тогда

L((1+n)imodns+1)=(i+(i2)n+...+(is)ns−1)modns

Далее, последовательно вычисляем:

i1=imodn,i2=imodn2,…

Достаточно просто вычислить i1:

i1=L((1+n)imodn2)=imodn

Дальнейшие вычисления проводим по индукции: на j-ом шаге мы знаем ij−1. Тогда ij=ij−1+knj−1 для некоторого 0≤k<n. Используем это соотношение:

L((1+n)imodnj+1)=(ij+(ij2)n+...+(ijj)n(j−1))modnj

Заметим, что каждый член (ijt+1)nt для j>t>0 удовлетворяет (ijt+1)nt=(ij−1t+1)ntmodnj. Следовательно:

L((1+n)imodnj+1)=(ij−1+knj−1+(ij−12)n+...+(ij−1j)n(j−1))modnj

Таким образом, получаем:

ij=ij−1+knj−1=ij−1+L((1+n)imodnj+1)−(ij−1+(ij−12)n+…+(ij−1j)n(j−1))modnj=

=L((1+n)imodnj+1)−((ij−12)n+…+(ij−1j)n(j−1))modnj

Описание схемы

Генерация ключа

  1. Случайно и независимо друг от друга выбирается два больших простых числа p и q;
  2. Вычисляется n=pq и λ как наименьшее общее кратное чисел p−1 и q−1;
  3. Выбирается элемент g∈ℤns+1∗ такой, что g=(1+n)jxmodns+1 для заданного j является взаимно простым с n и x∈H.
    Замечание:это можно сделать проще, если сначала случайно выбрать j и x, а затем по ним вычислить g.
  4. Выбирается d такое, что dmodn∈ℤn∗ и d=0modλ (с использованием Китайской теоремы об остатках). Например, за d можно взять λ как и в схеме Пэйе.

Таким образом, открытым ключом будет пара (n,g), а секретным — d.

Шифрование

  1. Пусть m — шифруемое сообщение, причем m∈ℤns;
  2. Выбирается случайное r, такое, что r∈ℤns+1∗;
  3. Вычисляется шифртекст: c=gm⋅rnsmodns+1.

Расшифровка

  1. Пусть c — шифртекст, причем c∈ℤns+1∗;
  2. Вычисляется cdbmodns+1. Если c -действующий шифртекст, то cd=(gmrns)d=((1+n)jmxmrns)d=(1+n)jmdmodns(xmrns)dmodλ=(1+n)jmdmodns
  3. По указанному выше алгоритму вычисляется jidmodns. Поскольку произведение jd уже известно, осталось вычислить m=(jmd)⋅(jd)−1modns.

Гомоморфизм

Система гомоморфна относительно сложения в Zns:

ℰ(x1)⋅ℰ(x2)=ℰ(x1+x2modns).

Примечания

Шаблон:Примечания

Литература

  1. Гомоморфное шифрование: безопасность облачных вычислений и другие приложения (обзор) (А.И.Трубей)
  2. A Generalisation, a Simplification and some Applications of Paillier’s Probabilistic Public-Key System (Ivan B. Damgard, Mads J. Jurik)

Шаблон:Криптосистемы с открытым ключом

  1. ↑ Гомоморфное шифрование: безопасность облачных вычислений и другие приложения (обзор) А.И.Трубей
  2. ↑ A Generalisation, a Simplification and some Applications of Paillier’s Probabilistic Public-Key System (Ivan B. Damgard, Mads J. Jurik)