Компании Red Hat и Google, совместно с Университетом Пердью, основали проект Sigstore, нацеленный на создание инструментов и сервисов для верификации программного обеспечения при помощи цифровых подписей и ведения публичного лога для подтверждения подлинности (transparency log). Проект будет развиваться под эгидой некоммерческой организации Linux Foundation.

Предложенный проект позволит повысить безопасность каналов распространения программ и защититься от атак, нацеленных на подмену программных компонентов и зависимостей (supply chain). Одной из ключевых проблем с безопасностью в открытом ПО называется сложность проверки источника получения программы и верификации процесса сборки. Например, для проверки целостности релиза большинство проектов используют хэши, но часто необходимая для проверки подлинности информация хранится на незащищенных системах и в общих репозиториях с кодом, в результате компрометации которых атакующие могут подменить необходимые для верификации файлы и, не вызывая подозрений, внедрить вредоносные изменения.

Лишь незначительная часть проектов использует цифровые подписи при распространении релизов из-за сложностей в управлении ключами, распространении открытых ключей и отзыва скомпрометированных ключей. Для того чтобы верификация имела смысл также требуется организовать надёжные и безопасный процесс распространения открытых ключей и контрольных сумм. Даже при наличии цифровой подписи многие пользователи игнорируют проверку, так как необходимо потратить время на изучение процесса верификации и понять какой ключ заслуживает доверия.

Sigstore преподносится как аналог Let’s Encrypt для кода, предоставляющий сертификаты для заверения кода цифровыми подписями и инструментарий для автоматизации проверки. При помощи Sigstore разработчики смогут формировать цифровые подписи для связанных с приложением артефактов, таких как файлы с релизами, образы контейнеров, манифесты и исполняемые файлы. Особенностью Sigstore является то, что используемый для подписи материал отражается в защищённом от внесения изменений публичном логе, который можно использовать для проверки и аудита.

Вместо постоянных ключей в Sigstore применяются короткоживущие эфемерные ключи, которые генерируются на основе полномочий, подтверждённых провайдерами OpenID Connect (на момент генерации ключей для цифровой подписи разработчик идентифицирует себя через провайдера OpenID с привязкой к email). Подлинность ключей проверяется по публичному централизованному логу, который позволяет убедиться, что автор подписи именно тот, за кого себя выдаёт и подпись сформирована тем же участником, что отвечал за прошлые релизы.

Sigstore предоставляет как готовый сервис, которым уже можно пользоваться, так и набор инструментов, позволяющих развернуть аналогичные сервисы на своём оборудовании. Сервис бесплатен для всех разработчиков и поставщиков ПО, и развёрнут на нейтральной площадке — Linux Foundation. Все компоненты сервиса являются открытыми, написаны на языке Go и распространяются под лицензией Apache 2.0.

Из развиваемых компонентов можно отметить:

  • Rekor — реализация лога для хранения заверенных цифровыми подписями метаданных, отражающих информацию о проектах. Для обеспечения целостности и защиты от искажения данных задним числом применяется древовидная структура «Дерево Меркла» (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы, благодаря совместному (древовидному) хешированию. Имея конечный хэш пользователь может удостовериться в корректности всей истории операций, а также в корректности прошлых состояний БД (корневой проверочный хэш нового состояния базы вычисляется с учётом прошлого состояния). Для верификации и добавления новых записей предоставляется Restful API, а также cli-интерфейс.
  • Fulcio (SigStore WebPKI) — система для создания удостоверяющих центров (Root-CA), выдающих короткоживущие сертификаты на основе email, аутентифицированного через OpenID Connect. Время жизни сертификата составляет 20 мину, за которые разработчик должен успеть сформировать цифровую подпись (если в дальнейшем сертификат попадёт к руки злоумышленника, то он уже будет просрочен).
  • Сosign (Container Signing) — инструментарий для формирования подписей к контейнерам, проверки подписей и размещения подписанных контейнеров в репозиториях, совместимых с OCI (Open Container Initiative).