Схема Блома

Схема Блома — это симметричный пороговый протокол обмена ключами в криптографии . Схема была предложена шведским криптографом Рольфом Бломом в серии статей в начале 1980-х годов. [1] [2]

Доверенная сторона дает каждому участнику секретный ключ и открытый идентификатор, что позволяет любым двум участникам независимо создать общий ключ для общения. Однако, если злоумышленник может скомпрометировать ключи по крайней мере k пользователей, он может взломать схему и восстановить каждый общий ключ. Схема Блома является формой порогового разделения секрета .

Схема Блома в настоящее время используется схемой защиты от копирования HDCP (только версия 1.x) для генерации общих ключей для источников и приемников контента высокой четкости, таких как проигрыватели HD DVD и телевизоры высокой четкости . [3]

Протокол

Протокол обмена ключами включает доверенную сторону (Трент) и группу пользователей. Пусть Алиса и Боб будут двумя пользователями группы. н {\displaystyle \scriptstyle n}

Настройка протокола

Трент выбирает случайную и секретную симметричную матрицу над конечным полем , где p — простое число. требуется, когда новый пользователь должен быть добавлен в группу совместного использования ключей. Д к , к {\displaystyle \scriptstyle D_{k,k}} Г Ф ( п ) {\displaystyle \scriptstyle GF(p)} Д {\displaystyle \scriptstyle D}

Например:

к = 3 п = 17 Д = ( 1 6 2 6 3 8 2 8 2 )   м о г   17 {\displaystyle {\begin{aligned}k&=3\\p&=17\\D&={\begin{pmatrix}1&6&2\\6&3&8\\2&8&2\end{pmatrix}}\ \mathrm {mod} \ 17\end{aligned}}}

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

Новые пользователи Алиса и Боб хотят присоединиться к группе обмена ключами. Трент выбирает публичные идентификаторы для каждого из них; т.е. векторы k-элементов:

I A l i c e , I B o b G F k ( p ) {\displaystyle I_{\mathrm {Alice} },I_{\mathrm {Bob} }\in GF^{k}(p)} .

Например:

I A l i c e = ( 1 2 3 ) , I B o b = ( 5 3 1 ) {\displaystyle I_{\mathrm {Alice} }={\begin{pmatrix}1\\2\\3\end{pmatrix}},I_{\mathrm {Bob} }={\begin{pmatrix}5\\3\\1\end{pmatrix}}}

Затем Трент вычисляет их закрытые ключи:

g A l i c e = D I A l i c e g B o b = D I B o b {\displaystyle {\begin{aligned}g_{\mathrm {Alice} }&=DI_{\mathrm {Alice} }\\g_{\mathrm {Bob} }&=DI_{\mathrm {Bob} }\end{aligned}}}

Используя, как описано выше: D {\displaystyle D}

g A l i c e = ( 1 6 2 6 3 8 2 8 2 ) ( 1 2 3 ) = ( 19 36 24 )   m o d   17 = ( 2 2 7 )   g B o b = ( 1 6 2 6 3 8 2 8 2 ) ( 5 3 1 ) = ( 25 47 36 )   m o d   17 = ( 8 13 2 )   {\displaystyle {\begin{aligned}g_{\mathrm {Alice} }&={\begin{pmatrix}1&6&2\\6&3&8\\2&8&2\end{pmatrix}}{\begin{pmatrix}1\\2\\3\end{pmatrix}}={\begin{pmatrix}19\\36\\24\end{pmatrix}}\ \mathrm {mod} \ 17={\begin{pmatrix}2\\2\\7\end{pmatrix}}\ \\g_{\mathrm {Bob} }&={\begin{pmatrix}1&6&2\\6&3&8\\2&8&2\end{pmatrix}}{\begin{pmatrix}5\\3\\1\end{pmatrix}}={\begin{pmatrix}25\\47\\36\end{pmatrix}}\ \mathrm {mod} \ 17={\begin{pmatrix}8\\13\\2\end{pmatrix}}\ \end{aligned}}}

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

Вычисление общего ключа между Алисой и Бобом

Теперь Алиса и Боб хотят общаться друг с другом. У Алисы есть идентификатор Боба и ее закрытый ключ . I B o b {\displaystyle \scriptstyle I_{\mathrm {Bob} }} g A l i c e {\displaystyle \scriptstyle g_{\mathrm {Alice} }}

