Построение криптосистемы с открытым ключом на основе полностью гомоморфного шифрования

ЛИТЕРАТУРА

1. Stinson D. R. Cryptography. Theory and Practice. CRC Press, 1995. 434 p.

2. Menezes A., van Oorshot P., and Vanstone S. Handbook of Applied Cryptography. CRC Press, 1997. 662 p.

3. Langelaar G. C. Real-time Watermarking Techniques for Compressed Video Data. Delft: Delft University of Technology, 2000. 155 p.

4. Mistry D. Comparison of digital water marking methods // Intern. J. Comp. Sci. Engin. 2010. V.2. No. 9. P. 2905-2909.

5. Анжин В. А. Метод защиты от нелегального копирования в цифровых видеотрансляциях через внедрение водяных знаков при расшифровании // Прикладная дискретная математика. Приложение. 2014. №. 7. С. 73-74.

6. https://github.com/anjin-viktor/mpeg2decwtrk/ — Method implementation for MPEG2 Video. 2014.

УДК 004.056.55 DOI 10.17223/2226308X/8/21

ПОСТРОЕНИЕ КРИПТОСИСТЕМЫ С ОТКРЫТЫМ КЛЮЧОМ НА ОСНОВЕ ПОЛНОСТЬЮ ГОМОМОРФНОГО ШИФРОВАНИЯ1

В. В. Егорова, Д. K. Чечулина

Работа посвящена изучению практической применимости схемы полностью гомоморфного шифрования, созданной в Лаборатории современных компьютерных технологий НИЧ НГУ. Рассмотрено приложение гомоморфного шифрования для построения криптосистемы с открытым ключом, основанной на алгоритме RSA. На примере этой криптосистемы продемонстрирована корректность выполнения арифметических операций над зашифрованными данными, а также отсутствие увеличения размерности зашифрованных сообщений при умножении.

Ключевые слова: гомоморфное шифрование, криптосистема с открытым ключом, алгоритм RSA.

В Лаборатории современных компьютерных технологий НИЧ НГУ в рамках проекта «Защищённая база данных» разработана и реализована схема полностью гомоморфного шифрования, позволяющая выполнять операции сложения и умножения над зашифрованными данными. Рассмотрим подробнее эту схему. Пусть требуется шифровать целые числа размера t бит. Для этого необходимо выбрать целое число — модуль m, по которому будут производиться все вычисления в схеме. Модуль является частью секретного ключа. Для того чтобы однозначно восстановить любое зашифрованное число, модуль должен удовлетворять условию 21 < m.

Кроме того, для шифрования требуется секретный вектор k Е Zn, который строится следующим образом. Сгенерируем матрицу W размера n х n, обратимую по модулю m, а также вектор u Е Zn, компоненты которого по модулю не превосходят m. Вектор k определим как решение системы линейных уравнений

(W  k) mod m = u,

которая всегда разрешима, так как матрица W обратима по модулю m. Таким образом, k = (W-1 -u) mod m. Матрица W и вектор u также являются частью секретного ключа. Перейдём к описанию алгоритма шифрования. Пусть p < 21 < m — целое число,

1 Работа поддержана грантом Минобрнауки РФ, договор №02.G25.31.0054.

60

Прикладная дискретная математика. Приложение

которое требуется зашифровать. Алгоритм гомоморфного шифрования заключается в построении такого вектора с Е Zn, что

Заметим, что в процессе построения вектора k сформирован набор векторов Wi (строк матрицы W), i = 1,... ,n, таких, что (wi, k) mod m = ui.

Выберем из этого набора любые s, s Е {2,... ,n}, векторов w1,... ,ws, которые будем использовать для шифрования. Тогда вектор с, являющийся шифртекстом, будем строить как линейную комбинацию этих векторов:

s

с = Е a • Wi.

i=1

Коэффициенты ai найдём из диофантова уравнения

u1a1 + ... + usas = p.

