Схема Блома

10.12.2020

Схема Блома — в криптографии, схема распределения ключей.

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

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

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

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

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

Доверенная сторона выбирает симметричную матрицу D k , k {displaystyle D_{k,k}} над конечным полем G F ( p ) {displaystyle GFleft(p ight)} .

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

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

g = D k , k I {displaystyle g=D_{k,k}I}

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

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

Если два участника хотят установить между собой секретный канал, они посылают друг другу по открытому каналу свои открытые ключи. Далее каждый из них умножает свой закрытый ключ на открытый ключ другой стороны. Если I A , g A {displaystyle I_{A},g_{A}} — открытый и закрытый ключ одной стороны, I B , g B {displaystyle I_{B},g_{B}} — ключи другой стороны, то:

s A = ( g A t I B ) t = ( I A t D I B ) t = I B t D I A s B = ( g B t I A ) t = ( I B t D I A ) t = I A t D I B s A = s B {displaystyle {egin{aligned}s_{A}&=(g_{A}^{t}I_{B})^{t}&=(I_{A}^{t}DI_{B})^{t}&=I_{B}^{t}DI_{A}s_{B}&=(g_{B}^{t}I_{A})^{t}&=(I_{B}^{t}DI_{A})^{t}&=I_{A}^{t}DI_{B}s_{A}&=s_{B}end{aligned}}}

В результате у них получится одно и тоже число (это следует из симметричности матрицы D {displaystyle D} ), которое и будет использоваться как общий сеансовый ключ.

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

Для вычисления общего секретного ключа двух сторон нужно знать секретную матрицу. Её можно восстановить, если получить k {displaystyle k} линейно независимых идентификаторов.

Пример

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

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

p = 17 D = ( 1 6 2 6 3 8 2 8 2 )   m o d   17 {displaystyle {egin{aligned}p&=17D&={egin{pmatrix}1&6&26&3&82&8&2end{pmatrix}} mathrm {mod} 17end{aligned}}}

Алиса и Боб выбирают себе идентификаторы (также могут выдаваться доверенным центром):

I A l i c e = ( 3 10 11 ) , I B o b = ( 1 3 15 ) {displaystyle I_{mathrm {Alice} }={egin{pmatrix}31011end{pmatrix}},I_{mathrm {Bob} }={egin{pmatrix}1315end{pmatrix}}}

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

g A l i c e = D I A l i c e = ( 1 6 2 6 3 8 2 8 2 ) ( 3 10 11 ) = ( 0 0 6 )   m o d   17 g B o b = D I B o b = ( 1 6 2 6 3 8 2 8 2 ) ( 1 3 15 ) = ( 15 16 5 )   m o d   17 {displaystyle {egin{aligned}g_{mathrm {Alice} }&=DI_{mathrm {Alice} }&={egin{pmatrix}1&6&26&3&82&8&2end{pmatrix}}{egin{pmatrix}31011end{pmatrix}}&={egin{pmatrix}06end{pmatrix}} mathrm {mod} 17g_{mathrm {Bob} }&=DI_{mathrm {Bob} }&={egin{pmatrix}1&6&26&3&82&8&2end{pmatrix}}{egin{pmatrix}1315end{pmatrix}}&={egin{pmatrix}15165end{pmatrix}} mathrm {mod} 17end{aligned}}} Вычисление общего секретного ключа

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

k A l i c e / B o b = g A l i c e t I B o b = ( 0 0 6 ) t ( 1 3 15 ) = 0 × 1 + 0 × 3 + 6 × 15 = 5   m o d   17 k B o b / A l i c e = g B o b t I A l i c e = ( 15 16 5 ) t ( 3 10 11 ) = 15 × 3 + 16 × 10 + 5 × 11 = 5   m o d   17 {displaystyle {egin{aligned}k_{mathrm {Alice/Bob} }&=g_{mathrm {Alice} }^{t}I_{mathrm {Bob} }&={egin{pmatrix}06end{pmatrix}}^{t}{egin{pmatrix}1315end{pmatrix}}&=0 imes 1+0 imes 3+6 imes 15&=5 mathrm {mod} 17k_{mathrm {Bob/Alice} }&=g_{mathrm {Bob} }^{t}I_{mathrm {Alice} }&={egin{pmatrix}15165end{pmatrix}}^{t}{egin{pmatrix}31011end{pmatrix}}&=15 imes 3+16 imes 10+5 imes 11&=5 mathrm {mod} 17end{aligned}}}


Имя:*
E-Mail:
Комментарий: