- 首页/SPDX v3.0解读
SPDX v3.0解读
2025-01-24 17:00:00
导语
SPDX是全球开源SBOM主流标准之一,也是Linux Foundation发展的重点标准之一。为方便广大中国开发者和用户掌握并借鉴最新的开源软件物料标准,近期,开放原子开源基金会旗下源译识翻译社区与openEuler社区联合翻译了SPDX v3.0.1,并在openEuler Summit 2024上由SPDX大使Gopi先生发布中译本。欢迎您通过translation@openatom.io与我们联系!
Gopi Krishnan Rajbahadur, Co-Lead of SPDX AI and Dataset Profile, Ambassador
01. 评述
-1-
SPDX 3.0:新场景、新特性、新方向
周明辉 北京大学
广泛的软件复用形成了错综复杂的全球软件依赖网络,称为软件供应链。任何一个节点出现风险,都会威胁到它的所有下游节点。因此,为了审计软件依赖、防范供应链风险,SBOM(Software Bill of Materials,软件物料清单)应运而生。SBOM通过详细记录软件依赖的所有组件及其信息,成为解决供应链安全问题、提高供应链透明度的重要手段之一1。
业内定义了多种SBOM标准,其中SPDX 是目前全球应用最为广泛的标准之一,由Linux基金会下的SPDX工作组负责维护和迭代。为解决复杂软件供应链中的许可证合规性问题,Linux基金会于2011年提出了初版SPDX标准2。经过十余年演进,SPDX在全球范围内得到广泛认可和采用,2021年SPDX成为国际标准(ISO/IEC 5962:2021)。
然而,随着人机物融合泛在场景以及人工智能的兴起,原有SPDX标准在新形态、新场景中显得捉襟见肘;其结构繁冗、缺乏灵活性亦受从业者诟病3。为了应对这些挑战,SPDX工作组于2024年4月推出了SPDX 3.0标准 ,并同时将SPDX的全称由“Software Package Data eXchange”变更为“System Package Data eXchange”,表明简化后的SPDX标准更加体系化和多元化。
SPDX 3.0 的变更主要如下:
1. 支持多元化的应用场景
以往的SPDX标准主要集中于管理软件依赖关系,记录软件许可证信息以及其他与软件构成相关的详细元数据。正如SPDX3.0将其名称中的“软件”改为了“系统”所表明的,SPDX3.0具备更广泛的适用性,新增了对软件构建流程(SPDX Build)、数据集(SPDX Dataset)、AI模型(SPDX AI)的支持。新标准不仅增强了供应链安全领域对漏洞管理和构建过程的关注,还首次引入了对AI模型及其相关依赖关系的描述。在AI模型和数据集部分,SPDX 3.0突出了AI制品与传统软件之间的区别——在模型的名称、超参数、模型类型等元数据之外,SPDX3.0还包含对模型特有依赖关系(例如微调、训练数据集)的建模和描述。这为应对人工智能时代的新型供应链风险提供了重要手段。例如,记录模型训练所使用的数据集,模型用户与开发者可以据此溯源训练数据来源和数据质量,从而预防、缓解数据投毒等新型AI模型攻击方式。
2. 模块化的组织结构设计
在组织结构上,SPDX 3.0引入了更加灵活的模块化设计——除了“核心模型”之外,其他模块都是可选的4。这一设计使得SPDX3.0能更好的适配各种应用场景,正如SPDX技术团队所言,“我们得到的反馈表明,有些时候用户只关心安全性,有些时候他们只关心许可证” 5。新标准中,所有的软件包、文件、代码片段和AI模型等都被视为SBOM中的独立“元素”,一份SPDX文档可以视作是由这些元素组成的集合,而这些元素也可以独立于SPDX文档被外部文档等引用;SBOM元素也可以逐个增量更新,不需要一次性更新整个SPDX文档。这种“低耦合”的设计理念,大幅提升了SPDX文档的灵活性和可扩展性,避免了SBOM文档的臃肿,为SBOM文档的查询、索引、维护、更新提供了巨大的便利。
SPDX 的未来探索方向:
尽管SPDX 3.0对AI和Dataset的引入提供了积极探索,但其实效仍待探究。SPDX 3.0在设计AI和Dataset相关的字段时,参考了HuggingFace的ModelCard 格式;然而,ModelCard中的数据字段往往没有严格的格式规范,采用了开放式文本声明,SPDX 3.0的部分设计亦继承了这一点——例如“应用领域”这一字段的定义是“人工智能模型预期可以应用的领域范围,自由格式文本”6。自然语言描述难以保证SBOM的机器可读性,这对SBOM的自动化生成、分析、集成而言是致命的。应对这一挑战,一个可行的思路是定义一个标识符列表(例如SPDX许可证列表7或是ACM类目8),对于例外情况允许自然语言描述。
SPDX 3.0的发布标志着SBOM标准进入了一个新的发展阶段,其模块化设计和对多元化应用场景的支持,为进一步提高软件供应链安全性提供了重要保障。尽管AI与Dataset安全管理的元数据结构仍需进一步细化,SPDX 3.0无疑为现代软件开发安全奠定了坚实的基础,并为全球尤其是涉及先进技术的供应链安全管理指明了方向。随着标准的不断迭代,我们可以期待它在应对新型供应链安全风险,尤其是人工智能供应链风险时,发挥越来越重要的作用。SPDX 能够记录模型的设计、能力和约束,并支持对数据集等进行供应链溯源,能够保障各方在信息透明、可追溯的基础上建立信任和进行技术选型,促进各方对人工智能技术的负责任使用,推动人工智能技术的安全性、透明性与可持续发展9。
参考文献:
- T. N. Telecommunications and I. Administration, “The minimum elements for a software bill of materials (sbom),” 2021. [Online]. Available: https://www.ntia.doc.gov/files/ntia/publications/sbom_minimum_elements_report.pdf
- Bridgwater, Adrian (August 19, 2011). "Linux Foundation eases open source licensing woes". Computer Weekly. Retrieved 2021-08-13.
- T. Stalnaker, N. Wintersgill, O. Chaparro, M. Di Penta, D. M. German, and D. Poshyvanyk, “Boms away! inside the minds of stakeholders: A comprehensive study of bills of materials for software systems,” in Proceedings of the 46th IEEE/ACM International Conference on Software Engineering, 2024, pp. 1–13
- https://fossa.com/blog/spdx-3-0/
- https://www.brighttalk.com/webcast/17752/5847522
- https://spdx.github.io/spdx-spec/v3.0.1/model/AI/Properties/domain/
- https://spdx.org/licenses/
- https://dl.acm.org/ccs
- A. S. Karen Bennet, Gopi Krishnan Rajbahadur and K. Stewart, “Implementing ai bill of materials (ai bom) with spdx 3.0,” 2024. [Online]. Available: https://www.linuxfoundation.org/hubfs/LF%20Research/lfr_spdx_aibom_102524a.pdf
-2-
SPDX3.0与openEuler SBOM实践
罗钰凯 openEuler安全委员会
2021年12月7日曝出的Log4j核弹级漏洞,让很多企业即使投入非常大的人力物力紧急排查,在漏洞爆发后很长一段时间内仍然无法准确确定自己的软件是否受这个漏洞的影响。如果对于每一个软件,都有一个准确和标准的成分清单,那么我们就可以快速判断我们到底有没有受影响以及影响的组件,这个成分清单就是业界正在积极拥抱的SBOM(软件物料清单)。
Linux基金会旗下的SPDX项目为业界提供了一种广泛使用的SBOM披露格式规范,用于呈现软件的基本信息(如软件名、版本号及供应商)、软件依赖、许可证和漏洞等信息。最新发布的SPDX3.0版本,将其名称中的“软件”改为“系统”,标志着SPDX3.0具备更广泛的适用性,新增了对软件构建流程(Build)、数据集(Dataset)、AI模型的支持。随着人工智能的兴起,AI模型和数据集的安全风险越来越受到业界的关注,SPDX3.0不仅包含模型的名称、超参数、模型类型等元数据,还包含模型依赖关系(例如微调、训练数据集)的描述,在AI时代能够让训练数据和模型成分更加透明化和可追溯。
openEuler开源社区积极拥抱软件供应链安全的潮流,目前已基于SPDX披露软件基本信息和依赖关系1,并同时支持ISO镜像和rpm包维度的SBOM文件披露,在漏洞治理方面,openEuler社区已具备基于SBOM来追溯组件漏洞和许可证信息的能力,未来面向智算时代,openEuler也会逐步探索和支持AI模型和数据集的描述。
openEuler SBOM解决方案架构全景如下图(图1)所示,相关工具已开源到openEuler社区,首先基于构建流水线生成软件包的repodata,使用sbom-tools开源工具解析repodata生成SBOM元数据,并通过sbom-service存储到SBOM信息库,再结合License信息库和漏洞信息库,最后以sbom-website看板的形式展示软件成分、依赖关系、License信息和漏洞状态等相关信息(图2)。
图1:解决方案架构全景
图2:SBOM看板
1. https://repo.openeuler.org/security/data/sbom/
-3-
SPDX 3.0 相时而“动” 迎接AI新时代
刘伟 开放原子开源基金会
开源许可证规定了软件的知识产权授权及使用和修改应遵从的条件,是开源软件许可不可或缺的重要元素。但是,在开源和共享软件开发环境中,不同的开源项目使用的许可证并不尽相同,软件供应链中的每一方都要面临繁杂的许可证管理问题。为解决该问题,Linux基金会于2010年组织起草了SPDX规范(Software Package Data eXchange,软件包数据交换),通过为每个许可证设置唯一的标识符并以机器和人类均可读的格式表述许可信息的元数据(包括许可证名称、版本、依赖项及其他属性等)。开发者、法务/律师可以运用自动化工具便捷识别、追踪软件包的许可信息,从而分析和验证许可合规性。SPDX目前已在全球广泛使用,并被公认为安全性、许可证合规性和其他软件供应链工件的国际开放标准。
Linux基金会自2011年发布SPDX1.0后,又对其进行过多次版本迭代,并于2024年发布SPDX 3.0新版本。SPDX 3.0的文档结构采用更加灵活的模块化设计,并主要分为以下模块:1)必需的核心模型(包括文档创建信息等基础数据字段);2)非必需但推荐绝大多数SBOM使用的软件配置文件(包括软件包版本、软件包 URL、许可声明等字段),及3)可以根据需要选用的其他配置文件。
为更好地适用于新兴的AI和数据等SBOM场景,在本次版本迭代中,SPDX 3.0引入了人工智能配置文件(下称AI配置文件)、数据集配置文件等新增配置文件。其中,AI配置文件设置有“敏感个人信息”“数据预处理步骤”等新增字段,并包括用于构建或部署AI系统的软件框架、库和其他组件及其版本、许可证和其他有用的安全参考等信息。通过该新增AI配置文件可以传递AI系统相关的软件组件和依赖项的信息,促进SPDX工具生成的AI模型信息的交换。
数据集配置文件设置有“数据集类型”“数据集大小”和“数据集可用性”等新增字段,并包括数据集名称、版本、来源、相关元数据、许可信息以及其他相关属性等信息。通过该新增数据集配置文件可以传递关于用于软件或训练/测试、AI软件包的数据集的信息,帮助用户更高效地理解和分析数据,促进SPDX工具生成的数据集信息的交换。
另外,在该最新发布的版本中,SPDX的英文全称也由Software Package Data eXchange变为System Package Data eXchange(系统包数据交换),这也体现了其适用范围针对特定SBOM(Software Bill of Material,软件物料清单)用例和人工智能和数据等SBOM场景扩展的新特征。
02. 中译本
SPDX 3.0.1原文地址
中译本归档地址
https://atomgit.com/translation/spdx-CN
请您注意,中译本于24年10月完成,spdx已持续演进,最新版请以spdx官网为准。
我们对参与SPDX v3.0.1文档翻译和检视的各位贡献者(按姓氏首字母排序)致以诚挚感谢:陈锐昕(openEuler)、方晓(美的集团)、高亮、郭雪雯、何春燕(openEuler)、康宝丹(openEuler)、刘鹏(openEuler)、刘珊(openEuler)、欧轩琦(中国赛宝实验室)、王静(openEuler)、文静(国家工业信息安全发展研究中心)、薛杨洁、张维瑜(openEuler)、郑振宇(openEuler)、周舟(美的集团)
扩展阅读
- spdx官网:https://spdx.dev/
- openEuler开源项目:https://www.openeuler.org/zh/
- openEuler G11N SIG仓库:https://gitee.com/openeuler/globalization
- SBOM标准社区:https://sbom.atomgit.com/