|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.5 Применение цифровых сертификатов в IIS4.5.1 Что такое цифровые сертификаты. Система PKIСертификаты, центры сертификации и технология SSL, инфраструктура открытого ключа (PKI, Public Key Infrastructure), асимметричные ключи, цифровая подпись (digital signature), стандарт X.509 (v1 и v3) Даже если на Web-сайт смогут заходить только аутентифицировавшиеся пользователи в соответствии с предоставленными им разрешениями, все равно по умолчанию все данные протокола HTTP будут передаваться по сети в полностью открытом виде. Однако часто при обращении к Web-сайтам допускать возможность перехвата данных нельзя - например, когда через Web-интерфейс работают пользователи с важным внутрикорпоративным приложением, или в Web-магазин передаются финансовые данные (к примеру, номера кредитных карточек), при работе Интернет-банков и Интернет-брокеров и т.п. Для шифрования передаваемых данных используется технология Secure Socket Layer (SSL), которая поддерживается большинством распространенных броузеров и Web-серверов. В этой технологии для шифрования данных используются цифровые сертификаты. Кроме того, сертификаты также можно использовать и для некоторых других целей, например, их можно использовать для аутентификации клиентов при обращении к Web-серверу. Но вначале несколько слов про саму систему сертификатов. Чтобы данные при передаче по сети были защищены, их необходимо зашифровать. Фактически в настоящее время существует только два широкоиспользуемых принципиальных способа шифрования: · Шифрование с секретным ключом (secret key), другое название - шифрование с симметричным ключом (symmetric key). Это - классический способ шифрования (в качестве самых простых примеров можно привести, например, шифрование zip-архивов или документов Office). При использовании этого метода один и тот же ключ (пароль) используется и для шифрования данных, и для расшифровки. Главное преимущество этого метода заключается в том, что существует множество очень эффективных с точки зрения производительности алгоритмов шифрования данных при использовании этого метода. Главный принципиальный недостаток заключается в том, что контрагент после получения зашифрованных данных мог их расшифровать, ему необходимо передать ключ, который при передаче по сети может быть перехвачен так же, как и данные. · Шифрование с парой общий/личный ключ (public/private key), другое название - шифрование с ассиметричным ключом (assymetric key). При использовании этого метода используются два ключа - общий и личный. То, что зашифровано при помощи общего ключа, можно расшифровать только при помощи личного ключа и наоборот. При этом, если данные зашифрованы при помощи общего ключа, этот общий ключ использовать для расшифровки данных невозможно - нужна вторая половина (личный ключ). Процесс передачи данных в классическом виде при использовании технологии public/private key выглядит так: 1. пользователю 1 необходимо передать пользователю 2 данные в зашифрованном виде; 2. пользователь 2 (внимание! Именно он!) генерирует пару общий/личный ключ и передает общий ключ по незащищенным каналам связи (например, по сети) пользователю 1; 3. пользователь 1 шифрует данные при помощи полученного общего ключа и передает их по сети пользователю 2; 4. пользователь 2 расшифровывает их второй половинкой ключа - личным ключом, который оставался у него на компьютере и никуда не передавался. Таким образом, даже если и зашифрованные данные, и общий ключ будут перехвачены, данные расшифровать не удастся. Преимущества использования этого метода очевидны: нет необходимости производить предварительный обмен секретным ключом. Однако у него есть и очень большой недостаток: используемые алгоритмы очень ресурсоемки и применять их для передачи значительных объемов данных практически невозможно. Фактически в настоящее время в большинстве случаев используется комбинация этих двух методов: в пункте 3 предыдущей схемы пользователь 1 генерирует надежный (достаточно длинный) секретный ключ (он действует только на время этого соединения - сеанса и поэтому называется сеансовым ключом) и передает его пользователю 2. Затем он шифрует данные уже этим секретным ключом (а не общим!) и передает их пользователю 2, который расшифровывает их ранее полученным сеансовым ключом. Таким образом удается совместить преимущества обоих методов - производительность шифрования с симметричным секретным ключом и удобство работы с парой ассиметричных ключей. Еще одна проблема, которая неизбежно возникает при использовании метода общий/личный ключ: в п.2 нашей схемы вместо пользователя 2 может появиться хакер, который представится этим пользователем и вместо него передаст пользователю 1 общий ключ (а потом получит и расшифрует зашифрованные этим ключом данные). Чтобы предотвратить такой вариант, пользователь 1 при получении общего ключа обычно обращается в специальное хранилище общих ключей - Certification Authority, CA, которому доверяют оба участника, и сравнивает полученный общий ключ с образцом, хранящимся в базе данных CA. Если ключи совпадают, то пользователь 2 - тот, за кого он себя выдает. Роль Certificate Authority в домене Windows 2000/2003 выполняет контроллер домена, в Интернете - специально уполномоченные серверы (список серверов, которым по умолчанию доверяет Windows, можно просмотреть в Internet Explorer - меню Tools -> Options -> вкладка Contents -> кнопка Certificates -> вкладка Trusted Root Certification Authorities). Еще несколько терминов, про которые необходимо рассказать: просто использовать общий ключ не очень удобно. Обычно общий ключ передается упакованным в специальный контейнер, в котором, помимо общего ключа, находится также информация о том, кому этот ключ выдан, кем, для каких целей, какой алгоритм генерации использовался, до какого срока он может применяться и т.п. Вся эта информация математически связана с ключом и изменена быть не может. Такой контейнер называется сертификатом; если зашифровать данные личным ключом и снабдить их открытым ключом, то кто угодно сможет прочитать эти данные, но изменить их и зашифровать так, чтобы к ним подошел данный открытый ключ, никто не сможет. Это - самая простая схема цифровой подписи - digital signature. (На практике обычно используется хэш, математически связывающий ключ с данными); система клиентов/серверов/хранилищ общих ключей обычно называется инфраструктурой открытого ключа - Public Key Infrastructure, PKI. Она применяется очень широко - и в Web-технологиях, и при передаче электронной почты, и в локальной сети, и при подписывании драйверов и другого программного кода и т.п. Подробнее про PKI и различных реализациях этой системы в продуктах Microsoft можно узнать в курсе MOC 2821A Designing and Managing a Windows Public Key Infrastructure; существуют стандарты на сертификаты, принятые Международным Союзом Телекоммуникаций - ITU. В настоящее время действующий стандарт - X.509. Наиболее распространенные варианты сертификатов - X.509v1 и X.509v3; конечно же, не составляет технических проблем поместить сертификат во внешнее аппаратной устройство. Подавляющее большинство современных устройств доступа - это фактически сертификат, помещенный внутрь микросхемы. Примеры таких устройств - E-Tokens, смарт-карты и т.п.; на каждом органе сертификации существует специальный список отозванных (недействительных) сертификатов - Certificate Revocation List. На нем тот, кто пользуется сертификатами этого CA, может проверить действительность того или иного сертификата.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||