Трехсторонние протоколы.

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

Один из первых протоколов такого типа заключается в выполнении следующих шагов:

1. А→Т: А,В,rA,

2. T→A: EkAT(rA,B,k,EkBT(k,A)),

3. A→B: EkBT(k,A),

4. B→A: Ek(rB),

5. A→B: Ek(rB - 1).

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

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

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

1. А→Т: А,В,rА,

2. Т→А: ЕкBT (k, rA ,L,B), билет,

3. A→В: билет, аутентификатор,

4. В→А: Ek(t,kB).

Здесь "билетом" названа величина EkBT(k,A,L), "ayтентификатором" — величина Ek(A,t,kA), t — метка времени; L — период времени действия билета, rА — случайное число, сгенерированное абонентом А и вставленное в передаваемое сообщение для взаимной аутентификации, а kА и kB — случайные числа, сгенерированные абонентами А и В соответственно, и используемые либо в качестве ключа шифрования информации другой стороне, либо для выработки общего ключа kАВ = f(kA,kB) с помощью некоторой функции f.

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

 

Рис.36. Протокол Kerberos

Сообщения, передаваемые согласно этому протоколу, выглядят следующим образом:

1. A→AS: A,TGS,rA, ,

2. AS→A: EkA,AS(kA,TGS,rA,L1,TGS), tgt,

3. A→TGS: tgt, аутентификатор1, B, rA,

4. TGS→ A: EkA,TGS(k,rA’,L2,B), билет,

5. A→В: билет, аутентификатор2,

6. B→A: Ek(t2,kB),

где

tgt = ЕkАS,TGS(kА,TGS, А, L1),

аутентификатор1 = EkA,TGS(A,t1),

билет = ЕkB,TGS(К, A,L2),

аутентификатор2 = Ek (A, t2, kA ) .

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

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

1. A→B: r,A,B,EkAT(rA,r,A,B),

2. В →Т: r, А,В,EkAT (rA,r, А,В)kBT(rB,r, А,В),

3. T→B: EkAT(rA,k),EkBT(rB,k),

4. В→А: ЕкАТ(rА).

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

Этот протокол можно дополнить еще одним шагом для обеспечения взаимной аутентификации сторон и подтверждения правильности полученного ключа:

4. B→A: ЕkAT (rА,k)k(r,rв),

5. А→В: Еk(r).