Главная страница

Теория процессов


Скачать 1.62 Mb.
НазваниеТеория процессов
Дата26.12.2022
Размер1.62 Mb.
Формат файлаpdf
Имя файлаprocesses.pdf
ТипИзложение
#864794
страница11 из 15
1   ...   7   8   9   10   11   12   13   14   15
(t [j] = 1) ?
timeout ! j t [j] := 0
(8.33)
Правую стрелку в этой диаграмме следует понимать как со- кращённое обозначение для совокупности из n переходов, метка каждого из которых получается заменой в метке этой стрелки символа j на любое из значений из множества Z
n
Отметим, что в данном процессе наряду с операторами за- пуска таймеров и посылки ими сигнала тайм-аута присутствует также оператор stop ? i, выполнение которого досрочно заверша- ет работу соответствующего таймера.
ПСО с возвратом имеет следующие особенности.
• Когда заканчивается лимит времени ожидания подтвер- ждения какого-либо пакета, агент начинает передавать по- вторно все пакеты из своего окна.
• Когда поступает подтверждение получения какого-либо па- кета, все предыдущие пакеты в окне тоже считаются под- твержденными (даже если их подтверждения не дошли).
Каждый кадр f , пересылаемый каким-либо из агентов этого протокола, содержит пакет x и два целых числа: s и r, где
280

• s – номер, сопоставленный пакету x (который по определе- нию равен номеру кадра f ),
• r – номер последнего полученного неискажённого кадра.
Для формирования кадров используется функция ϕ. Для из- влечения пакетов и номеров из кадров используются функции info, seq и ack, обладающие следующими свойствами:
info(ϕ(x, s, r)) = x seq(ϕ(x, s, r)) = s ack (ϕ(x, s, r)) = r
Описание процесса, представляющего поведение агента дан- ного ПСО, мы даём в блок-схемном виде, по которому несложно построить блок–схему этого процесса.
В данном описании мы используем следующие обозначения.
• Символы +
n и −
n обозначают сложение и вычитание по мо- дулю n.
• Символ r обозначает переменную с множеством значений
Z
n
. Значение переменной r равно номеру ожидаемого кад- ра.
Агент посылает своему СУ пакет, извлечённый только из такого кадра f , у которого номер seq(f ) совпадает со зна- чением этой переменной r.
Пакеты из кадров с другими значениями seq(f ) игнориру- ются, у таких кадров учитывается лишь компонента ack(f ).
• Знакосочетание send является сокращённым обозначением следующей группы операторов:
send =







C ! ϕ(x[s], s, r −
n
1)
start ! s s := s +
n
1







• Знакосочетание between(a, b, c) является сокращённым обо- значением формулы

a ≤ b < c



c < a ≤ b



b < c < a

(8.34)
281

• Знакосочетание enable := (w < n−1) является сокращённой записью оператора if (w < n − 1) then enable := 1 else enable := 0
Процесс, представляющий поведение агента данного ПСО,
имеет следующий вид:
'
&
$
%
start enable = 1
w, b, s, r = 0
timeout ? i s := b i := 1




enable = 1
In ? x[s]
send w := w + 1
send i := i + 1




i ≤ w




Out ! info(f )
r := r +
n
1
w := w − 1
stop ! b b := b +
n
1




between
(b, ack(f ), s)




seq(f ) = r




f = ∗
C ? f enable := (w < n − 1)
-
?
?
?
?



-
-
6
?
?
?
?

-

-
-

+




+
+
+
+
Читателю предлагается самостоятельно
• определить процесс “канал” для этого протокола
(канал может содержать несколько кадров, которые могут не только искажаться и пропадать, но ещё и переупорядо- чиваться)
• определить спецификацию Spec этого протокола
• доказать соответствие этого протокола спецификации Spec
• исследовать этот протокол на наличие аномальных эффек- тов, аналогичных эффекту (8.32), который был изложен в параграфе 8.4.7 282

