二種類の認証
コンピューターサイエンスにおける最も古い問題を、トースターを例に説明。
キーポイント
オープンソースにおける「attestation」という用語が、全く異なる2つの意味で使われている混乱状況
一方はnpm/PyPIのビルド証明(Sigstoreによる暗号学的証明)、他方はEUサイバーレジリエンス法に基づくセキュリティ認証(プロジェクト衛生チェックリスト)
用語の混乱が規制遵守(CRA)と実際のオープンソース開発の間で摩擦を生んでいる実例
SBOM生成時の「supplier」フィールド誤記入など、用語の誤解が実務上の問題を引き起こしている
影響分析・編集コメントを表示
影響分析
この記事は、オープンソースエコシステムにおける用語の多義性が、技術実装と規制遵守の間で深刻な混乱を引き起こしている現状を明らかにしている。特にEUの新規制(CRA)が従来の製品安全規制の枠組みをソフトウェアに適用しようとする中で、用語の不一致が実務上の摩擦を生み、オープンソース維持者に不当な負担を課す可能性を示唆している。
編集コメント
技術用語と規制用語の乖離がもたらす実務上の混乱を鋭く指摘した分析記事。AIシステムの依存関係管理においても同様の問題が発生する可能性が高い。
「アテステーション(証明、認証)」という言葉は現在、オープンソースの世界で互いに関連のない2つの意味を持っており、それぞれの意味でこの言葉を使う人々の間では、ほとんど対話が行われていないようです。
npmとPyPIはともに、過去2年間にSigstoreを使用したビルドプロベナンス(出所証明)のアテステーションを導入しました。GitHub Actionsで信頼できる公開が設定された状態でパッケージを公開すると、CI環境がin-totoアテステーションに署名します。これは成果物を、それをビルドしたソースリポジトリ、コミット、ワークフローに紐付けるもので、その署名は公開の透明性ログに記録されます。ダウンストリームの誰もが、レジストリを信頼することなくこの署名を検証できます。PyPIでは2024年後半から、信頼できる公開者に対してこの機能がデフォルトで有効になっており、npmは自動的にプロベナンスを生成します。公開者側のコストはほぼゼロです。私は最近、これがより広範な再現可能ビルドの構想にどのように位置づくかについて書きました。
一方、トースターのような製品向けに書かれた製品安全規制から発展したEUサイバーレジリエンス法(CRA)は、「オープンソースの管理者」を法的概念として導入し、第25条は欧州委員会に対して、それらの管理者向けの自主的なセキュリティアテステーションプログラムを作成する権限を与えています。今年のFOSDEMで、Æva BlackはEclipse Foundationとともに、そのようなプログラムがどのようなものになり得るかについての取り組みを発表しました。提案されているモデルでは、製造業者が管理者に資金を提供し、管理者は自分たちが支援するプロジェクトについてのアテステーションを発行します。段階的アプローチが採用されており、軽度のティアでは、プロジェクトが機能テスト、脆弱性報告の連絡先、サポート終了ポリシーを有しているかどうかを尋ねます。Ævaは、メンテナーが数分で記入できると指摘しました。つまり、これはプロジェクトの健全性に関するチェックリストであり、人間が記入するもので、CONTRIBUTING.mdが存在するかどうかといったことを証明するものです。これは、透明性レジャーに記録される暗号学的証明とは、両方とも「アテステーション」と呼ばれる以外、ほとんど共通点がありません。
OpenSSFのMadalin Neagは1月に、管理者によるアテステーションが、それが対象とするプロジェクトとどのように関係するかについての詳細を考察する優れた記事を書きました。管理者は技術的な決定やリリースを管理するわけではなく、ある時点でのアテステーションは、製造業者がコンポーネントを統合する時点での状態を反映していない可能性があるからです。これらは、授権法が具体化するにつれて解決する必要がある設計上の問題です。
これは、命名がオープンソースとコンプライアンスの境界で混乱を引き起こした初めての例ではありません。CRA自体、EU市場にソフトウェアを提供する者をすべて「製造業者」と呼んでいますが、これはトースターや電動工具の世界からの製品安全の用語です。Daniel Stenbergは、ある企業からコンプライアンスに関する質問票を送られ、curlにおけるLog4jの有無を説明するよう求められたとき、この枠組みが何を生み出すかを味わいました。その企業は、Javaを一度も使用したことのないプロジェクトに対して、SLA義務を負うベンダーとして彼を扱ったのです。
SPDXとCycloneDXの両方に、各コンポーネントの「供給者」フィールドがあり、SBOMジェネレーターは通常、メンテナーの名前をそこに記入します。しかし、メンテナーは消費者との契約関係がなく、商業的な意味での供給者ではありません。これらの言葉は、それらが描写する関係性に合わない法的な含意を帯びており、いったん標準や規制に成文化されてしまうと、元に戻すのは困難です。
私が考え続けているのは、信頼できる公開を有効にし、CIがすべてのリリースでSigstoreのプロベナンスを生成しているメンテナーが、その後、CRAのアテステーションプログラムについて、セキュリティポリシーを持っているかどうかを記入するフォームの記入を依頼するために、ある財団から連絡を受けるというシナリオです。暗号学的なアテステーションのインフラは既に存在し、既に機械検証可能なサプライチェーンメタデータを大規模に生成しています。また、CSAFアドバイザリーやVEX文書のような継続的なシグナルは、ある時点でのスナップショットではなく、継続的なセキュリティ状況を提供します。第25条の授権法はまだ書かれておらず、委員会はまだ意見を受け付けています。両方のコミュニティがその前に意見を交換できれば、少なくともメンテナーが同じ名前の無関係な2つのことを扱わなくて済むようになるでしょう。
命名は難しいことですが、その名前が実際に何が整っているかについての前提を伴う場合、その重要性は特に増します。「証明済み」という言葉は、その内容が厳密かどうかに関わらず、厳密に聞こえます。「供給者」という言葉は、存在しない契約関係を暗示します。いったんこれらの言葉が標準や規制に入り込むと、ダウンストリームの人々はその言葉の意味だと思われるものに基づいてプロセスを構築し、後でそれらの前提を解きほぐすことは、最初から正しい名前を使うことよりもはるかに困難です。トースターの規制には、少なくともトースターが何であるかについて誰もが同意しているという利点があります。
原文を表示
The word “attestation” now means two unrelated things in open source, and the people using it in each sense don’t seem to be talking to each other much.
npm and PyPI have both shipped build provenance attestations using Sigstore over the past couple of years. When you publish a package from GitHub Actions with trusted publishing configured, the CI environment signs an in-toto attestation binding the artifact to the source repository, commit, and workflow that built it, and the signature goes into a public transparency log that anyone downstream can verify without trusting the registry. PyPI has had this on by default for trusted publishers since late 2024, npm generates provenance automatically, and the cost to publishers is close to zero. I wrote about how this fits into the broader reproducible builds picture recently.
Meanwhile the EU Cyber Resilience Act, which grew out of product safety regulation originally written for things like toasters, introduced “open source stewards” as a legal concept, and Article 25 gives the European Commission power to create voluntary security attestation programmes for them. At FOSDEM this year, Æva Black presented work with the Eclipse Foundation on what such a programme might look like. The proposed model has manufacturers funding stewards who issue attestations about the projects they support, with a tiered approach where the light tier asks whether a project has functional tests, a vulnerability reporting contact, and an end-of-life policy. Æva noted a maintainer could fill it out in minutes. So this is a checklist about project hygiene, filled out by a human, attesting to things like whether a CONTRIBUTING.md exists, which has almost nothing in common with a cryptographic proof logged in a transparency ledger except that both are called attestations.
Madalin Neag at OpenSSF wrote an excellent piece in January working through the details of how steward attestations relate to the projects they cover, since stewards don’t control technical decisions or releases, and a point-in-time attestation may not reflect the state of a component by the time a manufacturer integrates it. These are the kind of design questions that need working out as the delegated act takes shape.
This isn’t the first time naming has caused confusion at the boundary between open source and compliance. The CRA itself calls anyone who places software on the EU market a “manufacturer,” which is product safety language from the world of toasters and power tools. Daniel Stenberg got a taste of what that framing produces when a company sent him a compliance questionnaire demanding he account for Log4j in curl, treating him as a vendor with SLA obligations for a project that has never used Java.
Both SPDX and CycloneDX have a “supplier” field for each component, and SBOM generators routinely fill it with the maintainer’s name, even though the maintainer has no contractual relationship with the consumer and is not a supplier in any commercial sense. These words carry legal connotations that don’t match the relationships they’re describing, and now that they’re codified in standards and regulation they’re difficult to undo.
What I keep thinking about is the maintainer who enables trusted publishing, whose CI generates Sigstore provenance on every release, and who then gets contacted by a foundation about a CRA attestation programme asking them to fill out a form about whether they have a security policy. The cryptographic attestation infrastructure already exists and already generates machine-verifiable supply chain metadata at scale, and continuous signals like CSAF advisories and VEX documents provide ongoing security posture rather than point-in-time snapshots. The Article 25 delegated act hasn’t been written yet and the Commission is still taking input. It would be nice if the two communities compared notes before then, if only so that maintainers don’t end up navigating two unrelated things with the same name.
Naming is hard, but it matters more than usual when the names carry assumptions about what’s actually in place. “Attested” sounds rigorous whether or not it is, and “supplier” implies a contractual relationship that doesn’t exist. Once these words are in standards and regulations, people downstream build processes around what they think the words mean, and unpicking those assumptions later is much harder than getting the names right in the first place. Toaster regulations at least have the advantage that everyone agrees on what a toaster is.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み