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
, а именно:
.
Литература
-
G.Brassard, C.Crepeau and J.-M. Robert.
(англ.)
// Springer Lecture Notes in Computer Science 263(1987).
4 марта 2016 года.
-
A.Salomaa and L.Santean.
(англ.)
// EATCS Bulletin 42(1990)).
4 марта 2016 года.