Математика разделения секрета
Рассмотрим следующую, в наше время вполне реальную ситуацию. Два совладельца драгоценности хотят положить ее на хранение в сейф. Сейф современный, с цифровым замком на 16 цифр. Так как совладельцы не доверяют друг другу, то они хотят закрыть сейф таким образом, чтобы они могли открыть его вместе, но никак не порознь. Для этого они приглашают третье лицо, называемое дилером, которому они оба доверяют (например, потому что оно не получит больше доступ к сейфу). Дилер случайно выбирает 16 цифр в качестве “ключа”, чтобы закрыть сейф, и затем сообщает первому совладельцу втайне от второго первые 8 цифр “ключа”, а второму совладельцу втайне от первого — последние 8 цифр “ключа”. Такой способ представляется с точки здравого смысла оптимальным, ведь каждый из совладельцев, получив “полключа”, не сможет им воспользоваться без второй половины, а что может быть лучше?! Недостатком данного примера является то, что любой из совладельцев, оставшись наедине с сейфом, может за пару минут найти недостающие “полключа” с помощью несложного устройства, предназначенного для перебора ключей и работающего на тактовой частоте 1 МГц. Кажется, что единственный выход — в увеличении размера “ключа”, скажем, вдвое. Но есть другой математический выход, опровергающий (в данном случае — к счастью) соображения здравого смысла. А именно, дилер независимо выбирает две случайные последовательности по 16 цифр в каждой, сообщает каждому из совладельцев втайне от другого “его” последовательность, а в качестве “ключа”, чтобы закрыть сейф, использует последовательность, полученную сложением по модулю 10 соответствующих цифр двух выбранных последовательностей. Довольно очевидно, что для каждого из совладельцев все 1016 возможных “ключей” одинаково вероятны и остается только перебирать их, что потребует в среднем около полутора лет для устройства перебора ключей, оборудованного процессором с частотой 100 МГц.
И с математической, и с практической точки зрения неинтересно останавливаться на случае двух участников и следует рассмотреть общую ситуацию.
Неформально говоря, схема, разделяющая секрет (СРС) позволяет “распределить” секрет между n участниками таким образом, чтобы заранее заданные разрешенные множества участников могли однозначно восстановить секрет (совокупность этих множеств называется структурой доступа), а неразрешенные — не получали никакой дополнительной к имеющейся априорной информации о возможном значении секрета. СРС с последним свойством называются совершенными.
История СРС начинается с 1979 года, когда эта проблема была поставлена и во многом решена Блейкли и Шамиром для случая пороговых (n, k)-СРС (т.е. разрешенными множествами являются любые множества из k или более элементов). Особый интерес вызвали так называемые идеальные СРС, т.е.такие, где объем информации, предоставляемой участнику, не больше объема секрета. Оказалось, что любой такой СРС соответствует матроид и, следовательно, не для любой структуры доступа возможно идеальное разделение секрета. С другой стороны, было показано, что для любого набора разрешенных множеств можно построить совершенную СРС, однако известные построения весьма неэкономны. Рассмотрим некоторые алгебро-геометрические и комбинаторные задачи, возникающие при математическом анализе СРС.
Будем говорить, что семейство подпространств {L0, …, Ln} конечномерного векторного пространства L над полем K удовлетворяет свойству “все или ничего”, если для любого множества A Ì {1, …, n} линейная оболочка подпространств {La: a Î A} либо содержит подпространство L0 целиком, либо пересекается с ним только по вектору 0. В подразделе “Линейное разделение секрета” мы увидим, что такое семейство задает “линейную” СРС, у которой множество A Ì {1, …, n} является разрешенным, если и только если линейная оболочка подпространств {La: a Î A} содержит подпространство L0 целиком. В связи с этим понятием возникает ряд вопросов. Например, если поле K конечно (|K| = q) и все подпространства {L0, …, Ln} одномерны, то каково максимально возможное число участников n для линейных пороговых (n, k)-СРС (k > 1)? Иначе говоря, каково максимально возможное число векторов {h0, …, hn} таких, что любые k векторов, содержащие вектор h0, линейно независимы, а любые k + 1 векторов, содержащие вектор h0, линейно зависимы.Оказывается, что это свойство эквивалентно следующему, на первый взгляд более сильному, свойству: любые k векторов линейно независимы, а любые k + 1 — линейно зависимы. Такие системы векторов изучались в геометрии как N-множества (N = n + 1) в конечной проективной геометрии PG(k–1, q), в комбинаторике — как ортогональные таблицы силы k и индекса ? = 1, в теории кодирования — как проверочные матрицы МДР кодов. В подразделе “Линейное разделение секрета” мы приведем известную конструкцию таких множеств с N = q + 1. Существует довольно старая гипотеза о том, что это и есть максимально возможное N, за исключением двух случаев: случая q < k, когда N = k + 1, и случая q = 2m, k = 3 или k = q – 1, когда N = q + 2.