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

Материал из testwiki
Версия от 19:32, 10 июня 2024; imported>1234qwer1234qwer4 (ассоцированного→ассоциированного - typos.toolforge.org)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Предикативное шифрование (Шаблон: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. В процессе расшифрования необходимо проверить, что скалярное произведение xv=0modN. В процессе проверки данного соотношения пользователь не должен получать никакой информации о векторе x. Для этого используется билинейная группа G порядка N, где N — произведение трёх простых чисел. Более детально данная схема выглядит следующим образом:

  • Генерация открытого и закрытого ключей
    1. Выбираются простые числа p,q,r, группа G, такая что : G=Gp×Gq×Gr
    2. Выбирается билинейное отображение : e^:G×GGt
    3. Выбираются случайные числа: R1,i,R2,iGr,h1,i,h2,iGp,i=1,n,R0Gr
    4. Открытым ключом является набор данных : PK=(N,G,Gt,e^,gp,gq,Q=gqR0,H1,i=h1,iR1,iH2,i=h2,iR2,i,i=1,n
    5. Закрытый ключ : SK=(p,q,r,gq,h1,i,h2,i,i=1,n)
  • Генерация связанного закрытого ключа
    1. Пусть предикат описывается n-мерным вектором v
    2. Выбираются случайные числа : r1,i,r2,ip,i=1,n,R5Gr,f1,f2q,Q6Gq
    3. Связанным закрытым ключом является: SKv=(K=R5*Q6*i=1nh1,ir1,ih2,ir2,i,K1,i=gpr1,igqf1vi,K2,i=gpr2,igqf2vi)
  • Шифрование
    1. Пусть, x=(x1,...,xn),xiN
    2. Выбираются случайные числа s,α,βN,R3,i,R4,iGr
    3. Тогда шифротекст C=(C0=gps,C1,i=H1,isQαxiR3,i,C2,i=H2,isQβxiR34,i)
  • Расшифрование
На выходе алгоритма расшифрования получится 1 только в том случае, если :
e^(C0,K)i=1ne^(C1,i,K1,i)e^(C1,i,K1,i)=1

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

e^(C0,K)i=1ne^(C1,i,K1,i)e^(C1,i,K1,i)=e^(gps,R5Q6i=1nh1,ir1,ih2,ir2,i)
i=1ne^(H1,isQαxiR3,i,gpr1,igqf1vi)e^(H2,isQαxiR4,i,gpr2,igqf2vi)=
=e^(gps,i=1nh1,ir1,ih2,ir2,i)i=1ne^(h1,isgqαxi,gpr1,igpf1vi)e^(h2,isgqαxi,gpr2,igqf2vi)=
=i=1ne^(gq,gq)(αf1+βf2)xivi=e^(gq,gq)(αf1+βf2modq)(x,y)

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

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

Схема, в которой отрытым ключом пользователя может служить некоторая уникальная информация о пользователе, например его e-mail адрес.
  • Hidden Vector Encryption
Схема, в которой предикаты и сообщения определяются векторами. Корректное расшифрование происходит, если данные векторы совпадают покомпонентно. То есть:
F(a1...an)(i1...in)=1,ik=akk[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