Опубликован: 03.08.2009 | Уровень: специалист | Доступ: платный | ВУЗ: Санкт-Петербургский государственный политехнический университет
Лекция 5:

Идентификация и аутентификация. Протокол Kerberos

Аннотация: В данной лекции рассматриваются технические меры повышения защищенности систем. В теоретической части изучаются методы, лежащие в основе соответствующих средств и механизмов в аспектах идентификации и аутентификации. Приводятся конкретные настройки операторов.
Ключевые слова: Windows, идентификация и аутентификация, идентификация, пользователь, пароль, ПО, имя пользователя, аутентификация, системы аутентификации, идентификатор, информация, доступ, ISO 17799, вероятность, администратор безопасности, имитация атаки, домен, тупик, запись, управление паролями, baseline, security, analyzer, распределение ключей, mac, RFC, NTLM, ключ, центр распределения ключей, симметричный ключ, сервер, сервер печати, distribution, center, KDC, компонент, authentication server, ticket, TGS, service, server, период действия, отправитель сообщения, сеть, регистрация, сеанс, доверительные отношения, параметр, отложенные действия, сертификаты пользователей, криптографический ключ, атака, MAN, абонент, третья доверенная сторона, инфраструктуры открытых ключей, public, infrastructure, PKI, удостоверяющий центр, центр сертификации, Certification Authority, CA, самоподписанные сертификаты, очередь, значение, ID, поле расширения, relative, LDAP, hardware compatible, хранилище сертификатов, интервал, статус сертификата, поле, атрибут, проверка ЭЦП, ЭЦП, политика использования, альтернативное имя, сертификационный путь, web-сервера, секретный ключ, certificate, list, CRL, электронная цифровая подпись, root, S/MIME, PGP, SSL, windows 2000, серверная ОС, программное обеспечение, шифрование данных, EFS, system, NTFS, шифрование, secure, multipurpose, internet mail, MIME, RSA, data security, internet engineering task force, IETF, Интернет, криптографический сервис, целостность, список, RC2, DES, MD5, алгоритм, дайджест, алгоритм RSA, бит, алгоритм Диффи-Хеллмана, открытый текст, this, Outlook, IP, ver, аутентификация данных, туннель, OSI, браузер, СУБД, архитектура, контекст, ассоциация, association, SA, имитовставка, SPI, хост, протокол аутентифицирующего заголовка, ESP, encapsulating security payload, туннельный режим, транспортный режим, AH, ULP, исходный пакет, SHA-1, алгоритмы хэширования, integrity checking, authentication data, IANA, assigned numbers, CBC, casting, RC5, IDEA, blowfish, RC4, skip, ISAKMP, internet security, IKE, network address translation, представление, NAT, адрес, IPC, policy, controlled, UDP, порт, traversal, сайт, префикс, субъект сертификата, операционная система, консоль, MMC, меню, пункт, class, минимум, письмо, генерация ключей, Internet Explorer, криптопровайдер, запрос, personal, issue, member, почтовый клиент, Windows Server, Active, directory, Дополнение, enterprise, модуль, Размещение, templates, REVOKE, файловая система, копирование, конфиденциальность, файл, механизмы, administrator, шаблон, USER, Basic, сертификат открытого ключа, папка, агент, компьютер, политика сертификата, управление доступом, SID, дескриптор, control, ACL, права, чтение файла, FAT, FAT32, группа, Windows Vista, родительский объект, наследование, объект, выход из системы, владелец файла, администратор, член группы, резервное копирование, ущерб, утилиты командной строки, Backup, операторы, операции, архивация, утилита, логический, диск, ссылка, опция, архив, разделы, volume, Copy, VSS, подкаталог, раздел диска, путь, custom, метка, форматирование, быстродействие, производительность

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

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

Рассматриваемые вопросы можно разделить на две группы:

  • вопросы, связанные с идентификацией и аутентификацией пользователей;
  • защита передаваемых сообщений.

