Предикативное шифрование

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Предикативное шифрование (англ. Predicate encryption) — схема шифрования, при которой существует функциональная зависимость между шифротекстом и закрытым ключом. Закрытый ключ, связанный с предикатом , может быть использован для расшифрования текста, ассоциированного с атрибутом , только в том случае, когда .

Предпосылки

[править | править код]

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

Определение

[править | править код]

Схема предикативного шифрования для класса предикатов над множеством атрибутов состоит из следующих 4-х алгоритмов:

  • Создание открытого и «главного» закрытого ключей, и соответственно.
  • Генерация закрытого ключа, связанного с конкретным предикатом
.
  • Шифрование сообщения производится при помощи открытого ключа и атрибута , описывающего сообщение
.
  • Функция расшифрования возвращает исходное сообщение только в том случае, когда предикат и атрибут связаны между собой, а именно если:
  • .[1][2]

Predicate-only Scheme

[править | править код]

Описание схемы

[править | править код]

В данной схеме шифротекст связан с некоторым вектором , а закрытый ключ — с вектором . В процессе расшифрования необходимо проверить, что скалярное произведение . В процессе проверки данного соотношения пользователь не должен получать никакой информации о векторе . Для этого используется билинейная группа порядка , где  — произведение трёх простых чисел. Более детально данная схема выглядит следующим образом:

  • Генерация открытого и закрытого ключей
    1. Выбираются простые числа , группа , такая что :
    2. Выбирается билинейное отображение :
    3. Выбираются случайные числа:
    4. Открытым ключом является набор данных :
    5. Закрытый ключ :
  • Генерация связанного закрытого ключа
    1. Пусть предикат описывается n-мерным вектором
    2. Выбираются случайные числа :
    3. Связанным закрытым ключом является:
  • Шифрование
    1. Пусть,
    2. Выбираются случайные числа
    3. Тогда шифротекст
  • Расшифрование
На выходе алгоритма расшифрования получится 1 только в том случае, если :

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

[править | править код]

Так как , то схема верна.[1]

Примеры других схем

[править | править код]
Схема, в которой отрытым ключом пользователя может служить некоторая уникальная информация о пользователе, например его e-mail адрес.
  • Hidden Vector Encryption
Схема, в которой предикаты и сообщения определяются векторами. Корректное расшифрование происходит, если данные векторы совпадают покомпонентно. То есть:
[1]
  • Схема, основанная на скалярном произведении (Inner Product Encryption)
Схема, в которой значение предиката определяется скалярным произведением атрибута и закрытого ключа, ассоциированного с этим предикатом.
[2]

Примечания

[править | править код]
  1. 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.
  2. 1 2 Dan Boneh, Amit Sahai, Brent Waters Functional Encryption: Definitions and Challenges. -Theory of cryptography, 2011, pp 253—273