(если аномальные эффекты присутствуют, то модифициро- вать этот протокол так, чтобы таких эффектов не было, и доказать корректность модифицированного протокола)
В заключение отметим, что данный ПСО неэффективен при большом количестве ошибок при передаче кадров.
8.4.10
Протокол скользящего окна с выбороч- ным повтором
Второй ПСО отличается от предыдущего тем, что у агента этого
ПСО имеется не одно, а два окна.
1. Первое окно имеет те же функции, которые имеет окно первого ПСО (данное окно называется посылающим ок- ном).
Максимальный размер посылающего окна равен m def
= n/2,
где число n имеет тот же статус, который описан в парагра- фе 8.4.8 (в частности, номера кадров являются элементами
Z
n
).
2. Второе окно (называемое принимающим окном) предна- значено для размещения пакетов, поступивших от другого агента, которые пока не могут быть переданы СУ, потому что ещё не пришли некоторые пакеты с меньшими номера- ми.
(агент-получатель должен передавать принятые пакеты сво- ему СУ в том же самом порядке, в котором они поступили к агенту-отправителю от его СУ)
Принимающее окно имеет фиксированный размер m = n/2.
Каждый кадр f , пересылаемый каким-либо из агентов этого протокола, содержит 4 компоненты:
1. k – вид кадра,
данная компонента может принимать одно из трёх значе- ний:
• data (информационный кадр)
283

• ack (кадр, содержащий лишь подтверждение)
• nak (кадр, содержащий запрос на повторную переда- чу)
2. x – пакет
3. s – номер этого кадра
4. r – номер последнего полученного неискажённого кадра.
Если значение первой компоненты кадра равно ack или nak,
то вторая и третья компоненты этого кадра имеют фиктивный характер.
Для формирования кадров используется функция ϕ.
Для извлечения компонентов из кадров используются функ- ции kind, info, seq и ack, обладающие следующими свойствами:
kind (ϕ(k, x, s, r)) = k info(ϕ(k, x, s, r)) = x seq(ϕ(k, x, s, r)) = s ack (ϕ(k, x, s, r)) = r
Процесс, описывающий поведение агента данного ПСО, имеет следующие переменные.
1. Массивы x[m] и y[m], предназначенные для размещения по- сылающего окна и принимающего окна соответственно.
2. Переменные enable, b, s, w, имеющие
• те же множества значений, и
• тот же смысл которые они имеют в предыдущем протоколе.
3. Переменные, связанные с принимающим окном:
• r – нижняя граница принимающего окна
• u – верхняя граница принимающего окна
284
значения переменных r и u принадлежат множеству Z
n
Если в принимающем окне присутствует пакет, номер ко- торого равным нижней границе принимающего окна (r), то агент
• передаёт этот пакет своему СУ, и
• увеличивает на 1 (по модулю n) значения r и u.
4. Булевский массив arrived[m], компоненты которого имеют следующий смысл: arrived[i] = 1 тогда и только тогда, ко- гда в i–й компоненте принимающего окна содержится па- кет, пока ещё не переданный СУ.
5. Булева переменная no_nak, используемая в следующих це- лях.
Если агент получает
• искажённый кадр, или
• кадр, номер которого отличен от нижней границы при- нимающего окна (r)
то он посылает своему коллеге запрос на повторную пере- дачу кадра, номер которого равен r.
Данный запрос называется NAK (Negative Acknowledgement).
Булева переменная no_nak используется для того, чтобы избежать нескольких запросов на повторную передачу од- ного и того же кадра: эта переменная имеет значение 1,
если NAK для кадра с номером r еще не был послан.
Когда агент получает неискажённый кадр f вида data, он выполняет следующие действия.
• Если номер seq(f ) попадает в прнинимающее окно, т.е. ис- тинна формула between(r, seq(f ), u)
где предикатный символ between имеет тот же смысл, что и в предыдущем протоколе (см. (8.34)), то агент
285

– извлекает из этого кадра пакет, и
– помещает этот пакет в своё принимающее окно.
• Если условие из предыдущего пункта не выполнено (т.е.
номер seq(f ) кадра f не попал в принимающее окно), то
– пакет в таком кадре игнорируется, и
– у такого кадра учитывается лишь компонента ack(f ).
В данном протоколе участвуют следующие таймеры.
1. Массив из m таймеров, поведение которых представляет- ся процессом T imers (см. (8.33), с заменой n на m), каж- дый таймер из этого массива предназначен для оповещения агента о том, что
• время ожидания подтверждения пакета с соответству- ющим номером из посылающего окна закончилось, и
• необходимо послать кадр с этим пакетом ещё раз
2. Дополнительный таймер, поведение которого представля- ется следующим процессом:
Init = (t = 0)








 
6

stop_ack_timer ?
t := 0



- start_ack_timer ?
t := 1




(t = 1) ?
ack_timeout !
t := 0
Этот таймер используется со следующей целью.
Посылка агентом подтверждений кадров, поступивших от другого агента, может производиться двумя способами:
(a) подтверждение посылается в составе информационно- го кадра (т.е. кадра вида data), или
(b) подтверждение посылается отдельным кадром вида ack.
286

