0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是可重復(fù)構(gòu)建?可重復(fù)構(gòu)建為軟件供應(yīng)鏈安全保駕護(hù)航

openEuler ? 來(lái)源:openEuler ? 2023-03-21 16:49 ? 次閱讀

可重復(fù)構(gòu)建( Reproducible Builds)是證明軟件供應(yīng)鏈安全的必要手段,2022已被納入SupplyChainSecurityCon的topics以及微軟的S2C2F(Secure Supply Chain Consumption Framework)當(dāng)中,并受到了Google開源安全團(tuán)隊(duì)的支持贊助。OpenSSF/SLSA在軟件供應(yīng)鏈完整性與包管理最佳實(shí)踐中也對(duì)可重復(fù)構(gòu)建有所要求。

2022年openEuler已初步建設(shè)可重復(fù)構(gòu)建能力。

什么是可重復(fù)構(gòu)建

對(duì)于可重復(fù)的構(gòu)建,給定相同的源代碼、構(gòu)建環(huán)境和構(gòu)建指令,任何人均可重建出Bit to Bit完全相同的指定制品。

可重復(fù)構(gòu)建的目的與意義

可重復(fù)構(gòu)建可以驗(yàn)證二進(jìn)制是否被植入后門,避免潛在安全風(fēng)險(xiǎn),從而保障二進(jìn)制的質(zhì)量。構(gòu)建環(huán)境和構(gòu)建工程能夠被還原,使依賴變化范圍最小化、測(cè)試最小化,方便問題定位、提高開發(fā)效率。

通過(guò)可重復(fù)構(gòu)建可以創(chuàng)建從代碼到制品的可獨(dú)立驗(yàn)證路徑,結(jié)合已有的代碼發(fā)布簽名、軟件倉(cāng)庫(kù)簽名、安全啟動(dòng)等技術(shù),使開源代碼從生產(chǎn)到使用的全過(guò)程可追溯成為可能。

構(gòu)建差異產(chǎn)生的原因

在代碼構(gòu)建期間,從源代碼到產(chǎn)品發(fā)布的二進(jìn)制包,中間每一個(gè)步驟、每一個(gè)構(gòu)建工具都有可能引入二進(jìn)制差異,而這些差異經(jīng)過(guò)逐步放大,導(dǎo)致最終發(fā)布的二進(jìn)制包每次編譯都不相同,而且差異非常巨大。

2983eb48-ba4d-11ed-bfe3-dac502259ad0.png

二進(jìn)制差異案例(差異放大)

導(dǎo)致構(gòu)建差異的因素有很多,包含環(huán)境、時(shí)間戳、隨機(jī)數(shù)、文件亂序等等,這些差異都是在構(gòu)建過(guò)程中生成的。數(shù)字簽名可以證明源碼和二進(jìn)制的唯一性,但是無(wú)法證明源碼與二進(jìn)制之間對(duì)應(yīng)關(guān)系的一致性。證明源碼與二進(jìn)制一致性的工作量非常大、技術(shù)難度高。例如下圖在各編譯過(guò)程中可能會(huì)產(chǎn)生差異的因素:

29970066-ba4d-11ed-bfe3-dac502259ad0.png

openEuler可重復(fù)構(gòu)建方案

openEuler當(dāng)前的可重復(fù)構(gòu)建是將rpm包構(gòu)建兩次,再進(jìn)行對(duì)比。在構(gòu)建過(guò)程中利用開源工具libfaketime進(jìn)行差異消除,構(gòu)建結(jié)束后將兩次構(gòu)建出的rpm包進(jìn)行對(duì)比,若rpm不一致,則進(jìn)行解壓繼續(xù)對(duì)比,將差異粒度精確到文件,并輸出差異報(bào)告。

29d251ca-ba4d-11ed-bfe3-dac502259ad0.png

為了達(dá)到構(gòu)建可重復(fù)的目的,通常要滿足兩個(gè)條件:

1、構(gòu)建系統(tǒng)的完全確定性,保證兩次構(gòu)建的日期、時(shí)間完全相同(或者去除掉時(shí)間信息),文件順序一致;

2、是用的構(gòu)建工具集及構(gòu)建工具需要一致或被記錄。

主要措施有以下三步:

