Компоненты архитектуры подписи кода

Підпис коду вимагає чотирьох різних компонентів для архітектури підпису коду.

Як розробник програмного забезпечення, ви напевно знаєте роль сертифіката для підписання коду, наскільки це важливо і наскільки корисно надавати довіру користувачам.

Щоб зрозуміти архітектуру сертифіката підпису коду та набори компонентів, які відповідають за процес підписання коду копнемо трохи глибше ніж процес придбання.

Архітектура підпису коду має чотири різні компоненти

  • Система підписання коду (CSS)
  • Органи сертифікації (CA)
  • Орган позначення часу (TSA)
  • Верифікатори

Давайте розглянемо кожен по порядку

1. Система підписання коду (CSS)

Система підписання коду (CSS), перша складова процесу, є місцем, де код фактично підписаний.

Як правило, код проходить ряд етапів, таких як аутентифікація та авторизація того, хто подав код, і, нарешті, генерація підпису. Для генерації підпису система підпису коду використовує сертифікат та приватний ключ підписання, який надійно зберігається для запобігання несанкціонованому використанню.

2. Certificate Authorities (Cas) Центри сертифікації (ЦС)

Система підписання коду покладається на розробника, який має Code Signing сертифікат, виданий органами сертифікації, такими наприклад як Digicert

Щоб отримати Code Signing сертифікат, розробнику потрібно буде його замовити (подати запит) та подати дані для перевірки. І після перевірки інформації про організацію та деталей (для контролю та практик безпеки, яким повинні дотримуватися CA), центр сертифікації видає сертифікат підпису коду.

Вимоги, передбачені ЦС для видачі сертифіката підпису коду, базуються на рекомендаціях CA/Browser Forum та CA Security Council , які визначають необхідні критерії перевірки для видачі сертифіката підпису коду.

3. Time Stamp Authority - Центр мітки часу (TSA)

Процес підписання коду та архітектура передбачає використання мітки часу (TSA). Хоча ця частина є необов’язковою, вона рекомендується. TSA використовується для визначення часу та дати підписання фрагмента коду. Це означає, що підпис буде дійсним навіть після закінчення терміну дії сертифіката. Щоразу, коли використовується мітку часу (TSA), підпис надсилається до центру Time Stamp Authority. Потім TSA застосовує свій підпис разом із часом підписання, який потрібно додати до програмного пакету чи інших виконуваних файлів.

4. Verifiers Верифікатори

Як тільки ваш програмний пакет або виконуваний файл буде підписаний і відмічений часом, будь-який клієнт, який намагається використовувати файл, спершу спробує перевірити підпис. Розробнику рекомендується самостійно перевірити підпис перед публікацією файлу.

Користувачі керуються якорями довіри Trust Anchors, які використовуються для перевірки сертифікатів.

Що таке Trust Anchors

Якорі довіри - це, як правило, відкриті ключі для кореневих сертифікатів, які встановлюються та надійно зберігаються на платформі перевірки. Наприклад, самопідписаний кореневий сертифікат із використанням стандартної архітектури X.509 працює як якір довіри для додатків, якщо цей сертифікат включений до сховища довіри перевіряючого. Веб-браузер, такий як Google Chrome та Mozilla Firefox, та операційні системи також надають список своїх якорів довіри.

Ці довірчі якорі не перевіряють код безпосередньо, але вони є відкритими ключами кореневих центрів сертифікації, які використовуються для підписання сертифікатів підпису коду центрів сертифікації, тнаприклад таких як DigiCert.