Как се прави проверка за валидност на сертификати и електронни подписи с CRL и OCSP?

Въведение

На въпросите "Какво е електронен подпис?", "Кой може го издаде?", и "Защо е по-добре да подписване електронно?" сме отговорили вече в няколко отделни блог статии.

Знаем също така, че всеки усъвършенстван или квалифициран подпис има своя период на валидност, която се въвежда, когато се създава подписа.

Какво обаче се случва, ако сигурността на подписа ви е компрометирана? Например, ако загубите смарт картата (флашката) си?

Индустрията е създала два основни механизми за проверка на валидност на сертификат:

  • Списък с отменени сертификати
    Certificate Revocation List (CRL)
  • Протокол за онлайн проверка на статуса на сертификати
    Online Certificate Status Protocol (OCSP)

В този блог ще разгледаме как функционират тези технологии и защо те са толкова важни за управлението на електронни подписи и сертификати.

Как всичко това е свързано с електронния подпис?

Електронният подпис е дигитален аналог на ръчния подпис, използван в електронни документи, за да се удостовери 1) автентичността и 2) целостта на документа. Той се основава на цифрови сертификати, които идентифицират подписващия и гарантират, че данните не са били променени след подписването.

За да може да функционира коректно цялата концепция за електронно подписване на документи, е изключително важно сертификати да бъдат валидни и актуални по всяко време. Това налага разработването на методите за тяхната проверка, за които пишем тук.

Значението на проверката на сертификат на електронен подпис

Валидността на електронния подпис зависи напълно от състоянието на използвания за подписа сертификат. Ако сертификатът е отменен или изтекъл, то подписът вече не може да бъде нито използван, нито считан за валиден. Това не значи, че досега подписаните документи стават невалидни.

Проверката на сертификатите гарантира, че всички трансакции или документи, подписани с тях, са валидни.

Защо сертификатите се оттеглят или блокират?

Сертификатите могат да бъдат оттеглени (revoked) по редица причини:

  • Компрометиране на ключа: Ако частният ключ на сертификата бъде откраднат или изложен на риск, сигурността на сертификата е силно застрашена. Например, ако загубите смарт картата (флашката), на която се съхранява частния ви ключ.
  • Промяна в информацията: Промени в информацията за титуляра на подписа, като например имена или адрес на електронна поща, могат да наложат издаването на нов сертификат.
  • Прекратяване на операции: Ако става дума за професионален електронен подпис, асоцииращ дадено физическо лице с юридическо лице, което прекратява своята дейност.
  • Изтичане на валидност: Сертификатите имат определен срок на валидност и след изтичането му трябва да бъдат подновени или отменени.

Как да прекратите валидността на компрометиран електронен подпис?

Ако попаднете в ситуация на откраднат или изгубен електронен подпис, трябва веднага да се свържете с издателя му и за да заявите спирането му.

За Б-Тръст трябва да позвъните на 0700 199 10 или *9910. За прекратяване на удостоверението трябва да подадете заявка за управление на удостоверение в офис.

При Евротръст прекратяването на удостоверението се прави през мобилното приложение.

Какво се случва след като подадете сигнал?

Без значение по каква причина искате да прекратите валидността на дадено удостоверение (сертификат), след като подадете сигнал, издателя първо обновява статуса на сертификата в базата си данни и след това включва серийния номер на сертификата в своят списък с отменени сертификати (CRL).

Какво представлява Certificate Revocation List (CRL)?

Certificate Revocation List (CRL) е списък, публикуван от издатели на сертификати, който съдържа серийни номера на сертификати, които са били отменени и вече не са валидни. CRL се използва от различни приложения и услуги за проверка на статуса на сертификатите, за да се уверят, че те не са компрометирани или оттеглени от употреба.

Как се обновява и поддържа CRL?

Издателите на сертификати са отговорни за поддържането и обновяването на CRL. Те периодично публикуват обновления на CRL, като по този начин осигуряват, че информацията в списъка е актуална. Това позволява на клиентските приложения (като Adobe Acrobat) да проверяват в реално време дали даден сертификат е валиден или е бил отменен. Отменените (Revoked) сертификати, чиито срок на валидност е вече изтекъл, могат да се премахнат от CRL списъка.

Предизвикателства свързани с CRL

Използването на CRL не е без своите предизвикателства:

  • Мащабируемост: С растежа на интернет, броят на сертификатите, които трябва да бъдат управлявани, нараства експоненциално. Това може да доведе до огромни CRL файлове, които са трудни за управление и разпространение.
  • Забавяне на производителността: CRL файла може да стане много голям, особено за организации с много сертификати. Така проверката на CRL може да забави процесите на удостоверяване, тъй като клиентските системи трябва да изтеглят и проверяват големи списъци.
  • Актуалност: Въпреки че CRL се обновяват регулярно, винаги съществува времеви прозорец, в който отменен сертификат може да не бъде включен в последната версия на списъка. Това означава, че е възможно сертификат да е оттеглен, но все още да не е включен в CRL.

