Все записи

7 мин чтения

Proof of Existence против Sigstore: нужны ли вам оба?

Sigstore подписывает программные артефакты и публично фиксирует это событие в журнале; Label 309 добавляет независимую блокчейн-привязку во времени поверх всех ваших данных о релизе. Они решают разные задачи и хорошо работают вместе.

Sigstore и Proof of Existence на самом деле не конкуренты. Sigstore отвечает на вопрос: кто подписал этот программный артефакт и зафиксировано ли событие подписания в публичном журнале? Label 309 отвечает на другой: существовали ли эти конкретные байты к определённому публичному моменту времени, причём так, что это можно подтвердить, не доверяя ни одному отдельному сервису? Большинству команд разработки надёжнее всего использовать оба инструмента сразу: подписывайте и фиксируйте релизы через Sigstore, а затем закрепляйте данные о релизе в Label 309.

Sigstore — это экосистема подписания ПО и прозрачности. Label 309 закрепляет в Cardano хеши содержимого, манифесты, запечатанные файлы или корень Merkle, чтобы любой мог позже подтвердить, что эти данные существовали к определённому времени блока, — используя только транзакцию и публичный обозреватель блокчейна, без участия сервера издателя.

Что такое Sigstore?

Sigstore — это экосистема с открытым исходным кодом для подписания артефактов цепочки поставок ПО и записи событий подписания в публичный журнал.

Её распространённый бесключевой рабочий процесс использует идентичность OpenID Connect (OIDC), краткоживущий сертификат, выпущенный Fulcio, подпись, созданную на стороне клиента, и запись в журнале прозрачности Rekor. Смысл в том, чтобы упростить подписание артефактов, сохраняя при этом проверяемую публичную запись о том, кто и что подписал.

Sigstore хорошо подходит для:

  • образов контейнеров;
  • бинарных файлов и пакетов;
  • программных ведомостей материалов (SBOM);
  • подтверждений происхождения;
  • процессов CI/CD и подписания релизов;
  • проверки того, что артефакт подписан ожидаемой идентичностью.

Он создан для доверия в цепочке поставок ПО.

Что такое Label 309?

Label 309 — это открытый, не зависящий от вендора стандарт для записей Proof of Existence в Cardano. Предложение подано в процесс Cardano CIP и сейчас рассматривается редакторами CIP; идентификатор в блокчейне — метка метаданных 309.

Запись Label 309 может зафиксировать один или несколько хешей содержимого, корень Merkle над множеством файлов, необязательные подписи уровня записи, запечатанные данные, адресованные ключам получателей, и URI контентно-адресуемого хранилища. Основное подтверждение проверяется независимо — на основе транзакции Cardano и проверяемых байтов, без аккаунта, без входа в систему и без зависимости от какого бы то ни было отдельного поставщика.

Для команд разработки это делает его полезным для закрепления данных о релизе:

  • дайджестов артефактов;
  • бандлов Sigstore;
  • утверждений происхождения SLSA и in-toto;
  • SBOM;
  • манифестов релиза;
  • журналов сборки и результатов тестов;
  • свидетельств об инцидентах.

Это публичный слой фиксации с метками времени.

В чём же реальная разница?

Sigstore отвечает на вопросы об идентичности и подписании для ПО. Label 309 отвечает на вопросы о существовании и времени для любых байтов.

Sigstore помогает ответить:

  • Был ли подписан этот образ контейнера?
  • Какая идентичность OIDC была привязана к сертификату подписания?
  • Зафиксировано ли событие подписания в журнале прозрачности?
  • Можно ли проверить подпись артефакта?
  • Соответствует ли это моей политике доверенных подписантов?

Label 309 помогает ответить:

  • Существовал ли этот дайджест артефакта к данному времени блока Cardano?
  • Входил ли этот SBOM в зафиксированные данные о релизе?
  • Существовал ли этот манифест релиза до инцидента?
  • Подписала ли запись известная идентичность проекта (по желанию)?
  • Сможет ли получатель позже расшифровать запечатанный пакет свидетельств?

Эти два набора вопросов скорее дополняют друг друга, чем пересекаются.

Разве Rekor уже не делает это?

Если вы используете Sigstore — используйте Rekor: для своей задачи это правильный инструмент.

Rekor — это журнал прозрачности для подписей и метаданных ПО, спроектированный так, чтобы события подписания было легко находить и проверять. Документация Sigstore описывает его как журнал, доступный только для добавления и устойчивый к изменениям, за согласованностью которого могут следить аудиторы: цель устройства в том, чтобы любая попытка изменить или удалить запись была обнаружимой, а не проходила незаметно.

Label 309 не заменяет Rekor. Он даёт другой вид привязки:

  • публичную метку времени, укоренённую в консенсусе Cardano, а не в журнале, которым управляет сервис;
  • определённую схему записи под меткой метаданных 309;
  • необязательное запечатанное сохранение чувствительных свидетельств;
  • доставку конкретным получателям;
  • пакетирование Merkle для больших наборов свидетельств;
  • проверку, которая не зависит от того, остаётся ли какой-то конкретный поставщик в сети.