Она вычисляет общий ключ , где обозначает транспонирование матрицы . Боб делает то же самое, используя свой закрытый ключ и ее идентификатор, что дает тот же результат: k A l i c e / B o b = g A l i c e T I B o b {\displaystyle \scriptstyle k_{\mathrm {Alice/Bob} }=g_{\mathrm {Alice} }^{T}I_{\mathrm {Bob} }} T {\displaystyle \scriptstyle T}

k A l i c e / B o b = k A l i c e / B o b T = ( g A l i c e T I B o b ) T = ( I A l i c e T D T I B o b ) T = I B o b T D I A l i c e = k B o b / A l i c e {\displaystyle k_{\mathrm {Alice/Bob} }=k_{\mathrm {Alice/Bob} }^{T}=(g_{\mathrm {Alice} }^{T}I_{\mathrm {Bob} })^{T}=(I_{\mathrm {Alice} }^{T}D^{T}I_{\mathrm {Bob} })^{T}=I_{\mathrm {Bob} }^{T}DI_{\mathrm {Alice} }=k_{\mathrm {Bob/Alice} }}

Каждый из них сгенерирует свой общий ключ следующим образом:

k A l i c e / B o b = ( 2 2 7 ) T ( 5 3 1 ) = 2 × 5 + 2 × 3 + 7 × 1 = 23   m o d   17 = 6 k B o b / A l i c e = ( 8 13 2 ) T ( 1 2 3 ) = 8 × 1 + 13 × 2 + 2 × 3 = 40   m o d   17 = 6 {\displaystyle {\begin{aligned}k_{\mathrm {Alice/Bob} }&={\begin{pmatrix}2\\2\\7\end{pmatrix}}^{T}{\begin{pmatrix}5\\3\\1\end{pmatrix}}=2\times 5+2\times 3+7\times 1=23\ \mathrm {mod} \ 17=6\\k_{\mathrm {Bob/Alice} }&={\begin{pmatrix}8\\13\\2\end{pmatrix}}^{T}{\begin{pmatrix}1\\2\\3\end{pmatrix}}=8\times 1+13\times 2+2\times 3=40\ \mathrm {mod} \ 17=6\end{aligned}}}

Сопротивление атакам

Чтобы гарантировать, что по крайней мере k ключей должны быть скомпрометированы, прежде чем каждый общий ключ может быть вычислен злоумышленником, идентификаторы должны быть k-линейно независимыми: все наборы из k случайно выбранных идентификаторов пользователей должны быть линейно независимыми. В противном случае группа злонамеренных пользователей может вычислить ключ любого другого участника, идентификатор которого линейно зависит от их идентификатора. Чтобы гарантировать это свойство, идентификаторы предпочтительно должны быть выбраны из матрицы MDS-Code (матрица кода исправления ошибок с максимальным расстоянием разделения). Строки матрицы MDS будут идентификаторами пользователей. Матрицу MDS-Code можно выбрать на практике с использованием кодовой матрицы кода исправления ошибок Рида-Соломона (этот код исправления ошибок требует только легко понимаемой математики и может быть вычислен чрезвычайно быстро). [4]

Ссылки

  1. ^ Блом, Рольф. Непубличное распределение ключей. В Proc. CRYPTO 82, стр. 231–236, Нью-Йорк, 1983. Plenum Press
  2. ^ Блом, Рольф. «Оптимальный класс систем генерации симметричных ключей», Отчет LiTH-ISY-I-0641, Университет Линчёпинга, 1984 [1]
  3. ^ Кросби, Скотт; Голдберг, Ян; Джонсон, Роберт; Сонг, Дон; Вагнер, Дэвид (2002). «Криптоанализ системы защиты цифрового контента с высокой пропускной способностью». Безопасность и конфиденциальность в управлении цифровыми правами . Конспект лекций по информатике. Том 2320. С. 192–200. CiteSeerX  10.1.1.10.9307 . doi :10.1007/3-540-47870-1_12. ISBN 978-3-540-43677-5. {{cite book}}: |journal=проигнорировано ( помощь )
  4. ^ Менезес, А .; Пол К. ван Ооршот и Скотт А. Ванстоун (1996). Справочник по прикладной криптографии . CRC Press . ISBN 978-0-8493-8523-0.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Blom%27s_scheme&oldid=1171790179"