Русская Википедия:MulFullIdent
MulFullIdent — полный мультилинейный алгоритм шифрования на основе идентификационных данных.[1] Протокол построен на основе метода Фуджисаки-Окамото, предложенного в 1999 году.[2] Алгоритм является улучшением протокола MulBasicIdent.
Параметры протокола
Введены следующие обозначения для параметров и групп, использующихся в алгоритме:
- <math>n</math> — число участвующих в генерации общего ключа сторон;
- <math>ID_i</math> — уникальное двоичное число (идентификатор) пользователя с номером <math>i</math>;
- <math>G_1</math> — аддитивная циклическая группа;
- <math>G_2</math> — мультипликативная циклическая группа.
Группы <math>G_1</math> и <math>G_2</math> используются для дальнейшего построения мультилинейного отображения.
Описание алгоритма
Протокол представлен этапами инициализации, получения закрытого ключа, шифрования и расшифрования. Пусть <math>k \in \mathbb{Z}</math> — принимаемый алгоритмом на этапе инициализации параметр стойкости.
Инициализация
- На основе <math>k</math> Центром генерации закрытых ключей (PKG) вырабатывается простой порядок <math>q</math> групп <math>G_1</math> и <math>G_2</math>, <math>2n</math>-мультилинейное отображение <math>\mu \colon \underbrace{G_1 \times G_1 \times \ldots \times G_1}_{2n} \to G_2</math> и произвольный образующий элемент группы <math>P \in G_1</math>.
- Центром PKG случайным образом выбираются элементы <math>s_1, \ldots, s_n \in \mathbb{Z}_q^*</math> и вычисляется набор открытых ключей <math>P_{pub_1} = s_1 P, \ldots, P_{pub_n} = s_n P \in G_1</math>.
- Центром PKG выбираются криптографические хеш-функции <math>H_1 \colon \{0,1\}^* \to G_1^*</math> и <math>H_2 \colon G_2 \to \{0,1\}^l</math> для некоторого <math>l \in \mathbb{Z}</math>, <math>H_3:\{0,1\}^l\times\{0,1\}^l\to\mathbb{Z}_q^*</math> и <math>H_4:\{0,1\}^l\to\{0,1\}^l</math>.
В данном алгоритме пространства сообщений и шифротекстов представляют собой множества <math>\vartheta = \{0,1\}^l</math> и <math>C = G_1^* \times \{0,1\}^l \times \{0,1\}^l</math> соответственно, элементы <math>s_1, \ldots, s_n \in \mathbb{Z}_q^*</math> являются мастер-ключами абонентов, а системными параметрами является набор <math>\langle G_1, G_2, \mu, l, P, P_{pub_1}, \ldots, P_{pub_n}, H_1, H_2, H_3, H_4 \rangle</math>.
Получение закрытого ключа
- Для идентификаторов абонентов <math>ID_1, \ldots, ID_n \in \{0,1\}^*</math> Центр PKG вычисляет <math>Q_{ID_1} = H_1(ID_1) \in G_1^*, \ldots, Q_{ID_n} = H_1(ID_n) \in G_1^*</math>.
- Центр PKG вычисляет и передает абонентам по защищенному каналу закрытые ключи <math>d_{ID_1} = s_1Q_{ID_1}, \ldots, d_{ID_n} = s_nQ_{ID_n}</math>, <math>d_{ID_i} \in G_1</math>, где <math>s_1, \ldots, s_n</math> — мастер-ключи.
Шифрование
Для шифрования сообщения <math>M</math> с помощью идентификаторов <math>ID_1, \ldots, ID_n \in \{0,1\}^*:</math> абонент выполняет следующие операции:
- Вычисляет <math>Q_{ID_1} = H_1(ID_1) \in G_1^*, \ldots, Q_{ID_n} = H_1(ID_n) \in G_1^*</math>.
- Выбирает случайный вектор <math>\sigma \in \{0,1\}^l, l \in \mathbb{Z}</math>.
- Вычисляет <math>r = H_3(\sigma, M), r \in \mathbb{Z}_q^*</math>.
- Вычисляет шифротекст <math>C = \langle rP, \sigma \oplus H_2(g^r), M \oplus H_4(\sigma) \rangle</math>, где <math>g = \mu (Q_{ID_1}, \ldots, Q_{ID_n}, P_{pub_1}, \ldots, P_{pub_n}) \in G_2^*</math>.
Расшифрование
Для расшифрования шифротекста <math>C = \langle U, V, W \rangle</math> абонентом с идентификатором <math>ID_i</math> с помощью закрытого ключа <math>d_{ID_i} \in G_1^*</math> выполняются следующие процедуры.
- Если <math>U\notin G_1^*</math>, то шифротекст не принимается. В противном случае, с помощью закрытого ключа <math>d_{ID_i} \in G_1^*</math> вычисляется
- <math>
V \oplus H_2(\mu(Q_{ID_1}, \ldots, Q_{ID_{i-1}}, d_{ID_i}, Q_{ID_{i+1}}, \ldots, Q_{ID_n}, P_{pub_1}, \ldots, P_{pub_{i-1}}, U, P_{pub_{i+1}}, \ldots, P_{pub_n})) = \sigma. </math>
- Абонентом вычисляется <math>W \oplus H_4(\sigma) = M</math>.
- Абонентом вычисляется <math>r = H_3(\sigma, M), r \in \mathbb{Z}_q^*</math> и проверяется <math>U=rP</math>.
Если равенство не выполняется, то шифротекст не принимается, противном случае полагается, что <math>M</math> — открытый текст.
Корректность алгоритма потдверждается аналогично MulBasicIdent.[1]
Примечания
Литература