Red Hat и Google представили Sigstore, сервис для криптографической верификации кода

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

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

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

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

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

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

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

  • Rekor – реализация лога для хранения заверенных цифровыми подписями метаданных, отражающих информацию о проектах. Для обеспечения целостности и защиты от искажения данных задним числом применяется древовидная структура “Дерево Меркла” (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы, благодаря совместному (древовидному) хешированию. Имея конечный хэш пользователь может удостовериться в корректности всей истории операций, а также в корректности прошлых состояний БД (корневой проверочный хэш нового состояния базы вычисляется с учётом прошлого состояния). Для верификации и добавления новых записей предоставляется Restful API, а также cli-интерфейс.
  • Fulcio (SigStore WebPKI) – система для создания удостоверяющих центров (Root-CA), выдающих короткоживущие сертификаты на основе email, аутентифицированного через OpenID Connect. Время жизни сертификата составляет 20 мину, за которые разработчик должен успеть сформировать цифровую подпись (если в дальнейшем сертификат попадёт к руки злоумышленника, то он уже будет просрочен).
  • [[https://github.com/sigstore/cosign]] (Container Signing) – инструментарий для формирования подписей к контейнерам, проверки подписей и размещения подписанных контейнеров в репозиториях, совместимых с OCI (Open Container Initiative).

Release. Ссылка here.