Идентификация и аутентификация

Идентификация - присвоение пользователям идентификаторов (уникальных имен или меток) под которыми система "знает" пользователя. Кроме идентификации пользователей, может проводиться идентификация групп пользователей, ресурсов ИС и т.д. Идентификация нужна и для других системных задач, например, для ведения журналов событий. В большинстве случаев идентификация сопровождается аутентификацией. Аутентификация - установление подлинности - проверка принадлежности пользователю предъявленного им идентификатора. Например, в начале сеанса работы в ИС пользователь вводит имя и пароль. На основании этих данных система проводит идентификацию (по имени пользователя) и аутентификацию (сопоставляя имя пользователя и введенный пароль).

Система идентификации и аутентификации является одним из ключевых элементов инфраструктуры защиты от несанкционированного доступа (НСД) любой информационной системы. В соответствии с рассмотренной ранее моделью многоуровневой защиты, аутентификация пользователя компьютера относится к уровню защиты узлов.

Обычно выделяют 3 группы методов аутентификации.

  1. Аутентификация по наличию у пользователя уникального объекта заданного типа. Иногда этот класс методов аутентификации называют по-английски "I have" ("у меня есть"). В качестве примера можно привести аутентификацию с помощью смарт-карт или электронных USB-ключей.
  2. Аутентификация, основанная на том, что пользователю известна некоторая конфиденциальная информация - "I know" ("я знаю"). Например, аутентификация по паролю. Более подробно парольные системы рассматриваются далее в этом разделе.
  3. Аутентификация пользователя по его собственным уникальным характеристикам - "I am" ("я есть"). Эти методы также называются биометрическими.

Нередко используются комбинированные схемы аутентификации, объединяющие методы разных классов. Например, двухфакторная аутентификация - пользователь предъявляет системе смарт-карту и вводит пин-код для ее активации.

Наиболее распространенными на данный момент являются парольные системы аутентификации. У пользователя есть идентификатор и пароль, т.е. секретная информация, известная только пользователю (и возможно - системе), которая используется для прохождения аутентификации.

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

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

Как отмечалось при рассмотрении стандарта ISO 17799, рекомендуется, чтобы пользователи системы подписывали документ о сохранении конфиденциальности пароля. Но нарушитель также может попытаться подобрать пароль, угадать его, перехватить и т.д. Рассмотрим некоторые рекомендации по администрированию парольной системы, позволяющие снизить вероятность реализации подобных угроз.

  1. Задание минимальной длины используемых в системе паролей. Это усложняет атаку путем подбора паролей. Как правило, рекомендуют устанавливать минимальную длину в 6-8 символов.
  2. Установка требования использовать в пароле разные группы символов - большие и маленькие буквы, цифры, специальные символы. Это также усложняет подбор.
  3. Периодическая проверка администраторами безопасности качества используемых паролей путем имитации атак, таких как подбор паролей "по словарю" (т.е. проверка на использование в качестве пароля слов естественного языка и простых комбинаций символов, таких как "1234").
  4. Установка максимального и минимального сроков жизни пароля, использование механизма принудительной смены старых паролей.
  5. Ограничение числа неудачных попыток ввода пароля (блокирование учетной записи после заданного числа неудачных попыток войти в систему).
  6. Ведение журнала истории паролей, чтобы пользователи, после принудительной смены пароля, не могли вновь выбрать себе старый, возможно скомпрометированный пароль.

Современные операционные системы семейства Windows позволяют делать установки, автоматически контролирующие выполнение требований 1,2,4-6. При использовании домена Windows, эти требования можно распространить на все компьютеры, входящие в домен и таким образом повысить защищенность всей сети.

