Система обладает аддитивным гомоморфизмом (поддерживает произвольные добавления и одно умножение (за которым следуют произвольные добавления) для зашифрованных данных).
Как и все системы гомоморфного шифрования, КБГН включает следующие процессы: Генерация ключа, шифрование и расшифрование.
Конструкция использует некоторые конечные группы составного порядка, которые поддерживают билинейное отображение. Используются следующие обозначения:
и - две циклические группы конечного порядка .
— генератор .
— билинейное отображение . Другими словами, для всех и мы имеем . Мы также требуем выполнение условия : является генератором
Мы говорим, что — билинейная группа, если существует группа и билинейное отображение, определённое выше.[7]
Генерация ключа
Генерация_Ключа():
Подавая на вход параметр безопасности , вычисляем алгоритм , чтобы получить кортеж . Алгоритм работает следующим образом:
Сгенерируем два случайных — битовых числа и и положим .
Создадим билинейную группу порядка , где > 3 — заданное число, которое не делится на 3:
Найдём наименьшее натуральное число , такое что — простое число и .
Рассмотрим группу точек на эллиптической кривой опреленную над . Поскольку кривая имеет точек в . Поэтому группа точек на кривой имеет подгруппу порядка , которую обозначим через .
Пусть подгруппа в порядка . Модифицированный алгоритм спаривания Вейля (Спаривание Вейля является билинейным, кососимметричным, невырожденным отображением[8][4][9][10]) на кривой выдаёт билинейное отображение , удовлетворяющее заданным условиям
На выходе получим .
Пусть . Выберем два случайных генератора и определим , как . Тогда это случайный генератор подгруппы порядка . Открытый ключ : . Закрытый ключ : .[11][7]
Шифрование
Шифр():
Мы предполагаем, что пространство сообщений состоит из целых чисел в наборе . Чтобы зашифровать сообщение с помощью открытого ключа выбираем случайный параметр и вычисляем
Чтобы расшифровать шифротекст используя закрытый ключ , рассмотрим следующее выражение
.
Пусть . Чтобы восстановить достаточно вычислить дискретный логарифм по основанию .
Следует отметить, что дешифрование в этой системе занимает полиномиальное время в размере пространства сообщений.[11][7]
Примеры
Пример работы алгоритма
Сначала мы выбираем два различных простых числа
.
Вычислим произведение
.
Далее мы строим группу эллиптических кривых с порядком , которая имеет билинейное отображение. Уравнение для эллиптической кривой
которое определяется над полем для некоторого простого числа . В этом примере мы устанавливаем
.
Следовательно, кривая суперсингулярна с # рациональными точками, которая содержит подгруппу с порядком . В группе мы выбираем два случайных генератора
,
где эти два генератора имеют порядок и вычислим
где порядка . Мы вычисляем зашифрованный текст сообщения
.
Возьмём и вычислим
.
Для расшифровки мы сначала вычислим
и
.
Теперь найдём дискретный логарифм, перебирая все степени следующим образом
.
Обратите внимание, что . Следовательно, расшифровка зашифрованного текста равна , что соответствует исходному сообщению.[12]
Оценка 2-ДНФ
Частично гомоморфная система позволяет оценить 2-ДНФ.
На входе: У Алисы есть 2-ДНФ формула , а у Боба есть набор переменных . Обе стороны на входе содержат параметр безопасности .
Боб выполняет следующие действия:
Он исполняет алгоритм Генерация_Ключа(), чтобы вычислить и отправляет Алисе.
Он вычисляет и отправляет Шифр() для .
Алиса выполняет следующие действия:
Она выполняет арифметизацию заменяя «» на «», «» на «» и «» на «».Отметим, что это полином степени 2.
Алиса вычисляет шифрование для случайно выбранного используя гомоморфные свойства системы шифрования. Результат отправляется Бобу.
Если Боб получает шифрование «», он выводит «»; в противном случае, он выводит «».[13]
Гомоморфные свойства
Система является аддитивно гомоморфной. Пусть — открытый ключ. Пусть — шифротексты сообщений соответственно. Любой может создать равномерно распределённое шифрование вычисляя произведение для случайного чила в диапазоне .
Более важно то, что любой может умножить два зашифрованных сообщения один раз, используя билинейное отображение. Определим и . Тогда порядка , а порядка . Кроме того, для некоторого (неизвестного) параметра , напишем . Предположим, что нам известны два шифротекста , . Чтобы построить шифрование произведения , выберем случайное число и положим . Получаем , где — распределено равномерно в , как и необходимо.
Таким образом, является равномерно распределённым шифрованием , но только в группе , а не в (поэтому допускается только одно умножение).[11]
Стойкость системы
Стойкость данной схемы основана на задаче Бернсайда: зная элемент группы составного порядка , невозможно определить его приналежность к подгруппе порядка .
Пусть , а — кортеж, созданный , где . Рассмотрим следующую задачу. Для заданного и элемента , выведем «», если порядок равен , в противном случае, выведем «». Другими словами, без знания факторизации группы порядка , необходимо узнать, находится ли элемент в подгруппе группы . Данная задача называется задачей Бёрнсайда[7].
Понятно, что если мы можем учесть групповой порядок в криптосистеме, то мы знаем закрытый ключ , и в результате система взломана. Кроме того, если мы можем вычислить дискретные логарифмы в группе , то мы можем вычислить и . Таким образом, необходимые условия для безопасности: сложность факторинга и сложность вычисления дискретных логарифмов в .[14]
С. М. Владимиров, Э. М. Габидулин, А. И. Колыбельников, А. С. Кшевецкий. Криптографические методы защиты информации. — 2-е изд. — МФТИ, 2016. — С. 225—257. — 266 с. — ISBN 978-5-7417-0615-2.