Когда агенту необходимо послать такое подтверждение a,
он
• включает вспомогательный таймер (т.е. выполняет дей- ствие start_ack_timer !),
• если до сигнала тайм-аута от вспомогательного тайме- ра агент получил новый пакет от своего СУ, он
– формирует кадр вида data с этим пакетом,
– включает в этот кадр подтверждение a как ком- поненту ack этого кадра, и
– посылает этот кадр своему коллеге
• если после истечения работы вспомогательного тайме- ра (т.е. после получения от него сигнала ack_timeout)
агент так и не получил новый пакет от своего СУ,
он посылает подтверждение a отдельным кадром вида ack.
Описание процесса, представляющего поведение агента дан- ного ПСО, мы даём в блок-схемном виде, по которому несложно построить блок–схему этого процесса.
В данном описании мы используем следующие обозначения и соглашения.
1. Если i – целое число, то знакосочетание i%m обозначает остаток от деления i на m.
2. Если
• mass – имя массива из m компонентов (т.е. x, y, arrived,
и т.д.), и
• i – целое число,
то знакосочетание mass[i] следует понимать как mass[i%m].
3. Знакосочетание вида send(kind, i) является сокращённым обозначением следующей группы операторов:
send(kind, i) =











C ! ϕ(kind, x[i], i, r −
n
1)
if (kind = nak) then no_nak := 0
if (kind = data) then start ! (i%m)
stop_ack_timer !











287

4. Знакосочетания between(a, b, c)
и enable := (w < m)
имеют тот же смысл, что и в описании предыдущего про- токола.
5. Если в каком-либо овале присутствуют не одна, а несколько формул, то мы предполагаем, что эти формулы связаны символом конъюнкции.
6. В целях экономии места некоторые выражения вида f (e
1
, . . . , e n
)
написаны в две строки (в первой строке – f , а во второй –
список (e
1
, . . . , e n
)).
Процесс, представляющий поведение агента данного ПСО,
имеет следующий вид:
'
&
$
%
start enable = 1
w, b, s, r = 0
u = m = n/2
no_nak = 1
arrived = (0 . . . 0)
timeout ? i send(data, i)
?




enable = 1
In ? x [s]
send(data, s)
s := s +
n
1
w := w + 1





ack_timeout ?
send(ack, 0)
@
@
@
@
R
?




f = ∗
?
f rame processing
?




no_nak = 1
send(nak, 0)
-
6
?
C ? f enable := (w < m)
?
?



-
-
-
?
?
+
+


+
Фрагмент frame processing в этой диаграмме выглядит следу- ющим образом.
288

?
?


-
?
6
?
?
6

6
?
@
@
@
@
@
R
@
@
@
@
R
-
?
?
-
+

+

+


+
+

+





kind(f ) = data
'
&
$
%
kind(f ) = nak between
(b, ack(f ) +
n
1, s)
'
&
$
%
between
(b, ack(f ), s)
send
(data, ack(f ) +
n
1)
w := w − 1
stop ! (b%m)
b := b +
n
1




seq(f ) 6= r no_nak = 1
send(nak, 0)
start_ack_timer !
'
&
$
%
between
(r, seq(f ), u)
arrived [seq(f )] = 0
arrived [seq(f )] := 1
y [seq(f )] := info(f )




arrived [r] = 1
Out ! y [r]
no_nak := 1
arrived [r] := 0
r := r +
n
1
u := u +
n
1
start_ack_timer !
Читателю предлагается самостоятельно исследовать для дан- ного протокола все вопросы, которые были перечислены в конце предыдущего параграфа.
8.5
Криптографические протоколы
Важным примером процессов с передачей сообщений являются криптографические протоколы.
8.5.1
Понятие криптографического протокола
Криптографический протокол (КП) – это распределённый алгоритм (т.е. совокупность нескольких взаимодействующих про-
289
цессов), предназначенный для безопасной передачи, обработки и хранения информации или материальных объектов в небезопас- ной среде.
В работе КП принимают участие несколько агентов, кото- рыми могут быть люди, вычислительные процессы, компьюте- ры, сети связи, базы данных, банковские карточки, банкоматы,
и т.д.
Каждый из агентов КП функционирует в соответствии с неко- торым последовательным алгоритмом.
Действия, исполняемые агентами, могут иметь следующий вид.
• Посылка сообщения другому агенту или группе агентов.
В качестве сообщения в КП может выступать как информа- ционный, так и материальный объект. Например это может быть набор банкнот или товар.
• Приём сообщения от другого агента.
• Внутреннее действие, которое заключается в преобразо- вании агентом имеющихся у него информационных и мате- риальных объектов.
Главное отличие КП от остальных распределённых алгорит- мов заключается в том, что
• при функционировании КП допускается высокая вероят- ность некоторых угроз безопасности сообщений, передава- емых агентами этого КП, и
• КП должен содержать механизмы противодействия этим угрозам.
Под угрозой безопасности сообщения понимается возмож- ность выполнения с этим сообщением какой-либо из следующих операций.
1. Нарушение конфиденциальности сообщения, т.е., напри- мер, перехват этого сообщения (т.е. получение его копии),
и
290

