Криптосистема Джентри

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

Криптосистема Джентри (от фамилии создателя Крейга Джентри) — первая возможная конструкция для полностью гомоморфной криптосистемы, основанная на криптографии на решетках. Впервые была предложена Крейгом Джентри в 2009 году[1] и являлась темой его докторской диссертации. Схема Джентри поддерживает операции сложения и умножения над шифротекстом, что позволяет построить кольца для реализации любых произвольных вычислений. Впоследствии имела множество доработок и модификаций с целью улучшения её производительности.

Описание алгоритма

Для схемы используются[2] идеальные решётки J в цепочках многочленов по модулю fn(x)=xn+1. Эрмитова нормальная форма идеальной решётки имеет вид[2]:

HNF(J)=[d0000r1000[r2]d0100[r2]d0000[rn1]d0001], где d=det(J) и r — корень для fn(x) по модулю d.

Генерация ключей[2]

  1. Выбирается произвольная n-мерная целочисленная решётка v, где каждый вход vi выбирается наугад, как t-разрядное число. С помощью этого вектора v формально определяется многочлен v(x)=i=0n1vixi, а также соответствующая матрица поворота:

V=[v0v1v2vn1vn1v0v1vn2vn2vn1v0vn3v1v2v3v0]

  1. Вычисляется инверсия для v(x) по модулю fn(x), то есть многочлен w(x) степени не более n-1, что v(x)*w(x)=constmodfn(x). Тогда матрица

W=[w0w1w2wn1wn1w0w1wn2wn2wn1w0wn3w1w2w3w0]

является инверсией для V, то есть V*W=const*I, где I — единичная матрица.

  1. Также проверяется, что Эрмитова нормальная форма для V имеет вид, указанный выше, а именно все столбцы, кроме левого, образуют единичную матрицу. В таком случае вся матрица V может быть получена с помощью элементов r и d.

Открытым ключом будет являться матрица V, заданная числами r и d. Закрытым ключом будут являться два многочлена (v,w).

Шифрование[2]

Пусть требуется зашифровать бит m(0,1)

На входе имеется бит b и открытый ключ V. Выбирается шумовой вектор u, компоненты которого принимают значения 0,1,-1. Затем вычисляется вектор a=2*u+b*e1, а шифротекст вычисляется по формуле[2] c=amodV=a([a*V1]*V)

Здесь для базиса V пространства L и данного вектора c выражение cmodV используется для обозначения вектора cP(V) такого, что ccL[2]

Расшифровывание[2]

На входе имеется вектор С и матрицы V и W. Исходный бит b получается в результате операции:

b=amod2=(cmodV)mod2=(c*(W/d))mod2

Гомоморфность[2]

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

Стойкость[3]

Защищенность своей схемы Джентри обосновал двумя проблемами: проблемой сложности худшего случая криптографии на идеальных решетках и задачей о сумме подмножеств. Обе задачи являются NP-сложными, поэтому стойкость системы сводится к NP-сложной задаче.

Недостатки

Существенным недостатком данной схемы является то, что выполнение вычислений приводит к накоплению ошибки[4] и, после того как она превышает p, расшифровать сообщение становится невозможным. Одним из вариантов решения данной проблемы является повторное шифрование данных после некоторого количества операций, однако такой вариант снижает производительность вычислений и требует постоянного доступа к секретному ключу[3].

Упрощённая схема Джентри

Рассматривается схема, гомоморфная относительно только операции сложения[4].

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

  1. Выбирается число n, по модулю которого будет работать схема.
  2. Выбирается секретный ключ sk — случайное число, много большее n, такое, что НОД(sk,n)=1
  3. Выбирается публичный ключ pk — набор больших чисел [a1,..ai], таких, что ai=r*sk+e*n, где r — небольшое случайное число, e — произвольное случайное число.

Шифрование

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

Расшифровывание

На входе имеется шифротекст и числа n и sk. Вычисляется последовательно остаток от деления шифротекста на n и на sk. Результатом будет являться исходное сообщение.

Гомоморфность

Для того, чтобы получить сумму текстов m1 и m2, достаточно сложить шифротексты и провести операцию расшифровывания. Действительно: D(E(m1,pk)+E(m2,pk))=D(m1+m2+i=0nCipki)=D(m1+m2+C1'sk+C2'n)=m1+m2

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

Реализация Смарта и Верткаутерена

Первая попытка реализовать схему Джентри была сделана в 2010 году на Смартом и Верткаутереном[5]. Для реализации они выбрали схему с использованием идеальных решеток для простого определителя. Такие структуры представляются с помощью двух целых чисел (вне зависимости от их размера). Смарт и Верткаутерен предложили метод расшифровывания, в котором секретный ключ является одним целым числом. Таким образом, ученым удалось реализовать гомоморфную однородную схему, но они не смогли реализовать технику Джентри в случае достаточно больших параметров, а следовательно, им не удалось получить загружаемую и полностью гомоморфную схему.

Основным препятствием в данной реализации являлась сложность генерации ключей для однородных схем: прежде всего, схемы должны генерировать очень большое количество «кандидатов» для поиска ключа, для которого определитель будет простым — может понадобиться вплоть до n1,5 кандидатов при работе со структурами размерности n. Кроме того, даже после нахождения оптимального варианта, сложность вычислений секретного ключа, соответствующего этой структуре равна, по крайней мере, O~(n2,5) для решёток размерности n. По этим причинам ученым не удалось сгенерировать ключи размерностей n>2048. Кроме того, Смарт и Веркаутерен оценили, что многочлен расшифровки будет иметь степень в несколько сотен, а это требует для процедуры с их параметрами использования решётки размерностью не менее n=227(1,3×108), что значительно превышает вычислительные возможности процедуры генерации ключей[2].

Полностью гомоморфная схема Джентри

В 2011 году Крейг Джентри вместе с Шайем Халеви представил[2] практическую реализацию для полностью гомоморфной схемы шифрования по аналогии с используемой в более ранних работах схемой Смарта и Верткаутерена. Основная оптимизация состоит в методе генерации ключей для основного относительно гомоморфного шифрования, не требующем полной инверсии многочленов. Это снижает асимптотическую сложность от O~(n2,5) до O~(n1,5) при работе с n размерными решетками (и на практике сокращает время расчетов от многих часов до нескольких минут).

Примечания

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

  1. Ошибка цитирования Неверный тег <ref>; для сносок GentryArticle не указан текст
  2. 2,00 2,01 2,02 2,03 2,04 2,05 2,06 2,07 2,08 2,09 Ошибка цитирования Неверный тег <ref>; для сносок fullyhomsceme не указан текст
  3. 3,0 3,1 Ошибка цитирования Неверный тег <ref>; для сносок Trubei не указан текст
  4. 4,0 4,1 Ошибка цитирования Неверный тег <ref>; для сносок sibac не указан текст
  5. Ошибка цитирования Неверный тег <ref>; для сносок SmartVert не указан текст