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

Предикативное шифрование (англ. 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