Пример за използване на CRL

Ако трябва да направите CRL проверка на даден сертификат, следва да преминете през следните стъпки:

  1. Сваляне на CRL - Първо, трябва да изтеглите CRL от издателя на сертификата, който искате да проверите. CRL обикновено се предлага като файл с разширение .crl. Ето примерни адреси на двата основни доставчика на електронни подписа в България: Информация за адресите на тези сървъри се съдържат в самите сертификати. CRL файлове не съдържат обикновен текст. Т.е. не са четими (human-readable). Кодирани са в специален DER (Distinguished Encoding Rules) формат. DER е бинарен формат, който се използва за кодиране на ASN.1 (Abstract Syntax Notation 1) данни. ASN.1 е език за описание на данни, който се използва за дефиниране на структурата на сертификатите и CRL.
  2. Инсталиране на специализиран софтуер - Един от най-популярните инструменти за работа със сертификати е OpenSSL библиотеката - криптографска библиотека с отворен код, която съдържа инструменти за управление и анализ на сертификати.
  3. Изчитане на информацията - Отворете терминал на операционната ви система и отидете до директорията, където сте запазили CRL файла (например: cd /…/downloads). Въведете командата: openssl x509 -crl -noout -in crl_file.crl (заменяйки crl_file.crl с името на файла, който сте свалили в стъпка 1) На екрана ще се изведе информация за:
    • Издателя на сертификатите
    • Дата на последно и следващо обновяване
    • Списък с оттеглени сертификати с информация за сериен номер, дата на оттегляне, и евентуално причина за оттеглянето

    Съществено е да е отбележи, че описаното по-горе ще ви помогне да разберете съдържанието на даден CRL файл, но не е необходимо да го правите ръчно. Повечето приложения (отново трябва да споменем Adobe Acrobat Reader) прави тези проверки автоматично. Включително ако разработвате софтуер, най-добре използвайте готови специализирани библиотеки, вместо да пишете код отначало.

Алтернативи на CRL

Заради някои от изброените по-горе предизвикателства, индустрията е разработила алтернатива на CRL: Online Certificate Status Protocol (OCSP). OCSP позволява на приложенията да получават по-бърз отговор относно статуса на сертификата, като изпращат заявка до OCSP сървъра и получават бърз отговор дали конкретният сертификат е валиден или отменен.

Online Certificate Status Protocol (OCSP): Съвременният подход за проверка на състоянието на сертификати

Online Certificate Status Protocol (OCSP) е интернет базиран протокол за проверка на статуса на цифров сертификат. Този протокол е въведен за да предостави по-бърз и ефективен начин за проверка на валидността на сертификатите в сравнение с традиционните Certificate Revocation Lists (CRL). OCSP позволява на системите да изпращат запитване до OCSP сървър, който може да удостовери дали даден сертификат е все още валиден или е бил отменен.

Защо OCSP е предпочитан пред CRL?

  1. Бързина и ефективност - OCSP предоставя възможност за проверка на момента на статуса на сертификат, което е значително по-бързо от изтеглянето и проверката на големи CRL файлове.
  2. Намалено мрежово натоварване - Тъй като OCSP изисква изпращането само на малки запитвания и получаване на кратки отговори, това значително намалява мрежовото натоварване в сравнение със свалянето на обемисти списъци за отмяна на сертификати.
  3. Актуализация в реално време - OCSP предлага почти моментална информация за статуса на сертификата, което е особено важно в динамичната среда на интернет.

Как работи OCSP?

Процесът на OCSP започва, когато клиент (например Adobe Acrobat Reader) изпрати запитване до OCSP сървъра. Запитването съдържа идентификатора на сертификата, чийто статус се проверява. Доставчика на подписа проверява в своята база данни за състоянието на този сертификат и връща отговор, който указва дали сертификатът е валиден, отменен или неговият статус е неизвестен.

Пример за заявка към OCSP сървър

