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

Материал из testwiki
Перейти к навигации Перейти к поиску

Предикативное шифрование (Шаблон:Lang-en) — схема шифрования, при которой существует функциональная зависимость между шифротекстом и закрытым ключом. Закрытый ключ, связанный с предикатом F, может быть использован для расшифрования текста, ассоциированного с атрибутом I, только в том случае, когда F(I)=1.

Предпосылки

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

Определение

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

  • Создание открытого и «главного» закрытого ключей, PK и SK соответственно.
  • Генерация закрытого ключа, связанного с конкретным предикатом F
GenKey(SK,F)=SKF.
  • Шифрование сообщения M производится при помощи открытого ключа PK и атрибута I, описывающего сообщение M
ENCpk(I,M)=C.
  • Функция расшифрования возвращает исходное сообщение M только в том случае, когда предикат F и атрибут I связаны между собой, а именно если:
  • F(I)=1,DECskf(C)=M
  • F(I)=0,DECskf(C)=∅.[1][2]

Predicate-only Scheme

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

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

  • Генерация открытого и закрытого ключей
    1. Выбираются простые числа p,q,r, группа G, такая что : G=Gp×Gq×Gr
    2. Выбирается билинейное отображение : ê:G×G→Gt
    3. Выбираются случайные числа: R1,i,R2,i∈Gr,h1,i,h2,i∈Gp,i=1,n‾,R0∈Gr
    4. Открытым ключом является набор данных : PK=(N,G,Gt,ê,gp,gq,Q=gq⋅R0,H1,i=h1,i⋅R1,iH2,i=h2,i⋅R2,i,i=1,n‾
    5. Закрытый ключ : SK=(p,q,r,gq,h1,i,h2,i,i=1,n‾)
  • Генерация связанного закрытого ключа
    1. Пусть предикат описывается n-мерным вектором v→
    2. Выбираются случайные числа : r1,i,r2,i∈ℤp,i=1,n‾,R5∈Gr,f1,f2∈ℤq,Q6∈Gq
    3. Связанным закрытым ключом является: SKv→=(K=R5∗Q6∗∏i=1nh1,i−r1,i⋅h2,i−r2,i,K1,i=gpr1,i⋅gqf1⋅vi,K2,i=gpr2,i⋅gqf2⋅vi)
  • Шифрование
    1. Пусть, x→=(x1,...,xn),xi∈ℤN
    2. Выбираются случайные числа s,α,β∈ℤN,R3,i,R4,i∈Gr
    3. Тогда шифротекст C=(C0=gps,C1,i=H1,is⋅Qαxi⋅R3,i,C2,i=H2,is⋅Qβxi⋅R34,i)
  • Расшифрование
На выходе алгоритма расшифрования получится 1 только в том случае, если :
ê(C0,K)⋅∏i=1nê(C1,i,K1,i)⋅ê(C1,i,K1,i)=1

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

ê(C0,K)⋅∏i=1nê(C1,i,K1,i)⋅ê(C1,i,K1,i)=ê(gps,R5Q6∏i=1nh1,i−r1,i⋅h2,i−r2,i)⋅
⋅∏i=1nê(H1,is⋅Qαxi⋅R3,i,gpr1,i⋅gqf1⋅vi)⋅ê(H2,is⋅Qαxi⋅R4,i,gpr2,i⋅gqf2⋅vi)=
=ê(gps,∏i=1nh1,i−r1,i⋅h2,i−r2,i)⋅∏i=1nê(h1,is⋅gqαxi,gpr1,i⋅gpf1⋅vi)⋅ê(h2,is⋅gqαxi,gpr2,i⋅gqf2⋅vi)=
=∏i=1nê(gq,gq)(αf1+βf2)xivi=ê(gq,gq)(αf1+βf2modq)⋅(x→,y→)

Так как (x→,y→)=0 , то схема верна.[1]

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

Схема, в которой отрытым ключом пользователя может служить некоторая уникальная информация о пользователе, например его e-mail адрес.
  • Hidden Vector Encryption
Схема, в которой предикаты и сообщения определяются векторами. Корректное расшифрование происходит, если данные векторы совпадают покомпонентно. То есть:
F(a1...an)(i1...in)=1,ik=ak∀k[1]
  • Схема, основанная на скалярном произведении (Inner Product Encryption)
Схема, в которой значение предиката определяется скалярным произведением атрибута и закрытого ключа, ассоциированного с этим предикатом.
F(a1...an)(i1...in)=1,∑i=1nik∗ak=0[2]

См. также

Примечания

Шаблон:Примечания

Шаблон:Криптография

  1. ↑ 1,0 1,1 1,2 1,3 Jonathan Katz, Amit Sahai, Brent Waters Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products. — Journal of cryptology, 2013, pp 191—224.
  2. ↑ 2,0 2,1 Dan Boneh, Amit Sahai, Brent Waters Functional Encryption: Definitions and Challenges. -Theory of cryptography, 2011, pp 253—273