Предикативное шифрование (англ. Predicate encryption) — схема шифрования, при которой существует функциональная зависимость между шифротекстом и закрытым ключом. Закрытый ключ, связанный с предикатом , может быть использован для расшифрования текста, ассоциированного с атрибутом , только в том случае, когда .
Предпосылки
Традиционная модель шифрования на открытом ключе недостаточно общая: отправитель шифрует сообщение на открытом ключе, и только владелец закрытого ключа, ассоциированного с открытым ключом, может расшифровать полученный текст и восстановить сообщение. Такой подход возможен только для связи вида точка — точка, когда зашифрованные данные предназначены для одного конкретного пользователя, который известен отправителю заранее. В других же задачах, в которых отправитель данных хочет установить некую политику, определяющую круг лиц, которым разрешён доступ к данным, данный подход не работает. На практике встречается достаточно много подобных задач, следовательно, требуется новый подход, который обеспечивает более универсальный контроль над зашифрованными данными. Предикативное шифрование является одним из таких подходов[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
 |
---|
Алгоритмы | |
---|
Теория | |
---|
Стандарты | |
---|
Темы | |
---|
|