0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPDX v3.0解读

开放原子 来源:开放原子 2025-02-05 10:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导语

SPDX是全球开源SBOM主流标准之一,也是Linux Foundation发展的重点标准之一。为方便广大中国开发者和用户掌握并借鉴最新的开源软件物料标准,近期,开放原子开源基金会旗下源译识翻译社区openEuler社区联合翻译了SPDX v3.0.1,并在openEuler Summit 2024上由SPDX大使Gopi先生发布中译本。欢迎您通过translation@openatom.io与我们联系!

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标准主要集中于管理软件依赖关系,记录软件许可证信息以及其他与软件构成相关的详细元数据。正如SPDX 3.0将其名称中的“软件”改为了“系统”所表明的,SPDX 3.0具备更广泛的适用性,新增了对软件构建流程(SPDX Build)、数据集(SPDX Dataset)、AI模型(SPDX AI)的支持。新标准不仅增强了供应链安全领域对漏洞管理和构建过程的关注,还首次引入了对AI模型及其相关依赖关系的描述。在AI模型和数据集部分,SPDX 3.0突出了AI制品与传统软件之间的区别——在模型的名称、超参数、模型类型等元数据之外,SPDX 3.0还包含对模型特有依赖关系(例如微调、训练数据集)的建模和描述。这为应对人工智能时代的新型供应链风险提供了重要手段。例如,记录模型训练所使用的数据集,模型用户与开发者可以据此溯源训练数据来源和数据质量,从而预防、缓解数据投毒等新型AI模型攻击方式。

2. 模块化的组织结构设计

在组织结构上,SPDX 3.0引入了更加灵活的模块化设计——除了“核心模型”之外,其他模块都是可选的4。这一设计使得SPDX 3.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。

SPDX3.0与openEuler SBOM实践

罗钰凯 openEuler安全委员会

2021年12月7日曝出的Log4j核弹级漏洞,让很多企业即使投入非常大的人力物力紧急排查,在漏洞爆发后很长一段时间内仍然无法准确确定自己的软件是否受这个漏洞的影响。如果对于每一个软件,都有一个准确和标准的成分清单,那么我们就可以快速判断我们到底有没有受影响以及影响的组件,这个成分清单就是业界正在积极拥抱的SBOM(软件物料清单)。

Linux基金会旗下的SPDX项目为业界提供了一种广泛使用的SBOM披露格式规范,用于呈现软件的基本信息(如软件名、版本号及供应商)、软件依赖、许可证和漏洞等信息。最新发布的SPDX 3.0版本,将其名称中的“软件”改为“系统”,标志着SPDX 3.0具备更广泛的适用性,新增了对软件构建流程(Build)、数据集(Dataset)、AI模型的支持。随着人工智能的兴起,AI模型和数据集的安全风险越来越受到业界的关注,SPDX 3.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)。

acd3fed2-da32-11ef-9310-92fbcf53809c.png

图1:解决方案架构全景

ad01f8b4-da32-11ef-9310-92fbcf53809c.png

图2:SBOM看板

SPDX 3.0 相时而“动” 迎接AI新时代

开源许可证规定了软件的知识产权授权及使用和修改应遵从的条件,是开源软件许可不可或缺的重要元素。但是,在开源和共享软件开发环境中,不同的开源项目使用的许可证并不尽相同,软件供应链中的每一方都要面临繁杂的许可证管理问题。为解决该问题,Linux基金会于2010年组织起草了SPDX规范(Software Package Data eXchange,软件包数据交换),通过为每个许可证设置唯一的标识符并以机器和人类均可读的格式表述许可信息的元数据(包括许可证名称、版本、依赖项及其他属性等)。开发者、法务/律师可以运用自动化工具便捷识别、追踪软件包的许可信息,从而分析和验证许可合规性。SPDX目前已在全球广泛使用,并被公认为安全性、许可证合规性和其他软件供应链工件的国际开放标准。