Ако искате да използвате OCSP протокола за да проверите валидността на сертификат, следва да изпълните следните стъпки:

  1. Създайте заявка OCSP - Първо, трябва да създадете заявка OCSP. Заявката OCSP трябва да съдържа следната информация:
    • URL адрес на OCSP сървъра: Това е URL адресът на сървъра, който хоства CRL за издателя на сертификата.
    • Сериен номер на сертификата: Това е уникалният идентификатор на сертификата, който искате да проверите.
    • Алгоритъм за подписване на заявката: Това е алгоритъмът, който ще се използва за подписване на заявката.
    • Подпис на заявката: Това е подписът на заявката, който е генериран с помощта на личния ключ на клиента.
  2. Изпратете заявката - След като създадете заявката OCSP, трябва да я изпратите до OCSP сървъра. Можете да направите това с помощта на HTTP или HTTPS.
  3. Отговор от OCSP - OCSP сървърът ще провери валидността на сертификата и ще изпрати отговор. Отговорът на OCSP ще съдържа следната информация:
    • Статус на сертификата: Това е статусът на сертификата, който може да бъде "валиден", "оттеглен", "неизвестен" или "друга грешка".
    • Дата на оттегляне: Ако сертификатът е оттеглен, отговорът на OCSP ще съдържа датата и часа, на които е оттеглен.
    • Причина за revokeиране: Ако сертификатът е оттеглен, отговорът на OCSP може да съдържа причината за оттегляне.
  4. Обработка на отговора на OCSP - След като получите отговор от OCSP сървъра, трябва да го обработите. Ако статусът на сертификата е "валиден", можете да приемете електронния подпис. Ако статусът на сертификата е "оттеглен", трябва да откажете електронния подпис.

Примерен код

Python
import requests

# URL адрес на OCSP сървъра
ocsp_url = "https://ocsp.example.com"

# Сериен номер на сертификата
serial_number = "1234567890"

# Алгоритъм за подписване на заявката
signing_algorithm = "sha256"

# Подпис на заявката
signature = generate_signature(serial_number, signing_algorithm)

# Създайте заявката OCSP
request_data = {
"serial_number": serial_number,
"algorithm": signing_algorithm,
"signature": signature
}

# Изпратете заявката OCSP
response = requests.post(ocsp_url, json=request_data)

# Обработка на отговора на OCSP
if response.status_code == 200:
response_data = response.json()
status = response_data["status"]

if status == "good":
print("Сертификатът е валиден.")
elif status == "revoked":
print("Сертификатът е revokeиран.")
else:
print("Възникна грешка.")
else:
print("Неуспешно изпращане на заявка OCSP.")

OCSP не разчита на CRL списъка. И двата метода служат за еднаква цел, но функционират независимо един от друг. Доставчиците обновяват първо базите си данни и след това периодично генерират CRL списъка и го публикуват. Докато OCSP проверката се извършва директно в базата данни на издателя.

Последни думи

Един електронен подпис е дигитален аналог на ръчния подпис. Служи за удостоверяване на автентичността и целостта на даден електронен документи. Електронният подпис се основава на цифров сертификат, който идентифицира подписващия и гарантира, че данните не са били променени след подписването.

Важен аспект е проверката на валидността на сертификатите, за да се гарантира, че електронните подписи са приложими. За тази цел се използват два основни метода:

  • Списък с отменени сертификати (Certificate Revocation List [CRL]): CRL е списък, публикуван от издатели на сертификати, който съдържа серийни номера на сертификати, които са били отменени и вече не са валидни. CRL се обновяват периодично, но има ограничения като размер и забавяне.
  • Online Certificate Status Protocol (OCSP): OCSP е протокол, който позволява на приложенията да получават по-бърз отговор за статуса на сертификата, като изпращат заявка до OCSP сървъра. OCSP е по-ефективен от CRL, но може да не е наличен за всички издатели на сертификати.

Изборът между CRL и OCSP зависи от нуждите:

  • CRL: Подходящ за офлайн сценарии и системи с ограничени ресурси.
  • OCSP: Подходящ за проверки в реално време и системи с интернет достъп.

В идеалния случай може да се използва комбинация от CRL и OCSP за допълнителна сигурност.

Какво трябва да запомните:

  1. Електронните подписи се основават на валидни цифрови сертификати.
  2. CRL и OCSP са два метода за проверка на валидността на сертификатите.
  3. OCSP е по-ефективен от CRL, но CRL е по-достъпен.
  4. Изборът между CRL и OCSP зависи от нуждите.
  5. Комбинирането на CRL и OCSP може да осигури най-високо ниво на сигурност.


Ако считате, че във вашата организация могат да се оптимизират процесите по подписване на документи - вътрешно или с външни контрагенти, то тогава Ви приканваме да се запознаете с възможностите на DigiSign: платформата, която работи с всички видове електронни подписи и позволява да съчетавате няколко различни метода за подписване върху един и същ документ, според вида подпис, с който разполагат подписващите.


Обратно към блог списъка