
- •Управление ключами Функции и классификация
- •Генерация ключей
- •Накопление ключей
- •Распределение ключей
- •Цифровая подпись
- •Системы управления симметричными ключами Протоколы распределения ключей типа Диффи-Хеллмана
- •Обмен зашифрованными ключами
- •Базовый протокол eke
- •Системы управления асимметричными ключами Инфраструктура открытых ключей – рki
- •Аутентификация посредством цифровых сертификатов
- •Сертификаты
- •Протоколы проверки подлинности
- •Требования к программным продуктам, реализующим pki
- •Депонирование ключей
- •Законный доступ к ключам
- •Введение
- •Строгая аутентификация
- •Аутентификация с помощью пароля
- •Аутентификация «запрос-ответ»
- •Протокол Kerberos
- •Аутентификация с помощью аппаратных средств
- •Аутентификация на основе биометрических особенностей
- •Непрямая аутентификация
Аутентификация «запрос-ответ»
Для предотвращения использования злоумышленником хэш-паролей используется механизм, основанный на принципе «запрос-ответ» (Challenge-Response). Принцип данного метода заключается в послании пользователю случайной последовательности данных, к которой применяется хэш-алгоритм совместно с паролем пользователя. Результирующие данные отправляются на сервер, который проделывает ту же последовательность преобразований, после чего сверяет полученный результат с поступившими данными клиента (рис.7).
Рис.7 Схема реализации парольной аутентификации по методу Challenge-Response
Метод парольной аутентификации, основанный на Challenge-Response, используется в CHAP - аутентификации PPP-соединений. Основной недостаток данного метода состоит в том, что идентификационные данные пользователей должны храниться на сервере аутентификации в открытом виде, так как пересылаемая пользователю случайная последовательность при каждой аутентификации различна, в связи с чем, нельзя заранее произвести какие-либо преобразования над паролем.
Использование паролей должно регламентироваться определенным набором правил, определяющих такие параметры как:
минимальная длина пароля;
сложность – типы символов, присутствующих в пароле (буквы, цифры, спецсимволы);
время обновления – интервал времени действительности паролей;
время повторного использования – интервал времени, между использованием одинаковых паролей
Правила использования паролей должны находить отражение в политики безопасности предприятия.
Протокол Kerberos
Другим методом аутентификации, основанным на использовании секретного идентификатора, является протокол Kerberos. Протокол Kerberos был создан более десяти лет назад в Массачусетском технологическом институте в рамках проекта Athena. Однако общедоступным этот протокол стал, начиная с версии 4, а версия 5 была принята в качестве стандарта IETF. Требования реализации протокола изложены в документе RFC 1510, кроме того, в спецификации RFC 1964 описывается механизм и формат передачи мандатов (билетов) безопасности в сообщениях Kerberos.
Протокол Kerberos предлагает механизм взаимной аутентификации клиента и сервера перед установлением связи между ними, причём в протоколе учтён тот факт, что начальный обмен информацией между клиентом и сервером происходит в незащищённой среде, а передаваемые пакеты могут быть перехвачены и модифицированы. Таким образом, протокол идеально подходит для применения в Internet.
Основная концепция протокола Kerberos заключается в возможности взаимного удостоверения взаимодействующих сторон при помощи разделяемого между ними общего секрета.
Для обмена информацией, содержащей общий секрет, Kerberos использует методы симметричной криптографии, в которой для шифрования и дешифрования данных используется один и тот же секретный ключ, знание которого подтверждает личность собеседника.
Протокол аутентификации с секретным ключом вступает в действие, когда клиент хочет аутентифицироваться на сервере. Для того чтобы идентифицировать себя, пользователь предъявляет аутентификатор в виде набора данных, зашифрованного секретным ключом. Получив аутенитификатор, сервер расшифровывает его и проверяет полученную информацию, чтобы убедиться в успешности дешифрования. Для создания невозможности перехвата сетевого трафика, и его последующего использования злоумышленником, содержание набора данных постоянно меняется. Если проверка прошла успешно, то это значит, что пользователю известен секретный код, а так как этот код знает только он и сервер, следовательно, пользователь тот, за кого себя выдаёт.
В некоторых случаях может потребоваться взаимная аутентификация, как пользователя, так и сервера. В этом случае сервер извлекает из исходного аутентификатора часть информации, затем шифрует её, превращая в новый аутентификатор, и передаёт обратно пользователю. Пользователь расшифровывает информацию и сравнивает её с исходной, если они совпадают — сервер знает секретный ключ (рис. 8).
Пользователь оправляет сообщения на Kerberos-сервер включающее имя и аутентификатор, зашифрованный, при помощи разделяемого ключа, и содержащий структуру данных с двумя полями: имя и текущее время пользователя.
Сервер дешифрует полученный аутентификатор, если операция успешна, то пользователь является именно тем за кого себя выдает.
После дешифрования сервер сравнивает время из аутентификатора с локальным временем, если их разница приемлема, то сервер точно решает, что сообщение послано легальным пользователем.
Для обеспечения аутентификации сервера, он создает новый аутентификатор содержащий только зашифрованное время, полученное от пользователя и отсылает его обратно.
Пользователь дешифрует полученный аутентификатор и сравнивает время. Если процесс дешифрации успешен и времена совпадают, значит, сервер именно тот с которым хотел взаимодействовать пользователь.
Рис. 8. Схема реализации взаимной аутентификации в протоколе Kerberos
Представленные механизмы аутентификации обеспечивают высокую надежность, однако необходимо решить проблему первоначального обмена общими секретами. Если каждому клиенту для поддержания связи с каждой службой требуется индивидуальный ключ, и такой же ключ нужен каждой службе для каждого клиента, то проблема обмена ключами быстро становится достаточно острой.
Для решения проблемы управления ключами Kerberos использует дополнительное звено-посредник – центр распределения ключей (Key Distribution Center, KDC). KDC представляет собой службу, работающую на физически защищённом сервере. Она ведёт базу данных с информацией об учётных записях всех главных абонентов безопасности своей области. Вместе с информацией о каждом абоненте безопасности в базе данных KDC сохраняется криптографический ключ, известный только этому абоненту и службе KDC. Этот ключ, который называют долговременным, используется для связи пользователя системы безопасности с центром распределения ключей. В большинстве практических реализаций протокола Kerberos долговременные ключи генерируются на основе пароля пользователя, указываемого при входе в систему.
Когда клиенту нужно обратиться к серверу, он прежде всего направляет запрос в центр KDC, который в ответ направляет каждому участнику предстоящего сеанса копии уникального сеансового ключа, действующие в течение короткого времени. Назначение этих ключей – проведение аутентификации клиента и сервера. Копия сеансового ключа, пересылаемая на сервер, шифруется с помощью долговременного ключа этого сервера, а направляемая клиенту – долговременного ключа данного клиента (рис. 9).
Рис. 9. Схема работы KDC
Протокол Kerberos обеспечивает высокий уровень безопасности, обладает повышенной гибкостью и эффективностью, что способствует его широкому распространению в корпоративных сетях, особенно после принятия корпорацией Microsoft данного протокола в качестве основного протокола аутентификации в операционной системе Windows.
Необходимо отметить, что серверное программное обеспечение должно быть адаптировано (его обычно называют керберезированным) для работы с протоколом Kerberos.
PGP
Pretty Good(tm) Privacy (PGP) выпущено фирмой Phil's Pretty Good Software и является криптографической системой с высокой степенью секретности для операционных систем MS-DOS, Unix, VAX/VMS и других. PGP позволяет пользователям обмениваться файлами или сообщениями с использованием функций секретности, установлением подлинности, и высокой степенью удобства. Секретность означает, что прочесть сообщение сможет только тот, кому оно адресовано. Установление подлинности позволяет установить, что сообщение, полученное от какого-либо человека, было послано именно им. Нет необходимости использовать специальные секретные каналы связи, что делает PGP простым в использовании программным обеспечением. Это связано с тем, что PGP базируется на мощной новой технологии, которая называется шифрованием с "общим ключом".
В криптографической системе с общим ключом каждый имеет два связанных взаимно однозначно ключа: публикуемый общий ключ и секретный ключ. Каждый из них дешифрует код, сделанный с помощью другого. Знание общего ключа не позволяет вам вычислить cоответствующий секретный ключ. Общий ключ может публиковаться и широко распространяться через коммуникационные сети. Кто угодно может использовать общий ключ получателя, чтобы зашифровать сообщение ему, а получатель использует его собственный соответствующий секретный ключ для расшифровки сообщения. Никто, кроме получателя, не может расшифровать его, потому что никто больше не имеет доступа к секретному ключу. Даже тот, кто шифровал сообщение, не будет иметь возможности расшифровать его.
Кроме того, обеспечивается также установление подлинности сообщения. Собственный секретный ключ отправителя может быть использован для шифровки сообщения, таким образом "подписывая" его. Так создается электронная подпись сообщения, которую получатель (или кто-либо еще) может проверять, используя общий ключ отправителя для расшифровки. Это доказывает, что отправителем был действительно создатель сообщения и что сообщение впоследствии не изменялось кем-либо, так как отправитель — единственный, кто обладает секретным ключом, с помощью которого была создана подпись. Подделка подписанного сообщения невозможна, и отправитель не может впоследствии изменить свою подпись.
Эти два процесса могут быть объединены для обеспечения и секретности, и установления подлинности: сначала подписывается сообщение вашим собственным секретным ключом, а потом шифруется уже подписанное сообщение общим ключом получателя. Получатель делает наоборот: расшифровывает сообщение с помощью собственного секретного ключа, а затем проверяет подпись с помощью вашего общего ключа. Эти шаги выполняются автоматически с помощью программного обеспечения получателя.
В связи с тем, что алгоритм шифрования с общим ключом значительно медленнее, чем стандартное шифрование с одним ключом, шифрование сообщения лучше выполнять с использованием высококачественного быстрого стандартного алгоритма шифрования с одним ключом. Первоначальное незашифрованное сообщение называется "открытым текстом" (или просто текст). В процессе, невидимом для пользователя, временный произвольный ключ, созданный только для этого одного "сеанса", используется для традиционного шифрования файла открытого текста. Тогда общий ключ получателя используется только для шифровки этого временного произвольного стандартного ключа. Этот зашифрованный ключ "сеанса" посылается наряду с зашифрованным текстом (называемым "ciphertext" — "зашифрованный" ) получателю. Получатель использует свой собственный секретный ключ, чтобы восстановить этот временный ключ сеанса, и затем применяет его для выполнения быстрого стандартного алгоритма декодирования с одним ключом, чтобы декодировать все зашифрованное сообщение.
Общие ключи хранятся в виде "сертификатов ключей", которые включают в себя идентификатор пользователя владельца ключа (обычно это имя пользователя), временную метку, которая указывает время генерации пары ключей, и собственно ключи. Сертификаты общих ключей содержат общие ключи, а сертификаты секретных ключей — секретные. Каждый секретный ключ также шифруется с отдельным паролем. Файл ключей, или каталог ключей ("кольцо с ключами" — "keyring") содержит один или несколько таких сертификатов. В каталогах общих ключей хранятся сертификаты общих ключей, а в каталогах секретных — сертификаты секретных ключей.
На ключи также внутренне ссылаются "идентификаторы ключей", которые являются "сокращением" общего ключа (самые младшие 64 бита большого общего ключа). Когда этот идентификатор ключа отображается, то показываются лишь младшие 24 бита для краткости. Если несколько ключей могут одновременно использовать один и тот же идентификатор пользователя, то никакие два ключа не могут использовать один и тот же идентификатор ключа.
PGP использует "дайджесты сообщений" для формирования подписи. Дайджест сообщения — это криптографически мощная 128-битная односторонняя хэш-функция от сообщения. Она несколько напоминает контрольную сумму, или CRC-код, она однозначно представляет сообщение и может использоваться для обнаружения изменений в сообщении. В отличие от CRC-кода (контроля циклическим избыточным кодом), дайджест не позволяет создать два сообщения с одинаковым дайджестом. Дайджест сообщения шифруется секретным ключом для создания электронной подписи сообщения.
Документы подписываются посредством добавления перед ними цифровой подписи, которая содержит идентификатор ключа, использованного для подписи, подписанный секретным ключом дайджест сообщения и метку даты и времени, когда подпись была сгенерирована. Идентификатор ключа используется получателем сообщения, чтобы найти общий ключ для проверки подписи. Программное обеспечение получателя автоматически ищет общий ключ отправителя и идентификатор пользователя в каталоге общих ключей получателя.
Шифрованным файлам предшествует идентификатор общего ключа, который был использован для их шифрования. Получатель использует этот идентификатор для поиска секретного ключа, необходимого для расшифровки сообщения. Программное обеспечение получателя автоматически ищет требуемый для расшифровки секретный ключ в каталоге секретных ключей получателя.
Эти два типа каталогов ключей и есть главный метод сохранения и управления общими и секретными ключами. Вместо того, чтобы хранить индивидуальные ключи в отдельных файлах ключей, они собираются в каталогах ключей для облегчения автоматического поиска ключей либо по идентификатору ключа, либо по идентификатору пользователя. Каждый пользователь хранит свою собственную пару каталогов ключей. Индивидуальный общий ключ временно хранится в отдельном файле, достаточно большом для посылки его вашим друзьям, которые добавят его в свои каталоги ключей.