MulFullIdent

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

MulFullIdent — полный мультилинейный алгоритм шифрования на основе идентификационных данных.[1] Протокол построен на основе метода Фуджисаки-Окамото, предложенного в 1999 году.[2] Алгоритм является улучшением протокола MulBasicIdent.

Параметры протокола

Введены следующие обозначения для параметров и групп, использующихся в алгоритме:

  • n — число участвующих в генерации общего ключа сторон;
  • IDi — уникальное двоичное число (идентификатор) пользователя с номером i;
  • G1 — аддитивная циклическая группа;
  • G2 — мультипликативная циклическая группа.

Группы G1 и G2 используются для дальнейшего построения мультилинейного отображения.

Описание алгоритма

Протокол представлен этапами инициализации, получения закрытого ключа, шифрования и расшифрования. Пусть k∈ℤ — принимаемый алгоритмом на этапе инициализации параметр стойкости.

Инициализация

  1. На основе k Центром генерации закрытых ключей (PKG) вырабатывается простой порядок q групп G1 и G2, 2n-мультилинейное отображение μ:G1×G1×…×G1⏟2n→G2 и произвольный образующий элемент группы P∈G1.
  2. Центром PKG случайным образом выбираются элементы s1,…,sn∈ℤq∗ и вычисляется набор открытых ключей Ppub1=s1P,…,Ppubn=snP∈G1.
  3. Центром PKG выбираются криптографические хеш-функции H1:{0,1}∗→G1∗ и H2:G2→{0,1}l для некоторого l∈ℤ, H3:{0,1}l×{0,1}l→ℤq∗ и H4:{0,1}l→{0,1}l.

В данном алгоритме пространства сообщений и шифротекстов представляют собой множества ϑ={0,1}l и C=G1∗×{0,1}l×{0,1}l соответственно, элементы s1,…,sn∈ℤq∗ являются мастер-ключами абонентов, а системными параметрами является набор ⟨G1,G2,μ,l,P,Ppub1,…,Ppubn,H1,H2,H3,H4⟩.

Получение закрытого ключа

  1. Для идентификаторов абонентов ID1,…,IDn∈{0,1}∗ Центр PKG вычисляет QID1=H1(ID1)∈G1∗,…,QIDn=H1(IDn)∈G1∗.
  2. Центр PKG вычисляет и передает абонентам по защищенному каналу закрытые ключи dID1=s1QID1,…,dIDn=snQIDn, dIDi∈G1, где s1,…,sn — мастер-ключи.

Шифрование

Для шифрования сообщения M с помощью идентификаторов ID1,…,IDn∈{0,1}∗: абонент выполняет следующие операции:

  1. Вычисляет QID1=H1(ID1)∈G1∗,…,QIDn=H1(IDn)∈G1∗.
  2. Выбирает случайный вектор σ∈{0,1}l,l∈ℤ.
  3. Вычисляет r=H3(σ,M),r∈ℤq∗.
  4. Вычисляет шифротекст C=⟨rP,σ⊕H2(gr),M⊕H4(σ)⟩, где g=μ(QID1,…,QIDn,Ppub1,…,Ppubn)∈G2∗.

Расшифрование

Для расшифрования шифротекста C=⟨U,V,W⟩ абонентом с идентификатором IDi с помощью закрытого ключа dIDi∈G1∗ выполняются следующие процедуры.

  1. Если U∉G1∗, то шифротекст не принимается. В противном случае, с помощью закрытого ключа dIDi∈G1∗ вычисляется
V⊕H2(μ(QID1,…,QIDi−1,dIDi,QIDi+1,…,QIDn,Ppub1,…,Ppubi−1,U,Ppubi+1,…,Ppubn))=σ.
  1. Абонентом вычисляется W⊕H4(σ)=M.
  2. Абонентом вычисляется r=H3(σ,M),r∈ℤq∗ и проверяется U=rP.

Если равенство не выполняется, то шифротекст не принимается, противном случае полагается, что M — открытый текст.

Корректность алгоритма потдверждается аналогично MulBasicIdent.[1]

Примечания

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

Литература