導(dǎo)語(yǔ)
SPDX是全球開源SBOM主流標(biāo)準(zhǔn)之一,也是Linux Foundation發(fā)展的重點(diǎn)標(biāo)準(zhǔn)之一。為方便廣大中國(guó)開發(fā)者和用戶掌握并借鑒最新的開源軟件物料標(biāo)準(zhǔn),近期,開放原子開源基金會(huì)旗下源譯識(shí)翻譯社區(qū)與openEuler社區(qū)聯(lián)合翻譯了SPDX v3.0.1,并在openEuler Summit 2024上由SPDX大使Gopi先生發(fā)布中譯本。歡迎您通過[email protected]與我們聯(lián)系!
1評(píng)述
SPDX 3.0:新場(chǎng)景、新特性、新方向
周明輝 北京大學(xué)
廣泛的軟件復(fù)用形成了錯(cuò)綜復(fù)雜的全球軟件依賴網(wǎng)絡(luò),稱為軟件供應(yīng)鏈。任何一個(gè)節(jié)點(diǎn)出現(xiàn)風(fēng)險(xiǎn),都會(huì)威脅到它的所有下游節(jié)點(diǎn)。因此,為了審計(jì)軟件依賴、防范供應(yīng)鏈風(fēng)險(xiǎn),SBOM(Software Bill of Materials,軟件物料清單)應(yīng)運(yùn)而生。SBOM通過詳細(xì)記錄軟件依賴的所有組件及其信息,成為解決供應(yīng)鏈安全問題、提高供應(yīng)鏈透明度的重要手段之一1。
業(yè)內(nèi)定義了多種SBOM標(biāo)準(zhǔn),其中SPDX是目前全球應(yīng)用最為廣泛的標(biāo)準(zhǔn)之一,由Linux基金會(huì)下的SPDX工作組負(fù)責(zé)維護(hù)和迭代。為解決復(fù)雜軟件供應(yīng)鏈中的許可證合規(guī)性問題,Linux基金會(huì)于2011年提出了初版SPDX標(biāo)準(zhǔn)2。經(jīng)過十余年演進(jìn),SPDX在全球范圍內(nèi)得到廣泛認(rèn)可和采用,2021年SPDX成為國(guó)際標(biāo)準(zhǔn)(ISO/IEC 5962:2021)。
然而,隨著人機(jī)物融合泛在場(chǎng)景以及人工智能的興起,原有SPDX標(biāo)準(zhǔn)在新形態(tài)、新場(chǎng)景中顯得捉襟見肘;其結(jié)構(gòu)繁冗、缺乏靈活性亦受從業(yè)者詬病3。為了應(yīng)對(duì)這些挑戰(zhàn),SPDX工作組于2024年4月推出了SPDX 3.0標(biāo)準(zhǔn) ,并同時(shí)將SPDX的全稱由“Software Package Data eXchange”變更為“System Package Data eXchange”,表明簡(jiǎn)化后的SPDX標(biāo)準(zhǔn)更加體系化和多元化。
SPDX 3.0 的變更主要如下
1. 支持多元化的應(yīng)用場(chǎng)景
以往的SPDX標(biāo)準(zhǔn)主要集中于管理軟件依賴關(guān)系,記錄軟件許可證信息以及其他與軟件構(gòu)成相關(guān)的詳細(xì)元數(shù)據(jù)。正如SPDX 3.0將其名稱中的“軟件”改為了“系統(tǒng)”所表明的,SPDX 3.0具備更廣泛的適用性,新增了對(duì)軟件構(gòu)建流程(SPDX Build)、數(shù)據(jù)集(SPDX Dataset)、AI模型(SPDX AI)的支持。新標(biāo)準(zhǔn)不僅增強(qiáng)了供應(yīng)鏈安全領(lǐng)域?qū)β┒垂芾砗蜆?gòu)建過程的關(guān)注,還首次引入了對(duì)AI模型及其相關(guān)依賴關(guān)系的描述。在AI模型和數(shù)據(jù)集部分,SPDX 3.0突出了AI制品與傳統(tǒng)軟件之間的區(qū)別——在模型的名稱、超參數(shù)、模型類型等元數(shù)據(jù)之外,SPDX 3.0還包含對(duì)模型特有依賴關(guān)系(例如微調(diào)、訓(xùn)練數(shù)據(jù)集)的建模和描述。這為應(yīng)對(duì)人工智能時(shí)代的新型供應(yīng)鏈風(fēng)險(xiǎn)提供了重要手段。例如,記錄模型訓(xùn)練所使用的數(shù)據(jù)集,模型用戶與開發(fā)者可以據(jù)此溯源訓(xùn)練數(shù)據(jù)來(lái)源和數(shù)據(jù)質(zhì)量,從而預(yù)防、緩解數(shù)據(jù)投毒等新型AI模型攻擊方式。
2. 模塊化的組織結(jié)構(gòu)設(shè)計(jì)
在組織結(jié)構(gòu)上,SPDX 3.0引入了更加靈活的模塊化設(shè)計(jì)——除了“核心模型”之外,其他模塊都是可選的4。這一設(shè)計(jì)使得SPDX 3.0能更好地適配各種應(yīng)用場(chǎng)景,正如SPDX技術(shù)團(tuán)隊(duì)所言,“我們得到的反饋表明,有些時(shí)候用戶只關(guān)心安全性,有些時(shí)候他們只關(guān)心許可證” 5。新標(biāo)準(zhǔn)中,所有的軟件包、文件、代碼片段和AI模型等都被視為SBOM中的獨(dú)立“元素”,一份SPDX文檔可以視作是由這些元素組成的集合,而這些元素也可以獨(dú)立于SPDX文檔被外部文檔等引用;SBOM元素也可以逐個(gè)增量更新,不需要一次性更新整個(gè)SPDX文檔。這種“低耦合”的設(shè)計(jì)理念,大幅提升了SPDX文檔的靈活性和可擴(kuò)展性,避免了SBOM文檔的臃腫,為SBOM文檔的查詢、索引、維護(hù)、更新提供了巨大的便利。
SPDX的未來(lái)探索方向
盡管SPDX 3.0對(duì)AI和Dataset的引入提供了積極探索,但其實(shí)效仍待探究。SPDX 3.0在設(shè)計(jì)AI和Dataset相關(guān)的字段時(shí),參考了HuggingFace的ModelCard格式;然而,ModelCard中的數(shù)據(jù)字段往往沒有嚴(yán)格的格式規(guī)范,采用了開放式文本聲明,SPDX 3.0的部分設(shè)計(jì)亦繼承了這一點(diǎn)——例如“應(yīng)用領(lǐng)域”這一字段的定義是“人工智能模型預(yù)期可以應(yīng)用的領(lǐng)域范圍,自由格式文本”6。自然語(yǔ)言描述難以保證SBOM的機(jī)器可讀性,這對(duì)SBOM的自動(dòng)化生成、分析、集成而言是致命的。應(yīng)對(duì)這一挑戰(zhàn),一個(gè)可行的思路是定義一個(gè)標(biāo)識(shí)符列表(例如SPDX許可證列表7或是ACM類目8),對(duì)于例外情況允許自然語(yǔ)言描述。
SPDX 3.0的發(fā)布標(biāo)志著SBOM標(biāo)準(zhǔn)進(jìn)入了一個(gè)新的發(fā)展階段,其模塊化設(shè)計(jì)和對(duì)多元化應(yīng)用場(chǎng)景的支持,為進(jìn)一步提高軟件供應(yīng)鏈安全性提供了重要保障。盡管AI與Dataset安全管理的元數(shù)據(jù)結(jié)構(gòu)仍需進(jìn)一步細(xì)化,SPDX 3.0無(wú)疑為現(xiàn)代軟件開發(fā)安全奠定了堅(jiān)實(shí)的基礎(chǔ),并為全球尤其是涉及先進(jìn)技術(shù)的供應(yīng)鏈安全管理指明了方向。隨著標(biāo)準(zhǔn)的不斷迭代,我們可以期待它在應(yīng)對(duì)新型供應(yīng)鏈安全風(fēng)險(xiǎn),尤其是人工智能供應(yīng)鏈風(fēng)險(xiǎn)時(shí),發(fā)揮越來(lái)越重要的作用。SPDX能夠記錄模型的設(shè)計(jì)、能力和約束,并支持對(duì)數(shù)據(jù)集等進(jìn)行供應(yīng)鏈溯源,能夠保障各方在信息透明、可追溯的基礎(chǔ)上建立信任和進(jìn)行技術(shù)選型,促進(jìn)各方對(duì)人工智能技術(shù)的負(fù)責(zé)任使用,推動(dòng)人工智能技術(shù)的安全性、透明性與可持續(xù)發(fā)展9。
SPDX3.0與openEuler SBOM實(shí)踐
羅鈺凱 openEuler安全委員會(huì)
2021年12月7日曝出的Log4j核彈級(jí)漏洞,讓很多企業(yè)即使投入非常大的人力物力緊急排查,在漏洞爆發(fā)后很長(zhǎng)一段時(shí)間內(nèi)仍然無(wú)法準(zhǔn)確確定自己的軟件是否受這個(gè)漏洞的影響。如果對(duì)于每一個(gè)軟件,都有一個(gè)準(zhǔn)確和標(biāo)準(zhǔn)的成分清單,那么我們就可以快速判斷我們到底有沒有受影響以及影響的組件,這個(gè)成分清單就是業(yè)界正在積極擁抱的SBOM(軟件物料清單)。
Linux基金會(huì)旗下的SPDX項(xiàng)目為業(yè)界提供了一種廣泛使用的SBOM披露格式規(guī)范,用于呈現(xiàn)軟件的基本信息(如軟件名、版本號(hào)及供應(yīng)商)、軟件依賴、許可證和漏洞等信息。最新發(fā)布的SPDX 3.0版本,將其名稱中的“軟件”改為“系統(tǒng)”,標(biāo)志著SPDX 3.0具備更廣泛的適用性,新增了對(duì)軟件構(gòu)建流程(Build)、數(shù)據(jù)集(Dataset)、AI模型的支持。隨著人工智能的興起,AI模型和數(shù)據(jù)集的安全風(fēng)險(xiǎn)越來(lái)越受到業(yè)界的關(guān)注,SPDX 3.0不僅包含模型的名稱、超參數(shù)、模型類型等元數(shù)據(jù),還包含模型依賴關(guān)系(例如微調(diào)、訓(xùn)練數(shù)據(jù)集)的描述,在AI時(shí)代能夠讓訓(xùn)練數(shù)據(jù)和模型成分更加透明化和可追溯。
openEuler開源社區(qū)積極擁抱軟件供應(yīng)鏈安全的潮流,目前已基于SPDX披露軟件基本信息和依賴關(guān)系1,并同時(shí)支持ISO鏡像和rpm包維度的SBOM文件披露,在漏洞治理方面,openEuler社區(qū)已具備基于SBOM來(lái)追溯組件漏洞和許可證信息的能力,未來(lái)面向智算時(shí)代,openEuler也會(huì)逐步探索和支持AI模型和數(shù)據(jù)集的描述。
openEuler SBOM解決方案架構(gòu)全景如下圖(圖1)所示,相關(guān)工具已開源到openEuler社區(qū),首先基于構(gòu)建流水線生成軟件包的repodata,使用sbom-tools開源工具解析repodata生成SBOM元數(shù)據(jù),并通過sbom-service存儲(chǔ)到SBOM信息庫(kù),再結(jié)合License信息庫(kù)和漏洞信息庫(kù),最后以sbom-website看板的形式展示軟件成分、依賴關(guān)系、License信息和漏洞狀態(tài)等相關(guān)信息(圖2)。
圖1:解決方案架構(gòu)全景
圖2:SBOM看板
SPDX 3.0 相時(shí)而“動(dòng)” 迎接AI新時(shí)代
開源許可證規(guī)定了軟件的知識(shí)產(chǎn)權(quán)授權(quán)及使用和修改應(yīng)遵從的條件,是開源軟件許可不可或缺的重要元素。但是,在開源和共享軟件開發(fā)環(huán)境中,不同的開源項(xiàng)目使用的許可證并不盡相同,軟件供應(yīng)鏈中的每一方都要面臨繁雜的許可證管理問題。為解決該問題,Linux基金會(huì)于2010年組織起草了SPDX規(guī)范(Software Package Data eXchange,軟件包數(shù)據(jù)交換),通過為每個(gè)許可證設(shè)置唯一的標(biāo)識(shí)符并以機(jī)器和人類均可讀的格式表述許可信息的元數(shù)據(jù)(包括許可證名稱、版本、依賴項(xiàng)及其他屬性等)。開發(fā)者、法務(wù)/律師可以運(yùn)用自動(dòng)化工具便捷識(shí)別、追蹤軟件包的許可信息,從而分析和驗(yàn)證許可合規(guī)性。SPDX目前已在全球廣泛使用,并被公認(rèn)為安全性、許可證合規(guī)性和其他軟件供應(yīng)鏈工件的國(guó)際開放標(biāo)準(zhǔn)。
Linux基金會(huì)自2011年發(fā)布SPDX 1.0后,又對(duì)其進(jìn)行過多次版本迭代,并于2024年發(fā)布SPDX 3.0新版本。SPDX 3.0的文檔結(jié)構(gòu)采用更加靈活的模塊化設(shè)計(jì),并主要分為以下模塊:1)必需的核心模型(包括文檔創(chuàng)建信息等基礎(chǔ)數(shù)據(jù)字段);2)非必需但推薦絕大多數(shù)SBOM使用的軟件配置文件(包括軟件包版本、軟件包URL、許可聲明等字段);3)可以根據(jù)需要選用的其他配置文件。
為更好地適用于新興的AI和數(shù)據(jù)等SBOM場(chǎng)景,在本次版本迭代中,SPDX 3.0引入了人工智能配置文件(下稱AI配置文件)、數(shù)據(jù)集配置文件等新增配置文件。其中,AI配置文件設(shè)置有“敏感個(gè)人信息”“數(shù)據(jù)預(yù)處理步驟”等新增字段,并包括用于構(gòu)建或部署AI系統(tǒng)的軟件框架、庫(kù)和其他組件及其版本、許可證和其他有用的安全參考等信息。通過該新增AI配置文件可以傳遞AI系統(tǒng)相關(guān)的軟件組件和依賴項(xiàng)的信息,促進(jìn)SPDX工具生成的AI模型信息的交換。
數(shù)據(jù)集配置文件設(shè)置有“數(shù)據(jù)集類型”“數(shù)據(jù)集大小”和“數(shù)據(jù)集可用性”等新增字段,并包括數(shù)據(jù)集名稱、版本、來(lái)源、相關(guān)元數(shù)據(jù)、許可信息以及其他相關(guān)屬性等信息。通過該新增數(shù)據(jù)集配置文件可以傳遞關(guān)于用于軟件或訓(xùn)練/測(cè)試、AI軟件包的數(shù)據(jù)集的信息,幫助用戶更高效地理解和分析數(shù)據(jù),促進(jìn)SPDX工具生成的數(shù)據(jù)集信息的交換。
另外,在該最新發(fā)布的版本中,SPDX的英文全稱也由Software Package Data eXchange變?yōu)镾ystem Package Data eXchange(系統(tǒng)包數(shù)據(jù)交換),這也體現(xiàn)了其適用范圍針對(duì)特定SBOM(Software Bill of Material,軟件物料清單)用例和人工智能和數(shù)據(jù)等SBOM場(chǎng)景擴(kuò)展的新特征。
-
Linux
+關(guān)注
關(guān)注
87文章
11459瀏覽量
212789 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7765瀏覽量
90364 -
AI
+關(guān)注
關(guān)注
87文章
34201瀏覽量
275364 -
開源
+關(guān)注
關(guān)注
3文章
3587瀏覽量
43475
原文標(biāo)題:SPDX v3.0解讀
文章出處:【微信號(hào):開放原子,微信公眾號(hào):開放原子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
NodeMCU V3.0 Arduino開發(fā)之點(diǎn)燈測(cè)試程序
茂名信息網(wǎng) v3.0
海爾25T6D-TD(8823 V3.0)存儲(chǔ)器數(shù)據(jù)
FilterPro v3.0設(shè)計(jì)工具的最新版本
STM32F4 EMWIN開發(fā)手冊(cè)V3.0
nRF51822寄存器說(shuō)明書v3.0
Arduino Nano V3.0開發(fā)板的電路原理圖和PCB工程文件免費(fèi)下載
NodeMCU V3.0 Arduino開發(fā)之點(diǎn)燈

評(píng)論