Русская Википедия:Сертификат открытого ключа

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Сертификат открытого ключа (сертификат электронной подписи, сертификат ключа подписи, сертификат ключа проверки электронной подписи (согласно ст. 2 Федерального Закона от 06.04.2011 «Об электронной подписи» № 63-ФЗ)) — электронный или бумажный документ, содержащий открытый ключ, информацию о владельце ключа, области применения ключа, подписанный выдавшим его Удостоверяющим центром и подтверждающий принадлежность открытого ключа владельцу.

Открытый ключ может быть использован для организации защищённого канала связи с владельцем двумя способами:

Существует две модели организации инфраструктуры сертификатов: централизованная (PKI) и децентрализованная (реализуемая на основе т. н. сетей доверия), получившая наибольшее распространение в сетях PGP.

Принцип работы

Файл:Usage-of-Digital-Certificate-ru.svg
Наглядное объяснение принципа работы сертификатов открытого ключа на примере установки ПО от стороннего разработчика пользователем в Интернете

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

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

Сертификат открытого ключа выдаётся центром сертификации и состоит из таких полей как:

  • сам открытый ключ владельца сертификата,
  • срок действия,
  • имя эмитента (центра сертификации),
  • имя владельца сертификата
  • и, самой важной части, цифровой подписи.

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

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

В SSL используется целая цепочка доверия: сертификат подписывается закрытым ключом владельца сертификата, находящегося выше в цепи.[1]

Формальное описание

Пусть имеются две стороны информационного обмена — <math>A</math>, <math>B</math>, желающие обмениваться сообщениями конфиденциально, и третья сторона <math>T</math> (играющая роль удостоверяющего центра), которой доверяют <math>A</math> и <math>B</math>.

  1. Стороне <math>A</math> принадлежит пара ключей (<math>KA_o</math>, <math>KA_s</math>), где <math>KA_o</math> — открытый ключ, а <math>KA_s</math> — закрытый (секретный) ключ стороны <math>A</math>.
  2. Стороне <math>T</math> принадлежит пара ключей (<math>KT_o</math>, <math>KT_s</math>).

<math>A</math> регистрируется у <math>T</math> (посылает запрос на подпись), указывая данные о себе и свой <math>KA_o</math>. Сторона <math>T</math> посредством определенных механизмов "удостоверяет личность" стороны <math>A</math> и выдает стороне <math>A</math> сертификат <math>C</math>, устанавливающий соответствие между субъектом <math>A</math> и ключом <math>KA_o</math>. Сертификат <math>C</math> содержит:

  1. ключ <math>KA_o</math>,
  2. идентификационные данные субъекта <math>A</math>,
  3. идентификационные данные удостоверяющей стороны <math>T</math>,
  4. подпись стороны <math>T</math>, которую обозначим <math>ST</math>. Подпись <math>ST</math> — это хеш (набор символов, хеш-сумма/хеш-код), полученный в результате применения хеш-функции к данным сертификата <math>C</math>, зашифрованный стороной <math>T</math> с использованием своего закрытого ключа <math>KT_s</math>.
  5. и другую информацию.

<math>A</math> посылает стороне <math>B</math> свой сертификат <math>C</math>. <math>B</math> проверяет цифровую подпись <math>ST</math>. Для этого <math>B</math>

  1. самостоятельно вычисляет хеш от данных сертификата <math>C</math>,
  2. расшифровывает ЭЦП сертификата <math>ST</math> с помощью всем известного <math>KT_o</math>, получив другой хеш,
  3. проверяет равенство этих двух хешей.

Если полученные хеши равны - ЭЦП корректна, а это подтверждает, что <math>KA_o</math> действительно принадлежит <math>A</math>.

Теперь <math>B</math>, зная открытый ключ <math>A</math> и зная, что он принадлежит именно <math>A</math>, может шифровать этим открытым ключом все последующие сообщения для <math>A</math>. И только <math>A</math> сможет их расшифровать, так как <math>KA_s</math> известен только <math>A</math>.

Структура сертификата

Электронная форма сертификата определяется стандартом X.509. Перечень обязательных и необязательных полей, которые могут присутствовать в сертификате, определяется данным стандартом, а также законодательством. Согласно законодательству России и Украины (закон «Об электронной цифровой подписи») сертификат должен содержать следующие поля:

Украина Россия
уникальный регистрационный номер сертификата + +
дата и время начала и окончания срока действия сертификата + +
фамилия, имя и отчество владельца сертификата ключа подписи или псевдоним владельца + +
открытый ключ + +
наименование и реквизиты ЦС + +
наименование криптографического алгоритма + +
информацию об ограничении использования подписи + +
указание на страну выпуска сертификата + -

Кроме этого в сертификат могут вноситься дополнительные поля.

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

Российские стандарты

В России действуют свои криптографические стандарты. Использование их совместно с сертификатами описано в RFC4491: Using GOST with PKIX.

См. также

Примечания

Шаблон:Примечания

Ссылки