Но при внедрении новых механизмов защиты могут появиться и нежелательные последствия. Например, требования "сложности" паролей могут поставить в тупик недостаточно подготовленного пользователя. В данном случае потребуется объяснить, что с точки зрения операционной системы Windows надежный пароль содержит 3 из 4 групп символов (большие буквы, малые буквы, цифры, служебные знаки). Аналогичным образом, надо подготовить пользователей и к внедрению блокировки учетных записей после нескольких неудачных попыток ввода пароля. Требуется объяснить пользователям, что происходит, а сами правила блокировки должны быть хорошо продуманы. Например, если высока вероятность того, что пользователь заблокирует свою запись в период отсутствия администратора, лучше ставить блокировку не насовсем, а на какой-то срок (30 минут, час и т.д.).

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

При использовании ОС семейства Windows, выявить учетные записи со слабыми или отсутствующими паролями можно, например, с помощью утилиты Microsoft Baseline Security Analyzer. Она же позволяет выявить и другие ошибки администрирования. Вопросам использования этой утилиты, а также настройке политики паролей посвящена лабораторная работа № 3.

Протокол Kerberos

Протокол Kerberos был разработан в Массачусетском технологическом институте в середине 1980-х годов и сейчас является фактическим стандартом системы централизованной аутентификации и распределения ключей симметричного шифрования. Поддерживается операционными системами семейства Unix, Windows (начиная с Windows'2000), есть реализации для Mac OS.

В сетях Windows (начиная с Windows'2000 Serv.) аутентификация по протоколу Kerberos v.5 (RFC 1510) реализована на уровне доменов. Kerberos является основным протоколом аутентификации в домене, но в целях обеспечения совместимости c с предыдущими версиями, также поддерживается протокол NTLM.

Перед тем, как рассмотреть порядок работы Kerberos, разберем зачем он изначально разрабатывался. Централизованное распределение ключей симметричного шифрования подразумевает, что у каждого абонента сети есть только один основной ключ, который используется для взаимодействия с центром распределения ключей (сервером ключей). Чтобы получить ключ шифрования для защиты обмена данными с другим абонентом, пользователь обращается к серверу ключей, который назначает этому пользователю и соответствующему абоненту сеансовый симметричный ключ.

Протокол Kerberos обеспечивает распределение ключей симметричного шифрования и проверку подлинности пользователей, работающих в незащищенной сети. Реализация Kerberos - это программная система, построенная по архитектуре "клиент-сервер". Клиентская часть устанавливается на все компьютеры защищаемой сети, кроме тех, на которые устанавливаются компоненты сервера Kerberos. В роли клиентов Kerberos могут, в частности, выступать и сетевые серверы (файловые серверы, серверы печати и т.д.).

Серверная часть Kerberos называется центром распределения ключей (англ. Key Distribution Center, сокр. KDC) и состоит из двух компонент:

  • сервер аутентификации (англ. Authentication Server, сокр. AS);
  • сервер выдачи разрешений (англ. Ticket Granting Server, сокр. TGS).

Каждому субъекту сети сервер Kerberos назначает разделяемый с ним ключ симметричного шифрования и поддерживает базу данных субъектов и их секретных ключей. Схема функционирования протокола Kerberos представлена на рис. 5.1.

Протокол Kerberos

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

Пусть клиент C собирается начать взаимодействие с сервером SS (англ. Service Server - сервер, предоставляющий сетевые сервисы). В несколько упрощенном виде, протокол предполагает следующие шаги [19, 20]:

  1. C->AS: {c}.

    Клиент C посылает серверу аутентификации AS свой идентификатор c (идентификатор передается открытым текстом).

  2. AS->C: {{TGT}KAS_TGS, KC_TGS}KC,

    где:

    • KC - основной ключ C ;
    • KC_TGS - ключ, выдаваемый C для доступа к серверу выдачи разрешений TGS ;
    • {TGT} - Ticket Granting Ticket - билет на доступ к серверу выдачи разрешений

    {TGT}={c,tgs,t1,p1, KC_TGS}, где tgs - идентификатор сервера выдачи разрешений, t1 - отметка времени, p1 - период действия билета.

    Запись \{ \cdot \} K_{X} здесь и далее означает, что содержимое фигурных скобок зашифровано на ключе KX.

    На этом шаге сервер аутентификации AS, проверив, что клиент C имеется в его базе, возвращает ему билет для доступа к серверу выдачи разрешений и ключ для взаимодействия с сервером выдачи разрешений. Вся посылка зашифрована на ключе клиента C. Таким образом, даже если на первом шаге взаимодействия идентификатор с послал не клиент С, а нарушитель X, то полученную от AS посылку X расшифровать не сможет.

    Получить доступ к содержимому билета TGT не может не только нарушитель, но и клиент C, т.к. билет зашифрован на ключе, который распределили между собой сервер аутентификации и сервер выдачи разрешений.

  3. C->TGS: {TGT}KAS_TGS, {Aut1} KC_TGS, {ID}

    где {Aut1} - аутентификационный блок - Aut1 = {с,t2}, t2 - метка времени; ID - идентификатор запрашиваемого сервиса (в частности, это может быть идентификатор сервера SS ).

    Клиент C на этот раз обращается к серверу выдачи разрешений ТGS. Он пересылает полученный от AS билет, зашифрованный на ключе KAS_TGS, и аутентификационный блок, содержащий идентификатор c и метку времени, показывающую, когда была сформирована посылка.Сервер выдачи разрешений расшифровывает билет TGT и получает из него информацию о том, кому был выдан билет, когда и на какой срок, ключ шифрования, сгенерированный сервером AS для взаимодействия между клиентом C и сервером TGS. С помощью этого ключа расшифровывается аутентификационный блок. Если метка в блоке совпадает с меткой в билете, это доказывает, что посылку сгенерировал на самом деле С (ведь только он знал ключ KC_TGS и мог правильно зашифровать свой идентификатор). Далее делается проверка времени действия билета и времени отправления посылки 3 ). Если проверка проходит и действующая в системе политика позволяет клиенту С обращаться к клиенту SS, тогда выполняется шаг 4 ).

  4. TGS->C: {{TGS}KTGS_SS,KC_SS}KC_TGS,

    где KC_SS - ключ для взаимодействия C и SS, {TGS} - Ticket Granting Service - билет для доступа к SS (обратите внимание, что такой же аббревиатурой в описании протокола обозначается и сервер выдачи разрешений). {TGS} ={с,ss,t3,p2, KC_SS }.

    Сейчас сервер выдачи разрешений TGS посылает клиенту C ключ шифрования и билет, необходимые для доступа к серверу SS. Структура билета такая же, как на шаге 2): идентификатор того, кому выдали билет; идентификатор того, для кого выдали билет; отметка времени; период действия; ключ шифрования.

  5. C->SS: {TGS}KTGS_SS, {Aut2} KC_SS

    где Aut2={c,t4}.

    Клиент C посылает билет, полученный от сервера выдачи разрешений, и свой аутентификационный блок серверу SS, с которым хочет установить сеанс защищенного взаимодействия. Предполагается, что SS уже зарегистрировался в системе и распределил с сервером TGS ключ шифрования KTGS_SS. Имея этот ключ, он может расшифровать билет, получить ключ шифрования KC_SS и проверить подлинность отправителя сообщения.

  6. SS->C: {t4+1}KC_SS

    Смысл последнего шага заключается в том, что теперь уже SS должен доказать C свою подлинность. Он может сделать это, показав, что правильно расшифровал предыдущее сообщение. Вот поэтому, SS берет отметку времени из аутентификационного блока C, изменяет ее заранее определенным образом (увеличивает на 1), шифрует на ключе KC_SS и возвращает C.

