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, а именно:
 
 
 

.

Литература

править