В криптографии центр сертификации или удостоверяющий центр (англ. Certification authority, CA) — сторона (отдел, организация), чья честность неоспорима, а открытый ключ широко известен. Задача центра сертификации — подтверждать подлинность ключей шифрования с помощью сертификатов электронной подписи.
Центр сертификации — это компонент, отвечающий за управление криптографическими ключами пользователей.
Открытые ключи и другая информация о пользователях хранится центрами сертификации в виде цифровых сертификатов, имеющих следующую структуру:
серийный номер сертификата;
объектный идентификатор алгоритма электронной подписи;
имя удостоверяющего центра;
срок действия сертификата;
имя владельца сертификата (имя пользователя, которому принадлежит сертификат);
открытые ключи владельца сертификата (ключей может быть несколько);
объектные идентификаторы алгоритмов, ассоциированных с открытыми ключами владельца сертификата;
электронная подпись, сгенерированная с использованием секретного ключа удостоверяющего центра (подписывается результат хеширования всей информации, хранящейся в сертификате).
Цифровой сертификат — выпущенный удостоверяющим центром электронный или печатный документ, подтверждающий принадлежность владельцу открытого ключа или каких-либо атрибутов.
Открытый ключ может быть использован для организации защищённого канала связи с владельцем двумя способами:
для проверки подписи владельца (аутентификация)
для шифрования посылаемых ему данных (конфиденциальность)
Принцип работы#
Сертификаты, как правило, используются для обмена зашифрованными данными в больших сетях. Криптосистема с открытым ключом решает проблему обмена секретными ключами между участниками безопасного обмена, однако не решает проблему доверия к открытым ключам. Предположим, что Алиса, желая получать зашифрованные сообщения, генерирует пару ключей, один из которых (открытый) она публикует каким-либо образом. Любой, кто желает отправить ей конфиденциальное сообщение, имеет возможность зашифровать его этим ключом, и быть уверенным, что только она (так как только она обладает соответствующим секретным ключом) сможет это сообщение прочесть. Однако описанная схема ничем не может помешать злоумышленнику Давиду создать пару ключей, и опубликовать свой открытый ключ, выдав его за ключ Алисы. В таком случае Давид сможет расшифровывать и читать, по крайней мере, ту часть сообщений, предназначенных Алисе, которые были по ошибке зашифрованы его открытым ключом.
Идея сертификата — это наличие третьей стороны, которой доверяют две другие стороны информационного обмена. Предполагается, что таких третьих сторон немного, и их открытые ключи всем известны каким-либо способом, например, хранятся в операционной системе или публикуются в журналах. Таким образом, подлог открытого ключа третьей стороны легко выявляется.
Сертификат открытого ключа выдаётся центром сертификации и состоит из таких полей как: * сам открытый ключ владельца сертификата, * срок действия, * имя эмитента (центра сертификации), * имя владельца сертификата * и цифровой подписи.
Цифровая подпись гарантирует невозможность подделки сертификата. Она является результатом криптографической хеш-функции от данных сертификата, зашифрованным закрытым ключом центра сертификации. Открытый ключ центра сертификации является общеизвестным, поэтому любой может расшифровать им цифровую подпись сертификата, затем вычислить хеш самостоятельно и сравнить, совпадают ли хеши. Если хеши совпадают — значит сертификат действительный и можно не сомневаться, что открытый ключ принадлежит именно тому, с кем мы собираемся устанавливать соединение.
Функция вычисления подписи на основе документа и секретного ключа пользователя вычисляет собственно подпись. Функция проверки подписи проверяет, соответствует ли данная подпись данному документу и открытому ключу пользователя. Открытый ключ пользователя доступен всем, так что любой может проверить подпись под данным документом. Для того что бы подписать документ нужно зашифровать с помощью закрытого ключа значение хеш-функции от содержимого документа. Чтобы проверить подпись, нужно расшифровать с помощью открытого ключа значение подписи и убедиться, что оно равно хешу подписанного документа. Таким образом цифровая подпись - это зашифрованный хеш документа.
Существует две модели организации инфраструктуры сертификатов: централизованная (PKI) и децентрализованная (реализуемая на основе т. н. сетей доверия), получившая наибольшее распространение в сетях PGP.
Суть PKI очень простая: в браузере хранятся не сертификаты браузеров, а сертификаты удостоверяющих центров (CA).
Инфраструктура открытого ключа (PKI) является системой цифровых сертификатов, центров сертификации (ЦС), которая производит проверку и подтверждение подлинности каждой из сторон, участвующих в электронной операции, с помощью криптографии открытых ключей.
Корневой сертификат - сертификат принадлежащий Центру Сертификации, с помощью которого проверяется достоверность других выданных центром сертификатов.
Список отозванных сертификатов - список скомпрометированных или недействительных по какой либо другой причине сертификатов.
Отличительное имя (Distinguished Name, DN) - данные о владельце сертификата. Включают CN (Common Name), OU (Organization Unit), O (Organization), L (Locality), ST (State or province), C (Country name).
С помощью корневого сертификата, который публично доступен, пользователи могут проверять сертификаты друг друга.
Таким образом у центра сертификации имеется:
закрытый ключ
корневой сертификат (хранящий в себе открытый ключ);
список отозванных (скомпрометированных) сертификатов
У клиентов: * закрытый ключ; * сертификат, подписанный корневым; * корневой сертификат для проверки того, что сертификаты других пользователей выданы его доверенным центром; * список отозванных (скомпрометированных) сертификатов.
Создание корневого сертификата включает: * Генерацию закрытого ключа. * Генерацию открытого ключа и его подпись с помощью закрытого.
Создание обычного сертификата включает: * Генерацию закрытого ключа. * Создание запроса на подпись сертификата. * Подпись запроса в центре сертификации о получение сертификата.
Secure Soket Layer#
Что такое SSL-сертификат?#
https://www.kaspersky.ru/resource-center/definitions/what-is-a-ssl-certificate
OPENSSL#
OpenSSL — это система защиты и сертификации данных, название SSL переводится, как система безопасных сокетов (secure socket layer). OpenSSL используется практически всеми сетевыми серверами для защиты передаваемой информацией.
Представляет собой набор криптографических программ и библиотек для управления сертификатами и закрытыми ключами и используется практически всеми сетевыми серверами для защиты передаваемой информацией.
Поддерживает почти все низкоуровневые алгоритмы хеширования, шифрования и электронной подписи, а также реализует большинство популярных криптографических стандартов, в том числе:
позволяет создавать ключи RSA, DH, DSA, сертификаты X.509, подписывать их, формировать CSR и CRT, шифровать данные и тестировать SSL/TLS соединения.
Существует два основных класса криптографических алгоритмов - симметричные и ассиметричные. В симметричных для шифрования и дешифрования сообщения используется один и тот же ключ. В ассиметричных разные. Тот которым расшифровывают сообщения называется закрытым ключем, ключ для шифрования называется открытым. С помощью открытых и закрытых ключей можно подписывать документы. Для этого рядом с ключем сохраняют данные о владельце ключа и полученный файлы называется сертификатом.
Формат PEM (Privacy-enhanced Electronic Mail) - наиболее распространённый формат сертификатов, выпускаемых удостоверяющими центрами. Сертификаты PEM обычно имеют расширения .pem, .crt, .cer и .key. Это ASCII-файлы с информацией, закодированной в Base64, и содержащие выражения “—–BEGIN CERTIFICATE—–” и “—–END CERTIFICATE—–”. Сертификаты сервера, промежуточные сертификаты и приватные ключи могут быть записаны в формате PEM.
Base64 — стандарт кодирования двоичных данных при помощи только 64 символов ASCII.
RSA-шифрование включает в себя открытый ключ и закрытый ключ. Открытый может быть известен всем и используется для шифрования сообщений. Суть его состоит в том, что сообщения, зашифрованные с помощью открытого ключа, могут быть расшифрованы только в определенный промежуток времени с использованием секретного ключа.
Генерация ключей#
Синтаксис команды:
openssl genrsa [-out file] [-des | -des3 | -idea] [-rand file] [bits]
Команда genrsa создает секретный ключ длиной bits в формате PEM, шифрует его одним из алгоритмов: des (56 бит), des3 (3-й des 168 бит) или idea (128 бит). При выборе алгоритма шифрования будет запрошен пароль для шифрации создаваемого секретного ключа (если алгоритм не указан, то секретный ключ не шифруется).
Опция -out определяет вывод в файл file.
Опция -rand указывает на файл из которого будут считываться данные для установки seed (зерна) генератора случайных чисел (рекомендуется /var/log/messages или /boot/vmlinuz) Пример генерации 4096 битового секретного ключа RSA:
openssl genrsa -out /etc/openssl/key.pem -des3 -rand /var/log/messages 4096
Создание центра сертификации#
Сертификат содержит публичный ключ, подписанный одним из корневых доверенных центров сертификации (или комплементарным секретным ключом), данные об организации, выдавшей сертификат и в некоторых случаях зашифрованный секретный ключ, а также отпечаток (хеш)публичного ключа.
Сертификаты имеют время действия, по окончанию которого они автоматически считаются недействительными, иерархия сертификатов обычно строится на основании сети доверия (бывают довольно длинные цепочки сертификатов, ведущие к доверенному ключу из root CA). Таким образом, сертификат — это полный комплекс системы асимметрического шифрования, предоставляющий гораздо больше возможностей, чем сами по себе ключи (а также являющийся более защищенной системой).
Основным привлекательным моментом сертификата является возможность записи в него информации об организации, этот ключ выдавшей. Таким образом, возможно применение собственной системы сертификации в данной организации. Можно, например, выдавать сотрудникам их персональные сертификаты, подписанные сертификатом организации (его можно сгенерировать самому или получить от сторонней компании). Причем эти сертификаты впоследствии можно использовать для удостоверения личности сотрудника, например, при почтовой переписке или аутентификации на httpсервере (apache+ssl). Единственное условие, которое должно выполняться, — это наличие на машине клиента сертификата организации в списке корневых доверенных ключей.
Общее содержание сертификатов определено стандартом x509.
Клиент создает сертификат и отправляет свой публичный сертификат в центр сертификации. В центре сертификации обрабатывается запрос клиента (запрос на сертификацию), и сертификат клиента подписывается секретным ключом центра сертификации. Клиент, имея публичный ключ центра сертификации, проверяет подлинность подписи и может далее использовать свой сертификат.
Для организации возможно следующее решение:
На сервере создается сертификат организации;
Генерируется запрос на сертификацию и отправляется к некоему доверенному центру сертификации (который будет известен всем клиентам и персоналу данной организации);
получается сертификат организации, который можно использовать при создании сертификатов клиентов. Последние создаются так:
клиент посылает запрос на выдачу сертификата;
сервер создает сертификат клиента и подписывает его сертификатом организации;
клиент получает сертификат клиента и сертификат организации;
после проверки достоверности ключа организации (предполагается, что клиент доверяет CA, которым был подписан сертификат организации) проверяется достоверность сертификата клиента.
После такой операции клиент будет точно уверен, что получил сертификат от данной организации, и может его использовать для работы с ней. По такой схеме построены все центры выдачи сертификатов (правда, зачастую сертификат организации бывает подписан самим собой, что требует от клиента добавить сертификат организации к доверенным, а в первой схеме сертификат организации принадлежит к группе промежуточных центров сертификации, и этот случай предпочтительнее с точки зрения безопасности и удобства клиента, но требует больше работы от администратора).
Удостоверяющий центр (по-английски certification authority, сокращённо CA) — это единый центр генерации цифровых сертификатов. У конечных клиентов (например, веб-браузеров) имеется база публичных ключей разных CA и они проверяют ими приходящие, например, от сайтов сертификаты.
Интерес представляют сертификаты, используемые в сеансах, защищённых протоколом SSL/TLS.