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

Протокол соам

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

  1. Ожидает пока Uim.

  2. Выполнить в цикле r=log nраз

    1. Послать (r,Ui) всем другим процессорам;

    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.

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

Рассмотрим независимое деление множества Dна две части, выберем арбитра для каждой пары и пустьDявляется множеством этих арбитров. Таким образом, получимD2r-1. По индукции имеемmjDUjr-1. Каждый процессор изDимеет арбитр изDи, таким образом,jDUjr-1jDUjr. Отсюда,mjDUjr.

Пусть D– множество несбоящих процессоров, которые начинают работу на шаге 3 протокола и пустьC=jDUjlog n. По индукции получимCm. Для каждогоjCвыходы всех несбоящих процессоров вBAj-субпротоколах являются 1. По этому по определению византийских соглашений выход каждогоBAj-субпротокола является 1. Таким образом,CCиCm.

      1. Схема (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, если выполняются следующие условия:

  • Cn-2tиDn-t;

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

Процессор Piполучает доступ к разделенному секрету, когда находит звезду поOKi-графу. Лемма 3.5 (см. далее) реализует, что еслиn4t+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ребер и 2вершин. Далее описание алгоритма ведется в терминах комплиментарного графа. Если входной граф имеет независимое множество мощностьюn-t, находится множестваCDвершин, такие, чтоCn-2tDn-tи не существует ребер между вершинами изCи вершинами изCD. Эта пара множеств будет называться -звездой. Далее находится максимальное паросочетание в графе (см., например, [Ал, стр.18]).

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

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

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