Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
23.05.2015
Размер:
1.7 Mб
Скачать

 

 

 

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