WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 || 3 | 4 |   ...   | 6 |

«О.В. КАЗАРИН Москва 2004 УДК 681.322 Казарин О.В. ...»

-- [ Страница 2 ] --

Так, в работе [BW] приводятся расчеты на супер-ЭВМ «CRAY-2» для 100 разрядных десятичных чисел: модулярное умножение методом «цифра-за цифрой» выполняется примерно на 10% быстрее, чем прямое умножение и следующая за ним модульная редукция. Алгоритм модулярного умножения (алгоритм P) приведен на рис.2.2, а на рис.2.1 представлен псевдокод процедуры ADDK.

Алгоритм ADDK carry:=0;

for i:=1 to m do begin t:=P[i]+k*N[i]+carry;

P[i]:=t mod r;

carry:=t div r;

end;

P[m+1]:=carry;

write(P);

{P - результат} Рис.2.1. Псевдокод алгоритма вычисления P+k*N (процедура ADDK) Так как B[i][0,...,2/2-1], то проверку «if B[i]<>0» в алгоритме P можно не вводить потому, что вероятность того, что B[i] будет равняться пренебрежимо мала, если значение не достаточно мало. Ошибка затем все равно будет алгоритмом обнаружена. Проверка «if p_short-k*n_short>n_short DIV 2» позволяет представлять k числом однократной точности и работать с наименьшими абсолютными остатками в каждой итерации. Значение операнда Pi на каждом шаге итерации должно быть ограничено величиной N.

Теорема 2.1. Пусть Pi - частичное произведение P в конце i-той итерации (т.е. в конце i-того цикла FOR алгоритма P). Тогда для любого i (i=[1,...,n]) abs(Pi)

Доказательство. Доказательство теоремы проведем методом индукции.

Если k=abs(p_short) DIV n_short, где DIV - целочисленное деление, то p_short=(k+)*n_short, (2.1.6) где k - целое, 0k

Проверка «if p_short-k*n_short>n_short DIV 2» есть ни что иное, как проверка >0.5 (2.1.7) На i-том шаге алгоритм вычисляет:

P'=Pi-1*r+A*B[i] (2.1.8) Алгоритм P m_shifts:=0;

while n[m_shifts]=0 do begin shift_left(N and A);

m_shifts:=m_shifts+1;

end;

m:=m_shifts;

reset(P);

n_short:=N[m];

for i:=n downto 1 do begin shift_left(P);

{сдвиг на 1 элемент влево или умножение P*r} if b<>0 then addk(A*B[i],{to}P);

let p_short represent the 2 high assimilated digits of P;

k:=abs(p_short) div n_short;

if p_short-k*n_short>n_short div 2 then k:=k+1;

if k>0 then begin if p_short<0 then addk(k*N,{to} P) else addk(-k*N,{to} P);

end;

end;

{for} right shift P, N by m_shifts;

if P<0 then P:=P+N;

write(P);

{P - результат} Рис. 2.2. Псевдокод алгоритма модулярного умножения A*B modulo N Возможны два варианта:

Вариант 1. Если k=0, т.е. n_short>abs(p_short) (см. алгоритм), то суммирование при помощи процедуры ADDK не производится и утверждение теоремы выполняется, т.е. abs(Pi)

Вариант 2. Если k>0, т.е.

n_short

Вариант A:

p_short<0 (2.1.10) Из (2.1.9) и (2.1.10) следует P'<-N и так как Pi=-P'+k*N (см. алгоритм), то согласно (2.1.7) Pi=*N, если 0.5 (2.1.11) и так как Pi=-P'+(k+1)*N, то Pi=-(1-)*N, если >0.5 (2.1.12) Вариант B:

p_short>0 (2.1.13) Из (2.1.9) и (2.1.13) следует P'>N и так как Pi=P'-k*N, то согласно (2.1.7) Pi=-*N, если 0.5 (2.1.14) и так как Pi=P'-(k+1)*N, то Pi=(1-)*N, если >0.5 (2.1.15) Во всех случаях (2.1.11), (2.1.12), (2.1.14) и (2.1.15), так как 0<1, то abs(Pi)

Теорема доказана.

Примечание. Для чего нужна проверка (2.1.7) «if p_short-k*n_short>n_short DIV 2» ?

Пусть в конце каждой итерации P принимает максимально возможное значение Pi-1=N-1, а N, A и B[i] заведомо тоже велики: N=rn+1-1, A=rn+1-2, B[i]=r-1. Тогда на i-том шаге согласно (2.1.8):

Pi'=(rn+1-2)*r+(rn+1-2)*(r-1)=2*rn+2-rn+1-4*r+2 (2.1.16) n+2 n+ 2r - r - 4r + 2 2r + = 2r -1 (2.1.17) n+1 n+ r -1 r - При достаточно большом m, если не введена проверка (2.1.6), то k<2*r-1, по условию же 0

Pi-1=(N-1)/2 и с учетом того, что если неравенство (2.1.7) выполняется, то Pi меняет знак на противоположный (сравн. (2.1.11), (2.1.12), (2.1.14) и (2.1.15)), из (2.1.6) и (2.1.7) получим, что 0k<(1/2)*r-1, что удовлетворяет наложенному на k условию, и для представление P достаточно m+ разряда.

В алгоритме P используется также известный метод, когда для получения частного от деления двух многоразрядных чисел, используются только старшие цифры этих чисел (см., например, алгоритм D в работе [Кн, стр.291-295]). Чем больше основание системы счисления r, тем меньше вероятность того, что пробное частное k от деления первых цифр больших чисел не будет соответствовать действительному частному.

Методы доказательства правильности программ могут быть применены при разработке ПО при существенных ограничениях на размеры и сложность создаваемых программ. И в частных случаях они могут оказаться более эффективными, чем другие известные методы анализа программ, которые исследуются в следующих разделах данной работы.

http://www.natahaus.ru/ BEST rus DOCY ГЛАВА 3. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ 3.1. ВОДНЫЕ ЗАМЕЧАНИЯ ПО ПРОБЛЕМАТИКЕ КОНФИДЕНЦИАЛЬНЫХ ВЫЧИСЛЕНИЙ В последнее время появилась насущная необходимость в создании новых информационных технологий разработки ПО, исходно ориентированных на создание безопасных программных продуктов относительно заданного класса решаемых задач. В этом случае проблема исследований сводится к разработке таких математических моделей, которые представляются адекватной формальной основой для создания методов защиты программного обеспечения на этапе его проектирования и разработки. При этом изначально предполагается, что:

• один или несколько участников проекта являются (или, по крайней мере, могут быть) злоумышленниками;

• в процессе эксплуатации злоумышленник может вносить в программы изменения (например, внедрение компьютерных вирусов, внесение программных закладок);

• средства вычислительной техники, на которых выполняются программы, не свободны от аппаратных закладок.

Тогда, исходя из этих допущений, формулируется следующая неформальная постановка задачи: «Требуется разработать программное обеспечение таким образом, что, несмотря на указанные выше «помехи», оно функционировало бы правильно». Одно из основных достоинств здесь состоит в том, что одни и те же методы позволяют защищаться от злоумышленника, действующего как на этапе разработки, так и на этапе эксплуатации программного обеспечения. Однако, это достигается за счет некоторого замедления вычислений, а также повышения затрат на разработку программного обеспечения.

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

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

Изначально каждому процессору известна своя «часть» некоторого входного значения x. Требуется вычислить f(x), f - некоторая известная всем участникам вычислимая функция, таким образом, чтобы выполнились следующие требования:

• корректности, когда значение f(x) должно быть вычислено правильно, даже если некоторая ограниченная часть участников произвольным образом отклоняется от предписанных протоколом действий;

• конфиденциальности, когда в результате выполнения протокола не один из участников не получает никакой дополнительной информации о начальных значениях других участников (кроме той, которая содержится в вычисленном значении функции).

Можно представить следующий сценарий использования этой модели для разработки безопасного программного обеспечения. Имеется некоторый процесс, для управления которым необходимо вычислить функцию f. При этом последствия вычисления неправильного значения таковы, что представляется целесообразным пойти на дополнительные затраты, связанные с созданием сети из n процессоров и распределенного алгоритма для вычисления f. В системе имеется еще один абсолютно надежный участник, который имеет доступ к секретному значению x и имеет возможность выделить каждому участнику свою «долю» x. Название протоколы «конфиденциальное вычисление функции» отражает тот факт, что требование конфиденциальности является основным, то есть значение x не должно попасть в руки злоумышленника.

Задача конфиденциального вычисления была впервые сформулирована А. Яо для случая с двумя участниками в 1982 г. [Y1]. В 1987 г. О. Голдрайх, С. Микали и А. Вигдерсон показали [GMW], как безопасно вычислить любую функцию, аргументы которой распределены среди участников в вычислительной установке (то есть в конструкции, где потенциальный противник ограничен в действиях вероятностным полиномиальным временем). В их работе рассматривалась синхронная сеть связи из n участников, где каналы связи небезопасны и стороны, также как и противник, ограниченны в своих действиях вероятностным полиномиальным временем. В своей модели вычислений они показали, что в предположении существования односторонних функций с секретом можно построить многосторонний протокол (с n участниками) конфиденциальных вычислений любой функции в присутствие пассивных противников (т.е., противников, которым позволено только «прослушивать» коммуникации). Для некоторых типов противников (для византийских сбоев) авторы привели протокол для конфиденциального вычисления любой функции, где (n/2-1) участников протокола являются нечестными (или (n/2-1)-протокол конфиденциальных вычислений).

В дальнейшем изучались многосторонние протоколы конфиденциальных вычислений в модели с защищенными каналами. Было показано, что если противник пассивный, то существует (n/2-1)-протокол для конфиденциального вычисления любой функции. Если противник активный (т.е., противник, которому позволено вмешиваться в процесс вычислений), тогда любая функция может быть вычислена посредством (n/3-1)-протокола конфиденциальных вычислений. Эти протоколы являются безопасными в присутствие неадаптивных противников (т.е., противников, действующих в схеме вычислений, в которой множество участников независимо, но фиксировано).

В последнее время исследуются вычисления для случая активных противников, ограниченных в работе вероятностным полиномиальным временем, где часть участников вычислений может быть «подкуплена» противником и многосторонние конфиденциальные вычисления при наличии незащищенных каналов и с вычислительно неограниченным противником, а также исследовались многосторонние конфиденциальные вычисления с нечестным большинством участников при наличии защищенных каналов. Кроме того, изучаются многосторонние протоколы конфиденциальных вычислений при наличии защищенных каналов и динамического противника (т.е., противника, который может «подкупать» различных участников в разные моменты времени). В фундаментальной работе [MR] предложены определения для многосторонних конфиденциальных вычислений при наличии защищенных каналов и в присутствии адаптивных противников.

В работе [BCG], авторы начали комплексные исследования асинхронных конфиденциальных вычислений. Они рассмотрели полностью асинхронную сеть (т.е., сеть, где не существует глобальных системных часов), в которой стороны соединены защищенными каналами связи. Авторы привели первый асинхронный протокол византийских соглашений с оптимальной устойчивостью, где противник может «подкупать» n/3-1 из n участников вычислений.

3.2. ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ ПРИМИТИВОВ, СХЕМ И ПРОТОКОЛОВ 3.2.1. Общие определения В качестве одного из основных математических объектов в данной работе используются односторонние функции, то есть вычислимые функции, для которых не существует эффективных алгоритмов инвертирования. Необходимо отметить, что односторонняя функция - гипотетический объект, поэтому называть конкретные функции односторонними математически некорректно. Впервые такую гипотетическую конструкцию для конкретного криптографического приложения, - открытого распределения ключей, предложили У. Диффи и М. Хеллман в 1976 г. [DH]. Они показали, что вычисление степеней в мультипликативной группе вычетов над конечным полем является простой задачей с точки зрения состава необходимых вычислений, в то время как извлечение дискретных логарифмов над этим полем – предположительно сложная вычислительная задача.

Неформально говоря, для двух независимых множеств X и Y функция f:XY называется односторонней, если для каждого xX можно легко вычислить f(x), в то время как почти для всех yY вычислительно трудно получить такой xX, что f(x)=y, при условии, что такой x существует.

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

3.2.2. (n,t)-Пороговые схемы Используемая в данном подразделе (n,t)-пороговая схема, известная как схема разделения секрета Шамира, – это протокол между n+ участниками, в котором один из участников, именуемый дилер - Д, распределяет частичную информацию (доли) о секрете между n участниками так, что:

• любая группа из менее чем t участников не может получить любую информацию о секрете;

• любая группа из не менее чем t участников может вычислить секрет за полиномиальное время.