Если у релиза уже есть свидетельства Sigstore — закрепите их. Не выбрасывайте их.

Как выглядел бы совместный рабочий процесс?

Конвейер CI/CD может собрать папку с данными о релизе, а затем зафиксировать её.

В этой папке могут лежать манифест релиза, дайджесты артефактов, подписи или бандлы Cosign, ссылки на записи Rekor, происхождение SLSA, утверждения in-toto, SBOM, журналы сборки, отчёты о тестах и манифесты развёртывания.

Конвейер хеширует каждый файл, строит дерево Merkle и публикует одну запись Label 309 с корнем Merkle. Поскольку корень — это единственное значение длиной 32 байта, одна транзакция может заменить собой сколь угодно большой набор свидетельств; доказательство включения затем показывает, что любой конкретный файл входил в этот корень. Запись также может нести необязательную подпись идентичности проекта или компании. О том, как свернуть множество файлов в один корень, читайте в статье одна запись для тысяч файлов; о сквозном шаблоне конвейера — в статье закрепление данных о сборке в CI/CD.

Позже аудитор проверяет две независимые вещи:

  • Sigstore — кто что подписал, под какой идентичностью и в каком контексте журнала прозрачности;
  • Label 309 — какой набор свидетельств существовал к публичному времени Cardano.

Проверяет ли Label 309 подпись ПО?

Нет. Label 309 не знает, действительна ли подпись Cosign, доверена ли идентичность OIDC, выполнена ли политика и соответствует ли сборка ожиданиям SLSA.

Подтвердить он может лишь одно: что файл подписи, бандл, утверждение, SBOM или манифест релиза существовали к публичному моменту времени. Инструменты цепочки поставок ПО по-прежнему проверяют собственные форматы по собственным правилам.

Такое разделение полезно. Proof of Existence не должен притворяться движком политик подписания ПО.

Сохраняет ли Sigstore весь ваш набор свидетельств?

Сам по себе — нет. Sigstore сосредоточен на подписании и прозрачности для программных артефактов. Реальному процессу релиза часто также нужно сохранить журналы сборки, SBOM, отчёты о тестах, манифесты развёртывания, хронологию инцидентов и приватные пакеты свидетельств.

Label 309 может зафиксировать все эти материалы как один набор. Если часть материалов чувствительна, они могут остаться приватными и быть зафиксированными через корень Merkle без публикации содержимого — или запечатаны так, что шифротекст лежит в контентно-адресуемом хранилище, а расшифровать его может только владелец ключа. Запечатанная запись сохраняет открытый текст читаемым только для предполагаемых получателей; сама по себе она не гарантирует анонимности, и получатель всё равно может раскрыть открытый текст после расшифровки.

Это делает Label 309 полезным для аудита, реагирования на инциденты, закупок, проверок безопасности со стороны клиентов и долгосрочного хранения данных о релизах.

Когда стоит использовать Sigstore?

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

Sigstore — надёжный выбор по умолчанию для современного подписания ПО.

Когда стоит использовать Label 309?

Используйте Label 309, когда вам нужна публичная фиксация с меткой времени вокруг свидетельств — закрепить манифесты релиза, подтвердить, что SBOM существовал до раскрытия уязвимости, зафиксировать корень Merkle над набором свидетельств о релизе, сохранить запечатанные материалы об инциденте, подтвердить набор артефактов, переданных клиенту, или сохранить подтверждение, которое не зависит от того, остаётся ли в сети CI-поставщик или панель реестра артефактов.

Label 309 не заменяет подписание. Это привязка во времени и формат фиксации свидетельств. CLI cardanowall с открытым исходным кодом создан именно для такой автоматизации: он не зависит от шлюза и работает напрямую с сидом, поэтому встраивается в конвейер без участия сайта. Полный процесс описан в статье использование CLI в автоматизации.

Чего не доказывает ни одна из систем?

Ни одна из систем не доказывает, что ПО безопасно.

Подписанный артефакт всё равно может содержать уязвимость. SBOM с меткой времени может быть неполным. Журнал сборки может документировать конвейер, который был настроен неправильно. Релиз может быть хорошо задокументирован и всё равно небезопасен.

Sigstore и Label 309 помогают подтвердить целостность, идентичность, прозрачность, время и непрерывность свидетельств. Сама же безопасность по-прежнему зависит от ревью исходного кода, изоляции сборки, управления зависимостями, тестирования, реагирования на уязвимости и операционного контроля. Об общих границах того, что подтверждение может и не может установить, читайте в статье что подтверждение не доказывает.

Коротко

Используйте Sigstore, чтобы подписывать ПО и делать события подписания прозрачными. Используйте Label 309, чтобы закрепить данные о релизе — манифесты, журналы и утверждения — к публичному времени Cardano, которое ни один вендор не сможет незаметно сдвинуть. Вместе они делают историю вашего ПО гораздо проще для последующей проверки.

Что почитать дальше

proof-of-existencesigstoresoftware-supply-chain