Глава 12. Разделение секрета

12.1. Пороговые схемы

Идея пороговой $(K, N)$-схемы разделения общего секрета среди $N$ пользователей состоит в следующем. Доверенная сторона хочет распределить некий секрет $K_0$ между $N$ пользователями таким образом, что:

Далее рассмотрены три случая: $(K, N)$-схема Блэкли, $(K, N)$-схема Шамира и простая $(N,N)$-схема.

12.1.1. Схема разделения секрета Блэкли

Схема разделения секрета Блэкли (англ. George Robert Blakley, [15], рис. 12.1), также называемая векторной схемой, основывается на том, что для восстановления всех координат точки в $K$-мерном пространстве, принадлежащей нескольким неколлинеарным гиперплоскостям, необходимо и достаточно знать уравнения $K$ таких плоскостей. То есть в двумерном пространстве нужны две пересекающиеся прямые, в трёхмерном – три пересекающиеся в нужной точке плоскости и так далее.

(a)
(b)
Рис. 12.1 — Для восстановления координат точки пересечения плоскостей в трёхмерном пространстве необходимо и достаточно знать уравнения трёх таких плоскостей. Данные изображения приведены только для иллюстрации идеи: в схеме Блэкли используется конечное поле, плоскости в котором сложно представить на графике. Рисунок участника English Wikipedia stib, доступно по лицензии CC-BY-SA 3.0

Для разделения секрета $M$ между $N$ сторонами таким образом, чтобы любые $K$ сторон могли восстановить секрет, доверенный центр выполняет следующие операции:

Если стороны могут собраться вместе и получить не менее чем $K$ различных гиперплоскостей, то, составив и решив систему уравнений с $K$ неизвестными, они смогут получить все координаты точки $x_1, x_2, \dots, x_k$:

