Владислав Спектор
PKI (Public Key Infrastructure) – это система управления сертификатами (certificate management), которая приобретает всё большую популярность. Но что такое сертификаты и зачем нам нужно ими управлять, почему недостаточно просто их иметь?
Сертификаты используются для аутентификации, они являются аналогом паспорта или кредитной карты. У них есть множество применений: для защиты HTTP трафика (SSL/TLS), для защиты электронной почты (Secure MIME, S/MIME), цифровая подпись (digital signature) и многое другое.
Вы уже знаете, что существуют и другие способы аутентификации, например, NTLM или Kerberos. Зачем же нужен еще один способ ? Оказывается, проблема в том, что для NTLM или Kerberos пользователи должны быть заранее известны, т.е. они должны быть членами домена и должна существовать третья удостоверяющая сторона – в данном случае, контроллер домена DC. В Kerberos удостоверяющей стороной является KDC, который обязан располагаться на DC.
В случае с сертификатами также существует третья удостоверяющая сторона, которая называется CA (certificate authority, центр сертификации). Но она не привязана в обязательном порядке к членству в домене (или реалму Kerberos), хотя это и не исключено. Удостоверяющей стороной обычно является международная организация (например, Verisign или Thawte), которая, в отличие от домена, пользуется доверием в мировых масштабах. Поэтому даже частный пользователь, желающий совершить покупку в интернете, может доверять интернет-магазину любой страны, имеющему сертификат, а магазин может быть уверен в том, что пользователь не откажется от покупки под предлогом того, что сделку он не совершал (Nonrepudiation).
Существует, правда, возможность организовать систему сетификации и на уровне домена в пределах организации.
Но в любом случае отдельно взятый сертификат не принесет большой пользы, т.к. должна существовать 3-х сторонняя система доверия: клиент, услуга и удостоверяющая сторона. Такая иерархическая система доверия называется PKI.
Теперь дадим формальное определение PKI.
PKI (Public Key Infrastructure) – это совокупность совместно работающих служб и компонентов, которая применяется для построения безопасного окружения, позволяющего обмениваться сообщениями электронной почты по локальной сети и Интернет, обезопасить WEB- узел и WEB-транзакции, расширить EFS, развернуть поддержку смарт-карт и т.д.. Более конкретно – это способ центрального управления, выпуска, обновления и аннулирования сертификатов, а также способ построения маршрута доверия. При аутентификации PKI использует отношения доверия и нередко дополняет систему DC и KDC. Сертификаты и PKI работают сегодня на основе стандарта X.509 v3.
Инфраструктура PKI позволяет организовать поддержку следующих служб:
Управление ключами (Key Management)
Публикация ключей
Использование ключей
PKI содержит интегрированный набор средств и служб для развертывания и администрирования приложений открытого ключа (Public Key Applications).
Основным элементом инфраструктуры PKI являются службы сертификации (CA – Certification Authorities). CA центры отвечают за выдачу и отзыв сертификатов. Microsoft CA часто интегрированы в службу Active Directory. PKI не заменяет системы DC и KDC, напротив, они работают совместно. Поддержка приложений Public Key возможна благодаря интерфейсу MS CryptoAPI.
Над службами криптографии находится набор служб управления сертификатами. Они поддерживают сертификаты X.509, обеспечивая хранение ключей и поддержку декодирования.
Сертификаты являются основой PKI.
Вот некоторые наиболее часто встречающиеся сценарии использования сертификатов и, соответственно, PKI:
- EFS - Шифрование диска и файлов, сертификаты используются для защиты симметричного крипто ключа (symmetric crypto key)
- Многофакторная аутентификация (Multifactor authentication) с помощью смарт карт - IPSec
- Digital signature (Цифровая подпись)
- Аутентификация RADIUS и 802.1x
- Wireless networks (Беспроводные сети)
- NAP (Network Access Control) и NAQ (Network Access Quarantine) соответственно для подписи кода и драйверов
- SSL/TLS для защиты HTTP трафика
Понятия PKI основываются на понятиях криптографии, поэтому поговорим о ней и об элементах, ее составляющих.
Понятия криптографии:
Encryption, Ciphering - шифрование, криптография.
Plain text – открытый, незашифрованный текст
Cipher text - зашифрованный текст
Private Key Encryption = Symmetric Key Encryption = Classic Encryption.
Public Key Encryption = Asymmetric Key Encryption – шифрование, основанное на паре ключей Public/Private (публичный/секретный, открытый/закрытый).
Hashing function - функция хэширования.
Session Key (сеансовый ключ) – симметричный ключ.
Key Certificate (Digital Certificate, Цифровой Сертификат) – контейнер для Public Key.
Digital Signature - цифровая подпись
Private Key=Symmetric Кey=Single Кey=Shared-Кey=Оne Кey (секретные/личные/закрытые/общие ключи)
А теперь попробуем расшифровать приведенные понятия шифрования.
Шифрование (Encryption) существует тысячи лет. Вначале алгоритм и был ключом. Затем алгоритм и ключ разделились - стало возможным знать алгоритм, но не уметь расшифровать сообщение, т.к. не был известен ключ. Наконец в 70-е годы 20-го века был придуман способ, который решал главную проблему последнего времени – передачу ключа шифрования по сети. Удалось найти способ, при котором ключ по сети просто никогда не передавался. Такие алгоритмы назвали асимметричными.
Примером асимметричных алгоритмов может служить Алгоритм Диффи — Хеллмана (англ. Diffie-Hellman, DH) асимметричный алгоритм, позволяющий двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены, канал связи. Этот ключ может быть использован для шифрования дальнейшего обмена с помощью алгоритма симметричного шифрования, который намного быстрее и эффективнее для обработки больших объемов данных.
Симметричные и асимметричные криптографические алгоритмы.
- Private Key Encryption (Symmetric Key Encryption, Classic Encryption) – это классическая форма криптографии. В них существует постоянная часть – криптографический алгоритм и переменная часть – криптографический ключ. Не предполагается, что алгоритм шифрования является секретным. Вся безопасность основывается на сохранении в секретности общего ключа. По определению, процесс дешифрования использует тот же ключ, что и шифрование т.е. шифрование обратимо. Отсюда и название - симметричная криптография. Симметричные алгоритмы используют симметричные ключи.Последние могут быть рандомальными (случайными) блоками данных или же создаваться из паролей путем хэширования. Иногда симметричное шифрование называют шифрованием с общим секретом (shared secret). Симметричная криптография отличается алгоритмами или ключами шифрования и дешифрования, которые в данном случае одинаковы.
- Public Key Encryption (Asymmetric Key Encryption) также использует алгоритм и ключ. Разница состоит в использовании отличающихся ключей шифрования и дешифрования. Отсюда название - асимметричная криптография. Шифрующий (публичный/открытый/public) ключ и дешифрующий (секретный/закрытый/private) ключ связаны друг с другом сложной математической зависимостью (функцией) и ни один не может быть вычислен из другого. Поэтому шифрующий (public) ключ не обязан сохраняться в секрете и даже может быть опубликован. Безопасность основывается на сохранении секретного (private) ключа в секретности. Обычно асимметричное шифрование используют для передачи симметричных ключей, при помощи которых и выполняется шифрование и дешифрование массива данных, т.к. асимметричное шифрование намного медленнее, чем симметричное.
- Hashing function (функция хэширования)
это алгоритм односторонней (one-way) трансформации, который превращает данные различной длины в данные фиксированной длины при помощи специального алгоритма. Результат хэширования обычно называют дайджестом (Digest) или просто хэшем.
- Session Key (сеансовый ключ) – симметричный ключ
Алгоритмы асимметричного шифрования в сотни или тысячи раз медленнее симметричных (от 100 до 10,000). Поэтому для массового (bulk) шифрования обычно используются симметричные ключи сеанса, которые зашифровываются только один раз при помощи асимметричного открытого ключа (Public Key) для передачи получателю-адресату. Дальнейшие коммуникации в течении сеанса проходят при помощи быстрых симметричных шифров – ключей сеанса (Session Keys).
Процесс шифрования данных происходит так:
1. Ключ сеанса генерируется заново для каждого соединения при помощи центра распространения ключей (Key Distribution Authority)
2. Ключ сеанса зашифровывается с использованием открытого ключа получателя
3. Данные сообщения зашифровываются с использованием ключа сеанса
4. Данные+ключ отправляются получателю
5. Получатель расшифровывает ключ сеанса с помощью своего секретного ключа
6. Затем получатель расшифровывает данные сообщения, используя ключ сеанса
<РИСУНОК>
- Key Certificates (Digital Certificates, Цифровые Сертификаты)
Сертификат – это дигитальный документ, выданный CA (центром сертификации). Существует политика, которая связывает открытый ключ (Public Key) субъекта с его именем на определенный период времени. Другой субъект, который доверяет этому CA, также верит, что открытый ключ принадлежит названному субъекту.
Сертификат является контейнером для ключа, так же, как паспорт является контейнером для своего номера. Этот ключ или номер и является главным идентифицирующим фактором. Обычно в сертификате содержится открытый ключ (Public Key) или пара ключей. Кроме того, каждый сертификат содержит дополнительную информацию, удостоверяющую (идентифицирующую) клиента и организацию, выдавшую сертификат, дату его создания и цифровые подписи, а также срок действия (аналогично expiration date кредитной карты).
Итак, Открытые Ключи упаковываются в Цифровые Сертификаты. Пример – виза с правом въезда в другую страну. Номер визы – это и есть ключ, упакованный в визу. Вместо отдела паспортного контроля существуют Центры Сертификации CA (Certificate Authorities), выдающие сертификаты.
Для проверки сертификата, выданного центром, используется цифровая подпись. Ее, в свою очередь, можно проверить при помощи открытого ключа Центры Сертификации. Но кто поручится за сам Центр? Для этого используется иерархия сертификации (sertification hierarchy). На верхнем уровне иерархии находится группа корневых центров сертификации CA (Sertificate Authorities).
- Digital Signature (цифровая подпись) – ключ, сгенерированный путем хэширования сообщения и зашифрованный при помощи Private Key. Этот ключ добавляется в конец сообщения в качестве подписи.
Секретный ключ предоставляет возможность аутентификации и обеспечивает целостность данных, но не их конфиденциальность. Данные передаются в открытом формате, а ключ является аналогом подписи.
Цифровая подпись – это 128 или 256-разрядный ключ, который генерируется при обработке сообщения посредством алгоритма хэширования. Сгенерированный ключ дополнительно шифруется закрытым ключом и добавляется в конец сообщения.
Адресат, получив сообщение, обрабатывает его тем же алгоритмом хэширования, что и посылающая сторона, затем дешифрует подпись открытым ключом отправителя и сравнивает полученные числа. Они должны совпадать.
<РИСУНОК>
- Private Keys (секретные/личные/закрытые ключи).
Поскольку шифрование Public Key трудоемкая операция, его обычно используют для распространения ключей среди заинтересованных сторон.
1. Каждая сторона создает половину ключа
2. Стороны шифруют созданные половины с помощью Public Key противоположной стороны
3. Каждая сторона отправляет свою половину ключа другой стороне
4. При получении второй половины стороны проводят дешифрацию с помощью Private Key, после чего каждая сторона будет иметь обе части ключа и, следовательно, получит возможность использовать шифрование симметричным ключом
Метод генерации половины ключа позволяет вдвойне усилить систему безопасности, поскольку, даже при краже секретного ключа злоумышленник получит лишь его половину.
Теперь сделаем некоторое обобщение. Иногда требуется зашифровать текст сообщения, а иногда нужно только подтвердить подлинность посылающего. Иногда нужно и то и другое. Для шифрования секретного собщения используют открытый ключ адресата, а для подтверждения подлинности посылающего используют секретный ключ отправителя. В последнем случае мы имеем дело с цифровой подписью, которая сама по себе секретности не обеспечивает, хотя можно объединить шифрование и подпись и получить все преимущества зашифрованного секретного собщения и подтверждения подлинности одновременно.
Итак, мы уже знаем, для чего нужна PKI и познакомились с основными понятиями криптографии. Поговорим о PKI с точки зрения этих понятий.
PKI подразумевает использование пары ключей – открытого (публичного) и закрытого (секретного). Для распространения открытых ключей используются сертификаты X.509 и требуется наличие центров сертификации (CA - Certificate Authority).
Для шифрования сообщения используют открытый ключ адресата. Для подтверждения подлинности посылающего используют его секретный ключ: тогда адресат может расшифровать подпись открытым ключом, полученным от посылающего, и удостовериться в подлинности посылающего. Поскольку асимметричное шифрование снижает быстродействие системы, оно часто применяется только для распространения симметричных ключей, а они уже используются для шифрования реальных данных.
PKI может помочь в нескольких аспектах:
Confidentiality – шифрование передаваемых или хранимых данных при помощи Public Key.
Integrity – дигитальная подпись секретным ключем (Private Key), помогающая определить, модифицировались ли данные при передаче или хранении.
Authenticity – идентификационная информация проходит через хэш алгоритм (например, SHA1), создавая дайджест сообщения (Message Digest). Он, в свою очередь, подписывается Private Key посылающей стороны для доказательства ее подлинности.
Nonrepudiation – апеллируемость или неотказуемость. Дигитальная подпись секретным ключем (Private Key) доказывает подлинность источника данных и тот факт, что данные не изменялись в пути. Это дает возможность юридического доказательства совершенной сделки или других подобных действий.
PKI реализуется в модели клиент-сервер, то есть проверка какой-либо информации, предоставляемой инфраструктурой может происходить только по инициативе клиента.
Основные компоненты PKI:
Удостоверяющий центр (УЦ, CA, Certificate Authority) обеспечивает связь идентичности субъекта криптографии (обычно имя и какая-то дополнительная информация) и его открытого ключа. В очень малых PKI удостоверяющий центр может отсутствовать, в средних и крупных он обязательно присутствует.
Сертификат открытого ключа (чаще всего просто сертификат, certificate) - подписанная удостоверяющим центром структура данных идентичности субъекта криптографии и его открытого ключа. Для подписи сертификата удостоверяющий центр CA выпускает сертификат, который подписывает ключом, указанным в сертификате. Такой сертификат называется самоподписанным (самоизданным).
Регистрационный центр - компонент системы, проверяющий правильность предоставленных субъектом криптографии данных для формирования записи об идентичности. Удостоверяющий центр доверяет регистрационному центру проверку этой информации. Регистрационный центр, проверив правильность информации, подписывает её своим ключом и передаёт удостоверяющему центру, который, проверив ключ регистрационного центра, выписывает сертификат. Один регистрационный центр может работать с несколькими удостоверяющими центрами (т.е. состоять в нескольких PKI), один удостоверяющий центр может работать с несколькими регистрационными центрами.
Репозиторий - хранилище выпущенных УЦ сертификатов. В Законе РФ "Об электронной цифровой подписи" он называется реестр сертификатов ключей подписей.
Архив сертификатов - хранилище всех изданных когда-либо сертификатов (включая сертификаты с закончившимся сроком действия). Архив используется для проверки подлинности электронной подписи, которой заверялись документы.
Итак, PKI позволяет клиентским и серверным аппликациям воспользоваться отношениями доверия при взаимной аутентификации. Затем возможно использование услуг Confidentiality (при помощи шифрования открытым ключом) и Integrity/Authenticity (при помощи цифровой подписи секретным ключом).
Субъекты могут иметь одну или более пар ключей и ассоциированных сертификатов открытых ключей.
Как видно, для доказательства Integrity и Authenticity используется шифрование Private Key, а для сохранения секретности данных – Public Key. Естественно, вся система PKI основана на надежном хранении Private Key, так же как Kerberos основан на надежном хранении паролей. Чем длиннее ключ, тем сложнее процесс расшифровки при том же алгоритме. В системе симметричного шифрования строго не рекомендуется посылать ключ вместе с данными, т.к. это все равно, что посылать сундук с деньгами со вставленным ключом. Если же речь идет о подписи и асимметричном шифровании, то не считается проблемой послать Public Key вместе с подписью, т.к. цель, в данном случае, не сохранить информацию в секретности, а убедиться в подлинности отправителя и в том, что информация не была подвергнута изменениям.
В большинстве реальных применений симметричные и асимметричные алгоритмы комбинируются. Симметричное шифрование используется для преобразования данных (plain text to cipher text), а асимметричное – для обмена симметричными ключами и для цифровой подписи. Таким образом достигаются безопасность и скорость в одно время.
Примеры алгоритмов:
Симметричные алгоритмы : Data Encryption Standard (DES), Rivest’s Cipher v.2 (RC2), Triple DES (3DES), Advanced Encryption Standard (AES).
Асимметричные алгоритмы : Diffie-Hellman Key Agreement, Rivest-Shamir-Adleman (RSA).
Хэширующие алгоритмы : Message Digest 5 (MD5), Secure Hash Algorithm 1 (SHA1)
Приложение I
Основные принципы построения криптосистем с открытым ключом
Начинаем с трудной задачи P. Она должна решаться сложно в смысле теории: не должно быть алгоритма, с помощью которого можно было бы перебрать все варианты решения задачи P за полиномиальное время относительно размера задачи. Более правильно сказать: не должно быть известного полиномиального алгоритма, решающего данную задачу — так как ни для одной задачи ещё пока не доказано, что для неё подходящего алгоритма нет в принципе.
Можно выделить легкую подзадачу P1 из P. Она должна решаться за полиномиальное время, лучше, если за линейное.
«Перетасовываем и взбалтываем» P1, чтобы получить задачу P2, совершенно не похожую на первоначальную. Задача P2, по крайней мере, должна выглядеть как оригинальная труднорешаемая задача P.
P2 открывается с описанием, как она может быть использована в роли ключа зашифрования. Как из P2 получить P1, держится в секрете как секретная лазейка.
Криптосистема организована так, что алгоритмы расшифрования для легального пользователя и криптоаналитика существенно различны. В то время как второй решает P2 задачу, первый использует секретную лазейку и решает P1 задачу.
Применение криптосистем с открытым ключом
Алгоритмы криптосистемы с открытым ключом можно использовать:
- как самостоятельные средства для защиты передаваемой и хранимой информации
- Как средства распределения ключей. Обычно с помощью алгоритмов криптосистем с открытым ключом распределяют ключи, малые по объёму. А саму передачу больших информационных потоков осуществляют с помощью других алгоритмов.
- Как средства аутентификации пользователей.
Преимущества криптосистем с открытым ключом
- Преимущество асимметричных шифров перед симметричными шифрами состоит в отсутствии необходимости предварительной передачи секретного ключа по надёжному каналу.
- В симметричной криптографии ключ держится в секрете для обеих сторон, а в асимметричной криптосистеме только один секретный.
- При симметричном шифровании необходимо обновлять ключ после каждого факта передачи, тогда как в асимметричных криптосистемах пару (E,D) можно не менять значительное время.
- В больших сетях число ключей в асимметричной криптосистеме значительно меньше, чем в симметричной.
Приложение II
Комментариев нет:
Отправить комментарий