Протокол OCSP
Протокол OCSP (Online Certificate Status Protocol — протокол проверки статуса сертификата в режиме онлайн) — это сетевой протокол прикладного уровня, предназначенный для оперативной проверки статуса цифрового сертификата X.509 на предмет его отзыва (аннулирования) в момент использования. В отличие от традиционного подхода с использованием списков отзыва сертификатов (CRL), OCSP позволяет получить актуальную информацию о статусе конкретного сертификата без необходимости загрузки и обработки всего списка отозванных сертификатов, что снижает сетевую нагрузку и ускоряет проверку.
История и развитие
Протокол OCSP был разработан как альтернатива механизму CRL, который требовал периодической загрузки больших файлов, содержащих серийные номера всех отозванных сертификатов, выпущенных данным удостоверяющим центром (УЦ). Первая версия спецификации OCSP была опубликована в 1999 году в документе RFC 2560 (Internet X.509 Public Key Infrastructure — Online Certificate Status Protocol). В 2013 году вышла обновлённая версия стандарта — RFC 6960, которая уточнила и расширила возможности протокола, включая поддержку расширений и улучшенную обработку ошибок.
Основная причина появления OCSP — необходимость в более оперативной и точной проверке статуса сертификата в условиях роста числа цифровых сертификатов и увеличения их срока действия. CRL могли обновляться с задержкой, что создавало окно уязвимости, когда отозванный сертификат мог считаться действительным.
Принцип работы
OCSP функционирует по модели «запрос-ответ». Клиент (например, веб-браузер, почтовый клиент или сервер) отправляет запрос OCSP-ответчику (OCSP responder) — серверу, управляемому удостоверяющим центром или доверенной третьей стороной. Запрос содержит серийный номер проверяемого сертификата и идентификатор издавшего его УЦ.
OCSP-ответчик проверяет запрошенный сертификат по своей базе данных отозванных сертификатов и возвращает один из трёх возможных ответов:
- good (хороший) — сертификат действителен и не отозван.
- revoked (отозван) — сертификат был отозван. Ответ может содержать дату и причину отзыва.
- unknown (неизвестен) — OCSP-ответчик не может определить статус сертификата (например, если он не был выпущен данным УЦ или данные о нём отсутствуют).
Ответ OCSP подписывается цифровой подписью удостоверяющего центра или специального доверенного OCSP-ответчика, что гарантирует его целостность и подлинность. Для повышения производительности и снижения нагрузки на сеть ответы могут быть кэшированы клиентом на определённый срок, указанный в ответе (параметр nextUpdate).
Виды и реализации
OCSP Stapling (OCSP-скрепление)
OCSP Stapling (также известный как TLS Certificate Status Request) — это расширение протокола TLS, которое позволяет веб-серверу самостоятельно получать подписанный OCSP-ответ для своего сертификата и «прикреплять» его к процессу рукопожатия TLS. В этом случае клиенту не нужно отправлять отдельный запрос к OCSP-ответчику, что ускоряет проверку и снижает нагрузку на инфраструктуру УЦ. Сервер периодически (например, раз в час) обновляет свой OCSP-ответ и предоставляет его всем клиентам, которые подключаются.
OCSP Must-Staple
OCSP Must-Staple — это расширение сертификата, которое указывает, что сервер обязан использовать OCSP Stapling. Если сервер не предоставляет скреплённый OCSP-ответ, клиент должен считать сертификат недействительным. Это повышает безопасность, так как предотвращает сценарии, когда злоумышленник, контролирующий сеть, может заблокировать запросы OCSP и тем самым скрыть факт отзыва сертификата.
OCSP Responder (OCSP-ответчик)
OCSP-ответчик может быть реализован как отдельный сервер, так и как часть инфраструктуры удостоверяющего центра. Существуют как коммерческие, так и открытые реализации OCSP-ответчиков, например, ocspd (в составе OpenSSL) или ocsp-responder от Let's Encrypt.
Преимущества и недостатки
Преимущества
- Оперативность: OCSP предоставляет информацию о статусе сертификата в реальном времени, в отличие от CRL, которые могут обновляться с задержкой.
- Эффективность: Запрос к OCSP-ответчику значительно меньше по размеру, чем загрузка всего CRL, что экономит трафик и время.
- Точность: OCSP проверяет только конкретный сертификат, а не весь список, что исключает обработку нерелевантных данных.
- Гибкость: Протокол поддерживает расширения, позволяющие добавлять дополнительную информацию, например, о статусе сертификата в конкретной цепочке доверия.
Недостатки
- Зависимость от сети: Для проверки OCSP требуется доступ к OCSP-ответчику. Если ответчик недоступен, клиент может не получить информацию о статусе сертификата, что может привести к отказу в обслуживании или, наоборот, к принятию отозванного сертификата.
- Утечка конфиденциальности: Запрос OCSP содержит серийный номер сертификата, что позволяет OCSP-ответчику отслеживать, какие сайты посещает пользователь. Это может быть проблемой с точки зрения конфиденциальности.
- Задержка: Дополнительный запрос к OCSP-ответчику может увеличить время загрузки веб-страницы, особенно при медленном соединении.
- Сложность реализации: Настройка и поддержка OCSP-инфраструктуры требует определённых знаний и ресурсов.
Применение
OCSP широко используется в различных областях, где требуется проверка статуса цифровых сертификатов:
- Веб-браузеры: Большинство современных браузеров (Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge) поддерживают OCSP и OCSP Stapling для проверки сертификатов HTTPS-сайтов.
- Электронная почта: Протоколы S/MIME и PGP используют OCSP для проверки сертификатов, используемых для шифрования и подписи электронных писем.
- Корпоративные системы: Внутренние PKI-инфраструктуры организаций часто используют OCSP для проверки сертификатов сотрудников и устройств.
- Программное обеспечение: Системы управления цифровыми подписями, VPN-клиенты и другие приложения, работающие с сертификатами, могут использовать OCSP для проверки их статуса.
Критика и альтернативы
Основная критика OCSP связана с проблемами конфиденциальности (утечка данных о посещаемых сайтах) и зависимости от сети. Альтернативой OCSP является использование CRL (Certificate Revocation List) — списков отзыва сертификатов, которые загружаются клиентом периодически. CRL не требует постоянного сетевого подключения для проверки, но менее оперативен и требует большего объёма данных.
Другой альтернативой является CRLite — экспериментальный подход, который позволяет клиенту загружать компактное представление всей базы данных отозванных сертификатов, что решает проблему конфиденциальности, но требует значительного объёма памяти.
В России, в соответствии с требованиями Федерального закона № 152-ФЗ «О персональных данных» и законодательства в области электронной подписи, использование OCSP и других механизмов проверки статуса сертификатов регулируется нормативными актами, в частности, требованиями к удостоверяющим центрам, аккредитованным в Минцифры России. OCSP-ответчики таких УЦ должны обеспечивать высокую доступность и соответствовать требованиям по защите информации.
Интересные факты
- OCSP-ответы могут быть подписаны не только самим УЦ, но и специальным доверенным OCSP-ответчиком, который может быть делегирован для выполнения этой задачи.
- В некоторых реализациях OCSP-ответы могут содержать информацию о том, что сертификат был отозван по причине компрометации закрытого ключа, что является более серьёзным статусом, чем отзыв по истечении срока действия.
- Протокол OCSP поддерживает расширения, которые позволяют, например, запрашивать статус нескольких сертификатов в одном запросе.
Источники
- RFC 2560 — Internet X.509 Public Key Infrastructure — Online Certificate Status Protocol (1999).
- RFC 6960 — Internet X.509 Public Key Infrastructure — Online Certificate Status Protocol (2013).
- RFC 6066 — Transport Layer Security (TLS) Extensions: Extension Definitions (включая OCSP Stapling).
- Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи».
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных».
- Документация OpenSSL по реализации OCSP-ответчика.
- Материалы Let's Encrypt по OCSP и OCSP Stapling.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →