skip to content

Разделение ключей

Разделение секрета, или разделение ключей (англ, secret sharing и key sharing соответственно), представляет собой процедуру дробления секретного ключа на несколько частей с помощью специальной методики так, чтобы возможность шифрования или дешифрования сообщений возникла только при условии сбора всех частей воедино. Основное предназначение данной технологии — равноправное участие в криптооперациях нескольких пользователей, не доверяющих друг другу, в качестве единого лица. Например, три совладельца фирмы желают читать всю зашифрованную переписку по какому-либо контракту только в случае личного присутствия всех троих. Другой распространенный пример — применение в схемах депонирования ключей: передача секретного ключа на хранение одному доверенному лицу ставит владельца ключа в полную зависимость от него, а вот разделение (между двумя и более независимыми организациями позволяет хоть как-то защититься от возможного произвола.

Для читателей, которые в дальнейшем будут использовать англоязычную литературу, авторы хотели бы дать предостережение во избежание терминологической путаницы. В системах аутентификации, обмена ключами и ряде других (например, в описании протоколов Kerberos и RADIUS) можно встретить термин shared secret. В этом случае речь идет о каком-либо общем наборе данных, известном обычно двум сторонам и секретном для всех остальных. Например, в случае когда клиент изначально зарегистрирован на сервере, сервер и клиент обладают общим секретом (паролем клиента).

Естественно, простое дробление битового вектора ключа на несколько частей - совершенно неприемлемое решение. Ведь в этом случае при наличии одной или нескольких частей ключа пространство для поиска сокращается вдвое или втрое: вместо 2128 достаточно будет перебрать 243 вариантов. Основное правило процедур разделения ключа: если из всего уполномоченного коллектива отсутствует хотя бы один участник, оставшаяся группа все равно не должна ни на шаг приблизиться к истинному значению ключа, т.е. при ключе в 128 бит этой группе также необходимо перебрать все 212'8 вариантов, чтобы проверить правильность ключа.

Самая простая схема разделения TV-битного ключа KEY между двумя иболее (А) субъектами заключается в следующем:

  • создается К-1 случайных или криптостойких псевдослучайных векторов Si длины N;
  • последний компонент Sx вычисляется как "исключающее ИЛИ" всех предыдущих и ключа:

SK = S1 XOR S2 XOR XOR SK -1 XOR KEY, после чего ключ KEY надежно уничтожается.