Опишем форматы двух важнейших объектов системы Kerberos - билета и аутентификатора. Описание дается в нотации ASN.1. Понимание этих форматов позволит лучше прочувствовать тонкости механизма аутентификации. Рис. 7 содержит описание структуры билета, а Рис. 6 — описание шифруемой (секретным ключом сервера) части билета.
Рисунок 6. Описание структуры билета
Листинг 1
EncTicketPart ::= [APPLICATION 3] SEQUENCE { flags [0] TicketFlags, key [1] EncryptionKey, crealm [2] Realm, cname [3] PrincipalName, transited [4] TransitedEncoding, authtime [5] KerberosTime, starttime [6] KerberosTime OPTIONAL, endtime [7] KerberosTime, renew-till [8] KerberosTime OPTIONAL, caddr [9] HostAddresses OPTIONAL, authorization-data [10] AuthorizationData OPTIONAL } |
Рисунок 7. описание шифруемой части билета
Листинг 2
Authenticator ::= [APPLICATION 2] SEQUENCE { authenticator-vno [0] INTEGER, crealm [1] Realm, cname [2] PrincipalName, cksum [3] Checksum OPTIONAL, cusec [4] INTEGER, ctime [5] KerberosTime, subkey [6] EncryptionKey OPTIONAL, seq-number [7] INTEGER OPTIONAL, authorization-data [8] AuthorizationData OPTIONAL } |
Поясним смысл компонентов билета.
tkt-vno. номер версии формата билета. Данный документ описывает версию 5.
realm. область управления, выдавшая билет, и, одновременно, область, содержащая сервер.
sname. имя сервера, к которому выдан данный билет.
enc-part. зашифрованная часть билета.
flags. битовая шкала флагов.
key. сеансовый ключ, выданный Kerberos для связи между клиентом и сервером.
crealm. область управления, в которой зарегистрирован клиент, и, одновременно, область, в которой происходила начальная проверка подлинности.
cname. имя клиента.
transited. список промежуточных областей управления, участвовавших в аутентификации клиента.
authtime. время выдачи первоначального билета, "наследником"
starttime. время, отмечающее начало срока годности билета. Если данное поле не задано, используется значение authtime.
endtime. время, отмечающее окончание срока годности билета. В принципе конкретные серверы могут накладывать свои, более жесткие, ограничения на время жизни билета.
renew-till. время, после которого даже обновляемый билет становится негодным.
caddr. список сетевых адресов, откуда билет может быть использован. Если список пуст, билет можно использовать откуда угодно. Данный список затрудняет использование злоумышленником украденного билета.
authorization-data. авторизационная информация, передаваемая владельцем билета серверу приложений. Предполагается, что это поле содержит имена обслуживаемых объектов и права доступа к ним. Поле authorization-data позволяет выдать доверенность на совершение определенных действий. Например, клиент, желающий напечатать файл, может передать серверу печати доверенность на чтение файла. Содержательная трактовка поля авторизации находится вне компетенции Kerberos; последний лишь переносит туда информацию, содержащуюся в запросе клиента на билет к серверу приложений.
Аутентификатор — это запись, посылаемая серверу вместе с билетом, удостоверяющая знание клиентом ключа шифрования, содержащегося в билете, помогающая серверу обнаружить воспроизведение (дублирование) информации и позволяющая выбрать "настоящий сеансовый ключ" для обслуживания конкретного сеанса связи между клиентом и сервером. Аутентификатор шифруется сеансовым ключом, копия которого находится в билете ( Рис. 8 ).
Листинг 3
Authenticator ::= [APPLICATION 2] SEQUENCE { authenticator-vno [0] INTEGER, crealm [1] Realm, cname [2] PrincipalName, cksum [3] Checksum OPTIONAL, cusec [4] INTEGER, ctime [5] KerberosTime, subkey [6] EncryptionKey OPTIONAL, seq-number [7] INTEGER OPTIONAL, authorization-data [8] AuthorizationData OPTIONAL } |
Комментарии к листингу:
authenticator-vno. номер версии формата аутентификатора (5).
crealm и cname. то же, что и для билета.
cksum. контрольная сумма прикладных данных, передаваемых серверу.
cusec. микросекундная часть временного штампа клиента.
ctime. основная часть временного штампа клиента.
subkey. выбранный клиентом ключ для защиты конкретного сеанса связи. Если это поле не задано, будет использоваться сеансовый ключ.
seq-number. начальный номер последовательности сообщений. Механизм номеров используется для контроля целостности последовательности и, в частности, для защиты от дублирования. Начальный номер рекомендуется выбирать случайным образом, а последующие номера не использовать дважды даже в разных сеансах.
authorization-data. то же, что и для билета (позволяет уточнить информацию, переданную в билете).
![]() |
![]() |
![]() |
Флаги, используемые в билетах | Содержание | Типы пересылаемых сообщений |
Copyright ╘ 1993-2000, Jet Infosystems |