Если все шаги выполнены правильно и все проверки прошли успешно, то стороны взаимодействия C и SS, во-первых, удостоверились в подлинности друг друга, а во-вторых, получили ключ шифрования для защиты сеанса связи - ключ KC_SS.

Нужно отметить, что в процессе сеанса работы клиент проходит шаги 1) и 2) только один раз. Когда нужно получить билет на доступ к другому серверу (назовем его SS1 ), клиент С обращается к серверу выдачи разрешений TGS с уже имеющимся у него билетом, т.е. протокол выполняется начиная с шага 3).

При использовании протокола Kerberos компьютерная сеть логически делится на области действия серверов Kerberos. Kerberos-область - это участок сети, пользователи и серверы которого зарегистрированы в базе данных одного сервера Kerberos (или в одной базе, разделяемой несколькими серверами). Одна область может охватывать сегмент локальной сети, всю локальную сеть или объединять несколько связанных локальных сетей. Схема взаимодействия между Kerberos-областями представлена на рис. 5.2.

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

После установки взаимных соглашений, клиент из области 1 (пусть это будет K11 ) может установить сеанс взаимодействия с клиентом из области 2 (например, К21 ). Для этого K11 должен получить у своего сервера выдачи разрешений билет на доступ к Kerberos-серверу, с клиентом которого он хочет установить взаимодействие (т.е. серверу Kerberos KDC2). Полученный билет содержит отметку о том, в какой области зарегистрирован владелец билета. Билет шифруется на ключе, разделенном между серверами KDC1 и KDC2. При успешной расшифровке билета, удаленный Kerberos-сервер может быть уверен, что билет выдан клиенту Kerberos-области, с которой установлены доверительные отношения. Далее протокол работает как обычно.

