- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
|
|
|
seq(f) 6= r |
+ |
|
|
- send(nak, 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
6 @ |
|
|
|
|
start_ack_timer ! |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
no nak = 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
? |
|
|
|
|
|
− |
|
|
|
' |
? |
|
|
|
$ |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
@@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
@R |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
between |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
kind(f) = data |
|
|
|
|
|
(r, seq(f), u) |
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
@ |
|
arrived [seq(f)] = 0 |
|
|
arrived [seq(f)] := 1 |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
− |
@& |
− |
% |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y [seq(f)] := info(f) |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
@ |
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@R |
kind(f) = nak |
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
' |
|
|
|
|
|
|
$arrived [r] = 1 |
|
|
|
|||||||||||||||||||
send |
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
(data, ack(f) + 1) |
|
|
|
|
|
|
between |
|
|
|
|
|
|
|
|
|
+ |
? |
6 |
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
(b, ack(f) + 1, s) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
%_ |
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
& |
− |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
Out ! y [r] |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
no nak := 1 |
|
|
|
|||||||||
|
|
|
|
|
− |
|
|
+ |
' |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
$ n |
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
arrived [r] := 0 |
|
|
|
||||||||
|
w := w |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
between |
|
|
|
|
|
r := r + 1 |
|
|
|
|
|
|
|||||||||||||
|
stop ! (b%m) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u := u + 1 |
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
(b, ack(f), s) |
|
|
|
|
|
_ |
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
b := b + 1 |
|
|
|
|
|
|
& |
− |
|
% |
_ |
n |
|
timer ! |
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
start |
|
ack |
|
|
|
||||||||||||
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
?
Читателю предлагается самостоятельно исследовать для данного протокола все вопросы, которые были перечислены в конце предыдущего параграфа.
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
Операция извлечения исходного сообщения из зашифрованного сообщения m0 называется дешифрованием. Данная операция тоже представляет собой применение некоторого алгоритма к паре (K0, m0), где K0 – объект, называемый ключом дешифрования. Результат применения алгоритма дешифрования к паре (K0, m0) обозначается знакосочетанием K0(m0). Ключи шифрования K и дешифрования K0 должны быть связаны соотношением
для каждого сообщения m K0(K(m)) = m |
(8.35) |
Если символ K обозначает некоторый ключ шифрования, то знакосочетание K−1 обозначает ключ дешифрования K0, удовлетворяющий условию (8.35).
Системой шифрования (СШ) называется пара, состоящая из алгоритма шифрования и алгоритма дешифрования. Используемые в настоящее время на практике СШ подразделяются на два класса:
•симметричные СШ, в которых каждый ключ шифрования K совпадает с соответствующим ему ключом дешифрования K−1, и
•СШ с открытым ключом, в которых ключи шифрования и дешифрования сопоставлены конкретным агентам:
если символ A обозначает некоторого агента, использую-
щего СШ с открытым ключом, то знакосочетания KA+ и KA− обозначают сопоставленные ему ключи шифрования и дешифрования в этой СШ, причём
–ключ шифрования KA+ (называемый открытым ключом (ОК) агента A) известен всем агентам
–ключ дешифрования KA− (называемый закрытым ключом (ЗК) агента A) известен только агенту A
(т.е. если какой-либо агент докажет, что он умеет дешифровать сообщения вида KA+(m), то он совпадает с
A)
Главные различия между СШ с открытым ключом и симметричными СШ заключаются в следующем:
293