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

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Другие значения Шаблон:Underlinked ANDOS (Шаблон:Lang-en) — криптографический протокол «секретной продажи секретов». Пусть продавец S секретов имеет некий список вопросов и выставляет на продажу ответы к любому из них. Предположим, покупатель B хочет купить секрет, но не хочет раскрывать какой именно. Протокол гарантирует, что B получит нужный ему секрет и ничего более, в то время как S не будет знать какой именно секрет получил B.

Алгоритм

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

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

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

Шаг 3. B сообщает C (соответственно C — B) набор ИФБB индексов, соответствующих (x'j,f)( соответственно набор ИФБC индексов, соответствующих (xj,g)).
Шаг 4. B (соответственно C) сообщает S числа y1,...,yk (соответственно yk,...,yk, где yi — результат, полученный заменой каждого бита в xi, чей индекс не является ИФБC, ему противоположным (соответственно y'i получаются из x'i аналогичным образом).
Шаг 5. S сообщает B (соответственно C) числа
sif1(y'i)( соответственно sig1(yi)) , i=1,...,k.
Шаг 6. B (соответственно C) может вычислить sj (соответственно s'j), поскольку известны x'j=f1(y'j)( соответственно xj=g1(yj)).

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

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

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

Примеры

  • За основу односторонних функций f и g возьмём RSA.
Выберем k=8,n=12. Считаем, что S имеет 8 следующих 12-битных секретов на продажу:
s1=1990, s2=471, s3=3860, s4=1487, s5=2235, s6=3751, s7=2546, s8=4043.
Шаг 1.
S даёт B и C индивидуальные односторонние функции f и g, основанные на простых числах p1=83,q1=89 (соответственно p2=67,q2=41), модуль n1=7387 (соответственно n2=2747). Открытая и закрытая экспоненты равны e1=5145,d1=777 (соответственно e2=1421,d2=2261).
Шаг 2.
B сообщает C восемь 12-битных чисел xi,1i8: x1=743, x2=1988, x3=4001, x4=2942, x5=3421, x6=2210, x7=2306, x8=912.
C сообщает B восемь 12-битных чисел x'i,1i8: x'1=1708, x'2=711, x'3=1969, x'4=3112, x'5=4014, x'6=2308, x'7=2212, x'8=222.
Шаг 3.
Пусть B хочет купить секрет s7. Он вычисляет
f(x'7)=(x'7)e1(modn1)=22125145(mod7387)=5928.
Сравнивая бинарное представление x'7 и f(x'7),
2212=0100010100100
5928=1011100101000
B сообщает C набор ИФБB={0,1,4,5,6} соответствующих (x'7,f).
Пусть C хочет купить секрет s2. После вычислений, C сообщает B набор ИФБC={0,1,2,6,9,10} соответствующих (x2,g).
Шаг 4.
B сообщает S числа yi,1i8, где yi — результат, полученный заменой каждого бита в xi, чей индекс не принадлежит {0,1,2,6,9,10}, на противоположный, например:
y2=0110011111100=1660.
C сообщает S числа y'i,1i8, где y'i — результат, полученный заменой каждого бита в x'i, чей индекс не принадлежит {0,1,4,5,6}, на противоположный, например:
y'7=1011100101000=5928.
Шаг 5.
S сообщает B числа sif1(y'i),1i8(обратная функция f1(y)=y'd1(modn1)=y'777(mod7387)), например:
s7=2546=0100111110010
f1(y'7)=2212=0100010100100
s7f1(y'7)=0000101010110=342
S сообщает C числа sig1(yi),1i8(обратная функция g1(y)=yd2(modn2)=y2261(mod2747)), например.
s2=471=000111010111
g1(y2)=1988=011111000100
s2g1(y2)=011000010011=1555
Шаг 6.
B узнаёт секрет s7, побитовым сложение x'7 и 7-го числа, полученного от S, а именно:
x'7=2212=100010100100
342=000101010110
x'7342)=100111110010=2546

.

Если C хочет купить секрет s2, то он вычисляет побитовое сложение x2 и 2-го числа, полученного от S, а именно:
x2=1988=11111000100
1555=11000010011
x21555)=00111010111=471

.

Литература

Шаблон:Нет сносок Шаблон:Rq