Центри сертифікації, нещодавно підвищили стандарти зберігання ключів для сертифікатів підпису коду, вимагаючи зберігати закритий ключ сертифіката або на фізичному USB-токені, або на сумісному апаратному модулі безпеки (HSM). З 1 червня 2023 року всі сертифікати підпису коду більше не випускаються у вигляді завантажуваних pfx-файлів. Ця зміна відповідає новим вимогам Форуму центрів сертифікації/браузерів (CA/B) щодо зберігання ключів для підвищення безпеки ключів кодових підписів. Попереднє правило дозволяло випускати сертифікати підпису коду Organization Validation (OV) та Individual Validation (IV) у вигляді файлів, які можна завантажити.
Оскільки нові вимоги дозволяють використовувати лише зашифровані USB-токени або хмарні FIPS-сумісні апаратні пристрої для зберігання сертифіката та особистого ключа, очікується, що випадки викрадення та зловживання ключами кодового підпису з боку зловмисників значно зменшаться. Хоча використання USB-токенів створює проблеми з інтеграцією з сучасними конвеєрами CI/CD, а використання фізичного модуля HSM в офісних умовах може бути складним, існує ефективна альтернатива.
Google Cloud пропонує практичне рішення: орендувати єдиний слот для ключів на їхньому сервісі HSM. Такий підхід не лише економічно вигідний, але й відповідає останнім стандартам відповідності FIPS 140-2 Level 2, усуваючи при цьому потребу в управлінні фізичними пристроями. У цій статті ми розповімо, як налаштувати це проміжне рішення.
Розуміння процесу підписання коду за допомогою хмарного HSM
Щоб зрозуміти суть процедури підписання коду за допомогою хмарного апаратного модуля безпеки (HSM), розглянемо його компоненти:
- Сертифікат підпису коду: Цифровий сертифікат, виданий довіреним центром сертифікації (ЦС), який розробники програмного забезпечення використовують для цифрового підпису свого програмного забезпечення, скриптів і виконуваних файлів. Цей сертифікат слугує цифровим підписом, який підтверджує особу розробника або видавця і гарантує, що код не був змінений або скомпрометований з моменту його підписання.
- Google Cloud: Пропонує послуги, які підтримують безпечну розробку та розгортання програмного забезпечення, включаючи інфраструктуру для безпечної генерації та управління криптографічними ключами, що використовуються в процесі підписання коду.
- Google Cloud HSM for key protection (для захисту ключів): Надійний апаратний модуль безпеки, розміщений в інфраструктурі Google Cloud, призначений для захисту вашого приватного ключа від несанкціонованого доступу.
- Інструмент для підписання: Програмне забезпечення або утиліта, призначена для цифрового підпису програм і додатків. Такий цифровий підпис гарантує кінцевому користувачеві, що програмне забезпечення не було змінено або скомпрометовано з моменту його підписання розробником або видавцем.
- Time Stamping Authority (TSA) (Центр позначки часу): довірений сторонній сервіс, зазвичай керований вашим центром сертифікації (ЦС), завданням якого є доведення того, що код був підписаний протягом терміну дії цифрового сертифіката, який використовувався для підписання, навіть якщо термін дії сертифіката закінчується або його відкликають.
Реєстрація хмарного облікового запису Google
Першим кроком у налаштуванні є створення облікового запису на Google Cloud Platform. Після того, як ваш обліковий запис буде активним, необхідно створити новий проект та увімкнути Білінг. Для того, щоб продовжити налаштування, необхідно надати платіжну інформацію.
![Використання Code Signing сертифікату з Google Cloud HSM 1 Використання Code Signing сертифікату з Google Cloud HSM](https://tuthost.ua/wp-content/uploads/2024/05/image.png)
Згенеруйте пару ключів, CSR та атестаційну заяву
Перед випуском сертифікатів підпису коду або підпису документів, довірених Adobe, потрібно підтвердження того, що особистий ключ підпису клієнта був згенерований на пристрої, сертифікованому за стандартом FIPS 140-2, рівень 2 (або вище), і надійно зберігається на ньому. Цей пристрій гарантує, що ключ не може бути вилучений, а перевірка цього захисту називається атестацією. Google Cloud HSM, що використовує пристрої виробництва Marvell (раніше Cavium), здатний генерувати підписані заяви про атестацію для криптографічних ключів. Для отримання інструкцій щодо створення пари ключів і засвідчення, будь ласка, зверніться до документації Google по управлінню хмарними ключами:
Відкрийте інтерфейс управління ключами.
Перейдіть в розділ Security а потім в Key Management. Коли ви натиснете на Керування ключами, платформа перенаправить вас на “Google Cloud Marketplace” з проханням увімкнути KMS API. Ви повинні увімкнути його і знову пройти той самий шлях, тобто Безпека >> Керування ключами.
Згенеруйте Key Ring і ключ HSM.
В інтерфейсі Керування ключами натисніть на опцію “CREATE KEY RING”. Після цього вам буде запропоновано налаштувати параметри брелока, зокрема визначити назву, тип розташування та регіон.
Рекомендовані налаштування при створення ключа
Protection Level | HSM |
Key Material | HSM-generated key |
Key Purpose | Asymmetric sign |
Algorithm | 4096 bit RSA – PKCS#1 v1.5 padding – SHA256 Digest |
Отримайте підтвердження атестації
Зовнішні аудитори та центри сертифікації іноді вимагають файл засвідчення, тому ви завжди повинні завантажувати його з платформи Google Cloud HSM. Спочатку перевірте засвідчення, а потім лише завантажуйте його.
New Key Ring >>> Version tab >>> Actions (three dots icon) >>> Verify Attestation і потім Download Attestation
![Використання Code Signing сертифікату з Google Cloud HSM 2 Використання Code Signing сертифікату з Google Cloud HSM](https://tuthost.ua/wp-content/uploads/2024/05/image-1.png)
Створіть запит на підписання коду (CSR)
Настав час згенерувати CSR, оскільки це важлива умова для отримання сертифікату підпису коду EV. Коли ви подасте цей CSR до центру сертифікації або провайдера, він видасть вам цифровий сертифікат для підпису додатків, драйверів і прошивок.
Ви можете використовувати “openssl” для генерації CSR. Скористайтеся наведеною нижче командою, щоб згенерувати CSR.
openssl req -new -subj '/E={yourEmail}/CN={companyName}/O={companyName}/' -sha256 -engine pkcs11
-keyform engine -key pkcs11:object={keyName}
Примітка: Будь ласка, замініть наведені вище необхідні значення на ваші власні. Оскільки ваш приватний ключ зберігається у хмарному HSM, вам слід використовувати Google Cloud API, щоб дозволити openssl отримати доступ до ключа.
Після того, як ви підготуєте пару ключів, CSR та засвідчення атестації, надішліть їх нам для перевірки та замовлення сертифікату.
Замовте сертифікат підписання коду
Усі сертифікати підпису коду можна придбати в tuthost терміном дії від 1 до 3 років зі знижками на довші терміни, а також зі зручністю проходження процесу перевірки лише один раз для сертифікатів з довшим терміном дії.