$$ \left\{ \begin{array}{l} C^1_1 x_1 + C^1_2 x_2 + \dots + C^1_K x_K + C^1_{K+1} = 0 \mod p, \\ \dots, \\ C^K_1 x_1 + C^K_2 x_2 + \dots + C^K_K x_K + C^K_{K+1} = 0 \mod p. \\ \end{array} \right. $$

Если собрано меньшее количество следов (уравнений гиперплоскостей), то их будет недостаточно для решения системы уравнений.

Пример. Приведём пример разделения секрета по схеме Блэкли в ${{\mathbb{GF}}(11)}$. При разделении секрета $M$, используя $(3,N)$-пороговую схему Блэкли, участники получили следы: $(4, 8, 2, 6)$, $(2, 6, 8, 3)$, $(6, 8, 4, 1)$. Зная, что следы представляют собой коэффициенты в уравнении плоскости общего вида, а исходный секрет – первую координату точки пересечения плоскостей, составляем систему уравнений для нахождения координаты этой точки:

$$ \left\{\begin{aligned} \left( 4\cdot x_1 + 8\cdot x_2 + 2\cdot x_3 + 6 \right) &= 0 &\mod 11, \\ \left( 2\cdot x_1 + 6\cdot x_2 + 8\cdot x_3 + 3 \right) &= 0 &\mod 11, \\ \left( 6\cdot x_1 + 8\cdot x_2 + 4\cdot x_3 + 1 \right) &= 0 &\mod 11. \\ \end{aligned} \right. $$

Решением данной системы будет являться точка (6, 4, 2), а её первая координата – разделяемый секрет.

12.1.2. Схема разделения секрета Шамира

Схема разделения секрета Шамира (англ. Adi Shamir, [93]), также называемая схемой интерполяционных полиномов Лагранжа, основывается на том, что для восстановления всех коэффициентов полинома $P(x) = a_{K-1}x^{K-1} + \dots + a_1 x + a_0$ степени $K-1$ требуется $K$ координат различных точек, принадлежащих кривой $y=P(x)$. Все операции проводятся в конечном поле $GF(p)$.

Рис. 12.2 — Через две точки можно провести неограниченное число графиков, заданных полиномами степени 2. Для выбора единственного из них нужна третья точка. Данные графики приведены только для иллюстрации идеи: в схеме Шамира используется конечное поле, полиномы над которым сложно представить на графике.

Для разделения секрета $M$ между $N$ сторонами таким образом, чтобы любые $K$ сторон могли восстановить секрет, доверенный центр выполняет следующие операции:

Если стороны могут собраться вместе и получить не менее чем $K$ различных следов, то, составив и решив систему уравнений с $K$ неизвестными, они смогут получить все коэффициенты $a_0, a_1, \dots, a_{k-1}$ секретного многочлена:

$$ \left\{ \begin{array}{l} y_1 = a_{K-1}x_1^{K-1} + \dots + a_1 x_1 + a_0 \mod p, \\ \dots, \\ y_k = a_{K-1}x_k^{K-1} + \dots + a_1 x_k + a_0 \mod p. \\ \end{array} \right. $$

Если собрано меньшее количество следов, то их будет недостаточно для решения системы уравнений.

Существует также способ вычисления коэффициентов многочлена, основанный на методе интерполяционных полиномов Лагранжа (откуда и берётся второе название метода разделения секрета). Идея способа состоит в вычислении набора специальных полиномов $l_i \left( x \right)$, которые принимают значение $1$ в точке $x_i$, а во всех остальных точках-следах их значение равно нулю:

$$ \begin{cases} l_i \left( x_j \right) = 1, &x_j = x_i, \\ l_i \left( x_j \right) = 0, &x_j \ne x_i. \\ \end{cases} $$

Далее эти многочлены умножаются на значения $y_i$ и в сумме дают исходный многочлен:

$$\begin{array}{llll} l_i \left( x \right) &=& \prod\limits_{j \ne i} {\frac{{x - x_j }}{{x_i - x_j }}} &\mod p, \\ F\left( x \right) &=& \sum\limits_i {l_i \left( x \right)y_i } &\mod p. \\ \end{array}$$

Строго говоря, для восстановления самого секрета, которым является свободный член многочлена, не обязательно восстанавливать весь многочлен, а можно использовать упрощённую формулу для восстановления только свободного члена $a_0 = M$:

$$ M = \sum\limits_{i=0}^{k-1} y_i \prod\limits_{j=0, j \neq i}^{k-1} \frac{x_j}{x_j - x_i}. $$

Пример. Приведём схему Шамира в поле ${{\mathbb{GF}}(p)}$. Для разделения секрета $M$ в $(3,n)$-пороговой схеме используется многочлен степени $3-1=2$.

$$ f(x) = a x^2 + b x + M \mod p, $$

где $p$ – простое число. Пусть $p=23$. Восстановим секрет $M$ по теням

$$ (1,14), (4,21), (15,6). $$

Последовательно вычисляем

$$\begin{array}{llc} M &\displaystyle = \sum\limits_{i=0}^{k-1} y_i \prod\limits_{j=0, j \neq i}^{k-1} \frac{x_j}{x_j - x_i} \mod p = & \\ \\ &= 14 {\cdot} \frac{4}{4-1} {\cdot} \frac{15}{15-1} + 21 {\cdot} \frac{1}{1-4} {\cdot} \frac{15}{15-4} + 6 {\cdot} \frac{1}{1-15} {\cdot} \frac{4}{4-15} & \mod 23 = \\ \\ &\displaystyle = 14 {\cdot} \frac{4}{3} {\cdot} \frac{15}{14} + 21 {\cdot} \frac{1}{-3} {\cdot} \frac{15}{11} + 6 {\cdot} \frac{1}{-14} {\cdot} \frac{4}{-11} & \mod 23 = \\ \\ &\displaystyle = 20 - 7 \cdot 15 \cdot 11^{-1} + 12 \cdot 7^{-1} \cdot 11^{-1} & \mod 23 = \\ \\ &= 13 \mod 23. \end{array}$$

12.1.3. $(N, N)$-схема разделения секрета

Рассмотрим пороговую схему распределения одного секрета между двумя легальными пользователями. Она обозначается как $(2, 2)$-схема – это означает, что оба и только оба пользователя могут получить секрет. Предположим, что секрет $K_{0}$ – это двоичная последовательность длины $M$, $K_{0} \in {{\mathbb{Z}}}_{M}$.

Разделение секрета $K_{0}$ состоит в следующем.

Теперь рассмотрим пороговую $(N,N)$-схему.

Имеются общий секрет $K_{0} \in {{\mathbb{Z}}}_{M}$ и $N$ легальных пользователей, которые могут получить секрет только в случае, если одновременно предъявят свои секретные ключи. Распределение секрета $K_{0}$ происходит следующим образом.

Предположим, что собравшихся вместе пользователей меньше общего числа $N$, например, всего $N-1$ пользователей. Тогда суммирование $N-1$ последовательностей не определяет секрета, а перебор невозможен, так как данная схема разделения секрета аналогична криптосистеме Вернама и обладает совершенной криптостойкостью.