MulFullIdent

Материал из testwiki
Версия от 15:11, 4 декабря 2019; imported>MBHbot (top: РДБ-запрос, replaced: ннн → нн)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

В данном алгоритме пространства сообщений и шифротекстов представляют собой множества ϑ={0,1}l и C=G1*×{0,1}l×{0,1}l соответственно, элементы s1,,snq* являются мастер-ключами абонентов, а системными параметрами является набор 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, dIDiG1, где 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),rq*.
  4. Вычисляет шифротекст C=rP,σH2(gr),MH4(σ), где g=μ(QID1,,QIDn,Ppub1,,Ppubn)G2*.

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

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

  1. Если UG1*, то шифротекст не принимается. В противном случае, с помощью закрытого ключа dIDiG1* вычисляется
VH2(μ(QID1,,QIDi1,dIDi,QIDi+1,,QIDn,Ppub1,,Ppubi1,U,Ppubi+1,,Ppubn))=σ.
  1. Абонентом вычисляется WH4(σ)=M.
  2. Абонентом вычисляется r=H3(σ,M),rq* и проверяется U=rP.

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

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

Примечания

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

Литература