Linux基金会自2011年发布SPDX 1.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场景扩展的新特征。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    218005
  • 网络
    +关注

    关注

    14

    文章

    8134

    浏览量

    93099
  • AI
    AI
    +关注

    关注

    89

    文章

    38153

    浏览量

    296810
  • 开源
    +关注

    关注

    3

    文章

    4037

    浏览量

    45578

原文标题:SPDX v3.0解读

文章出处:【微信号:开放原子,微信公众号:开放原子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux内核完全注释(修正版v3.0)

    Linux内核完全注释(修正版v3.0)
    发表于 11-02 09:13

    基于STM32固件库V3.0使用芯片型号

    ********************************本学习笔记基于STM32固件库V3.0使用芯片型号:STM32F103开发环境:MDK
    发表于 08-13 07:41

    NodeMCU V3.0 Arduino开发之点灯测试程序

    NodeMCU V3.0 Arduino开发之点灯测试程序手头到了一个NodeMCU v3.0,3.0版本和2.0差别不大,只是v2.0串口芯片是CP2101,而v3.0是CH340,
    发表于 11-01 06:29

    MCUBootUtility v3.0怎么样?

    MCUBootUtility v3.0怎么样?
    发表于 02-10 06:07

    茂名信息网 v3.0

    v3.0正式版升级说明: 1、重新改版整个网站的美工以及排版 2、调整了全站代码,连带所有的无效符号全部清理干净 本版本没有任何功能限制,但只能在本地使用127.0.0.1测
    发表于 03-08 22:01 29次下载

    海尔25T6D-TD(8823 V3.0)存储器数据

    海尔25T6D-TD(8823 V3.0)存储器数据
    发表于 06-01 09:58 36次下载

    FilterPro v3.0设计工具的最新版本

    FilterPro v3.0设计工具的最新版本 TI推出其普及型 FilterProTM 设计工具的最新版本。该 FilterPro v3.0 更新了各种功能,如调节无源元件容差、查看
    发表于 05-17 13:36 8446次阅读

    STM32F103ZET6 V3.0核心板电路图

    STM32F103ZET6 V3.0核心板电路图。
    发表于 10-29 17:00 59次下载

    EP1122集合版V3.0

    液晶烧录EP1122集合版V3.0用于烧录驱动板
    发表于 11-30 15:56 0次下载

    STM32F4 EMWIN开发手册V3.0

    STM32F4 EMWIN开发手册V3.0 STM32F4 EMWIN开发手册V3.0
    发表于 07-25 17:45 40次下载

    VORX-NH 说明书V3.0

    VORX-NH 说明书V3.0
    发表于 12-30 14:50 0次下载

    NodeMCU V3.0 Arduino开发之点灯

    NodeMCU V3.0 Arduino开发之点灯测试程序手头到了一个NodeMCU v3.0,3.0版本和2.0差别不大,只是v2.0串口芯片是CP2101,而v3.0是CH340,
    发表于 10-25 18:21 14次下载
    NodeMCU <b class='flag-5'>V3.0</b> Arduino开发之点灯

    PCB特性阻抗-影响特性阻抗因素V3.0

    PCB特性阻抗-影响特性阻抗因素V3.0 图文说明           审核编辑 黄宇
    的头像 发表于 06-03 15:41 1016次阅读
    PCB特性阻抗-影响特性阻抗因素<b class='flag-5'>V3.0</b>

    Power Integrations发布MotorXpert™ v3.0软件

    ——v3.0已正式发布。 MotorXpert™ v3.0是一套专为采用Power Integrations BridgeSwitch™电机驱动器IC的无刷直流逆变器设计的软件包,旨在为用户提供全面的配置、控制
    的头像 发表于 02-19 18:10 1065次阅读

    IGBT关键特性参数应用实践笔记 v3.0

    以下内容发表在「SysPro系统工程智库」知识星球-关于IGBT关键特性参数应用指南v3.0版本-「SysPro|动力系统功能解读」专栏内容,全文15500字-文字原创,素材来源:infineon
    的头像 发表于 08-08 07:41 2133次阅读
    IGBT关键特性参数应用实践笔记 <b class='flag-5'>v3.0</b>