ANDOS (криптография)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

ANDOS (англ. All or Nothing Disclosure Of Secrets) — криптографический протокол «секретной продажи секретов». Пусть продавец S секретов имеет некий список вопросов и выставляет на продажу ответы к любому из них. Предположим, покупатель B хочет купить секрет, но не хочет раскрывать какой именно. Протокол гарантирует, что B получит нужный ему секрет и ничего более, в то время как S не будет знать какой именно секрет получил B.

Алгоритм[править | править код]

Пусть секреты, которым обладает S, каждый из них содержит бит. Для каждого S публикует описание секрета. Предположим, что покупатели B и C хотят купить секреты и , соответственно. Идея в том, что покупатели имеют индивидуальные односторонние функции и каждый из них оперирует над числами, полученными другим.

Шаг 1. S даёт B и C индивидуальные односторонние функции f и g, но сохраняет обратные к ним для себя.
Шаг 2. B сообщает C (соответственно C — B) случайных -битных чисел (соответственно ).

Для , отображающего -разрядные числа в -разрядные числа, и -разрядного числа , скажем, что индекс  — это Индекс Фиксированного Бита (ИФБ) соответствующего паре , если -й бит в равен -му биту в . Ясно, что есть ИФБ соответствующий паре , если он является ИФБ, соответствующим паре . Если ведёт себя достаточно произвольно при изменении битов в (как хорошие криптографические функции), то, для случайного , можно грубо оценить, что примерно индексов являются ИФБ, соответствующими

Шаг 3. B сообщает C (соответственно C — B) набор ИФБ индексов, соответствующих соответственно набор ИФБ индексов, соответствующих
Шаг 4. B (соответственно C) сообщает S числа (соответственно , где  — результат, полученный заменой каждого бита в , чей индекс не является ИФБ, ему противоположным (соответственно получаются из аналогичным образом).
Шаг 5. S сообщает B (соответственно C) числа
соответственно , .
Шаг 6. B (соответственно C) может вычислить (соответственно ), поскольку известны соответственно

B и C узнали нужные им секреты. S не узнал ничего об их выборе. Кроме того, ни B, ни C не узнали более одного секрета или выбора друг друга. Сговор между B и C приводит к тому, что они могут узнать все секреты. Сговор между S и кем-либо из покупателей может вскрыть какой секрет хочет другой покупатель.

Итак, основная проблема заключается в сговорах. Однако в случае, если покупателей не меньше трёх, то одного честного покупателя достаточно для того, чтобы сделать невозможным жульничество остальных, благодаря использованию криптографический функций, так как каждый бит последовательности, отправленный покупателям от S сильно зависит от бит предоставленных честным покупателем.

В случае, ели число покупателей протокол действует абсолютно так же, но каждый покупатель получает функцию от продавца наравне с наборами чисел от других покупателей.

Примеры[править | править код]

  • За основу односторонних функций и возьмём RSA.
Выберем . Считаем, что S имеет 8 следующих 12-битных секретов на продажу:
Шаг 1.
S даёт B и C индивидуальные односторонние функции f и g, основанные на простых числах (соответственно ), модуль (соответственно ). Открытая и закрытая экспоненты равны (соответственно ).
Шаг 2.
B сообщает C восемь 12-битных чисел :
C сообщает B восемь 12-битных чисел :
Шаг 3.
Пусть B хочет купить секрет . Он вычисляет
Сравнивая бинарное представление и
B сообщает C набор ИФБ соответствующих
Пусть C хочет купить секрет . После вычислений, C сообщает B набор ИФБ соответствующих
Шаг 4.
B сообщает S числа , где  — результат, полученный заменой каждого бита в , чей индекс не принадлежит , на противоположный, например:
C сообщает S числа , где  — результат, полученный заменой каждого бита в , чей индекс не принадлежит , на противоположный, например:
Шаг 5.
S сообщает B числа обратная функция , например:
S сообщает C числа обратная функция , например.
Шаг 6.
B узнаёт секрет , побитовым сложение и 7-го числа, полученного от S, а именно:

.

Если C хочет купить секрет , то он вычисляет побитовое сложение и 2-го числа, полученного от S, а именно:

.

Литература[править | править код]