Компания Google сообщила о формировании первых стабильных выпусков компонентов, образующих проект Sigstore, который объявлен пригодным для создания рабочих внедрений. Sigstore развивает инструменты и сервисы для верификации программного обеспечения при помощи цифровых подписей и ведения публичного лога, подтверждающего подлинность изменений (transparency log). Проект развивается под эгидой некоммерческой организации Linux Foundation компаниями Google, Red Hat, Cisco, vmWare, GitHub и HP Enterprise при участии организации OpenSSF (Open Source Security Foundation) и университета Пердью.
Sigstore можно рассматривать как аналог Let’s Encrypt для кода, предоставляющий сертификаты для заверения кода цифровыми подписями и инструментарий для автоматизации проверки. При помощи Sigstore разработчики смогут формировать цифровые подписи для связанных с приложением артефактов, таких как файлы с релизами, образы контейнеров, манифесты и исполняемые файлы. Используемый для подписи материал отражается в защищённом от внесения изменений публичном логе, который можно использовать для проверки и аудита.
Вместо постоянных ключей в Sigstore применяются короткоживущие эфемерные ключи, которые генерируются на основе полномочий, подтверждённых провайдерами OpenID Connect (в момент генерации ключей, необходимых для создания цифровой подписи, разработчик идентифицирует себя через провайдера OpenID с привязкой к email). Подлинность ключей проверяется по публичному централизованному логу, который позволяет убедиться, что автор подписи именно тот, за кого себя выдаёт, и подпись сформирована тем же участником, что отвечал за прошлые релизы.
Готовность Sigstore к внедрению обусловлена формированием релизов двух ключевых компонентов – Rekor 1.0 и Fulcio 1.0, программные интерфейсы которых объявлены стабильными и впредь сохраняющими обратную совместимость. Компоненты сервиса написаны на языке Go и распространяются под лицензией Apache 2.0.
Компонент Rekor содержит реализацию лога для хранения заверенных цифровыми подписями метаданных, отражающих информацию о проектах. Для обеспечения целостности и защиты от искажения данных задним числом применяется древовидная структура “дерево Меркла” (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы благодаря совместному (древовидному) хешированию. Имея конечный хеш, пользователь может удостовериться в корректности всей истории операций, а также в корректности прошлых состояний БД (корневой проверочный хеш нового состояния базы вычисляется с учётом прошлого состояния). Для верификации и добавления новых записей предоставляется RESTful API, а также интерфейс командной строки.
Компонент Fulcio (SigStore WebPKI) включает систему для создания удостоверяющих центров (root CA), выдающих короткоживущие сертификаты на основе email, аутентифицированного через OpenID Connect. Время жизни сертификата составляет 20 минут, за которые разработчик должен успеть сформировать цифровую подпись (если в дальнейшем сертификат попадёт к руки злоумышленника, то он уже будет просрочен). Дополнительно проектом развивается инструментарий Сosign (Container Signing), предназначенный для формирования подписей к контейнерам, проверки подписей и размещения подписанных контейнеров в репозиториях, совместимых с OCI (Open Container Initiative).
Внедрение Sigstore даёт возможность повысить безопасность каналов распространения программ и защититься от атак, нацеленных на подмену библиотек и зависимостей (supply chain). Одной из ключевых проблем с безопасностью в открытом ПО является сложность проверки источника получения программы и верификации процесса сборки. Например, для проверки целостности релиза большинство проектов используют хеши, но часто необходимая для проверки подлинности информация хранится на незащищенных системах и в общих репозиториях с кодом, в результате компрометации которых атакующие могут подменить необходимые для верификации файлы и, не вызывая подозрений, внедрить вредоносные изменения.
Применение цифровых подписей для верификации релизов пока не получило повсеместного распространения из-за сложностей в управлении ключами, распространении открытых ключей и отзыве скомпрометированных ключей. Для того, чтобы верификация имела смысл дополнительно требуется организовать надёжный и безопасный процесс распространения открытых ключей и контрольных сумм. Даже при наличии цифровой подписи многие пользователи игнорируют проверку, так как необходимо потратить время на изучение процесса верификации и понять, какой ключ заслуживает доверия. Проект Sigstore пытается упросить и автоматизировать эти процессы, предоставив готовое и проверенное решение.