Предпосылки
Традиционная модель шифрования на открытом ключе недостаточно общая: отправитель шифрует сообщение на открытом ключе, и только владелец закрытого ключа, ассоциированного с открытым ключом, может расшифровать полученный текст и восстановить сообщение. Такой подход возможен только для связи вида точка — точка, когда зашифрованные данные предназначены для одного конкретного пользователя, который известен отправителю заранее. В других же задачах, в которых отправитель данных хочет установить некую политику, определяющую круг лиц, которым разрешён доступ к данным, данный подход не работает. На практике встречается достаточно много подобных задач, следовательно, требуется новый подход, который обеспечивает более универсальный контроль над зашифрованными данными. Предикативное шифрование является одним из таких подходов[1].
Определение
Схема предикативного шифрования для класса предикатов
над множеством атрибутов
состоит из следующих 4-х алгоритмов:
- Создание открытого и «главного» закрытого ключей,
и
соответственно.
- Генерация закрытого ключа, связанного с конкретным предикатом

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

.[1][2]
Predicate-only Scheme
Описание схемы
В данной схеме шифротекст связан с некоторым вектором
, а закрытый ключ — с вектором
. В процессе расшифрования необходимо проверить, что скалярное произведение
. В процессе проверки данного соотношения пользователь не должен получать никакой информации о векторе
. Для этого используется билинейная группа
порядка
, где
— произведение трёх простых чисел. Более детально данная схема выглядит следующим образом:
- Генерация открытого и закрытого ключей
- Выбираются простые числа
, группа
, такая что : 
- Выбирается билинейное отображение :

- Выбираются случайные числа:

- Открытым ключом является набор данных :

- Закрытый ключ :

- Генерация связанного закрытого ключа
- Пусть предикат описывается n-мерным вектором

- Выбираются случайные числа :

- Связанным закрытым ключом является:

- Шифрование
- Пусть,

- Выбираются случайные числа

- Тогда шифротекст

- Расшифрование
- На выходе алгоритма расшифрования получится 1 только в том случае, если :

Проверка корректности схемы




Так как
, то схема верна.[1]
Примеры других схем
- Схема, в которой открытым ключом пользователя может служить некоторая уникальная информация о пользователе, например его e-mail адрес.
- Схема, в которой предикаты и сообщения определяются векторами. Корректное расшифрование происходит, если данные векторы совпадают покомпонентно. То есть:
[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
|
|---|
| Алгоритмы | |
|---|
| Теория | |
|---|
| Стандарты | |
|---|
| Темы | |
|---|