Предикативное шифрование
Предикативное шифрование (англ. Predicate encryption) — схема шифрования, при которой существует функциональная зависимость между шифротекстом и закрытым ключом. Закрытый ключ, связанный с предикатом , может быть использован для расшифрования текста, ассоциированного с атрибутом , только в том случае, когда .
Предпосылки
Традиционная модель шифрования на открытом ключе недостаточно общая: отправитель шифрует сообщение на открытом ключе, и только владелец закрытого ключа, ассоциированного с открытым ключом, может расшифровать полученный текст и восстановить сообщение. Такой подход возможен только для связи вида точка — точка, когда зашифрованные данные предназначены для одного конкретного пользователя, который известен отправителю заранее. В других же задачах, в которых отправитель данных хочет установить некую политику, определяющую круг лиц, которым разрешён доступ к данным, данный подход не работает. На практике встречается достаточно много подобных задач, следовательно, требуется новый подход, который обеспечивает более универсальный контроль над зашифрованными данными. Предикативное шифрование является одним из таких подходов[1].
Определение
Схема предикативного шифрования для класса предикатов над множеством атрибутов состоит из следующих 4-х алгоритмов:
- Создание открытого и «главного» закрытого ключей, и соответственно.
- Генерация закрытого ключа, связанного с конкретным предикатом
- .
- Шифрование сообщения производится при помощи открытого ключа и атрибута , описывающего сообщение
- .
- Функция расшифрования возвращает исходное сообщение только в том случае, когда предикат и атрибут связаны между собой, а именно если:
Predicate-only Scheme
Описание схемы
В данной схеме шифротекст связан с некоторым вектором , а закрытый ключ — с вектором . В процессе расшифрования необходимо проверить, что скалярное произведение . В процессе проверки данного соотношения пользователь не должен получать никакой информации о векторе . Для этого используется билинейная группа порядка , где — произведение трёх простых чисел. Более детально данная схема выглядит следующим образом:
- Генерация открытого и закрытого ключей
- Выбираются простые числа , группа , такая что :
- Выбирается билинейное отображение :
- Выбираются случайные числа:
- Открытым ключом является набор данных :
- Закрытый ключ :
- Генерация связанного закрытого ключа
- Пусть предикат описывается n-мерным вектором
- Выбираются случайные числа :
- Связанным закрытым ключом является:
- Шифрование
- Пусть,
- Выбираются случайные числа
- Тогда шифротекст
- Расшифрование
- На выходе алгоритма расшифрования получится 1 только в том случае, если :
Проверка корректности схемы
Так как , то схема верна.[1]
Примеры других схем
- Схема, в которой отрытым ключом пользователя может служить некоторая уникальная информация о пользователе, например его e-mail адрес.
- Hidden Vector Encryption
- Схема, в которой предикаты и сообщения определяются векторами. Корректное расшифрование происходит, если данные векторы совпадают покомпонентно. То есть:
- [1]
- Схема, основанная на скалярном произведении (Inner Product Encryption)
- Схема, в которой значение предиката определяется скалярным произведением атрибута и закрытого ключа, ассоциированного с этим предикатом.
- [2]
См. также
Примечания
- ↑ 1 2 3 4 Jonathan Katz, Amit Sahai, Brent Waters Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products. — Journal of cryptology, 2013, pp 191—224.
- ↑ 1 2 Dan Boneh, Amit Sahai, Brent Waters Functional Encryption: Definitions and Challenges. -Theory of cryptography, 2011, pp 253—273