Взаимодействие между Kerberos-областями

Рис. 5.2. Взаимодействие между Kerberos-областями

Кроме рассмотренных, Kerberos предоставляет еще ряд дополнительных возможностей. Например, указанный в структуре билета параметр p (период времени) задается парой значений "время начала действия" - "время окончания действия", что позволяет получать билеты отложенного действия.

Имеется тип билета "с правом передачи", что позволяет, например, серверу выполнять действия от имени обратившегося к нему клиента.

Два слова об аутентификации. Если Kerberos - протокол распределения ключей, корректно ли использовать его для аутентификации?! Но как отмечалось выше, если все стадии протокола прошли успешно, взаимодействующие стороны не только распределили ключ, но и убедились в подлинности друг друга, иными словами - аутентифицировали друг друга.

Что касается реализации протокола Kerberos в Windows, то надо отметить следующее.

  1. Ключ пользователя генерируется на базе его пароля. Таким образом, при использовании слабых паролей эффект от надежной защиты процесса аутентификации будет сведен к нулю.
  2. В роли Kerberos-серверов выступают контроллеры домена, на каждом из которых должна работать служба Kerberos Key Distribution Center (KDC). Роль хранилища информации о пользователях и паролях берет на себя служба каталога Active Directory. Ключ, который разделяют между собой сервер аутентификации и сервер выдачи разрешений формируется на основе пароля служебной учетной записи krbtgt - эта запись автоматически создается при организации домена и всегда заблокирована.
  3. Microsoft в своих ОС использует расширение Kerberos для применения криптографии с открытым ключом. Это позволяет осуществлять регистрацию в домене и с помощью смарт-карт, хранящих ключевую информацию и цифровой сертификат пользователя.
  4. Использование Kerberos требует синхронизации внутренних часов компьютеров, входящих в домен Windows.

Для увеличения уровня защищенности процесса аутентификации пользователей, рекомендуется отключить использование менее надежного протокола NTLM и оставить только Kerberos (если использования NTLM не требуют устаревшие клиентские ОС).

Кроме того, рекомендуется запретить администраторским учетным записям получать билеты "с правом передачи" (это убережет от некоторых угроз, связанных автоматическим запуском приложений от имени таких записей).

Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Татьяна Гусельникова
Татьяна Гусельникова