Русская Википедия:Схема Блома

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

Шаблон:Другие значения Схема Блома — в криптографии, схема распределения ключей. Данная схема была представлена Рольфом Бломом в начале 1980-ых[1][2].

В схеме Блома доверенная сторона генерирует секретную симметричную матрицу над конечным полем. Далее участники самостоятельно или при помощи доверенной стороны создают себе открытый ключ. После этого доверенная сторона, используя секретную матрицу, создает закрытый ключ каждому пользователю. Участники, обмениваясь только открытыми ключами по незащищённым каналам связи, могут сгенерировать секретный сеансовый ключ для общения между собой.

Присоединение новых участников к схеме строго контролируется доверенной стороной, что позволяет защитить сеть от нелегальных пользователей. Надёжность данной схемы основывается на сложности восстановления секретной матрицы. Для восстановления матрицы необходимо иметь число ключей, равное количеству строк матрицы[3]

Схема Блома используется в протоколе HDCP в целях защиты видео от копирования[4].

Описание протокола

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

Доверенная сторона выбирает симметричную матрицу <math>D_{k,k}</math> над конечным полем <math>GF\left( p \right)</math>[3].

Добавление участника

Когда новый участник хочет присоединиться к группе, доверенная сторона выбирает для него новый открытый ключ, который представляет собой вектор (столбец) <math>I</math> размера <math>k</math>. Далее доверенная сторона вычисляет закрытый ключ <math>g</math>:

<math>g=D_{k,k}I</math>

Открытый и закрытый ключ сообщаются участнику по надёжному каналу без прослушивания[3].

Установление сессии

Если два участника хотят установить между собой секретный канал, они посылают друг другу по открытому каналу свои открытые ключи. Далее каждый из них умножает свой закрытый ключ на открытый ключ другой стороны. Если <math>I_A, g_A</math> — открытый и закрытый ключ одной стороны, <math>I_B, g_B</math> — ключи другой стороны, то:

<math>\begin{align}
D &= D^T\\
s_A &= g^T_A I_B = I^T_A D I_B = (I_B D I^T_A)^T = I^T_B D^T I_A = I^T_B D I_A \\
s_B &= g^T_B I_A = I^T_B D I_A\\
s_A &= s_B \\

\end{align}</math>

В результате у них получится одно и тоже число, которое и будет использоваться как общий сеансовый ключ[3]. Выражение <math>\begin{align} D = D^T \end{align}</math>следует из симметричности матрицы.

Надёжность схемы

Для вычисления общего секретного ключа двух сторон нужно знать секретную матрицу. Её можно восстановить, если получить <math>k</math> линейно независимых идентификаторов[3].

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

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

Пусть Алиса и Боб хотят выработать общий сеансовый ключ для общения между собой. Доверенный центр выбирает размер конечного поля и секретную матрицу:

<math>\begin{align}
p &= 17\\
D &= \begin{pmatrix} 1&6&2\\6&3&8\\2&8&2\end{pmatrix}\ \mathrm{mod}\ 17

\end{align}</math> Алиса и Боб выбирают себе идентификаторы (также могут выдаваться доверенным центром):

<math>I_{\mathrm{Alice}} = \begin{pmatrix} 3 \\ 10 \\ 11 \end{pmatrix}, I_{\mathrm{Bob}} = \begin{pmatrix} 1 \\ 3 \\ 15 \end{pmatrix}</math>

Доверенный центр вычисляет Алисе и Бобу закрытые ключи:

<math>\begin{align}
g_{\mathrm{Alice}} &= DI_{\mathrm{Alice}} &= \begin{pmatrix} 1&6&2\\6&3&8\\2&8&2\end{pmatrix}\begin{pmatrix} 3 \\ 10 \\ 11 \end{pmatrix} &= \begin{pmatrix} 0\\0\\6\end{pmatrix}\ \mathrm{mod}\ 17\\
g_{\mathrm{Bob}} &= DI_{\mathrm{Bob}} &= \begin{pmatrix} 1&6&2\\6&3&8\\2&8&2\end{pmatrix}\begin{pmatrix} 1 \\ 3 \\ 15 \end{pmatrix} &= \begin{pmatrix} 15\\16\\5\end{pmatrix}\ \mathrm{mod}\ 17

\end{align}</math>

Вычисление общего секретного ключа

Алиса передаёт Бобу свой идентификатор, а Боб — свой Алисе. После чего каждая из сторон вычисляет секретный ключ, умножая свой закрытый ключ на идентификатор второй стороны:

<math>\begin{align}

k_{\mathrm{Alice / Bob}} &= g_{\mathrm{Alice}}^T I_{\mathrm{Bob}} &= \begin{pmatrix} 0\\0\\6 \end{pmatrix}^T \begin{pmatrix} 1\\3\\15 \end{pmatrix} &= 0 \times 1 + 0 \times 3 + 6 \times 15 &= 5\ \mathrm{mod}\ 17\\
k_{\mathrm{Bob / Alice}} &= g_{\mathrm{Bob}}^T I_{\mathrm{Alice}} &= \begin{pmatrix} 15\\16\\5 \end{pmatrix}^T \begin{pmatrix} 3\\10\\11 \end{pmatrix} &= 15 \times 3 + 16 \times 10 + 5 \times 11& = 5\ \mathrm{mod}\ 17

\end{align}</math>

Примечания

Литература

  • Blom, Rolf. Non-public key distribution. In Proc. CRYPTO 82, pages 231–236, New York, 1983. Plenum Press
  • Шаблон:Source
  • Владимиров С.М. и др. Учебное пособие по защите информации кафедры радиотехники и систем управления МФТИ (6 сентября 2013).
  • Crosby, Scott; Goldberg, Ian; Johnson, Robert; Song, Dawn; Wagner, David (2002). A Cryptanalysis of the High-Bandwidth Digital Content Protection System. Security and Privacy in Digital Rights Management. DRM 2001.
  • Шаблон:Source