• полное или частичное ознакомление с содержанием это- го сообщения субъектами, не имеющими для этого со- ответствующих полномочий, или
• извлечение из сообщения новой информации, напри- мер,
– извлечение из шифртекстов фрагмента криптогра- фического ключа, используемого при создании этих шифртекстов, или
– извлечение из сообщений о покупках какого-либо лица предположений о его финансовом положении или о его предпочтениях.
2. Нарушение целостности сообщения, т.е., например, иска- жение передаваемого текста в процессе передачи.
3. Кража сообщения (например, кража денег или товара в процессе их доставки от одного агента другому агенту).
4. Подмена сообщения, т.е.
• изъятие сообщения, которое агент A послал агенту B,
и
• посылка агенту B другого сообщения вместо изъятого.
Ниже под угрозами безопасности мы будем понимать угрозы безопасности сообщений, передаваемых между агентами какого- либо КП.
Угрозы безопасности могут быть внешними и внутренними.
1. Внешние угрозы связаны с вторжением в работу агентов
КП других агентов, не входящих в этот КП (их называют противниками).
Противники делятся на следующие два класса.
(a) Пассивные противники, которые могут лишь пере- хватывать сообщения, пересылаемые другими агента- ми, и анализировать их.
(b) Активные противники, которые могут
291

• перехватывать сообщения, пересылаемые другими агентами, и анализировать их
• модифицировать или удалять пересылаемые сооб- щения
• создавать новые сообщения и посылать их другим агентам
• и т.д.
2. Внутренние угрозы связаны с наличием среди агентов
КП нечестных агентов (их называют мошенниками), ко- торые могут
• неправильно выполнять действия, которые им полага- ется выполнять в ходе работы КП,
• выдавать себя за других агентов,
• объединятьтся в коалиции и совместно использовать сообщения, получаемые ими в ходе работы КП, в зло- намеренных целях
• и т.д.
Свойства безопасности КП представляют собой описание видов угроз безопасности, которым может быть оказано проти- водействие во время функционирования этого КП.
Наиболее надёжными считаются такие КП, для которых име- ется математическое доказательство утверждения о том, что реа- лизованные в этих КП механизмы противодействия угрозам без- опасности действительно выполняют поставленные перед ними задачи.
8.5.2
Шифрование сообщений
Для противодействия угрозам нарушения конфиденциальности некоторые из пересылаемых сообщений могут передаваться от одних агентов КП другим агентам в зашифрованном виде.
Шифрование сообщения m представляет собой применение некоторого алгоритма к паре (K, m), где K – объект, называе- мый ключом шифрования. Результат применения алгоритма шифрования к паре (K, m) обозначается знакосочетанием K(m).
292

Операция извлечения исходного сообщения из зашифрован- ного сообщения m
0
называется дешифрованием. Данная опе- рация тоже представляет собой применение некоторого алгорит- ма к паре (K
0
, m
0
), где K
0
– объект, называемый ключом де- шифрования. Результат применения алгоритма дешифрования к паре (K
0
, m
0
) обозначается знакосочетанием K
0
(m
0
). Ключи шиф- рования K и дешифрования K
0
должны быть связаны соотноше- нием для каждого сообщения m
K
0
(K(m)) = m
(8.35)
Если символ K обозначает некоторый ключ шифрования, то знакосочетание K
−1
обозначает ключ дешифрования K
0
, удовле- творяющий условию (8.35).
Системой шифрования (СШ) называется пара, состоя- щая из алгоритма шифрования и алгоритма дешифрования. Ис- пользуемые в настоящее время на практике СШ подразделяются на два класса:
• симметричные СШ, в которых каждый ключ шифрова- ния K совпадает с соответствующим ему ключом дешиф- рования K
−1
, и
• СШ с открытым ключом, в которых ключи шифрова- ния и дешифрования сопоставлены конкретным агентам:
если символ A обозначает некоторого агента, использую- щего СШ с открытым ключом, то знакосочетания K
1   ...   7   8   9   10   11   12   13   14   15


написать администратору сайта