Скачиваний:
181
Добавлен:
02.05.2014
Размер:
891.9 Кб
Скачать

Вычисления на линейном вентиле

Ниже описывается вычисления на линейном вентиле вместо простого аддитивного вентиля. Это более обобщенное описание будет удобно для протокола вычисления на мультипликативном вентиле.

Вычисления на линейном вентиле достаточно просты и не требуют взаимодействия между процессорами. Пусть - линейный вентиль, гдеa1,...,ak– входные линии вентиля,1,...,k- фиксированные коэффициенты иc– выходная линия. ПустьAj() – полином, ассоциированный сj-той входной линией. А именно доля процессорPiна этой линии – естьai,j=Aj(i). Каждый процессорPiлокально устанавливает свою долю выходной линии в . Можно легко увидеть, что долиc1,...,cnопределяют случайный полиномC() степениtс корректным свободный коэффициентом и сC(i)=Ciдля всех i.

Вычисления на мультипликативном вентиле

Пусть c=ab– мультипликативный вентиль и пустьA(),B() – полиномы, ассоциированные с входными линиями, а именно доли каждого процессораPiэтих линий -A(i) иB(i) соответственно. Процессоры совместно вычисляют свои доли случайного полиномаC() степениt, удовлетворяющийC(0)=A(0)B(0), а именно доля каждого несбоящего процессораPiна выходной линии будетC(i).

Сначала каждый процессор локально вычисляет свою долю полинома E()=A()B(), устанавливаяE(i)=A(i)B(i). Ясно, чтоE() имеет требуемый свободный коэффициент. Однако, полиномE() имеет степень 2tи, кроме того, полином не является равномерно распределенным. Процессоры используют свои доли полиномаE(), чтобы вычислить свои доли требуемого полиномаC() безопасным способом. Вычисления осуществляются в два этапа: на первом этапе процессоры совместно генерируют случайный полиномD() степени 2tтакой, чтобыD(0)=E(0). А именно, каждый процессорPiбудет иметьD(i). Затем, стороны используют их долиD(), чтобы совместно вычислить свои доли полинома C(). Эти шаги описаны ниже.

Рандомизация.Сначала покажем, как генерируется полиномD(). Сначала процессоры генерируют случайный полиномH() степени 2tи сH(0)=0; а именно, каждая сторонаPiбудет иметьH(i). Мы сначала описываем, как полиномH() делится в синхронной модели вычислений [BGW].

Каждый процессор Piвыбирает случайный полиномHi() степени 2tсHi(0)=0 и делит его среди процессоров; а именно, каждый процессорPjполучаетHi(j). ПолиномH() – устанавливается вH()=j(); а именно каждый процессорPiвычисляетH(i)=j(i).

В асинхронной модели вычислений процессор не может ждать, пока получит свою долю от всех других процессоров. Вместо этого, стороны соглашаются, используя субпротокол СОАМ, о множествеCпроцессоров, которые успешно разделили полиномыHi. Затем полиномH() будет установлен вH()=(). Другими словами, процессоры запускают протоколАГПРС, получают на выходе (C,f{Hj(i)jC}) и каждый процессорPiвычисляетH(i)=(i).

Полином D()теперь определен какD()=E()+H(); а именно каждый процессорPiвычисляетD(i)=E(i)+H(i). Ясно, чтоD(0)=A(0)B(0) и все другие коэффициентыD() равномерно и независимо распределены надF.

Редукция степени.На этом этапе процессоры используют свои доли полиномаD(), чтобы совместно и безопасно вычислить свои доли случайного полиномаC() степениtсC(0)=D(0). ПолиномC() будет устанавливать «усечение» полиномаD() к степениt; а именноt+1 коэффициентовC() являются коэффициентамиt+1 более низкой степени полиномаD(). Важный момент здесь состоит в том, что информация, которую накапливают сбоящие процессоры (а именноtдолей полиномаD() вместе сtдолями усеченного полиномаC()), независима отC(0).

Пусть =D(1),...,D(n) и пусть =C(1),...,C(n). В работе [BGW] отмечено, что существует фиксированная матрицаMразмерностьюnnтакая, что =. Отсюда следует, что требуемый выход каждого процессораPi- линейная комбинация входов процессоров:C(i)=[]i=. Будем называть такую операцию «умножение входов на фиксированную матрицу». В этом случае, входы процессоров являются их долями полиномаD().

В синхронной модели вычислений умножение входов на фиксированную матрицу может быть выполнено посредством безопасного вычисления соответствующих nфиксированных линейных комбинаций входов таких, что значениеi-той линейной комбинации вскрываемо только процессором Pi. Линейные комбинации безопасно вычисляются следующим образом. Сначала каждый процессор разделяет свой вход; затем каждый процессор вычисляет линейную комбинацию своих долей и открывает эту линейную комбинацию специальному процессору; в заключение специальный процессор вычисляет значение выхода, интерполируя полином степениtиз полученных комбинаций [Ca2].

Линейные комбинации всех входов не могут быть вычислены в асинхронной модели вычислений и, следовательно, синхронный метод, описанный выше, не может использоваться. Ниже приводится решение для асинхронной модели вычислений. Сначала мы описываем метод для умножения входов на фиксированную матрицу в асинхронной модели для случая, когда матрица и множество входов связаны специальным образом. Кроме того, мы отметим также, что матрица Ми множество возможных входов (на этапе редукции степени) тоже связаны специальным образом.

Определение 3.7.ПустьA– матрица размерностьюnnи пустьSFn- множество входных векторов. Будем говорить, чтоSt-умножаемонаA, если для каждого множестваG[n] сGn-tсуществует (легко вычислимая) матрицаAGразмеромGnтакая, что для каждого входа Sмы имеем GAG=A.

Пусть St-умножаемо наA. Тогда протокол, описанный ниже, «умножает входы из множестваSна матрицу». Пусть S. Процессоры сначала выполняют протоколАГПРС(с входным вектором ). Как только общее множествоGвычислено, каждый процессор локально вычисляетAG. Затем, процессоры запускаютn протоколов восстановления секретаАВс, где вi-том протоколеАВспроцессоры позволяют процессоруPiвычислить GAG, посылая ему соответствующую линейную комбинацию своих долей. Ниже описывается протокол для умножения входа на фиксированную матрицу.

Соседние файлы в папке Казарин О.В. Теория и практика защиты программ