1、 openEuler的可重復(fù)構(gòu)建使用了libfaketime工具消除差異。此工具主要是利用LD_PRELOAD環(huán)境變量進(jìn)行差異消除。LD_PRELOAD 是 Linux 系統(tǒng)的一個(gè)環(huán)境變量,它可以影響程序的運(yùn)行時(shí)的鏈接(Runtime linker),通過(guò)此變量將 Linux 系統(tǒng)自帶的動(dòng)態(tài)庫(kù).so 替換我們自己動(dòng)態(tài)庫(kù)中自定義的函數(shù),例如:time()、gethostname()、random()、rand()等函數(shù),確保編譯過(guò)程中獲取的時(shí)間、主機(jī)名、隨機(jī)數(shù)能夠保持一致。

29dbb06c-ba4d-11ed-bfe3-dac502259ad0.png

差異消除工具原理

通過(guò)使用此工具,產(chǎn)品源代碼不需要修改,從而減少了產(chǎn)品在代碼糾正方面的投資,商業(yè)和開放源代碼工具所產(chǎn)生的差異也將得到消除,也無(wú)需進(jìn)行任何代碼修改,而且時(shí)間戳的語(yǔ)義被最大程度地保存。并且可以通過(guò)“ unset LD_PRELOAD”格式的命令禁用該工具。

除了libfaketime原有的功能以外,我們?cè)诖嘶A(chǔ)上進(jìn)行擴(kuò)展,增加了精準(zhǔn)黑白名單的機(jī)制可以有效解決因使用libfaketime而導(dǎo)致的構(gòu)建失敗問題;并完善了消除隨機(jī)數(shù)差異功能,增加了對(duì)random()、rand()、/dev/random、/dev/urandom獲取隨機(jī)數(shù)方法的替換。

2、 openEuler的可重復(fù)構(gòu)建還用到了unpacker自動(dòng)化解包對(duì)比工具,可以精準(zhǔn)分析文件級(jí)差異,輸出可視化差異報(bào)告。對(duì)比兩次構(gòu)建出rpm的校驗(yàn)值,若校驗(yàn)值一致則認(rèn)為構(gòu)建可重復(fù);若校驗(yàn)值不一致,則進(jìn)行解包對(duì)比,若兩個(gè)rpm包解壓后所有文件的校驗(yàn)值均一致,同樣認(rèn)為構(gòu)建可重復(fù),若出現(xiàn)不一致文件則使用diffoscope進(jìn)行對(duì)比并輸出差異報(bào)告。此外,工具會(huì)將RSA、PGP簽名文件從rpm包中拆分出來(lái),不會(huì)將簽名文件差異當(dāng)作是rpm差異。

29e89142-ba4d-11ed-bfe3-dac502259ad0.png

解包對(duì)比工具原理

29f08564-ba4d-11ed-bfe3-dac502259ad0.png

差異報(bào)告樣例

3、將rpm包對(duì)比結(jié)束后,我們會(huì)將對(duì)比結(jié)果以及差異報(bào)告歸檔,并在openEuler的可重復(fù)構(gòu)建網(wǎng)站展示并進(jìn)行治理。

2a0ffdf4-ba4d-11ed-bfe3-dac502259ad0.png

2022年我們已經(jīng)對(duì)openEuler核心1800+個(gè)代碼倉(cāng)分別在arm及x86環(huán)境下進(jìn)行了可重復(fù)構(gòu)建的比對(duì),涉及軟件包6000+,可重復(fù)率達(dá)到了98%。今年我們把可重復(fù)構(gòu)建范圍擴(kuò)大到了openEuler 22.09的Everything版本,構(gòu)建成功了4130個(gè)代碼倉(cāng),涉及軟件包14000+,可重復(fù)率達(dá)到94%左右。經(jīng)過(guò)初步的分析,當(dāng)前大部分不可重復(fù)代碼倉(cāng)是因?yàn)闃?gòu)建出的rpm包存在html文件差異。

openEuler可重復(fù)構(gòu)建規(guī)劃

1、 針對(duì)不可重復(fù)代碼倉(cāng)分析原因、提出解決建議,并回合到上游社區(qū)。

2、 使用EulerMaker替換OBS進(jìn)行構(gòu)建,解決由于libfaketime導(dǎo)致的構(gòu)建失敗問題,并實(shí)現(xiàn)通過(guò)“元數(shù)據(jù)”隨時(shí)復(fù)現(xiàn)構(gòu)建過(guò)程的能力。

3、 逐步提高openEuler代碼倉(cāng)可重復(fù)率,達(dá)成Everything版本代碼倉(cāng)可重復(fù)率98%以上,領(lǐng)先業(yè)界水平。

