導語
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)。
圖1:解決方案架構全景
圖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
+關注
關注
87文章
11506瀏覽量
213447 -
網絡
+關注
關注
14文章
7804瀏覽量
90751 -
AI
+關注
關注
88文章
34918瀏覽量
278141 -
開源
+關注
關注
3文章
3659瀏覽量
43738
原文標題:SPDX v3.0解讀
文章出處:【微信號:開放原子,微信公眾號:開放原子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于STM32固件庫V3.0使用芯片型號
NodeMCU V3.0 Arduino開發之點燈測試程序
茂名信息網 v3.0
FilterPro v3.0設計工具的最新版本
NodeMCU V3.0 Arduino開發之點燈

評論