shiftleftcyber/ai-bom
GitHub: shiftleftcyber/ai-bom
提供 AI 系统软件物料清单的标准 JSON 模式与示例,帮助组织管理 AI 组件依赖关系并验证其完整性。
Stars: 0 | Forks: 0
# AI SBOM 模式与示例
本仓库包含一个 AI SBOM JSON 模式,该模式源自 `SBOM-for-AI_minimum-elements.pdf` 中定义的最小元素簇。
已发布的文档和模式 URL 可在以下位置获取:
[https://shiftleftcyber.io/ai-bom/](https://shiftleftcyber.io/ai-bom/)
源 PDF 也可通过以下链接直接下载:
[https://shiftleftcyber.io/ai-bom/assets/SBOM-for-AI_minimum-elements.pdf](https://shiftleftcyber.io/ai-bom/assets/SBOM-for-AI_minimum-elements.pdf)
## 文件
- `ai-sbom.schema.json`:AI SBOM 的草案 2020-12 JSON 模式。
- `docs/schemas/ai-sbom-1.0.0.schema.json`:GitHub Pages 的不可变版本化模式 URL。
- `docs/schemas/ai-sbom.schema.json`:GitHub Pages 的最新模式 URL。
- `docs/assets/SBOM-for-AI_minimum-elements.pdf`:GitHub Pages 托管的源 PDF 副本。
- `examples/valid/customer-support-ai-sbom.json`:客户支持助手的有效 SBOM。
- `examples/valid/medical-triage-ai-sbom.json`:医疗分诊推荐系统的有效 SBOM。
- `examples/invalid/missing-required-metadata.json`:无效,因为缺少必需的元数据和必需的嵌套簇字段。它故意省略了 `sbomTimestamp`;`sbomAuthorSignature` 是可选字段。
- `examples/invalid/bad-types-and-enums.json`:无效,因为多个字段使用了错误的类型、无效的枚举值,或者数组为空但要求至少有一项。
- `examples/invalid/non-jsf-signature.json`:无效,因为 `metadata.sbomAuthorSignature` 不符合 JSF signaturecore 结构。
- `examples/invalid/unknown-extra-properties.json`:无效,因为不允许额外属性,并且模型哈希算法/值无效。
## 源映射该模式对 PDF 中描述的七个簇进行了建模:
- 元数据
- 系统级属性
- 模型
- 数据集属性
- 基础设施
- 安全属性
- 关键性能指标
为了自动化,该模式要求 `metadata.bomFormat` 具有固定值 `AI-SBOM`。这为工具提供了一个小的辨别字段,用于识别此格式,而无需依赖文件名。
## 作者签名
可选的 `metadata.sbomAuthorSignature` 字段使用 JSON Signature Format (JSF) 的 `signaturecore` 结构。CycloneDX 也使用 JSF 进行封装的 JSON 签名,因此采用它为 AI SBOM 的生产者和消费者提供了熟悉的签名模型,而无需创建新的签名格式。
该模式目前仅支持简单的 JSF `signaturecore` 形式。它还不支持 JSF 的 `signers` 多重签名或 `chain` 签名链对象。核心字段如下:
- `algorithm`:JSF/JWA 签名算法,例如 `ES256`、`RS256`、`PS256`、`Ed25519`,或专有算法的 URI。
- `value`:base64url 编码的签名值。
- `keyId`:可选的密钥标识符,用于在信任存储、密钥管理系统、JWKS 端点或内部注册表中查找。
- `publicKey`:可选的内嵌公钥,支持自包含的密码验证。
- `certificatePath`:可选的证书链材料,适用于需要通过 X.509 信任锚进行身份绑定的工作流。
该签名遵循 JSF 签名语义。对于简单签名,签名的载荷是经过 JSON Canonicalization Scheme 处理后的整个 AI SBOM JSON 文档,在规范化之前仅移除 `metadata.sbomAuthorSignature.value`。其他签名字段,包括 `algorithm`、`keyId`、`publicKey` 和 `certificatePath`,仍然是签名载荷的一部分。
嵌入 `publicKey` 可以简化密码验证,但它本身并不能证明该密钥属于声称的 SBOM 作者。验证者仍然需要基于 `keyId`、`certificatePath`、带外信任存储或组织策略做出信任决策。如果使用了 JSF 的 `excludes`,验证者应根据策略拒绝意外的排除项。
## 使用模式
当您需要可重现的验证时,请使用不可变的版本化 URL:
[https://shiftleftcyber.io/ai-bom/schemas/ai-sbom-1.0.0.schema.json](https://shiftleftcyber.io/ai-bom/schemas/ai-sbom-1.0.0.schema.json)
当您有意使用最新的兼容模式时,请使用最新 URL:
[https://shiftleftcyber.io/ai-bom/schemas/ai-sbom.schema.json](https://shiftleftcyber.io/ai-bom/schemas/ai-sbom.schema.json)
您也可以直接固定到 Git 标签:
[https://raw.githubusercontent.com/shiftleftcyber/ai-bom/v1.0.0/ai-sbom.schema.json](https://raw.githubusercontent.com/shiftleftcyber/ai-bom/v1.0.0/ai-sbom.schema.json)
该模式有意严格限制 `additionalProperties: false`,以便不符合要求的示例可预测地失败,但生命周期相关的字段(如签名、哈希、许可证、安全证据、基础设施细节和 KPI)是可选的。
## 许可证
本项目采用 [Apache License 2.0](LICENSE) 许可。选择 Apache-2.0 是因为它与 MIT 一样宽松,同时包含明确的专利授权,这对于以互操作性为中心的模式和相关工具非常有用。
标签:AI SBOM, Homebrew安装, JSON Schema, KPI, SBOM, 人工智能, 元数据, 合规, 基础设施, 安全属性, 文档, 标准化, 模型, 用户模式Hook绕过, 硬件无关, 示例, 网络安全, 网络安全研究, 规范, 跌倒检测, 软件物料清单, 隐私保护, 验证