4、 復(fù)制可重復(fù)構(gòu)建能力,幫助合作伙伴達(dá)成可重復(fù)構(gòu)建目標(biāo)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • freebsd
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    10741
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    17404
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    299

    瀏覽量

    5783
  • Debian
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    1094

原文標(biāo)題:可重復(fù)構(gòu)建為軟件供應(yīng)鏈安全保駕護(hù)航

文章出處:【微信號(hào):openEulercommunity,微信公眾號(hào):openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瑞隆源產(chǎn)品符合性檢驗(yàn)中心PCIC--浪涌產(chǎn)品質(zhì)量保駕護(hù)航

    在電子科技飛速發(fā)展的時(shí)代,浪涌抑制問題成為影響電子設(shè)備正常運(yùn)行的重要因素之一。瑞隆源有這樣一個(gè)專業(yè)的機(jī)構(gòu),客戶產(chǎn)品的可靠運(yùn)行保駕護(hù)航,她就是
    的頭像 發(fā)表于 09-06 11:18 ?120次閱讀
    瑞隆源產(chǎn)品符合性檢驗(yàn)中心PCIC--<b class='flag-5'>為</b>浪涌產(chǎn)品質(zhì)量<b class='flag-5'>保駕護(hù)航</b>

    上海迪士尼度假區(qū)智慧桿保駕護(hù)航

    智慧桿服務(wù)于智慧園區(qū)建設(shè),上海國(guó)際度假區(qū)保駕護(hù)航。
    的頭像 發(fā)表于 09-03 09:43 ?206次閱讀
    上海迪士尼度假區(qū)智慧桿<b class='flag-5'>為</b>您<b class='flag-5'>保駕護(hù)航</b>

    重復(fù)燒寫的語(yǔ)音芯片具備哪些特點(diǎn)?

    重復(fù)燒寫語(yǔ)音芯片具有高可靠性、低功耗、靈活性、安全性、成本效益,支持USB下載更換語(yǔ)音,組合播放,PWM和DAC輸出,休眠模式和抗干擾,適合工業(yè)及需修改語(yǔ)音場(chǎng)合。
    的頭像 發(fā)表于 07-16 09:36 ?148次閱讀

    四維圖新MineTraffic智慧交通解決方案考生保駕護(hù)航

    高考將至,四維圖新聯(lián)合交通安全行為科學(xué)實(shí)驗(yàn)室發(fā)揮數(shù)據(jù)的力量,結(jié)合高考考點(diǎn)數(shù)據(jù),提取并分析了部分考點(diǎn)周邊的路網(wǎng)信息,提供相關(guān)出行提示,每一位考生保駕護(hù)航。 MineTraffic 提供技術(shù)支撐 通過(guò)
    的頭像 發(fā)表于 06-07 17:25 ?746次閱讀

    京準(zhǔn)電子 GPS網(wǎng)絡(luò)時(shí)間服務(wù)器工業(yè)4.0數(shù)據(jù)保駕護(hù)航

    京準(zhǔn)電子 GPS網(wǎng)絡(luò)時(shí)間服務(wù)器工業(yè)4.0保駕護(hù)航
    的頭像 發(fā)表于 06-07 11:27 ?205次閱讀
    京準(zhǔn)電子 GPS網(wǎng)絡(luò)時(shí)間服務(wù)器<b class='flag-5'>為</b>工業(yè)4.0數(shù)據(jù)<b class='flag-5'>保駕護(hù)航</b>

    英特爾助力京東云用CPU加速AI推理,以大模型構(gòu)建數(shù)智化供應(yīng)鏈

    英特爾助力京東云用CPU加速AI推理,以大模型構(gòu)建數(shù)智化供應(yīng)鏈
    的頭像 發(fā)表于 05-27 11:50 ?383次閱讀
    英特爾助力京東云用CPU加速AI推理,以大模型<b class='flag-5'>構(gòu)建</b>數(shù)智化<b class='flag-5'>供應(yīng)鏈</b>

    使用NVIDIA Holoscan for Media構(gòu)建下一代直播媒體應(yīng)用

    NVIDIA Holoscan for Media 現(xiàn)已向所有希望在完全重復(fù)使用的集群上構(gòu)建下一代直播媒體應(yīng)用的開發(fā)者開放。
    的頭像 發(fā)表于 04-16 14:04 ?461次閱讀

    智慧衛(wèi)監(jiān)在線監(jiān)測(cè)系統(tǒng)職業(yè)健康保駕護(hù)航

    智慧衛(wèi)監(jiān)在線監(jiān)測(cè)系統(tǒng)職業(yè)健康保駕護(hù)航 在現(xiàn)代社會(huì),健康是人們生活的重要組成部分,而智慧衛(wèi)監(jiān)在線監(jiān)測(cè)系統(tǒng)的作用就是為了保障我們的健康和安全。 我國(guó)職業(yè)健康監(jiān)管盲點(diǎn)多,且職業(yè)病危害申報(bào)系統(tǒng)和職業(yè)病職業(yè)
    的頭像 發(fā)表于 03-13 16:17 ?435次閱讀

    中國(guó)重復(fù)火箭研發(fā)進(jìn)展順利?

    據(jù)悉,今年1月份,中國(guó)航天科工火箭技術(shù)有限公司自行設(shè)計(jì)的快舟火箭重復(fù)使用技術(shù)試驗(yàn)箭已順利完成垂直起降測(cè)試。相關(guān)官員表示,此次測(cè)試選用了自主研發(fā)的液氧甲烷發(fā)動(dòng)機(jī)進(jìn)行試航,運(yùn)行時(shí)長(zhǎng)約為22秒,
    的頭像 發(fā)表于 03-04 15:25 ?335次閱讀

    什么是重復(fù)擦寫(Flash型)語(yǔ)音芯片?

    什么是重復(fù)擦寫(Flash型)語(yǔ)音芯片?重復(fù)擦寫(Flash型)語(yǔ)音芯片是一種嵌入式語(yǔ)音存儲(chǔ)解決方案,采用了Flash存儲(chǔ)技術(shù),使得語(yǔ)音內(nèi)容能夠被多次擦寫、更新,
    的頭像 發(fā)表于 12-14 10:08 ?477次閱讀
    什么是<b class='flag-5'>可</b><b class='flag-5'>重復(fù)</b>擦寫(Flash型)語(yǔ)音芯片?

    數(shù)字化時(shí)代的軟件供應(yīng)鏈管理新標(biāo)桿 - 華為云制品倉(cāng) CodeArts Artifact

    的技術(shù),企業(yè)提供全方位、高效的軟件供應(yīng)鏈解決方案。 全面升級(jí)的軟件供應(yīng)鏈管理 CodeArts?Artifact 以其全面升級(jí)的
    的頭像 發(fā)表于 12-11 09:08 ?839次閱讀
    數(shù)字化時(shí)代的<b class='flag-5'>軟件</b><b class='flag-5'>供應(yīng)鏈</b>管理新標(biāo)桿 - 華為云制品倉(cāng) CodeArts Artifact

    刀鋒示波器,“芯”勢(shì)能保駕護(hù)航

    點(diǎn)擊上方 “泰克科技” 關(guān)注我們! |“芯”勢(shì)能保駕護(hù)航| 半導(dǎo)體行業(yè)一直是科技領(lǐng)域中的創(chuàng)新引擎,而技術(shù)問題的解決對(duì)于保障產(chǎn)品性能至關(guān)重要。今天,我們將介紹 新2系刀鋒示波器如何在半導(dǎo)體應(yīng)用中發(fā)
    的頭像 發(fā)表于 11-01 09:55 ?305次閱讀
    刀鋒示波器,<b class='flag-5'>為</b>“芯”勢(shì)能<b class='flag-5'>保駕護(hù)航</b>!

    值得信賴的搭檔:AI 軟件保駕駛員安全并專注于前方路況

    值得信賴的搭檔:AI 軟件保駕駛員安全并專注于前方路況
    的頭像 發(fā)表于 10-27 15:49 ?347次閱讀
    值得信賴的搭檔:AI <b class='flag-5'>軟件</b><b class='flag-5'>可</b>確<b class='flag-5'>保駕</b>駛員<b class='flag-5'>安全</b>并專注于前方路況

    PCB保護(hù)膜,您的電路板保駕護(hù)航

    PCB保護(hù)膜,您的電路板保駕護(hù)航
    的頭像 發(fā)表于 10-23 10:04 ?1079次閱讀

    日本與加拿大合作構(gòu)建電動(dòng)汽車電池供應(yīng)鏈

    日本的公共和民間部門正在加強(qiáng)與加拿大的合作。日本減少對(duì)中國(guó)電池原材料的依賴,計(jì)劃在北美構(gòu)建電池供應(yīng)鏈。日本汽車企業(yè)還想通過(guò)在北美確保供應(yīng)商的方式,讓電動(dòng)車享受“《通脹削減法案》 (i
    的頭像 發(fā)表于 09-26 10:16 ?1882次閱讀