Пусть секрет s - элемент поля F. Чтобы распределить s среди участников P1,...,Pn, (где n

Вследствие того, что существует один и только один полином степени не менее k-1, удовлетворяющий f(xi)=si для k значений i, схема Шамира удовлетворяет определению (n,t)-пороговых схем. Любые t участников могут найти значение f по формуле:

k k x - xi x - xi l l f (x) = ) f (xi ) = )si ( ( l l xi - xi xi - xi.

l =1 hl l =1 hl l h l h Следовательно k s = a si j, j j= где a1,...,ak получаются из xi h a = j xi - xi h j h j Таким образом, каждый ai является ненулевым и может быть легко вычислен из общедоступной информации.

3.2.3. Проверяемая схема разделения секрета Пусть имеется n участников вычислений и t* (значение t* не более порогового значения t) из них могут отклоняться от предписанных протоколом действий. Один из участников назначается дилером Д, которому (и только ему) становится известен секрет (секретная информация) s. На первом этапе дилер вне зависимости от действий нечестных участников осуществляет привязку к уникальному параметру u.

Идентификатор дилера известен всем абонентам системы. На втором этапе осуществляется открытие (восстановление) секрета s всеми честными участниками системы. И если дилер Д – честный, то s=u.

Проверяемая схема разделения секрета ПРС представляет собой пару многосторонних протоколов (РзПр,ВсПр), - а именно протокола разделения секрета и проверки правильности разделения РзПр и протокола восстановления и проверки правильности восстановления секрета ВсПр, при реализации которых выполняются следующие условия безопасности. (Все обозначения даны в соответствии с приложением).

Условие полноты. Для любого s, любой константы c>0 и для достаточно больших n вероятность Prob((n,t,t*)РзПр=(Да,s)t*1-n-c.

Условие верифицируемости. Для всех возможных эффективных алгоритмов Прот, любой константы c>0 и для достаточно больших n вероятность Prob((t*,(Да,u))ВсПр=(s=u)(n,t,t*)РзПр=(Да,u)&t*

Условие неразличимости. Для секрета s*RS вероятность Prob(s*=s(n,t,t*)РзПр=(Да,s*) & Д - честный)<1/S.

Свойство полноты означает, что если дилер Д честный и количество нечестных абонентов не больше t, тогда при любом выполнении протокола РзПр завершится корректно с вероятностью близкой к 1. Свойство верифицируемости означает, что все честные абоненты выдают в конце протокола ВсПр значение u, а если Д – честный, тогда все честные абоненты восстановят секрет s=u. Свойство неразличимости говорит о том, что при произвольном выполнении протокола РзПр со случайно выбранным секретом s*, любой алгоритм Прот не может найти s*=s лучше, чем простым угадыванием.

3.2.4. Широковещательный примитив (Br-протокол) Введем следующее определение. Протокол называется t-устойчивым широковещательным протоколом, если он инициализирован специальным участником (дилером Д), имеющим вход m (сообщение, предназначенное для распространения) и для каждого входа и коалиции нечестных участников (числом не более t) выполняются условия.

Условие завершения. Если дилер Д - честный, то все честные участники обязательно завершат протокол. Кроме того, если любой честный участник завершит протокол, то все честные участники обязательно завершат протокол.

Условие корректности. Если честные участники завершат протокол, то они сделают это с общим выходом m*. Кроме того, если дилер честный, тогда m*=m.

Необходимо подчеркнуть, что свойство завершения является более слабым, чем свойство завершения в византийских соглашений (см. далее).

Для Br-протокола не требуется, чтобы честные участники завершали протокол, в том случае, если дилер нечестен.

Br-протокол Код для дилера (по входу m):

1. Послать сообщение (сбщ,m) всем участникам и завершить протокол с выходом m.

Код для участников:

2. После получения первых сообщений (сбщ,m) или (эхо,m), послать (эхо,m) ко всем участникам и завершить протокол с выходом m.

Предложение 3.1. Br-протокол является n-усточивым широковещательным протоколом для противников, которые могут приостанавливать отправку сообщений.

Доказательство. Если дилер честен, то все честные участники получают сообщение (сбщ,m) и, таким образом, завершают протокол с выходом m. Если честный участник завершил протокол с выходом m, то он посылает сообщение (эхо,m) ко всем другим участникам и, таким образом, каждый честный участник завершит протокол с выходом m.

Ниже описывается (n-1)/3-устойчивый широковещательный протокол, который именуется BB, где t(n-1/3) - количество участников, которые могут быть нечестными. В протоколе принимается, что идентификатор дилера содержится в параметре m.

Протокол BB Код для дилера (по входу m):

1. Послать сообщение (сбщ,m) ко всем участникам.

Код для участника Pi:

2. После получения сообщения (сбщ,m), послать сообщение (эхо,m) ко всем участникам.

3. После получения n-1 сообщений (сбщ,m), которые согласованы со значением m, послать сообщение (гот,m) ко всем участникам.

4. После получения t+1 сообщений (гот,m), которые согласованы со значением m, послать (гот,m) ко всем участникам.

5. После получения n-1 сообщений (сбщ,m), которые согласованы со значением m, послать сообщение (OK,m) ко всем участникам и принять m как распространяемое сообщение.

3.2.5. Протокол византийского соглашения (BA-протокол) При византийских соглашениях или при реализации протокола византийских соглашений для любого начального входа xi, i[1,...,n] участника i и некоторого параметра d (соглашения) должны быть выполнены следующие условия.

Условие завершения. Все честные участники вычислений в конце протокола принимают значение d.

Условие корректности. Если существует значение x такое, что для честных участников xi=x, тогда d=x.

3.3. ОБОБЩЕННЫЕ МОДЕЛИ ДЛЯ СЕТИ СИНХРОННО И АСИНХРОННО ВЗАИМОДЕЙСТВУЮЩИХ ПРОЦЕССОРОВ 3.3.1. Вводные замечания Протоколы конфиденциального вычисления функции относятся к протоколам, которые предназначены, прежде всего, для защиты процесса вычислений от действия «разумного» противника (злоумышленника), то есть от противника, который всегда выбирает наихудшую для нас стратегию.

В моделях конфиденциальных вычислений вводится дополнительный параметр t, t

Поскольку злоумышленники могут действовать заодно, обычно предполагается, что против протокола действует один злоумышленник, который может захватить и контролировать любые t из n участников по своему выбору.

3.3.2. Обобщенные модели сбоев и противника Рассматривается сеть взаимодействующих процессоров. Некоторые процессоры могут «сбоить». При сбоях, приводящих к останову (FS-сбоях), сбоящий процессор может приостановить в некоторый момент времени отправку своих сообщений. В то же время предполагается, что сбоящие процессоры продолжают получение сообщений и могут выдавать «некую информацию» в свои выходные каналы. При Византийских сбоях (By сбоях) процессоры могут произвольным образом сотрудничать друг с другом с целью получения необходимой для них информации или с целью нарушения процесса вычислений. При By-сбоях сбоящие процессоры могут объединять свои входы и изменять их. В то же время это должно происходить при условии невозможности изучения любой информации о входах несбоящих процессоров.

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

Противника можно представлять как некий универсальный процессор, действия которого заключаются в стремлении «сделать» процессоры сети сбоящими («подкупить» их).

По аналогии со сбоями противник может быть динамическим и статическим. Статическим противником является противник, который «сотрудничает» с фиксированным количеством сбоящих процессоров («подкупленных» противником). При действиях динамического противника количество сбоящих процессоров может меняться (в том числе непредсказуемым образом).

Кроме того, противник может быть активным и пассивным, а также с априорными и апостериорными протокольными и раундовыми действиями. Пассивный противник не может изменять сообщения, циркулируемые в сети. Активный противник может знать все о внутренней конфигурации сети, может читать и изменять все сообщения сбоящих процессоров и может выбирать сообщения, которые будут посылать сбоящие процессоры при вычислениях. Активный динамический противник может в начале каждого раунда «подкупить» несколько новых процессоров. Таким образом, он может изучить информацию, получаемую ими в текущем раунде, и принять решение «подкупить» ли ему новый процессор, или нет. Такой противник может собирать и изменять все сообщения от сбоящих процессоров к несбоящим. Некоторые сценарии могут предполагать, что все сообщения (в том числе, между честными процессорами) будут доставлены адресатам в конце текущего раунда.

Действия аналогичного характера активный противник может выполнить не только в течение раунда (в его начале и конце), но и до начала выполнения протокола и после его завершения.

Противник называется t-противником, если он сотрудничает с t процессорами.

3.3.3. Получестные модели Обычно основная цель при конфиденциальных вычислениях (как, впрочем, и в большинстве криптографических протоколов) состоит в том, чтобы разработать протоколы, которые могут противостоять любому возможному поведению противника. При конфиденциальных вычислениях это делается, как правило, за два этапа. Сначала рассматривается так называемый «удобный» противник, называемый в данном случае получестным и строятся протоколы, которые являются безопасными в отношении такого противника. Затем, показывается как процессоры «ведут себя» в присутствии такого противника. А затем показывается, как преобразовать любой протокол, безопасный в получестной модели, в протокол, который является безопасным против любого возможного поведения противника.

В получестной модели имеется участник, именуемый получестным процессором, который следует предписанным протоколом действиям, за исключением того, что он может хранить информацию обо всех своих промежуточных вычислениях. Фактически достаточно хранить только внутренние случайно сгенерированные параметры (результаты подбрасывания монеты) и все сообщения, полученные от других процессоров. Таким образом, получестный процессор «подбрасывает честную монету» (генерирует случайный бит с вероятностью ) и посылает сообщения в соответствии с инструкциями специальной программы (как функции от входа, результатов подбрасываний монеты и входных сообщений). Отметим, что получестный процессор соответствует честному проверяющему в доказательствах с нулевым разглашением (см.

приложение).

Такие получестные модели могут иметь самостоятельный интерес.

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

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

Получестная модель является неявной в следующем определении безопасности. Неформально говоря, протокол конфиденциально вычисляет функцию f, если любой получестный процессор, принимавший участие в работе протокола, мог бы быть по существу процессором, имеющим только вход и выход, доступные такому процессору. Это делается с использованием соответствующей парадигмы моделирования. Для этого достаточно (эффективно) «промоделировать взгляд» каждого (получестного) процессора, так что все, что может быть получено после участия получестного процессора в протоколе, может быть получено из этого «промоделированного взгляда» (см. далее).

3.3.4. Злонамеренные модели Действия процессоров в злонамеренной модели Теперь будем рассматривать независимо возможное отклонение процессоров от предопределенных протоколом действий. Для этого необходимо сделать несколько замечаний. Во-первых, для противника не существует никакого способа принудить процессоры участвовать в выполнении каких-либо действий при выполнении протокола. То есть возможное злонамеренное поведение противника не может состоять в инициализации протокола, в его приостановке или прерывания работы в любой желательной точке в какое-либо время.

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

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

• процессоры могут отказаться участвовать в протоколе (когда инициируется протокол);

• процессоры подменяют свои локальные входы (и могут участвовать в протоколе с входами других процессоров);

• процессоры преждевременно прерывают протокол (например, перед посылкой своего последнего сообщения).

Вычисления в идеальной модели Теперь перенесем все вышеупомянутые рассуждения в определения идеальной модели. Будем предполагать, что процессоры имеют в своем распоряжении доверенное третье лицо. Определим его как доверенный процессор или TP-процессор. Однако даже такая сторона не может предотвращать специфические злонамеренные действия. В идеальной модели нечестному процессору позволяется отказаться участвовать в протоколе или подменять свои локальные входы. Таким образом, вычисления в идеальной модели для случая с двумя процессорами могут выполняться следующим образом. (Более подробно идеальный и реальный сценарии для различных моделей вычислений рассматриваются далее).

Вычисления в идеальной модели Вход. Каждый из двух процессоров получает вход z.

Посылка входов доверенному процессору. Несбоящий процессор всегда посылает z доверенному процессору. Сбоящий процессор может, в зависимости от z, или прервать, или послать некоторый z{0,1}z доверенному процессору.

Доверенный процессор «отвечает» первому процессору. В случае если была получена входная пара (x,y) доверенный процессор, вычисляя f, сначала отвечает первому процессору f1(x,y). В противном случае (то есть, когда получен только один вход) доверенный процессор отвечает обеим сторонам с специальным символом.

Доверенный процессор «отвечает» второму процессору. В случае если первый процессор нечестен, то доверенный процессор посылает второму процессору и останавливается. В противном случае (то есть, если не останавливается) доверенный процессор посылает f2(x,y) второй стороне.

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

Вычисления в реальной модели Рассматривается реальная модель, в которой выполняется реальный протокол (и в ней не существует никаких доверенных третьих лиц). В этом случае, сбоящий процессор может следовать любой возможной стратегии, то есть любой стратегии, реализуемой схемой полиномиальной длины. В частности сбоящий процессор может прервать в какое-либо время свою работу в любой точке протокола.

Мы также будем предполагать, что противник в реальной модели - детерминирован. Интуитивно, (неоднородный) детерминированный противник рассматривается как мощный (с вычислительной точки зрения) и рандомизированный противник. При определении безопасности требуется эффективное преобразование противника для реальной модели в противника для идеальной модели. Если такое преобразование применяется к детерминированному противнику, оно обязательно применяется к рандомизированному противнику.

3.3.5. Модель взаимодействия Взаимодействие процессоров может осуществляться посредством конфиденциальных и/или открытых каналов связи. Каждые два процессора могут быть иметь симплексное, полудуплексное или дуплексное соединение. При этом каждое из соединений, в зависимости от решаемой задачи, в некоторый промежуток времени, может быть либо конфиденциальным, либо открытым.

Кроме того, может существовать широковещательный канал связи, то есть канал, посредством которого один из процессоров может одновременно распространить свое сообщение всем другим процессорам вычислительной системы. Такой канал еще называется каналом с общей шиной.

Взаимодействие в сети характеризуется трафиком T, который может представлять собой совокупность сообщений, полученных процессорами в r-том раунде в установленной модели взаимодействия.

3.3.6. Синхронная модель вычислений Общее описание модели Ниже рассматривается модель вычислений, которая будет использоваться в дальнейших рассуждениях при исследовании синхронных конфиденциальных вычислений. Таким образом, рассматривается сеть процессоров, функционирование которой синхронизируется общими часами (синхронизатором). Каждое локальное (внутреннее) вычисление соответствует одному моменту времени (одному такту часов). В данной модели отрезок времени между i и i+1 тактами называется раундом при синхронных вычислениях. За один раунд протокола каждый процессор может получать сообщения от любого другого процессора, выполнять локальные (внутренние) вычисления и посылать сообщения всем другим процессорам сети. Имеется входная лента «только-для-чтения», которая первоначально содержит строку (k) (например вида 1k), при этом k является параметром безопасности системы. Каждый процессор имеет ленту случайных значений, конфиденциальную рабочую ленту «только-для-чтения» (первоначально содержащую строку ), конфиденциальную входную ленту «только-для чтения» (первоначально содержащую строку xi), конфиденциальную выходную ленту «только-для-записи» (первоначально содержащую строку ) и несколько коммуникационных лент. Между каждой парой процессоров i и j существует конфиденциальный канал связи, посредством которого i посылает безопасным способом сообщение процессору j.

Данный канал (коммуникационная лента) исключает запись для i и исключает чтение для j. Каждый процессор i имеет также широковещательный канал, представляющий собой ленту, исключающую запись для i и являющийся каналом «только-для-чтения» для всех остальных процессоров сети.

Предполагается, что в раунде r для каждого процессора i существует однозначно определенное сообщение (возможно пустое), которое распространяет процессор i в этом раунде и для каждой пары процессоров i и j существует единственное сообщение, которое i может безопасным образом послать j в данном раунде. Все каналы являются помеченными так, что каждый получатель сообщения может идентифицировать его отправителя.

Процессор i запускает программу i, совокупность которых, реализует распределенный алгоритм. Протоколом работы сети называется n элементный кортеж P=(1,2,..,n). Протокол называется t-устойчивым, если t процессоров являются сбоящими во время выполнения протокола.

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

Идеальный и реальный сценарии Для доказуемо конфиденциального вычисления вводятся понятия идеального и реального сценариев [MR]. Как было показано выше в идеальном сценарии дополнительно вводится доверенный процессор.

Процессоры конфиденциально посылают свои входы доверенному процессору, который вычисляет необходимый результат (выход) и также конфиденциально посылает его обратно процессорам сети. Противник может манипулировать с этим результатом (вычислить или изменить его) следующим образом. До начала вычислений он может подкупить один из процессоров и изучить его секретный вход. Основываясь на этой информации, противник может подкупить второй процессор и изучить его секретный вход. Это продолжается до тех пор пока противник не получит всю необходимую для него информацию. Далее у противника есть два основных пути. Он может изменить входы сбоящих процессоров. После чего те, вместе с корректными входами несбоящих процессоров, направляют свои новые измененные входы ТР-процессору. По получению от последнего выходов (значения вычисленной функции) противник может приступить к изучению выхода каждого нечестного процессора. Второй путь заключается в последовательном изучении входов и выходов процессоров, подключая их всякий раз к числу нечестных. В данном случае рассматривается противник, который не только может изучать входы нечестных процессоров, но и менять их, пробовать изучать по полученному значению функции конфиденциальные входы честных процессоров.

В реальном сценарии не существует доверенного процессора, и все процессоры моделируют его поведение посредством выполнения многостороннего интерактивного протокола.

Грубо говоря, считается, что вычисления в действительности (в реальном сценарии) безопасны, если эти вычисления «эквивалентны» вычислениям в идеальном сценарии. Точное определение (формальное определение) понятия эквивалентности в этом контексте является одной из основных проблем в теории конфиденциальных вычислений.

3.3.7. Асинхронная модель вычислений Общее описание модели В данном подразделе рассматривается полностью асинхронная сеть из n процессоров, которые соединены конфиденциальными каналами связи. Именно такая модель взаимодействия будет исследоваться далее.

При этом не существует единых глобальных часов. Любое сообщение в сети может быть задержано независимым образом. В то же время считается, что каждое посланное сообщение обязательно будет получено адресатом. Вопрос о переупорядочивании сообщений не исследуется.

Вычисления в асинхронной модели рассматривается как последовательность шагов. На каждом шаге активизируется один из процессоров. При этом активизация процессора происходит по получении им сообщения. После чего он выполняет внутренние вычисления и возможно выдает сообщения в свои выходные каналы. Порядок шагов определяется планировщиком (D), неограниченным в вычислительной мощности. В данной модели вычислений каждый шаг рассматривается как раунд при асинхронных вычислениях.

Асинхронные идеальный и реальный сценарии Идеальный сценарий в асинхронной модели с доверенным процессором заключается в добавлении этого процессора в существующую асинхронную сеть при наличии t потенциальных сбоев (сбоящих процессоров). При этом несбоящие процессоры, также как и доверенный процессор, не могут ожидать наличия более, чем n-t входов для вычислений с целью получения их выходов, так как t процессоров (сбоящие процессоры) могут никогда не присоединиться к вычислениям.

В начале вычислений процессоры посылают свои входы доверенному процессору. В то же время, существует планировщик D, который доставляет сообщения от процессоров некоторому базовому подмножеству процессоров, мощностью не меньше n-t, обозначаемому как C и являющемуся независимым от входов честных процессоров. Доверенный процессор по получению входов - аргументов функции (возможно некорректных) из множества C, предопределенно оценивает значение вычисляемой функции, основываясь на C и входах процессоров из С.

(Здесь для корректности может использоваться следующее предопределенное оценивание: установить входы из C в 0 и вычислить данную функцию). Затем доверенный процессор посылает значение оценочной функции обратно процессорам совместно с базовым множеством С. Наконец несбоящие процессоры выдают то, что они получили от доверенного процессора. Сбоящие процессоры выдают значение некоторой независимой функции, информацию о которой они «собирали» в процессе вычислений. Эта информация может состоять из их собственных входов, случайных значений, используемых при вычислениях и значения оценочной функции.

Так же как и в синхронной модели, вычисления в реальной асинхронной модели безопасны, если эти вычисления «эквивалентны» вычислениям в сценарии с доверенным процессором.

Далее в соответствии с работой [BCG] сделаем попытку формализовать понятия полноты и безопасности протокола асинхронных конфиденциальных вычислений.

Безопасность асинхронных вычислений Сначала напомним, что как и сбоящие процессоры, так и планировщик имеют неограниченную вычислительную мощность.

r r xC x = x1...x Для вектора и множества C[n]{1,...,n}, пусть r x определяет вектор, спроектированный на индексы из C. Для r r r z = z1...z x /(B,z ) определяет подмножества B[n] и вектора, пусть B r x вектор, полученный из подстановкой входов из B соответствующими r z входами из. Используя эти определения, можно определить оценочную r r r fC (x) f (x /(C,0)) функцию f с базовым множеством C[n] как.

Пусть A – область возможных входов процессоров и пусть R – область случайных входов. ТР-противник это кортеж А=(B,h,c,O), где B[n] – множество сбоящих процессоров, h:ABRAB - функция подстановки входов, с:ABR{C[n]Cn-t} – функция выбора базового множества и O:ABRA{0,1}* - функция выхода для сбоящих процессоров.

Функции h и O представляют собой программы сбоящих процессоров, а функция c – комбинацию планировщика и программ сбоящих процессоров.

Пусть f:AnA для некоторой области A. Выход функции вычисления f r x в ТР-сценарии по входу и с ТР-противником А=(B,h,c,O) – это r r r (x, A) 1(x, A) n(x, A) n-размерный вектор =... случайных переменных, удовлетворяющих для каждого 1in:

r (C, fC (y)) i B r i (x, A) r = O(x r,r, fC (y)), i B B r (xB,r) где r - объединенный случайный вход сбоящих процессоров, C= и r r y = x /( B,h( xB,r )) Акцентируем внимание на то, что выход сбоящих процессоров и выход несбоящих процессоров вычисляется на одном и том же значении случайного входа r.

Далее формализуем понятие вычисления «в реальной жизни».

1. Пусть B=(B,) – коалиция нечестных процессоров, где B[n] – множество нечестных процессоров и - их совместная стратегия.

r x 2. Пусть i(,B,D) определяет выход процессора Pi после выполнения r x протокола i по входу, с планировщиком D и коалиции B. Пусть также r r r x x x P(,B,D)=1(,B,D)...n(,B,D).

Кроме того, пусть f:AnA для некоторой области A и пусть P - протокол для n процессоров. Будем говорить, что P безопасно t-вычисляет функцию f в асинхронной модели для каждой коалиции B с не более, чем из t сбоящих процессоров, если выполняются следующие условия.

Условие завершения (условие полноты). По всем входам все честные процессоры завершают протокол с вероятностью 1.

Условие безопасности. Существует ТР-противник A такой, что для r r r x x x каждого входа векторы (,A) и P(,B,D) идентично распределены (эквивалентны).

3.4. КОНФИДЕНЦИАЛЬНОЕ ВЫЧИСЛЕНИЕ ФУНКЦИИ Общие положения. Для некоторых задач, решаемых в рамках методологии конфиденциальных вычислений, достаточно введения определения конфиденциального вычисления функции [MR].

Пусть в сети N, состоящей из n процессоров P1,P2,...,Pn со своими секретными входами x1,x2,...,xn, необходимо корректно (даже при наличии t сбоящих процессоров) вычислить значение функции (y1,y2,...,yn)=f(x1,x2,...,xn) без разглашения информации о секретных аргументах функции, кроме той, информации, которая может содержаться в вычисленном значении функции.

По аналогии с идеальным и реальным сценариями, приведенными выше, можно ввести понятия «реальное и идеальное вычисление функции f» [MR].

Пусть множество входов и выходов обозначается как X и Y соответственно, размерности этих множеств X= и Y=. Множество случайных параметров, используемых всеми процессорами сети, обозначается через R, размерность - R=. Кроме того, через W обозначим рабочее пространство параметров сети. Через T(r) обозначается трафик в r-раунде, через ti(r) – трафик для процессора i в r-том раунде, r0 и rk – инициализирующий и последний раунды протокола P соответственно и r* - заданный неким произвольным образом раунд выполнения протокола P.

Пусть функцию f можно представить как композицию d функций (суперпозицию функций) g1o...o go g+1o...o gd:

f(x1,...,xn)= * (r0 ( (r* ( =g1((w1,...,wn),(t1 ),...,tnr ) ))o...og((w1,...,wn),(t1 ),...,tnr ) ))o...o ( ( k k ogd((w1,...,wn),(t1r ),...,tnr ) )).

Аргументы функции g являются рабочими параметрами w1,...,wn участников протокола с трафиком (t1,...,tn) в r раунде. Значения данной функции g являются аргументами (рабочими параметрами протокола с трафиком (t1,...,tn) в r+1 раунде) для функции g+1.

Из определения следует, что функция f:(XnRnW)Y, где - декартово произведение множеств, реализует:

* (r* ( (rk ( k f(x1,...,xn)=gd((w1,...,wn),(t1 ),...,tnr ) ))=((y1,...,yn),(t1 ),...,tnr ) )).

Введем понятие моделирующего устройства M. Здесь можно проследить некоторые аналогии с моделирующей машиной в интерактивных системах доказательств с нулевым разглашением (см., например, [Ка14,КУ4]).

Пусть Прот - распределение вероятностей над множеством историй р (трафика Т и случайных параметров) сбоящих процессоров во время выполнения протокола Р.

Моделирующее устройство, взаимодействующее со сбоящими процессорами, осуществляет свое функционирование в рамках идеального сценария. Моделирующее устройство М создает распределение вероятностей параметров взаимодействия Прот между М и сбоящим и процессорами.

Протокол P конфиденциально вычисляет функцию f(x), если выполняются следующие условия:

Условие корректности. Для всех несбоящих процессоров Pi функция f(x1,...,xn)= * (r0 ( (r* ( =g1((w1,...,wn),(t1 ),...,tnr ) ))o...o g((w1,...,wn),(t1 ),...,tnr ) ))o * (rk ( (r* ( k o g+1((w1,...,wn),(t1 ),...,tnr ) ))o...o gd((w1,...,wn), (t1 ),...,tnr ) ))= (rk ( k =((y1,...,yn),(t1 ),...,tnr ) )) вычисляется с вероятностью ошибки близкой к 0.

Условие конфиденциальности. Для заданной тройки (x,r,w)(XnRnW) распределения Прот и Прот являются р и статистически не различимыми.

Функция f, удовлетворяющая условиям предыдущего определения называется конфиденциально вычислимой.

3.5. ПРОВЕРЯЕМЫЕ СХЕМЫ РАЗДЕЛЕНИЯ СЕКРЕТА КАК КОНФИДЕНЦИАЛЬНОЕ ВЫЧИСЛЕНИЕ ФУНКЦИИ 3.5.1. Описание проверяемой схемы разделения секрета Для вышеприведенных определений проверяемой схемы разделения секрета ПРС и обобщенных моделей противника, сбоев, взаимодействия и вычислений синтезируем схему разделения секрета, которая являлась бы работоспособной в протоколах конфиденциальных вычислений.

Рассматривается полностью синхронная сеть взаимодействующих процессоров в условиях проявления By-сбоев. Противник представляется как активный динамический t-противник. Взаимодействие процессоров осуществляется посредством конфиденциальных каналов связи. Кроме того, существует широковещательный канал связи.

Схема проверяемого разделения секрета, рассматриваемая как схема конфиденциального вычисления функции, значение которой является распределенный среди процессоров проверенный на корректность и затем восстановленный и проверенный секрет, обозначается как ПРСК.

Пусть сеть N состоит из n процессоров P1,P2,...,Pn-1,Pn, где Pn – дилер Д сети N. Множество секретов обозначается через S, размерность этого множества S=l. Множество случайных параметров, используемых всеми процессорами сети, обозначается через R, размерность R=. Через W обозначается рабочее пространство параметров сети.

Требуется вычислить посредством выполнения протокола P=(РзПр,ВсПр) функцию f(x), где f – представляется в виде композиции двух функций go h. Пусть функция g:(SnRnW)W, а функция h:WS.

Проверяемая схема разделения секрета ПРСК называется t-устойчивой, если протокол разделения секрета и проверки правильности разделения РзПр и протокол восстановления секрета ВсПр являются t-устойчивыми. Функция f является конфиденциально вычислимой, если конфиденциально вычислимы функции g и h.

t-Устойчивая верифицируемая схема разделения секрета ПРСК – есть пара протоколов РзПр и ВсПр, при реализации которых выполняются следующие условия.

Условие полноты. Пусть событие A1 заключается в выполнении тождества f(w1,...,wn-1,s)= (r0 ( (rk ( 0 k =g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )).

(r0 ( (rk ( 0 k h((s1,...,sn-1),(t1 ),...,tnr ) ))=((s,s,...,s,wn),(t1 ),...,tnr ) )).

Тогда для любой константы c>0 и для достаточно больших n вероятность Prob(A1)>1-n-c.

Условие корректности. Пусть событие A2 заключается в выполнении тождества f(w1,...,wn-1,s)= (r0 ( (rk ( 0 k =g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )).

(r0 ( (rk ( 0 k h((s1,...,sn-1),(t1 ),...,tnr ) ))=((u1,...,uj,...,un-1,wn),(t1 ),...,tnr ) )), где uj=s для jG и G – разрешенная коалиция процессоров.

Тогда для любой константы c>0, достаточно больших n, для границы t*

Условие конфиденциальности.

(r0 ( (rk ( 0 k Функция g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )) – конфиденциально вычислима.

(r0 ( (rk ( 0 k Функция h((s1,...,sn-1),(t1 ),...,tnr ) ))=((u1,...,uj,...,un-1,s),(t1 ),...,tnr ) )) – конфиденциально вычислима.

Свойство полноты означает, что если все процессоры РзПр и ВсПр следуют предопределенным вычислениям, тогда любая коалиция несбоящих процессоров может восстановить секрет s. Свойство корректности означает, что при действиях t-противника Прот, любая разрешенная коалиция из n процессоров сети может корректно разделить, восстановить и проверить секрет. Свойство конфиденциальности вытекает из свойства конфиденциальности функции g и h.

Схема ПРСК Предлагаемая схема ПРСК [GM], является (n/3-1) устойчивой и использует схему разделения секрета Шамира.

Пусть n=3t+4 и все вычисления выполняются по модулю большого простого числа p>n. Из теории кодов с исправлением ошибок известно, что если мы вычисляем полином f степени t+1 в n-1различных точках i, где i=1,...,n-1, тогда по данной последовательности si=f(i), можно восстановить коэффициенты полинома за время, ограниченное некоторым полиномом, даже если t элементов в последовательности произвольно изменены.

Это вариант кода Рида-Соломона, известный как код Берлекампа Велча (см., например, [КС]). Пусть далее K – параметр безопасности и K/n означает K/n.

Протокол РзПр 1. Дилер Д выбирает случайный полином f0(x) степени t+1 с единственным условием: f0(0)=s - его секрет. Затем он посылает процессору Pi его долю si=f0(i). Кроме того, он выбирает 2К случайных полиномов f1,...,f2K степени t+1 и посылает процессору Pi значения fj(i) для каждого j=1,...,2К.

2. Каждый процессор Pi распространяет (посредством широковещательного канала) K/n случайных битов (i-1)K/n+j, для j=1,...,K/n.

3. Дилер Д распространяет полиномы gj=fj+jf0 для всех j=1,...,K.

4. Процессор Pi проверяет, удовлетворяют ли его значения полиномам, распространяемым дилером. Если он обнаруживает ошибку, он ее декларирует для всех. Если более чем t процессоров сообщают об этом, тогда дилер считается нечестным и все процессоры принимают по умолчанию значение нуля как секрет дилера Д.

5. Если менее чем t процессоров сообщили об ошибке, дилер распространяет значения, который он посылал в первом раунде тем процессорам, которые сообщали об ошибке дилера.

6. Каждый процессор Pi распространяет K/n случайных битов (i-1)K/n+j для j=1,...,K/n.

7. Дилер Д распространяет полиномы hj=fK+j+jf0 для всех j=1,...,K.

8. Процессор Pi проверяет, удовлетворяют ли значения, которые он имеет, полиномам, распространяемым дилером Д в 5-м раунде. Если он находит ошибку, он декларирует об этом всем процессорам сети. Если более чем t процессоров сообщают об ошибке, тогда дилер нечестный и все процессоры принимают по умолчанию значение нуля как секрет дилера Д.

Протокол ВсПр 1. Каждый процессор Pi выбирает случайный многочлен hi степени t+1 такой, что hi(0)=si - его собственная входная доля секрета. Он посылает процессору Pj значение hi(j).

2. Каждый процессор Pi выбирает случайные полиномы pi(x), qi,1(x),...,qi,2K(x) степени t+1 со свободным членом 0 и посылает процессору Pj значения pi(j), qi,1(j),...,qi,2K(j).

3. Каждый процессор Pi распространяет K случайных битов l,(i-1)K/n+m для l=1,...,n и m=K/n.

4. Каждый процессор распространяет следующие полиномы rj=qi,j+i,jpi для каждого j=1,...,K.

5. Каждый процессор Pi проверяет, что информация процессора Pl, посланная ему в 1-м раунде, соответствует тому, что Pl распространяет в 3-м раунде. Если имеется ошибка или Pl распространяет полином с ненулевым свободным членом, процессор Pi распространяет сообщение badl. Если более чем t процессоров распространяют badl, процессор Pl исключается из сети и все другие процессоры принимают как 0 долю процессора Pl. В противном случае, Pl распространяет информацию, которую он посылал в раунде 1 процессорам, распространявшим сообщение badl.

6. Каждый процессор Pi распространяет K случайных битов l,(i-1)K/n+m для l=1,...,n и m=1,...,K/n.

7. Каждый процессор Pi распространяет следующие полиномы rj=qi,K+j+i,jpi для каждый j=1,...,K.

8. Каждый процессор Pi проверяет, что информация, посланная процессором Pl, в 1-м раунде и распространенная в 5-м раунде соответствует полиномам процессора Pl, распространенным в 7-м раунде. Если имеется ошибка или Pl распространил полином с ненулевым свободным членом процессор Pi распространяет badlr. Если более чем t процессоров распространили badl, тогда Pl – нечестен и все процессоры принимают его долю, равную 0.

9. Каждый процессор Pl распределяет всем другим процессорам следующее значение si+p1(i)+p2(i)+...+p(i), затем интерполирует полином F(x)=f0(x)+p1(x)+p2(x)+...+pn(x) c использованием алгоритма с исправлением ошибок Берлекампа-Велча. Секрет будет равен s=F(0)=f(0).

Заметим, что если дилер Д честен, в конце протокола ВсПр противник, даже зная секрет s и t долей «подкупленных» процессоров, ничего не узнает о долях секрета несбоящих процессоров, так как полином имеет степень t+1, а ему необходимо для интерполяции t +2 точки.

3.5.2. Доказательство безопасности схемы проверяемого разделения секрета Теорема 3.1. Схема ПРСК является (n/3-1)-устойчивой.

Доказательство. Пусть (r0 ( (rk ( 0 k g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )) и (r0 ( ( ( 0 k k h((s1,...,sn-1,wn),(t1 ),...,tnr ) ))=((s,s,...,s,wn),(t1r ),...,tnr ) )), где si=f0(i), f0(x)=s+a1x+...+at+1xt+1 и r=a1o....o ad (то есть полином, созданный, с использованием случайного параметра r дилера Д).

При рассмотрении протокола РзПр напомним, что ti – трафик процессора Pi. Ясно, что для всех процессоров Pi, in, функция входа всегда возвращает пустую строку Ii(ti)=, так как процессоры не вносят никакие входы в процессе вычисления функции g. Для дилера Д, Д=Pn+1, функция входа немного сложнее. Пусть mi - сообщение, которое дилер распространяет процессору Pi в 5-м раунде, если Pi сообщил об ошибке в 4-м раунде или сообщение, которое дилер послал процессору Pi в 1-м раунде, если Pi не заявлял об ошибке. Тогда ID(tD)=f(0), где f=BW(m1,...,mn) – полином степени t+1, следующий из интерполяции Берлекампа-Велча.

Функция выхода более простая: Oi(ti)=mi, где mD=.

При рассмотрении протокола ВсПр, определим вход и выход функции g. Функция входа Ii для процессора Pi определена как следующая:

пусть mi,j – сообщение, посланное процессором Pi процессору Pj в 1-м раунде;

Ii(ti)=hi(0), где hi=BW(mi,1,...,mi,n) - многочлен степени t+1, следующий из интерполяции Берлекампа-Велча. Если такого полинома не существует, то Ii(ti)=0. Функция выхода следующая: пусть Mi – сообщение, распространяемая процессором Pi в раунде 9;

Oi(ti)=F(0)=s, где F=BW(M1,...,Mn) – полином степени t+1, следующий из интерполяции Берлекампа-Велча.

Далее для доказательства теоремы необходимо доказать выполнения условий полноты, корректности и конфиденциальности.

Полнота. Если дилер Д - честный, исходя из свойств схемы ПРСК, любой несбоящий процессор может восстановить секрет s с вероятностью 1, так как посредством определенных выше функций g и h (r0 ( (rk ( 0 k g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )), (r0 ( ( ( 0 k k h((s1,...,sn-1,wn),(t1 ),...,tnr ) ))=((s,s,...,s,wn),(t1r ),...,tnr ) )) реализуется (rk ( k f(w1,...,wn-1,s)=((s,s,...,s,wn),(t1 ),...,tnr ) )).

Корректность. Для доказательства теоремы необходимо доказать следующие две леммы.

Лемма 3.1. Пусть функция g имеет вид (r0 ( (rk ( 0 k g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))=((s1,...,sn-1,wn),(t1 ),...,tnr ) )).

Тогда g корректно вычисляет доли секрета s1,...,sn-1.

Доказательство. Сначала мы должны доказать, что для всех несбоящих процессоров Pi, значение Ii(ti) равно корректному входу. Если дилер Д - честный, то mi=f(i), где f - многочлен степени t+1 со свободным членом s (секретом). Таким образом, ID(tD)=s, если дилер честный. Второе условие корректности состоит в том, что с высокой вероятностью должно выполняться O(t)=g(I(t)). В нашем случае это означает, что с высокой вероятностью значения mi, находящиеся у несбоящих процессоров, должны предназначаться для единственного полинома степени t+1. Это 2K 2K справедливо с вероятностью 2, где не менее битов выбраны действительно случайно несбоящими процессорами в раундах 2 и 6.

Каждый бит представляет запрос, на который нечестный дилер, распределивший «плохие» доли, должен будет ответить правильно в следующем раунде только с вероятностью 1/2 (то есть, если он предскажет правильно значение бита). Следовательно, это и есть граница для вероятности ошибки.

Лемма 3.2. Пусть функция h имеет вид (r0 ( (rk ( 0 k h((s1,...,sn-1),(t1 ),...,tnr ) ))=((s,s,...,s,wn),(t1 ),...,tnr ) )).

Тогда h корректно восстанавливает секрет s.

Доказательство. Понятно, что для всех несбоящих процессоров Ii(ti)=si – корректная доля входа. В этом случае необходимо проверить, что с высокой вероятностью O(t)=h(I,t), а это означает, что необходимо доказать, что (r0 ( (rk ( 0 k h((s1,...,sn-1),(t1 ),...,tnr ) ))=((s,s,...,s,),(t1 ),...,tnr ) )).

Это равенство не выполняется, если:

• любой сбоящий процессор Pl «преуспевает» в получении случайного «мусора» вместо значений pl(j) в раунде 2 (в этом случае, сообщения Mi не будут интерполировать полином);

• процессор Pi распределяет pl(j) в раунде 2 и использует полином со свободным членом, отличным от нуля (в этом случае, Mi восстановит другой секрет).

Так как мы уже знаем, что Pl «преуспевает» в любом из двух 2K описанных случаев с вероятностью 2, то, следовательно, имеется не более, чем n/3 сбоящих процессоров и вероятность того, что протокол 2K вычисляет неправильный выход не более, чем n/3( 2 ), что для достаточного большого K, является экспоненциально малым.

Конфиденциальность. Для доказательства теоремы необходимо доказать следующие две леммы.

(r0 ( Лемма 3.3. Пусть функция g имеет вид g((w1,...,wn-1,so r),(t1 ),...,tnr ) ))= (rk ( k =((s1,...,sn-1,wn),(t1 ),...,tnr ) )).

Тогда g конфиденциально вычислима в отношение долей секрета s1,...,sn-1.

Доказательство. Доказательство условия конфиденциальности для функции g заключается в описании работы моделирующего устройства М, которое взаимодействует со сбоящими процессорами (в том числе с нечестным дилером) и создает «почти» такое же распределение вероятностей, которое возникает у сбоящих процессоров во время реального выполнения протокола РзПр.

Необходимо рассмотреть два случая.

Случай A: Дилер нечестен до начала 1-ого раунда. Моделирующее устройство будет следовать только командам процессоров с единственным исключением, что оно будет «передавать» их в какое-либо время противнику в случае «сговора». Так как процессоры не сотрудничают по любому входу, то это сводит моделирование к работе схемы проверяемого разделения секрета с нечестным дилером. Так что моделирование будет неразличимо с точки зрения противника.

Случай B: Дилер честен до начала 1-ого раунда. Моделирующее устройство в 1-м раунде будет создавать случайный «ложный» секрет s' и распределять его процессорам в соответствии с командами протокола с полиномом f'. Если дилер честен в течение всего протокола, тогда он будет выполняться с точки зрения противника как обычный протокол проверяемого разделения секрета с честным дилером. Если дилер нечестен после 1-ого раунда противник и моделирующее устройство получит из оракула истинный вход s дилера. В этом случае моделирующее устройство передает управление от дилера к противнику и меняет полином, используемый для разделения на новый полином f" такой, что f"(0)=s и f"(i)=f'(i) для всех процессоров Pi, которые были «подкуплены» противником. Изменения моделирующего устройства в соответствии со случайным полиномом fi, используемым для доказательств с нулевым разглашением (см, например, [Ка14,КУ4] и приложение) делает их совместимыми с любым широковещательным каналом. Моделирующее устройство может всегда сделать это, так как противник имеет не более t точек полинома степени t+1. Далее моделирующее устройство использует полином f" для работы несбоящих процессоров, все еще находящихся под его управлением. Можно утверждать, что для противника эти вычисления не отличимы от реальных вычислений. Единственный момент, отличающийся от реальных вычислений, - это тот факт, что доли секрета, которые противник получает до того, как дилер становится нечестным, созданы с использованием другого полинома. Но благодаря свойствам полиномов – это не является проблемой для моделирующего устройства, в том случае, если дилер нечестен.

Лемма 3.4. Пусть функция h имеет вид (r0 ( (rk ( 0 k h((s1,...,sn-1),(t1 ),...,tnr ) ))=((s,s,...,s,wn),(t1 ),...,tnr ) )).

Тогда h конфиденциально вычислима в отношение секрета s.

Доказательство. Работа моделирующего устройства M сводится к следующему.

Описание работы моделирующего устройства M 1. В раунде 1, M моделирует процессор Pi, выбирая случайный полином h'i степени t+1 и посылает h'i(j) к Pj. В этом месте моделирующему устройству позволено получить из оракула выход функции, так что M будет изучать истинный секрет s. Если такой процессор является «подкупленным» противником Прот в конце этого раунда (или в следующих раундах), то и M, и Прот узнают истинную долю sl и M должен изменить полином h'l в соответствии с тем, что h'l(0)=sl, но без изменения значения в точках, уже известных противнику.

Моделирующее устройство M может всегда cделать это, потому что противник имеет не более t точек полинома степени t+1.

2-8. В течение раундов 2-8 моделирующее устройство полностью следует явно командам процессоров. Так как все что делают процессоры в этих раундах полностью случайно и нет влияния на их входы, M будет всегда способно создать неразличимые распределения.

10. Моделирующее устройство M выбирает полином g степени t+1 такой, что g(0)=s и затем для каждого процессора Pi, устройство M распространяет g(i)+pi(i)+...+pn(i), где pj - полином, распределенный процессором Pj в течение раундов 2-8 моделирования. Интерполяция Рида-Соломона этих значений даст как результат секрет s. Если процессор Pl является сбоящим в конце этого раунда, тогда и M, и Прот узнают из оракула истинную долю входа sl. Если slg(l), тогда M только изменит значение pl в точке l так, чтобы сделать полную сумму соответствующей такой широковещательной передаче.

Моделирование неотличимо от реального выполнения с точки зрения противника. Фактически, в раундах 2-8 все сообщения случайны и не связаны с входом, так что моделирующее устройство может легко играть роль несбоящих процессоров. В раунде 1 противник просматривает не более t долей реального входа несбоящих процессоров. В соответствии со свойствами схемы разделения секрета Шамира, эти доли полностью случайны и, таким образом, могут моделироваться даже без знания реального входа (как и в случае с моделирующим устройством). В раунде 9 реальная доля распространена «скрытым образом» как случайный «мусор», а это позволит моделирующему устройству распространять сообщение несбоящих процессоров с необходимым распределением даже без знания реального входа.

С доказательством лемм 3.1 – 3.4 доказательство теоремы 3.1 следует считать законченным.

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

3.6. СИНХРОННЫЕ КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ 3.6.1. Примитив «Забывающий обмен» Пусть k - фиксированное целое и пусть b1,b2,...,bk{0,1} и i{1,...,k}.

Тогда забывающий обмен OTk1 определяется как функциональная зависимость:

OTk1((b1,b2,...,bk),i)=(,bi).

Эта вычислимая функция является в явном виде асимметричной и реализуется посредством протокола взаимодействия двух участников (процессоров). Обычно первый процессор, который содержит вход (b1,b2,...,bk), называется отправителем (или S), а второй процессор, который содержит вход i{1,...,k}, называется получателем (или R).

Интуитивно, цель забывающего обмена состоит в том, чтобы для отправителя обменяться i-тым битом с получателем так, чтобы не позволить последнему получить какую-либо информацию относительно значения любого другого своего бита и так, чтобы не позволить отправителю получить какую-либо информацию о бите, который был затребован получателем.

С использованием любой перестановки с секретом {fi}iI (см. Приложение), ниже описывается протокол для конфиденциально вычисления OTk1. Так как мы имеем дело с конечными вычислимыми функциями, безопасность будет рассматриваться в терминах некоторого дополнительного параметра n, именуемого далее параметром безопасности.

Протокол ОТПЧМ Вход: Отправитель R имеет вход b1,b2,...,bk{0,1}k, а получатель S имеет вход i{1,...,k} и обе стороны имеют дополнительный параметр безопасности 1n.

1. Отправитель S равномерно выбирает пару односторонних функций с секретом (,t) (см. Приложение), выполняя алгоритм их генерации G по входу 1n. Параметр отсылается R.

2. Получатель R равномерно и независимо выбирает e1,...,ekR*D, устанавливает yi=f(ei) и yj=ej для каждого ji и отсылает (y1,y2,...,yk) к отправителю S. Для этого:

2.1. Равномерно и независимо выбирает ejR*D каждый раз, вызывая алгоритм генерации ej=D(,rj), rjR*Z, j=1,...,k.

2.2. Вычисляет yi=f(ei).

2.3. Для ji присваивает yj=ej.

2.4. Получатель R отсылает (y1,y2,...,yk) к отправителю S.

Таким образом, получатель знает f-1(yi)=ei, однако не может предсказать b(f-1(yi)) для ji.

3. После получения (y1,y2,...,yk), используя знание секрета для инвертирования односторонней функции с секретом, отправитель S вычисляет xj=f-1(yj) для j{1,...,k}. В свою очередь, S посылает (b1b(x1),b2b(x2),...,bkb(xk)) получателю R.

4. По получении (c1,c2,...,ck) получатель локально выдает cib(ei).

Отметим сначала, что вышеупомянутый протокол корректно вычисляет OTk1 так как cib(ei)=bib(xi))b(ei)=bib(f-1(f(ei)))b(ei)=bi.

Аргументы для доказательства того, что протокол действительно конфиденциально вычисляет OTk1 следующие. Интуитивно, отправитель S не получает никакой информации при выполнении протокола, так как для любого возможного значения i все потенциальные отправители «видят» одно и то же распределение равномерно и независимо выбранных элементов из D.

Интуитивно, получатель R не получает никакой (с вычислительной точки зрения) информации при выполнении протокола, так как для ji, единственные данные, которые могут «говорить» о bj – это кортеж (,ej,bj(f-1(ej))), из которого невозможно предсказать bj лучше, чем простым угадыванием.

Формальные аргументы даны в работе [Go1].

3.6.2. Двухсторонние вычисления Безопасные протоколы для получестной модели В этом подразделе описывается метод построения протоколов конфиденциального вычисления любой заданной вычислимой функции.

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

Сначала определяется соответствующее понятие редукции и показывается, как получить протокол для конфиденциального вычисления функции g по данной редукции (конфиденциально вычислимой) функции g к (конфиденциально вычислимой) функции f вместе с протоколом для конфиденциального вычисления f. В частности мы сводим конфиденциальное вычисление обобщенных вычислимых функций к конфиденциальному вычислению детерминированных вычислимых функций.

Затем, без потери общности, рассматриваются булевы схемы с логическими вентилями and и xor с коэффициентом объединения по входу равным 2. В общем случае можно представить следующий сценарий.

Первый процессор «содержит» параметры a1,b1, а второй процессор - a2,b2, где a1+a2 - значение одной входной линии и b1+b2 - значение другой входной линии. Необходимо обеспечить каждый из процессоров «случайной» долей значения выходной линии, то есть долей значения • (a1+a2) (b1+b2). Другими словами нас интересует конфиденциальное вычисление следующей рандомизированной вычислимой функции:

((a1,b1),(a2,b2))(c1,c2), (3.1) • где c1+c2=(a1+a2) (b1+b2). (3.2) То есть значения (с1,с2) равномерно выбраны среди всех решений • c1+c2=(a1+a2) (b1+b2). Вышеупомянутая вычислимая функция имеет конечную область значений и может быть вычислена (в общем случае) сведением к одному из вариантов забывающего обмена (OT). Ниже показывается, как это может быть сделано при условии существования односторонней перестановки с секретом (см. Приложение).

Конфиденциальное вычисление c1+c Теперь мы непосредственно обращаемся к вычислимой функции, определенной в равенствах (3.1)-(3.2). Все арифметические операции выполняются в поле GF(2). Ниже приводится алгоритм редукции (конфиденциальным образом) этой вычислимой функции к вычислению OT41.

Редукция к ОТ Вход. Процессор i содержит (ai,bi){0,1}{0,1}, i=1,2.

1. Первый процессор равномерно выбирает c1R{0,1}.

2. Оба процессора вызывают субпротокол OT41, где первый процессор играет роль отправителя S, а второй процессор играет роль получателя R.

Тогда вход для отправителя – это 4-элементный кортеж • • • • (c1+a1 b1,c1+a1 (b1+1),c1+(a1+1) b1,c1+(a1+1) (b1+1)), а вход получателя - 1+2a2+b2{1,2,3,4}.

Выход. Первый процессор выдает c1, в то время как второй процессор выдает результат, полученный при вызове OT41.

В столбцах таблицы 3.1 приведены значения выходов процессора как функции от значений его собственных входов и входы и выходы процессора 1 (то есть, a1,b1,c1). Значения, с которыми процессор инициализирует субпротокол ОТ (то есть, 1+2a2+b2) показаны во второй строке и значения выходов (и OT, и всего протокола) показаны в третьей строке. Отметим, что в каждом случае, выход процессора 2 равняется • c1+(a1+a2) (b1+b2).

Таблица 3. Значения (0,0) (0,1) (1,0) (1,1) (a2,b2) Выход ОТ 1 2 3 • • • • Значения c1+a1 b1 c1+a1 (b1+1) c1+(a1+1) b1 c1+(a1+1) (b1+1) выхода Вначале отметим, что вышеупомянутая редукция корректна, так как • выход процессора 2 равняется c1+(a1+a2) (b1+b2). Это следует из анализа вышеприведенной таблицы истинности, которая описывает значения выхода процессора 2, как функции от ее собственных входов a1,b1,c1.

Необходимо подчеркнуть, что выходная пара (c1,c2) равномерно • распределена среди всех пар, для которых c1+c2=(a1+a2) (b1+b2).

Таким образом, каждый из локальных выходов (т.e., либо процессора 1, либо процессора 2) равномерно распределен, хотя оба локальных выхода зависимы друг от друга (как в уравнении (3.2). Таким образом, легко увидеть, что редукция конфиденциально вычислима.

Формальные аргументы приведены в [Go2].

Протокол вычислений на арифметической схеме над GF(2) Теперь мы покажем, что процесс вычисления любой детерминированной вычислимой функции, которая вычисляется посредством арифметической схемы над GF(2), конфиденциально сводим к вычислению функции в соответствии с уравнениями (3.1) - (3.2).

Напомним, что последняя вычислимая функция соответствует частному вычислению на мультипликативных вентилях для входов, общедоступных обоим процессорам. Таким образом, можно констатировать, что эта вычислимая функция может рассматриваться как эмулирование мультипликативного вентиля, как это описано выше. В частности разделение битового значения v между обоими процессорами означает равномерно выбранную пару битов (v1,v2) так, что v=v1+v2, где первый процессор содержит v1, второй - v2. Наша цель заключается в разделении, через частные вычисления, долей входных линий схемы на доли всех линий схемы так, чтобы, в конце концов, мы получили бы доли выходных линий схемы.

В начале мы рассмотрим нумерацию всех линий схемы. Входные линии схемы (n) для каждого процессора будут пронумерованы 1,2,...,2n так, что для j=1,...,n j-тый вход процессора i соответствует ((i-1)n+j)-той линии. Линии будут пронумерованы так, чтобы выходные линии каждого вентиля имеют большую нумерацию, чем его входные линии. Для простоты предположим, что каждый процессор получает n выходных битов, и что выходные биты второго процессора соответствуют последним n линиям схемы.

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

Редукция к МВ Вход. Процессор i содержит строку битов xi1...xin{0,1}n, i=1,2.

1. Разделение входов. Каждый процессор делит каждый из своих входных битов с другим процессором. То есть для каждого i=1,2 и j=1,...,n процессор i равномерно выбирает бит rij и посылает его другому процессору, как долю входной линии (с нумерацией ((i-1)n+j) последнего. Процессор i устанавливает свою собственную долю на входной линии с нумерацией (i-1)n+j в значение xij+rij.

2. Эмуляция схемы. Следуя нумерации линий, процессоры используют свои доли двух входных линий схемы, чтобы конфиденциально вычислить доли для выходной линии вентиля.

Предположим, что процессоры имеют общие две входные линии вентиля, то есть процессор 1 содержит доли a1,b1, а процессор 2 содержит доли a2,b2, где a1,a2 - доли на первой линии и b1,b2 - доли на второй линии. Рассмотрим два случая.

2.1. Эмуляция аддитивного вентиля. Процессор только устанавливают долю выходной линии вентиля в значение a1+b1, а процессор 2 устанавливают долю выходной линии вентиля в значение a2+b2.

2.2. Эмуляция мультипликативного вентиля. Доли выходной линии вентиля получаются посредством вызова оракула для вычисления функции (см.(3.1)-(3.2)), где процессор 1 обеспечивает вход (часть запроса) (a1,b1), а процессор 2 обеспечивает вход (a2,b2). После ответов оракула, каждый из процессоров устанавливают свою долю выходной линии вентиля в значение равное своей части ответа оракула.

3. Восстановление выходных битов. Как только доли выходных линий схемы вычислены, каждый процессор посылает долю с каждой из таких линий процессору, с которым линия связана. То есть доли на последних n линиях посылаются процессором 1 процессору 2, в то время как доли n предшествующих линий посылаются процессором процессору 1. Каждый из процессоров восстанавливает соответствующие выходные биты, складывая две доли;

то есть доли, которую он получил на шаге 2 и доли, полученной на текущем шаге.

Выход. Каждый процессор локально выдает биты, восстановленные на шаге 3.

Сначала необходимо проверить, что выходы действительно корректны. Это можно сделать методом индукции, которая состоит в том, что значение доли каждой линии прибавляется к корректному значению на линии. Базис индукции – номер входной линии схемы. А, именно, ((i-1)n+j)-тая линия имеет значение xij и ее доли - rij и rij+xij. На каждом шаге индукции рассматривается эмуляция аддитивного или мультипликативного вентиля. Предположим, что значения входных линий – a и b и что их доли a1,a2 и b1,b2, которые удовлетворяют a1+a2=a и b1+b2=b. В случае аддитивного вентиля доли на выходной линии устанавливаются в значения a1+b1 и a2+b2, что удовлетворяет (a1+b1)+(a2+b2)=(a1+a2)+(b1+b2)=a+b. В случае мультипликативного вентиля доли выходной линии были устанавливаются в значения c1 и c2 так, что • • c1+c2=(a1+a2) (b1+b2). Таким образом, c1+c2=a b, что и требовалось показать.

В работе [Go2] приводятся формальные аргументы для конфиденциального сведения вычисления на арифметической схеме над GF(2) к функции, вычислимой в соответствии с уравнениями (3.1)-(3.2). А следующая теорема, устанавливает главный результат для конфиденциального вычисления любой вычислимой функции для случая двухстороннего протокола взаимодействия.

Теорема 3.2. Предположим, что односторонние перестановки с секретом существуют. Тогда любая вычислимая функция для получестной модели конфиденциально вычислима.

Основной результат для злонамеренной модели Следующая теорема устанавливает основной результат для случая двухстороннего протокола для злонамеренной модели.

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

Эта теорема устанавливает возможность компиляции любого протокола для получестной модели в «эквивалентный» протокол для злонамеренной модели. Существование таких компиляторов показано в ряде работ (см., например, [Ca1,Ca2,Go1]. Сам процесс построения компиляторов для целей, необходимых для построения наших протоколов, является достаточно сложным, и использует в качестве инструментальных средств («крупных примитивов») такие схемы как: схемы привязки, системы доказательств с нулевым разглашением для NP-утверждений, для NP-свидетельств и др. [Go1].

3.6.3. Многосторонние протоколы Общая идея Также как и для случая двухсторонних протоколов, основная наша цель состоит в том, чтобы разработать протоколы, которые могут противостоять любому возможному поведению противника в случае многостороннего взаимодействия. Это также делается в два этапа. Как и в предыдущем случае, сначала рассматривается получестный противник (в роли которого выступают получестные процессоры) и разрабатываются протоколы, которые являются безопасными относительно такого противника. Определение этого типа противника такое же, как в случае с двумя сторонами. Однако в случае многосторонних протоколов при изучении поведения противника рассматриваются две модели. Первая модель злонамеренного поведения подобна злонамеренной модели для противников в случае с двумя процессорами. Это модель позволяет противнику контролировать большую часть процессоров, однако она не рассматривает неизбежно возникающие нарушения безопасности (так как «внешне» процессоры «ведут себя» нормально). Во второй модели злонамеренного поведения предполагается, что противник может контролировать только ограниченную часть сторон. В этой модели, которая была бы пустой в случае с двумя сторонами, нарушения безопасности могут быть эффективно предотвращены. В данном подразделе будет показано, как преобразовать протоколы, безопасные в получестной модели в протоколы, безопасные в каждой из двух моделей со злонамеренным поведением противника.

www.kiev-security.org.ua BEST rus DOC FOR FULL SECURITY Конструкции в целом получаются посредством внесения соответствующих изменений в двухсторонние протоколы. Фактически, построение многосторонних протоколов для получестной модели как, впрочем, и построение компилятора для злонамеренной модели первого типа – это незначительное изменение аналогичных конструкций для двухпроцессорного взаимодействия. В компиляции протоколов для получестной модели в протоколы для второй злонамеренной модели используется схема проверяемого разделения секрета, которая необходима для «эффективного предотвращения» прерывания работы протокола меньшей частью процессоров. Для этого фактически, необходимо только преобразовать протоколы, безопасные в первой злонамеренной модели, в протоколы, безопасные во второй злонамеренной модели.

Получестная модель Построение многосторонних протоколов (безопасных против получестного поведения) конфиденциального вычисления для любой данной вычислимой функции от нескольких аргументов основывается на соответствующем протоколе для случая с двумя процессорами. Для простоты, зафиксируем число процессоров - m. (В общем случае для предлагаемых конструкций значение m может быть как функция полинома).

Рассмотрим схему с вычислениями над GF(2) для оценки значения m-арной вычислимой функции f. Сначала каждый из процессоров объединяет свои входные биты со всеми другими процессорами так, чтобы сумма всех долей равнялась некоторому входному биту.

Следуя от входных линий к выходным линиям, мы выполняем конфиденциальное вычисление доли на каждой линии схемы так, чтобы сумма долей равнялась бы корректному значению. Перед нами стоит только одна проблема. При вычислениях на мультипликативном вентиле, мы имеем процессор i, имеющий биты ai и bi и нам необходимо выполнить конфиденциальное вычисление так, чтобы этот процессор закончил работу m m m ( ) ( ) = ( ) со случайным битом ci и выполнялось бы: ai bi ci.

i=1 i=1 i= Более точно, нас интересует конфиденциальное вычисление следующих рандомизированной вычислимой m-арной функции ((a1,b1),...,(am,bm))(c1,...,cm)R*{0,1}m, (3.3) и m m m ( ) ( ) = ( ) ai bi ci. (3.4) i=1 i=1 i= Таким образом, необходимо конфиденциально вычислить посредством m-стороннего протокола вышеупомянутую вычислимую функцию. Это делается посредством конфиденциального сведения (для независимого m) вычисления уравнений (3.3)-(3.4) к вычислению тех же самых функциональных зависимостей для случая m=2, которые, в свою очередь, соответствуют уравнениям (3.1)-(3.2).

m m m ( Конфиденциальное вычисление c ) = (a ) (b ) i i i i=1 i=1 i= Необходимо отметить, что арифметика над GF(2) реализует также, что –1=+1.

Имеют место следующие соотношения:

m m m ( ) ( ) bi + bj + a bi ) a b =ai (ai j = i i i=1 i=1 i=1 1i< jm m • bi + + a )(bi + bj ) =(m-2) ai (ai j i=1 1i< jm Из этого соотношения можно увидеть, что каждый процессор может сам вычислить элемент (m-2)aibi, в то время как каждые два процессора из двухэлементного подмножества {i,j} могут конфиденциально вычислить • доли по элементам (ai+aj) (bi+bj) (в соответствии с теоремой 3.2). Отсюда следует алгоритм сведения вычисления на основании (3.3) и (3.4) m-арной функции к вычислению на основании (3.1) и (3.2) функции для двух аргументов.

Редукция к КВm= Вход. Процессор i содержит (ai,bi){0,1}{0,1}, i=1,...,m.

1. Редукция. Каждая пара процессоров (i,j), где i

{i, j} 2. Процессор i устанавливает ci=(m-2)aibi+ сi.

ji 3. Процессор i выдает ci.

Вышеприведенное сведение является корректным, так как выходы всех процессоров складываются в соответствии с алгоритмом.

Конфиденциальность сведения определяется следующим предложением.

Предложение 3.1. Алгоритм «Редукция к КВm=2» конфиденциально сводит вычисления на основании (3.3) и (3.4) m-арной функции к вычислению на основании (3.1) и (3.2) функции для двух аргументов.

В работе [Go2] приводятся формальные аргументы для доказательства корректности и конфиденциальности такой редукции. А следующая теорема, устанавливает главный результат для конфиденциального вычисления любой вычислимой функции для случая многостороннего протокола взаимодействия.

Теорема 3.4. Предположим, что односторонние перестановки с секретом существуют. Тогда любая вычислимая m-арная функция для получестной модели конфиденциально вычислима.

Многосторонний протокол схемного вычисления Ниже описывается m-арный аналог вышеописанного субпротокола «Редукция КВm=2». Показывается, что вычисления любой детерминированной функции, вычислимой посредством арифметической схемы над GF(2), конфиденциально сводимы к вычислениям функции из уравнений (3.3) - (3.4).

В частности разделение битового значения v между m процессорами означает равномерно выбранную m-арную последовательность битов m v (v1,...,vm) так, что v= i, где i-тый процессор содержит vi. Наша цель i= заключается в разделении, через частные вычисления, долей входных линий схемы на доли всех линий схемы так, чтобы, в конце концов, мы получили бы доли выходных линий схемы.

В начале мы рассмотрим нумерацию всех линий схемы. Входные линии схемы (n) для каждого процессора будут пронумерованы 1,2,...,mn так, что для j=1,...,n j-тый вход процессора i соответствует ((i-1)n+j)-той линии. Линии будут пронумерованы так, чтобы выходные линии каждого вентиля имеют большую нумерацию, чем его входные линии. Для простоты предположим, что каждый процессор получает n выходных битов, и что j-тый выходной бит j-того процессора соответствуют линии N-(m+1-i)+j, где N – размер схемы.

Ниже приводится алгоритм сведения любой детерминированной m-арной вычислимой функции (m2) к функции, вычислимой в соответствии с уравнениями (3.3) и (3.4).

Редукция к КВm Вход. Процессор i содержит строку битов xi1...xim{0,1}m, i=1,...,m.

1. Разделение входов. Каждый процессор делит каждый из своих входных битов с другим процессором. То есть для каждого i=1,...,m и j=1,...,n и каждого ki процессор i равномерно выбирает бит rk(i-1)n+j и посылает его процессору k, как долю входной линии (с нумерацией (i-1)n+j) последнего. Процессор i устанавливает свою собственную долю на входной линии с (i-1)n+ j нумерацией (i-1)n+j в значение xij+ r.

k i 2. Эмуляция схемы. Следуя нумерации линий, процессоры используют свои доли двух входных линий схемы, чтобы конфиденциально вычислить доли для выходной линии вентиля.

Предположим, что процессоры имеют общие две входные линии вентиля, то есть для i=1,...,m процессор i содержит доли ai,bi, где a1,...,am - доли на первой линии и b1,...,bm - доли на второй линии. Рассмотрим два случая.

2.1. Эмуляция аддитивного вентиля. Каждый процессор только устанавливают свою долю выходной линии вентиля в значение ai+bi.

2.2. Эмуляция мультипликативного вентиля. Доли выходной линии вентиля получаются посредством вызова оракула для вычисления функции (см.(3.4)-(3.5), где процессор i обеспечивает вход (часть запроса) (ai,bi). После ответов оракула, каждый из процессоров устанавливают свою долю выходной линии вентиля в значение равное своей части ответа оракула.

3. Восстановление выходных битов. Как только доли выходных линий схемы вычислены, каждый процессор посылает долю с каждой из таких линий процессору, с которым линия связана. То есть для i=1,...,m и j=1,...,n каждый процессор посылает свою долю с линии N-(m+1-i)n+j процессору i.

Каждый из процессоров восстанавливает соответствующие выходные биты, складывая соответствующие m долей;

то есть доли, которую он получил на шаге 2 и m-1 долей, полученных на текущем шаге.

Выход. Каждый процессор локально выдает биты, восстановленные на шаге 3.

Сначала необходимо проверить, что выходы действительно корректны. Это можно сделать методом индукции, которая состоит в том, что значение доли каждой линии прибавляются к корректному значению на линии. Базис индукции – номер входной линии схемы. А именно, ((i-1)n+j)-тая линия имеет значение xij и ее доли прибавляются xij. На каждом шаге индукции рассматривается эмуляция аддитивного или мультипликативного вентиля. Предположим, что значения входных линий – a и b и что их доли a1,...,am и b1,...,bm действительно удовлетворяют m m ai =a и =b. В случае аддитивного вентиля доли на выходной линии bi i=1 i= установить в значения a1+b1,...,am+bm, что удовлетворяет m m m + bi ) ai =( )+( )=a+b. В случае мультипликативного вентиля (ai bi i=1 i=1 i= доли выходной линии были установлены в значение c1,...,cm так, что m m m m • ai =( )+( ). Таким образом, =a b, что и требовалось ci bi ci i=1 i=1 i=1 i= показать.

В работе [Go2] приводятся формальные аргументы для конфиденциального сведения вычисления на арифметической схеме над GF(2) к m-арной функции, вычислимой в соответствии с уравнениями (3.3)-(3.4).

А следующая теорема, устанавливает главный результат для конфиденциального вычисления любой вычислимой функции для многостороннего протокола взаимодействия.

Теорема 3.5. Предположим, что односторонние перестановки с секретом существуют. Тогда любая вычислимая m-арная функция для получестной модели и m-стороннего протокола взаимодействия конфиденциально вычислима.

Основной результат для злонамеренной модели Следующая теорема устанавливает основной результат для случая двухстороннего протокола и для злонамеренной модели.

Теорема 3.6. Предположим, что односторонние перестановки с секретом существуют. Тогда любая вычислимая функция для m стороннего процесса взаимодействия и злонамеренной модели противника конфиденциально вычислима.

Эта теорема устанавливает возможность компиляции любого протокола для получестной модели в «эквивалентный» протокол для двух злонамеренных моделей, обсуждаемых выше. Существование таких компиляторов показано в работе [Go2]. Построение компилятора для первой модели аналогично построению компилятора для злонамеренной модели при двухстороннем взаимодействии. После получения такого компилятора, строится компилятор [Go2] для преобразования любого протокола для первой злонамеренной модели в безопасный протокол для второй злонамеренной модели.

3.7. АСИНХРОННЫЕ КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ 3.7.1. Вводные замечания В данном подразделе сначала приводятся необходимые примитивы и схема асинхронного проверяемого разделения секрета АПРС, а затем приводятся схема вычислений на мультипликативном вентиле для разных типов сбоев как схема конфиденциальных вычислений.

3.7.2. Примитив «Соглашение об аккумулируемом множестве» (СОАМ-субпротокол) Предположим, что каждый процессор инициализирует Br субпротокол с некоторым входным значением. Процессоры желают договориться об общем аккумулируемом множестве с не менее n-t процессорами, которые успешно завершили Br-субпротокол. Понятно, что каждый процессор может пожелать дождаться n-t локальных завершений Br-субпротокола и сохранить «этих отправителей сообщений». Однако если более чем n-t завершений Br-субпротокола глобально осуществлены, тогда мы не можем быть уверены в том, что все несбоящие процессоры сохранят то же самое множество. Для этого необходимо всем процессорам выполнить СОАМ-субпротокол, в котором выход несбоящих процессоров этого субпротокола есть общее множество из не менее n-t процессоров, которые завершили Br-субпротокол.

Неформально говоря, выходы процессоров после выполнения СОАМ-субпротокола это множества переменных, которые аккумулируют процессоры во время выполнения субпротокола, то есть элементы множества постоянно добавляются в него по мере выполнения субпротокола. Такой тип входа будет называться динамическим входом и, такое множество будет называться аккумулируемым множеством переменных.

Определение 3.1. Пусть m, MN (в данном контексте m=n-t и M=n) и пусть U1...Un[M] – коллекция аккумулируемых множеств такая, что процессор Pi имеет Ui. Будем говорить, что коллекция является (m,t) однородной, если для каждого планировщика и каждой коалиции из не более чем t сбоящих процессоров выполняются следующие условия:

• каждый несбоящий процессор Pi будет обязательно иметь Uim;

• каждых два несбоящие процессора Pi и Pj будут обязательно иметь Ui=Uj.

Определение 3.2. Пусть m, MN и пусть P - протокол, где вход каждого процессора Pi есть аккумулируемое множество Ui. Протокол Р называется t-устойчивым СОАМ-субпротоколом для n процессоров (с параметрами n, M), если для каждого планировщика и каждой коалиции из не более чем t сбоящих процессоров выполняются следующие условия:

Условие завершения. Если коллекция U1...Un (m,t)-однородна, тогда с вероятностью 1 все несбоящие процессоры обязательно завершат протокол.

Условие корректности. Все несбоящие процессоры завершат протокол с общим выходом C[M] так, что Cm. Кроме того, каждый Ui* Ui* несбоящий процессор имеет C, где значение Ui при завершении протокола.

Схема «Соглашение об аккумулируемом множестве» Пусть n3t+1. Субпротокол СОАМ состоит из 2-х этапов (с параметрами m и M). На первом этапе каждый процессор сначала ждет пока его динамический вход станет размером m.

После чего, он выполняет log2 n итераций. В каждой итерации процессор посылает текущее содержание его динамического входа всем другим процессорам, после чего собирает множества, посланные другими процессорами в текущей итерации. Как только накопятся n-t таких множеств в динамическом входе процессора, он приступает к следующей итерации. Это продолжается до тех пор, пока пересечение динамических входов всех несбоящих процессоров, которые получены во всех log2 n итерациях станет размером не менее m.

На втором этапе процессоры последовательно запускают M раз BА-субпротокол. На j-том шаге процессоры решают, принадлежит ли элемент j[M] согласованному множеству C. То есть вход каждого процессора на j-том шаге BА-субпротокола будет 1 тогда и только тогда, когда j принадлежит динамическому входу процессора. Элемент j принадлежит множеству C тогда и только тогда, когда общий выход j-того шага BА-субпротокола является 1. Свойства BА-субпротокола гарантируют нам, что множество C содержит пересечение динамических входов всех процессоров, которые получены при завершении первого этапа, и что каждый элемент jC будет в динамическом входе каждого несбоящего процессора.

Протокол СОАМ Процессор Pi выполняет следующие шаги по входу m, M и аккумулируемому множеству Ui.

1. Ожидает пока Uim.

2. Выполнить в цикле r=log n раз 2.1. Послать (r,Ui) всем другим процессорам;

Fir 2.2. Пусть ={Pj, если (r,Sj) получено от Pj}. Ждет пока SjUi для не менее чем n-t процессоров PjFir.

3. Выполняет M раз BA-субпротокол BA1...BAM, где вход 1 в j-том выполнении субпротокола, тогда и только тогда, когда jUi.

4. Устанавливает Ci={j, если выход BAj равен 1}. Ждет пока CiUi.

5. Выдает Ci.

Предложение 3.2. Протокол СОАМ – является min(r,(n/3-1)) устойчивым протоколом для сети из n процессоров, где r – граница устойчивости для используемого протокола соглашений.

Доказательство. Сначала докажем условие завершения. Предположим, что аккумулируемые множества U1,...,Un определяют (m,t)-однородную коллекцию. Покажем, что каждый несбоящий процессор Pi будет событийно завершать протокол.

Замечание. Напомним, что в асинхронных моделях выполнение каждой конкретной операции начинается сразу после приема сигнала об окончании предыдущей операции, т.е. после наступления некоторого события, не обязательно привязанного к работе синхронизатора. Такая операция (действие) здесь и далее будет называться событийной (событийным).

Шаг 1 будет завершен в любом случае. Индукция по числу итераций показывает, что шаг 2 будет также завершен. В каждой итерации r процессор Pi будет событийно получать сообщение (r,Sj) от каждого несбоящего процессора. Кроме того, для каждого процессора Pj процессор будет событийно иметь SjUi (так как система U1,...,Un является однородной). Шаг 3 будет завершен с вероятностью 1, так как все протоколы византийских соглашений завершаются с вероятностью 1.

Чтобы доказать, что шаг 4 будет также завершен, необходимо отметить, что если BA-субпротокол выдает 1, тогда существует несбоящий процессор Pk, который запускает BAj-протокол, где jUk и, таким образом, процессор Pi будет событийно иметь jUi.

Доказательство свойства корректности начинается со следующего.

Согласование выходов процессоров непосредственно следует из определения византийских соглашений. Шаг 4 протокола гарантирует, что CUi* для каждого несбоящего процессора Pi.

В заключение необходимо показать, что Cm. Пусть Uir обозначает значение аккумулируемого множества Ui по окончании r-ой итерации на шаге 2 при функционировании процессора Pi. Покажем индукцией по r, что каждое множество D из не более чем 2r несбоящих процессоров, которые завершили итерацию r, удовлетворяет jDUjrm. Основание индукции (r=0) следует непосредственно из шага 1 протокола. Для шага индукции рассмотрим множество D из не более чем 2r несбоящих процессоров. Отметим, что для каждых двух процессоров Pj,PkD имеем FjrFkrt+1, где n3t+1 и Fjrn-t для каждого j. Поэтому существует не менее одного несбоящего процессора Pl FjrFkr. Процессор Pl будем называть арбитром Pj и Pk. Процессор Pj (в отн. Pk) получает сообщение (r,Sl). Кроме того, Ulr-1Sl. Таким образом, Ulr-1Ujr (в отн. Ulr-1Ukr).

Рассмотрим независимое деление множества D на две части, выберем арбитра для каждой пары и пусть D является множеством этих арбитров.

Таким образом, получим D2r-1. По индукции имеем mjDUjr-1.

Каждый процессор из D имеет арбитр из D и, таким образом, jDUjr-1jDUjr. Отсюда, mjDUjr.

Пусть D – множество несбоящих процессоров, которые начинают работу на шаге 3 протокола и пусть C=jDUjlog n. По индукции получим Cm. Для каждого jC выходы всех несбоящих процессоров в BAj-субпротоколах являются 1. По этому по определению византийских соглашений выход каждого BAj-субпротокола является 1. Таким образом, CC и Cm. 3.7.3. Схема (n,t)-звезды Пусть OKi-граф – это неориентированный граф с вершинами [n], где ребро (j,k) существует тогда и только тогда, когда процессор Pi завершил распространение двух сообщений (OK,j,k), инициированное Pj и (OK,k,j), инициированное Pk.

Определение 3.3. Пусть G - граф с вершинами [n]. Тогда пара множеств (C,D) такая, что CD[n] является (n,t)-звездой в G, если выполняются следующие условия:

• Cn-2t и Dn-t;

• для каждого jC и для каждого kD в G существует ребро (j,k).

Процессор Pi получает доступ к разделенному секрету, когда находит звезду по OKi-графу. Лемма 3.5 (см. далее) реализует, что если n4t+1, доли несбоящих процессоров в звезде OKi- графа, определяют единственным образом полином степени t от двух переменных. Лемма 3.6.

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

В принципе, можно было бы допустить процессор, ждущий клику размера n-t взамен звезды. Если дилер честен, то OKi - граф будет иметь такую клику. Однако задача нахождения клики максимального размера является NP-полной задачей. Поэтому стороны будут пытаться найти (n,t) звезду.

Кроме того, необходимо удостовериться, что если несбоящий процессор находит звезду по OK-графу, то все несбоящие процессоры найдут звезду, даже если дилер нечестен и OK-граф не содержит клики.

• • После получения сообщения (OK,, ) процессор, который не нашел звезду проверяет какая из предложенных звезд является звездой для OK-графа.

Отметим, что ребро в OK-графе для несбоящего процессора будет, в конечном счете, ребром в OK-графе для каждого несбоящего процессора • • (так как все сообщения (OK,, ) распространяются посредством Br субпротокола. Таким образом, звезда в OK-графе некоторого несбоящего процессора будет в конечном счете звездой в OK-графе любого другого несбоящего процессора.

Далее описывается процедура нахождения (n,t)-звезды в графе с n вершинами (см. определение 3.3), где граф содержит клику размера n-t.

А именно, нижеописываемая процедура ЗВЗ, в качестве выхода выдает либо звезду в графе, либо выдает сообщение «звезда не найдена». Как только граф содержит клику размера n-t, процедура выдает звезду в графе.

Аналогичная процедура описана в [ГДж].

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

Выход алгоритма является независимым множеством в комплиментарном графе и, таким образом, формируется клика в оригинальном графе. Кроме того, если граф содержит клику размера n-k, тогда максимальное паросочетание в комплиментарном графе включает не более k ребер и 2k вершин. Далее описание алгоритма ведется в терминах комплиментарного графа. Если входной граф имеет независимое множество мощностью n-t, находится множества CD вершин, такие, что Cn-2t Dn-t и не существует ребер между вершинами из C и (n,t) вершинами из CD. Эта пара множеств будет называться -звездой.

Далее находится максимальное паросочетание в графе (см., например, [Ал, стр.18]).

На основе этого паросочетания вычисляются множества C и D (n,t) вершин, и проверяется, формирует ли пара (C,D) -звезду в графе.

Если входной граф содержит независимое множество мощностью n-t, (n,t) тогда полученные множества C и D формируют -звезду в входном графе.

Далее показывается, как вычисляются множества C и D. Вершина называется трехглавой, если она не входит в паросочетание и две ее соседние вершины являются парой паросочетаний (а именно, ребро между этими двумя соседними вершинами являются паросочетанием). Пусть C - множество вершин, которые не являются трехглавыми и B - множество вершин, которые имеют соседние вершины из C и пусть D=[n]-B.

Алгоритм ЗВЗ Вход: неориентированный граф G с вершинами [n] и параметром t.

(t) Выход:

-звезда в графе G, или сообщение «звезда не найдена».

1. Найти максимальное паросочетание M в G. Пусть N - множество согласованных вершин (а именно, концевые точки N ребер в M) и пусть =[n]-N.

2. Проверить, что паросочетание M имеет свойство :

2.1. Пусть Т – множество трехглавых вершин, а именно N T={i j,k такие, что (i,j),(i,k)G}. Пусть N C= -T.

2.2. Пусть B – множество вершин, имеющих соседние вершины в C, а именно B:={jN iC такие, что (i,j)G}. Пусть D:=[n]-B.

2.3. Если Cn-2t и Dn-t выдать (C,D), в противном случае выдать «звезда не найдена».

Предложение 3.3. Предположим, что процедура ЗВЗ выдает (C,D) на (t) входном графе G. Тогда, (C,D) формирует -звезду в G.

Доказательство. Ясно, если алгоритм ЗВЗ выдает (C,D), тогда затем Cn-2t Dn-t и CD. Мы показываем, что для каждого iC и для каждого jD вершины i и j не являются соседними в G.

Предположим, что iC и jD и что (i,j) – ребро в G. Так как jD, мы имеем jB. По определению множества B, мы имеем jN (если iC и jN, тогда jB). Кроме того, iC N. Таким образом, и i, и j не входят в паросочетание. Следовательно, ребро (i,j) может быть добавлено к паросочетанию для создания наибольшего паросочетания, и, следовательно, паросочетание не является максимальным. Предложение 3.4. Пусть G - граф с n вершинами, содержащий независимое множество мощностью n-t. Тогда процедура ЗВЗ выдает (t) -звезду в G.

Доказательство. Сначала покажем, что если входной граф G содержит независимое множество мощности n-t, тогда множества C и D, определенные на шагах 2.а и 2.b. алгоритма ЗВЗ являются достаточно большими. Следовательно, алгоритм выдает (C,D). В предложении 3. утверждается, что (C,D) формирует звезду в G. Далее покажем, что Cn I 2t. Пусть I[n] – независимое множество мощности n-t в G и пусть =[n] I. Далее необходимо конкретизировать значения N, T и C в алгоритме ЗВЗ.

I I Пусть F=I-C. Далее покажем, что F. В то же время t.

Следовательно, CI-Fn-2t.

I Так как F, покажем взаимно однозначное соответствие I :F. Пусть iF и так как iC, мы имеет либо iN, либо iT.

Случай 1: iN. Тогда, пусть (i) - вершина, сочетаемая с i в I множестве М. Ясно, что (i), в противном случае мы имели бы ребро (i,(i)), где и i и (i) принадлежит независимому множеству.

Случай 2: iT. По определению множества T, вершина i имеет две соседние вершины j и k такие, что (j,k)M. Произвольно множество (i)=j.

I Понятно, что и j, и k принадлежат.

Покажем, что - взаимно однозначная функция. Рассматривая две различные вершины l,mF, мы различаем три случая.

Случай 1: l,mN. В этом случае, (l)(m), так как М - паросочетание.

Случай 2: lN и mT. Так как mT, то существует ребро между m и вершиной, сочетаемой с (m). Так как lN вершина, сочетаемая с (l) – это вершина l. Далее, предположим, что (l)=(m). Таким образом, (l,m) – ребро в G. Однако и l, и m принадлежат множеству I. Что противоречит условию.

Случай 3: l,mT. Предположим, что (l)=(m). Пусть a - вершина, сочетаемая с (m) из М. Тогда и l, и m – соседние вершины для (m) и a.

Однако, в этом случае паросочетание М - не является максимальным, например, M-{((m),a)}{((m),l),(a,m)} – является наибольшим паросочетанием.

В заключение покажем, что Dn-t. Напомним, что D=[n]-B. Далее покажем, что BM. Так как G содержит независимое множество мощности n-t, мы имеем Mt. Таким образом, D=n-Bn-Mn-t.

Для того, чтобы понять, что BM, мы покажем, что не более одной концевой точки каждого ребра (a,b)M находится в B. От обратного предположим, что и a, и b имеют соседние вершины в C и пусть c,dC – соседние вершины a и b, соответственно. Конечно, cd (в противном случае, вершина c была бы трехглавой, и мы имели бы cC). Однако в этом случае паросочетание M не является максимальным. Например, M-{(a,b)}{(a,c),(b,d)} является наибольшим паросочетанием. 3.7.4. Схема, корректирующая ошибки Схема, корректирующая ошибки, работающая в префиксном режиме, обозначаемая в дальнейшем СКОП, позволяет каждому процессору • вычислить полином p( ) степени d, удовлетворяющий p(j)=aj для каждого полученного им сообщения aj. А именно, процессор будет исследовать этот полином после получения сообщений от других процессоров и определять единственным образом интерполируемый полином степени d [BCG].

Определение 3.4. Пусть и - целые числа и пусть множество S[n]F такое, что для каждых двух элементов (i,a) и (i,a ) из S, получаем i=i. Будем считать, что S является (,)-интерполируемым, если • существует полином p( ) степени такой, что не более элементов (i,a)S • не удовлетворяет p(a)=e. Будем говорить, что p( ) является (,) интерполируемым полиномом множества S.

Определение 3.1. Пусть I – аккумулируемое множество (см. выше).

Тогда I называется событийно (,)-интерполируемым, если для каждого планировщика, каждой коалиции из не более чем сбоящих процессоров и каждого запуска алгоритма существует целое число 0 такое, что I будет событийно содержать (,)-интерполируемое множество мощностью не менее +++1.

При использовании этих обозначений динамический вход процедуры, описываемой ниже, является (d,t)-интерполируемым аккумулируемым множеством I. Требуемый выход этой процедуры является (d,t)-интерполируемым полином множества I. Определение 3. гарантирует, что, по крайней мере, d+t+1значений из I будут сопряжены с полиномом степени t. По крайней мере t+1 из них соответствуют несбоящим процессорам. Следовательно, (d,t)-интерполируемый полином множества I определен значениями несбоящими процессорами.

Процедура СКОП состоит из t+1 итераций. На итерации r процессор ожидает, пока мощность аккумулируемого множества I станет не менее d+t+r+1. Затем, каждый процессор запускает ниже описываемую процедуру, которая определяет, является ли множество I - (d,r) интерполируемым и вычисляет соответствующий интерполируемый полином. Если (d,r)-интерполируемый полином найден, тогда оно подается на выход и работа завершается. В противном случае, мы переходим к итерации r+ (так как I – является событийно интерполируемым, он ограничен, по крайней мере, еще одним элементом и, таким образом, итерация r+1 будет завершена).

Далее описывается, как определить, является ли данное множество (d,r)-интерполируемым и как вычислять интерполируемый полином, используя теорию кодирования. Рассмотрим следующий код. Слово W=(i1,a1)...(il,al) является ключевым, тогда и только тогда, когда • существует полином p( ) степени d такой, что p(ij)=aj для каждый 1jl.

Такой код является обобщенным кодом Рида-Соломона, имеющим эффективную процедуру, корректирующую ошибки. Данная процедура обнаруживает и исправляет не менее r ошибок во входном слове W, где Wd+2r+1 (см., например, [КС]).

Пусть ПКО обозначает следующую процедуру. А именно, пусть S - (d,r)-интерполируемое множество мощностью не менее d+2r+1. Тогда процедура ПКО по входу (d,r,S), выдает (d,r)-интерполируемый полином из множества S.

Процедура СКОП Выполняется в t циклах по r.

1. Пусть Ir определяет содержимое аккумулируемого множества I, где I содержит d+t+r+1 элементов.

2. Ожидать пока Id+t+r+1. Тогда, запустить процедуру ПКО • со входом (d,r,Ir), и пусть p( ) – выходной полином.

• 3. Если p( ) - (d,r)- интерполируемый полином Ir (а именно, если • для d+t+1 элементов (i,a)Ir, мы имеем p(i)=a), выдать p( ). В противном случае, перейти к следующей итерации.

Предложение 3.5. Пусть I – событийно (d,t)-интерполируемое аккумулируемое множество. Тогда процедура СКОП останавливается и выдает (d,t)-интерполируемый полином множества I.

Доказательство. Пусть r, являющийся наименьшим из r, такой, что Ir является (d,Ir)-интерполируемым. Так как I – является событийно (d,t) интерполируемым, то rt. Все итерации вплоть до r будут неудачно завершены. Тогда (d,t)-интерполируемый полином I будет найден на итерации r. 3.7.5. Асинхронная схема проверяемого разделения секрета Общие определения Следующее определение формализует требования к схеме проверяемого разделения секрета, но в асинхронной установке [BCG].

Определение 3.2. Пусть (АРзПр,АВсПр) - пара многосторонних протоколов таких, что каждый несбоящий процессор, который завершает протокол АРзПр впоследствии вызывает протокол АВсПр с локальным выходом протокола АРзПр как локальным входом. Схема (АРзПр,АВсПр) называется t-устойчивой схемой асинхронного разделения секрета – АПРС для n процессоров, если для каждой коалиции из не более, чем t процессоров и каждого планировщика выполняются следующие условия.

Условие завершения. 1. Если дилер честен, тогда каждый несбоящий процессор, в конечном счете, завершит протокол АРзПр. 2. Если некоторый несбоящий процессор завершил протокол АРзПр, то все несбоящие процессоры, в конечном счете, завершат протокол АРзПр.

3. Если несбоящий процессор завершил протокол АРзПр, то он завершит и протокол АВсПр.

Условие корректности. Как только несбоящий процессор завершил протокол АРзПр, тогда существует уникальное значение r такое, что:

1. все несбоящие процессоры выдают r (а, именно, r - восстанавливаемый секрет);

2. если дилер честен и делит секрет s, тогда r=s.

Условие конфиденциальности. Если дилер честен и до тех пор пока никакой из несбоящих процессоров не вызвал протокол АВсПр, тогда сбоящий процессор не получает никакой информации о разделенном секрете.

Необходимо подчеркнуть, что для несбоящего процессора не требуется, чтобы он завершал протокол АРзПр в случае, если дилер нечестен. Мы не различаем случай, где несбоящий процессор не завершает протокол АРзПр и случай, где несбоящий процессор завершает протокол АРзПр неудачно.

Схема АПРС Первый из двух протоколов асинхронного разделения секрета АРзПр состоит из трех стадий. Сначала, каждый процессор ждет получения своей доли секрета от дилера. Затем, стороны совместно пытаются проверить, что их доли определяют единственным образом секрет. Как только процессор убеждается, что секрет уникален, он локально вычисляет и выдает свою «скорректированную долю» секрета (с использованием информации, накапливаемой на стадии верификации).

В протоколе АВсПр каждый процессор посылает свою долю процессорам, принадлежащим некоторому предопределенному множеству E. Затем каждый процессор ждет получения достаточного количества долей для определения единственным образом секрета и, в конечном счете, для реконструкции секрета.

Схема АПРС Схема АПРС имеет следующее свойство. Существует • полином p( ) степени t такой, что каждый выход несбоящего процессора Pi, протокола АРзПр – p(i) и p(0) является разделенным секретом. Это свойство лежит в основе построения схемы АРзПр в условиях By-сбоев.

Протокол АРзПр Вычисления дилера (по входу s):

• • 1. Выбрать случайный полином h(, ) степени t от двух t t j xi y переменных такой, что h(0,0)=s (Т.е. h(x,y)=, где hi, j i=0 j= h0,0=s и все другие коэффициенты h0,1,...,ht,t выбраны однородно и независимо над F). Для каждого 1in посылает • • • • полиномы fi( )=h(,i) и gi( )=(hi, ) процессору Pi.

Вычисления процессора Pi:

• • 2. После получения fi( ) и gi( ) от дилера и для каждого 1jn посылает fi(j) процессору Pj.

3. После получения vi,j от процессора Pj проверяет, если vi,j=gi(j), тогда этот процессор распространяет (OK,i,j).

4. После получения (OK,j,k), контролирует существование звезды в OK, используя процедуру ЗВЗ, описанную выше. Если звезда (Ci,Di) найдена, переходит к шагу 6 и посылает (Ci,Di) всем процессорам.

5. После получения сообщения (Cj,Dj) добавляет (Cj,Dj) к множеству «предлагаемых звезд». Пока звезда не найдена, всякий раз, когда получено распространяемое сообщение (OK,k,l), проверяет, формируют ли (Cj,Dj) звезду в графе OKi.

6. После нахождения звезды (Ci,Di) и если iDi • скорректировать полином gi( ), основываясь на сообщении о верификации, полученном от процессоров из Di и с использованием кодов c исправлением ошибок (процедуры СКОП, описанной ниже). А именно, пусть Vi={(j,vi,j)jDi}, • тогда установить (t,Vi)СКОП=(gi( )).

• 7. Как только gi( ) локально скорректирован, выдает g (0).

Протокол АВсПр Вычисления для процессора Pi (по входу i и с параметрами R{P1,...,Pn}).

7. Посылает ai процессорам из R.

9. Пусть Si={(j,aj)aj получен из Pj. Если PiR, заканчивает без • выхода. В противном случае установить (t,Si)СКОП=zi( ) и выдает zi(0).

Доказательство безопасности схемы АПРС Теорема 3.7. Пара протоколов (АРзПр, АВсПр) является t-устойчивой схемой АПРС в сети из n процессоров, если n4t+1.

Доказательство. Из определения 3.6 видно, что нам необходимо доказать условия завершения, корректности и конфиденциальности.

Начнем с доказательства корректности схемы АПРС.

Корректность. С каждым несбоящим процессором Pi, который • • завершает протокол АРзПр мы ассоциируем уникальный полином hi(, ) степени t от двух переменных и показываем, что каждые два несбоящих • • • • процессора Pi и Pj имеют hi(, )=hj(, ). Затем, мы показываем, что условия и 2 корректности выполняются, относительно r=hi(0,0) (для некоторого несбоящего процессора Pi). Кроме того, мы показываем, что выход процессора Pi протокола АРзПр есть hi(i,0).

Для демонстрации этого мы используем две технических леммы, которые приведем без доказательства [BCG]. В лемме 3.5 показывается, что если 4t+1 долей несбоящих процессоров, находящихся в звезде в графе ОK определяют единственный полином степени t от двух переменных.

Лемма 3.6 демонстрирует тот факт, что полиномы индуцированные звездами каждой из двух процессоров одинаковы. Таким образом, только несбоящий процессор находит звезду, и, следовательно, секрет определяется единственным образом.

• • • • Лемма 3.5. Пусть md+1, и пусть f1( ),...,fm( ) и g1( ),...,gm( ) - полиномы степени d над полем F с |F|m такие, что для каждого 1id+1 и каждого 1jm мы имеем fi(j)=gj(i) и gi(j)=fj(i). Тогда существует единственный • • полином h(, ) степени d от двух переменных такой, что для каждого 1im • • • • мы имеем h(,i)=fi( ) и h(i, )=gi( ).

• • • • Лемма 3.6. Пусть h(, ), h(, ) – два полинома степени d от двух переменных над полем F с |F|d и пусть v1,...,vd+1 - различные элементы в F.

Предположим, что для каждого 1i,jd+1 мы имеем h(vi,vj)=h(vi,vj). Тогда • • • • h(, )=h(, ).

Далее, пусть Pi – несбоящий процессор, который завершил протокол АРзПр и пусть (Ci,Di) - звезда, найденная процессором Pi. Пусть Di - множество несбоящих процессоров в Di пусть Ci - множество несбоящих процессоров в Ci и, таким образом, |Di||Di|-tn-2t и |Ci||Ci|-tn-3tt+1 (так • • как 4t+1). В соответствии с леммой 3.5 полиномы fj( ),gj( ) процессоров jDi определяют единственный полином степени t от двух переменных.

• • • • Пусть hi(, ) обозначает этот полином. А именно, hi(, ) - полином, • • ассоциированный с Pi. Отметим также, что hi(, ) фиксирован, как только Pi завершает протокол АРзПр. Для каждого другого несбоящего процессора Pj пусть Ii,j - множество несбоящих процессоров из DiDj. Так как n4t+1, мы имеем |DiDj|n-2t2t+1 и, таким образом, |Ii,j|t+1. Для каждых двух процессоров k,lIi,j, мы имеем hi(k,l)=vk,l=hj(k,l), где vk,l – верификационная часть, посланная Pk к Pl на шаге 2 протокола АРзПр. Применяя результаты • • • • леммы 3.6, мы имеем hi(, )=hj(, ). Значение r, требуемое в условии корректности, является равным hi(0,0).

Мы утверждаем, что условие 1 (а именно, что если дилер честен и • • выдает значение s, то r=s). Если дилер честен и он выбрал полином h(, ) на шаге 1, тогда для каждых двух процессоров Pk,PlDi мы имеем hi(k,l)=h(k,l). В соответствии с леммой 3.6 мы снова можем получить • • • • • • hi(, )=h(, ). Далее нижний индекс в полиноме h(, ) опускается.

Далее мы показываем, что выход каждого несбоящего процессора Pi • протокола АРзПр есть h(i,0). Полином h(i, ) - интерполируемый полином аккумулируемого множества Ui процессора Pi на шаге 6. Следовательно, • выход процедуры СКОП на шаге 6 будет h(i, ) и выход протокола АРзПр будет h(i,0).

В заключение мы показываем, как выполняется условие 2 (а именно, что выход Pi протокола АВсПр есть r). Каждый несбоящий процессор Pj • распространяет h(j,0) на шаге 7 и, таким образом, h(,0) - интерполируемый полином аккумулируемого множества Ui процессора Pi на шаге 8.

• Следовательно, выход процедуры СКОП на шаге 8 будет h(,0) и выход протокола АВсПр будет h(0,0)=r.

Завершение. Условие 1. Если дилер честен, то для каждых двух несбоящих процессоров Pj и Pk, оба сообщения (ОК,j,k) и (ОК,k,j) будут распространены так как fj(k)=h(k,j)=gk(j) и gj(k)=h(j,k)=fk(j). Таким образом, каждый несбоящий процессор Pi будет в конечном счете иметь клику размера n-t в графе OKi. Поэтому процедура ЗВЗ будет находить звезду в OKi и шаг 4 будет завершен. Шаг 6 будет завершен, так как вход процедуры СКОП (а именно, аккумулируемое множество Ui, которое базируется на звезде, найденной на шагах 4 или 5) - событийно (t,t) интерполируем.

Условие 2. Пусть Pi – несбоящий процессор, который завершил протокол АРзПр и пусть (Ci,Di) - звезда, найденная процессором Pi. Тогда (Ci,Di) будет в конечном счете звездой в графе OKj для каждого несбоящего процессора Pj, даже если Pj не завершил протокол АРзПр.

Кроме того, процессор Pj получит (Ci,Di) сообщение (посланное Pi на шаге 4), и будет проверять на шаге 5, что множества (Ci,Di) формируют звезду в OKj. После нахождения звезды процессор Pj выполнит шаг 6 и завершит протокол АРзПр.

Условие 3. Если все несбоящие процессоры начали выполнять протокол АВсПр, тогда аккумулируемое множество Si на шаге 8 для каждого несбоящего процессора Pi, событийно (t,t)-интерполируемо.

Таким образом, все несбоящие процессоры завершат процедуру СКОП и протокол АВсПр.

Конфиденциальность. Мы используем следующую систему обозначения. Для значения v пусть Hv обозначает множество полиномов степени t от двух переменных со свободным коэффициентом v. Будем • • • • говорить, что последовательность f1( ),...,ft( ), g1( ),...,gt( ) полиномов чередуемы, если для каждых 1i,jt мы имеем fi(j)=gj(i). Пусть I обозначает множество чередуемых последовательностей 2t полиномов степени t.

Лемма 3.7. Пусть F – поле с |F|d и пусть sF. Тогда для каждой • • • • чередуемой последовательности f1( ),...,fd( ), g1( ),...,gd( ) в I существует • • единственный полином h(, )Hs такой, что для каждого 1id мы имеем • • • • h(,i)=fi( ) и h(i, )=gi( ).

Доказательство. См. работу [BCG].

Далее предположим, что дилер честен и пусть s – разделяемое • • значение. Тогда дилер имеет на шаге 1 протокола АРзПр полином h(, ) с равномерным распределением вероятностей над Hs. Кроме того, вся необходимая информация о множестве из t процессоров, полученная во время выполнения протокола АРзПр, является чередуемой • • • • последовательностью f1( ),...,ft( ), g1( ),...,gt( ) в I такой, что для каждого 1it • • • • мы имеем h(,i)=fi( ) и h(i, )=gi( ).

Из леммы 3.7 следует, что для каждого разделяемого значения sF это соответствие между полиномами в Hs и чередуемыми последовательностями в I – является взаимнооднозначным. Следовательно, равномерное распределение над полиномами из Hs индуцирует равномерное распределение вероятностей над чередуемыми последовательностями в I. Асинхронная схема глобального проверяемого разделения секрета Протокол асинхронного глобального проверяемого разделения секрета, обозначаемый как АГРз, состоит из двух этапов. Сначала, каждый процессор делит секрет среди других процессоров, а затем процессоры используют протокол СОАМ, чтобы договориться о множестве С размером не менее чем из n-t процессоров, которые успешно разделили свои секреты. Выход процессора Pi в протоколе АГРз – это множество процессоров, которые успешно разделили свои входы, вместе с i-той долей входа каждого процессора в этом множестве. Протокол АГРз имеет параметр безопасности d. Исходя из контекста, этот параметр будет устанавливаться либо в t, либо в 2t.

Протокол АГРз Код для процессора Pi по входу xi, d.

1. Осуществить разделение xi:

• 1.1. Выбрать случайным образом полином hi( ) степени d такой, что hi(0)=xi.

1.2. Для каждого 1jn послать hi(j) процессору Pj.

1.3. Разослать сообщение «Сторона Pi завершила разделение».

2. После получения доли si,j секрета процессора Pj и сообщения «Сторона Pj завершила разделение» добавить j к множеству Ci процессоров, которые успешно разделили свои секреты. Установить (n,t,Ci)СОАМ=С.

3. Подать на выход C и {si,jjC}.

Необходимо отметить, что аккумулируемые множества C1,...,Cn на шаге 2 определяют (n-t,t)-однородную коллекцию. Таким образом, все несбоящие процессоры завершают протокол СОАМ (и, следовательно, завершают протокол АПРз) с желаемым выходом. Кроме того, сбоящие процессоры не получают информацию о значениях, разделенных несбоящими процессорами.

В протоколе АГВс, описываемом ниже процессоры восстанавливают секрет из долей. Параметры этого протокола – параметр безопасности d и множество R процессоров, для которого секрет может быть вскрыт. Вход процессора Pi является i-той долей секрета, обозначаемой как si.

Протокол АГВс Код для процессора Pi по входу si и параметрам d{t,2t} и R{P1,...,Pn}.

1. Послать si всем процессорам из R.

2. Если процессор PiR, подать на выход 0. В противном случае после получения d+1 значений (значение vj от процессора • Pj) интерполировать полином pi( ) степени d такой, что p(j)=vj для каждого полученного значения vj. Подать на выход pi(0).

Асинхронная схема глобального проверяемого разделения секрета (АГПРС), описанная ниже, является обобщением предыдущей схемы для случая By-сбоев. Схема состоит из двух этапов: сначала, каждый процессор разделяет вход, используя протокол АРзПр схемы АПРС, а затем процессоры используют субпротокол СОАМ для того, чтобы договориться о множестве C не менее чем n-t процессорами, которые объединили свои входы. Выход процессора Pi в субпротоколе АГПРС и есть это множество C и i-тая доля каждого секрета включена процессором Pi в C. В данном протоколе параметр безопасности фиксирован: d=t.

Субпротокол АГПРС Код для процессора Pi по входу xi.

1. Инициировать АРзПр(xi) с Pi в качестве дилера. Для 1jn участвовать в протоколе в АРзПрj. Пусть vj – есть выход АРзПрj.

2. Пусть Ui={jАРзПрj был завершен}. Множество C вычислить как: (n,t,Ui)СОАМ=С.

3. Как только множество C вычислено, подать на выход (C,vjjC).

3.7.6. Вычисления на мультипликативном вентиле Вычисления при FS-сбоях В данном разделе показывается, как надежно при наличии FS-сбоях t-вычислить любую функцию, вход которой разделен между n процессорами, когда n3t+1.

Пусть F – конечное поле, известное всем процессорам и |F|>n. Пусть также f:FnF - вычислимая функция. Предположим, что процессоры имеют арифметическую схему, вычисляющую функцию f. Схема состоит из вентилей сложения и умножения степени 2. Добавление константы рассматривается как частный случай сложения. Все вычисления в выполняются в поле F.

Общее описание протокола выглядит следующим образом [BCG].

Пусть xi - вход процессора Pi. На первом шаге каждый процессор разделяет вход среди других процессоров, используя, например, схему разделения секрета Шамира (см. выше). А именно, для каждого процессора Pi, который успешно разделил свой вход, случайным образом генерируется • полином pi( ) степени t, сгенерирован такой, что каждый процессор Pj имеет pi(j) и pi(0) - значение входа процессор Pi. Будем говорить, что pi(j) - доля pi(0) процессора Pi. Затем, стороны договариваются, используя протокол СОАМ, о множестве С процессоров, которые успешно разделили свои входы. Как только C вычислено, процессоры начинают вычислять r x fC( ), следующим образом. Сначала, входные значения процессоров не принадлежащие C – устанавливаются в некоторое значение по умолчанию, скажем в 0. Затем процессоры вычисляют данную схему, вентиль за вентилем способом, описанном ниже. Заметим, что выход протокола будет зафиксирован, как только множество C зафиксировано.

Для каждого вентиля процессоры используют свои доли входных линий для совместного и безопасного «генерирования» случайного • полинома p( ) степени t, такого, что каждый процессор Pi вычисляет p(i) и p(0) - является выходным значением этого вентиля. А именно, p(i) - доля процессора Pi на выходной линии этого вентиля. Как только процессоры вычислили свои доли на выходных линиях всей схемы, процессоры восстанавливают свои доли на выходной линии и интерполируют выходное значение.

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

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

Вычисления на мультипликативном вентиле • • • Пусть c=a b – мультипликативный вентиль и пусть 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 n • • H • получает Hi(j). Полином H( ) – устанавливается в H( )= ( );

а именно j j= n H каждый процессор Pi вычисляет H(i)= (i).

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

j jC • • • • Полином 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+ • коэффициентов C( ) являются коэффициентами t+1 более низкой степени • полинома D( ). Важный момент здесь состоит в том, что информация, которую накапливают сбоящие процессоры (а именно t долей полинома • • D( ) вместе с t долями усеченного полинома C( )), независима от C(0).

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

Pages:     | 1 || 3 | 4 |   ...   | 6 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.