Для того чтобы данное уравнение было разрешимо, необходимо существование как минимум двух взаимно простых компонент вектора u. Сформированный таким образом шифртекст c однозначно расшифровывается согласно формуле (1):

sss

(с, k) mod m = ( Е aiwi, k I mod m = E a ('w%, k) mod m = E aiui mod m = p.

\i=i J i=i i=i

Описанная схема шифрования является гомоморфной по сложению и умножению в силу свойств скалярного произведения и модулярной арифметики [1]. Рассмотрим подробнее операцию умножения. Найдём шифртекст для произведения чисел p1 и p2, которым соответствуют шифротексты a и b:

p1 • p2(mod m) = (a, k)(b, k) = (a^ + ... + ankn)(b1k1 + ... + bnk,n) = = a^1 k^1 + a^2 k^2 + ... + anbn-1 knkn-1 + anbnknkn =

= (a1b1 ,a^2,..., anbn-1, anbn)(hk1,k1k2,... ,k nkn—1, knkn^ .

Таким образом, в результате умножения двух шифртекстов длины n получается шифртекст длины n2:

2

с = a • b = (a1b1, a1b2,..., anbn-1,anbn) Е Zn .

Для решения этой проблемы предлагается использовать специальную таблицу умножения — матрицу (%jk). С её помощью компоненты вектора с = (с1,... , cn) —результата произведения двух шифртекстов — вычисляются следующим образом:

с^ = Е Е Yijk • ai • bj, k = 1,... ,n. ij

Если таблица умножения несимметрична, то для операции умножения шифртек-стов не выполняются свойства коммутативности и ассоциативности. За счёт этого гомоморфное шифрование является недетерминированным. Таблица умножения не является секретной и предъявляется в открытом виде недоверенной стороне, на которой выполняются вычисления над зашифрованными данными.

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

Описываемая криптосистема формируется на основе некоторого аналога известного алгоритма RSA [2], в котором модуль объявляется секретом. К сожалению, такая криптосистема является нестойкой, однако её можно модифицировать за счёт использования гомоморфного шифрования. Таким образом, предлагается возводить в степень предварительно зашифрованное исходное число.

Секретным ключом назовем модуль m и вектор k, которые используются в гомоморфном шифровании. В качестве открытого ключа возьмем векторы w1,w2 и соответствующие им взаимно простые числа u1,u2: (w^k) mod m = u^, i = 1, 2, и, кроме того, выберем целое число e, обратимое по модулю 0(m), где ф(х) —функция Эйлера. В открытом ключе хранится также таблица умножения (Yj ).

Предположим, что требуется зашифровать целое число p < 2* < m. Для этого сначала применим к p алгоритм гомоморфного шифрования, в результате чего получим шифртекст с. Затем подействуем на вектор с полиномиальной функцией F (x) = xe:

F (с) = ce = z.

Обратим внимание на то, что функцию F можно вычислять различными способами. Так как операция умножения шифртекстов не коммутативна и не ассоциативна, результат возведения шифртекста с в степень e определяется расстановкой скобок при выполнении умножения, например, с (с...  с) = (с...  с)  с. Благодаря этому алгоритм шифрования является недетерминированным.

При расшифровании необходимо сначала найти скалярное произведение (z, k) по модулю m:

(z, k) mod m = (се, k) mod m = pe mod m.

Кроме этого, отметим, что так как вектор с получен с помощью гомоморфного шифрования, вычисление функции F (с) эквивалентно вычислению функции F (p). Далее для восстановления исходного числа, аналогично алгоритму RSA, результат скалярного произведения (z, k) mod m возводится в степень d = e-1 mod 0(m):

(pe mod m)d = ped mod m = p.

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

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

ЛИТЕРАТУРА

1. KnuthD. The Art of Computer Programming. V. 2. Seminumerical Algorithms. Addison-

Wesley Pub. Co., 1981.

2. Shamir A. A polynomial time algorithm for breaking the basic Merkle — Hellman

cryptosystem // Adv. Cryptology. 1983. P. 279-288.