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

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

3天内不再提示

什么是可重复构建?可重复构建为软件供应链安全保驾护航

openEuler 来源:openEuler 2023-03-21 16:49 次阅读

可重复构建( Reproducible Builds)是证明软件供应链安全的必要手段,2022已被纳入SupplyChainSecurityCon的topics以及微软的S2C2F(Secure Supply Chain Consumption Framework)当中,并受到了Google开源安全团队的支持赞助。OpenSSF/SLSA在软件供应链完整性与包管理最佳实践中也对可重复构建有所要求。

2022年openEuler已初步建设可重复构建能力。

什么是可重复构建

对于可重复的构建,给定相同的源代码、构建环境和构建指令,任何人均可重建出Bit to Bit完全相同的指定制品。

可重复构建的目的与意义

可重复构建可以验证二进制是否被植入后门,避免潜在安全风险,从而保障二进制的质量。构建环境和构建工程能够被还原,使依赖变化范围最小化、测试最小化,方便问题定位、提高开发效率。

通过可重复构建可以创建从代码到制品的可独立验证路径,结合已有的代码发布签名、软件仓库签名、安全启动等技术,使开源代码从生产到使用的全过程可追溯成为可能。

构建差异产生的原因

在代码构建期间,从源代码到产品发布的二进制包,中间每一个步骤、每一个构建工具都有可能引入二进制差异,而这些差异经过逐步放大,导致最终发布的二进制包每次编译都不相同,而且差异非常巨大。

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

二进制差异案例(差异放大)

导致构建差异的因素有很多,包含环境、时间戳、随机数、文件乱序等等,这些差异都是在构建过程中生成的。数字签名可以证明源码和二进制的唯一性,但是无法证明源码与二进制之间对应关系的一致性。证明源码与二进制一致性的工作量非常大、技术难度高。例如下图在各编译过程中可能会产生差异的因素:

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

openEuler可重复构建方案

openEuler当前的可重复构建是将rpm包构建两次,再进行对比。在构建过程中利用开源工具libfaketime进行差异消除,构建结束后将两次构建出的rpm包进行对比,若rpm不一致,则进行解压继续对比,将差异粒度精确到文件,并输出差异报告。

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

为了达到构建可重复的目的,通常要满足两个条件:

1、构建系统的完全确定性,保证两次构建的日期、时间完全相同(或者去除掉时间信息),文件顺序一致;

2、是用的构建工具集及构建工具需要一致或被记录。

主要措施有以下三步:

1、 openEuler的可重复构建使用了libfaketime工具消除差异。此工具主要是利用LD_PRELOAD环境变量进行差异消除。LD_PRELOAD 是 Linux 系统的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),通过此变量将 Linux 系统自带的动态库.so 替换我们自己动态库中自定义的函数,例如:time()、gethostname()、random()、rand()等函数,确保编译过程中获取的时间、主机名、随机数能够保持一致。

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

差异消除工具原理

通过使用此工具,产品源代码不需要修改,从而减少了产品在代码纠正方面的投资,商业和开放源代码工具所产生的差异也将得到消除,也无需进行任何代码修改,而且时间戳的语义被最大程度地保存。并且可以通过“ unset LD_PRELOAD”格式的命令禁用该工具。

除了libfaketime原有的功能以外,我们在此基础上进行扩展,增加了精准黑白名单的机制可以有效解决因使用libfaketime而导致的构建失败问题;并完善了消除随机数差异功能,增加了对random()、rand()、/dev/random、/dev/urandom获取随机数方法的替换。

2、 openEuler的可重复构建还用到了unpacker自动化解包对比工具,可以精准分析文件级差异,输出可视化差异报告。对比两次构建出rpm的校验值,若校验值一致则认为构建可重复;若校验值不一致,则进行解包对比,若两个rpm包解压后所有文件的校验值均一致,同样认为构建可重复,若出现不一致文件则使用diffoscope进行对比并输出差异报告。此外,工具会将RSA、PGP签名文件从rpm包中拆分出来,不会将签名文件差异当作是rpm差异。

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

解包对比工具原理

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

差异报告样例

3、将rpm包对比结束后,我们会将对比结果以及差异报告归档,并在openEuler的可重复构建网站展示并进行治理。

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

2022年我们已经对openEuler核心1800+个代码仓分别在arm及x86环境下进行了可重复构建的比对,涉及软件包6000+,可重复率达到了98%。今年我们把可重复构建范围扩大到了openEuler 22.09的Everything版本,构建成功了4130个代码仓,涉及软件包14000+,可重复率达到94%左右。经过初步的分析,当前大部分不可重复代码仓是因为构建出的rpm包存在html文件差异。

openEuler可重复构建规划

1、 针对不可重复代码仓分析原因、提出解决建议,并回合到上游社区。

2、 使用EulerMaker替换OBS进行构建,解决由于libfaketime导致的构建失败问题,并实现通过“元数据”随时复现构建过程的能力。

3、 逐步提高openEuler代码仓可重复率,达成Everything版本代码仓可重复率98%以上,领先业界水平。

4、 复制可重复构建能力,帮助合作伙伴达成可重复构建目标。






审核编辑:刘清

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

    关注

    0

    文章

    37

    浏览量

    10763
  • GNU
    GNU
    +关注

    关注

    0

    文章

    143

    浏览量

    17475
  • openEuler
    +关注

    关注

    2

    文章

    308

    浏览量

    5827
  • Debian
    +关注

    关注

    0

    文章

    74

    浏览量

    1145

原文标题:可重复构建为软件供应链安全保驾护航

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

收藏 人收藏

    评论

    相关推荐

    振动分析服务守护电力安全 KMbalancerPro多功能机械状态分析仪华电发电厂保驾护航

    面对电厂循环水泵电机振动大的问题,我们必须予以高度重视,采取切实有效的措施加以解决。从加强设备维护、优化安装工艺到提升电气系统稳定性,每一个环节都需精益求精,确保电厂循环水泵电机能够平稳运行,电厂的安全生产保驾护航。只有这样,
    的头像 发表于 11-06 10:28 123次阅读
    振动分析服务守护电力<b class='flag-5'>安全</b>  KMbalancerPro多功能机械状态分析仪<b class='flag-5'>为</b>华电发电厂<b class='flag-5'>保驾护航</b>!

    工业专用直流滤波器:工业生产保驾护航

    在现代工业领域,高效、稳定的电力供应是确保生产顺利进行的关键因素之一。而工业专用直流滤波器,就如同一位默默守护的忠诚卫士,工业生产保驾护航
    的头像 发表于 10-25 11:36 132次阅读

    瑞隆源产品符合性检验中心PCIC--浪涌产品质量保驾护航

    在电子科技飞速发展的时代,浪涌抑制问题成为影响电子设备正常运行的重要因素之一。瑞隆源有这样一个专业的机构,客户产品的可靠运行保驾护航,她就是
    的头像 发表于 09-06 11:18 192次阅读
    瑞隆源产品符合性检验中心PCIC--<b class='flag-5'>为</b>浪涌产品质量<b class='flag-5'>保驾护航</b>

    上海迪士尼度假区智慧杆保驾护航

    智慧杆服务于智慧园区建设,上海国际度假区保驾护航
    的头像 发表于 09-03 09:43 299次阅读
    上海迪士尼度假区智慧杆<b class='flag-5'>为</b>您<b class='flag-5'>保驾护航</b>

    重复烧写的语音芯片具备哪些特点?

    重复烧写语音芯片具有高可靠性、低功耗、灵活性、安全性、成本效益,支持USB下载更换语音,组合播放,PWM和DAC输出,休眠模式和抗干扰,适合工业及需修改语音场合。
    的头像 发表于 07-16 09:36 197次阅读

    四维图新MineTraffic智慧交通解决方案考生保驾护航

    高考将至,四维图新联合交通安全行为科学实验室发挥数据的力量,结合高考考点数据,提取并分析了部分考点周边的路网信息,提供相关出行提示,每一位考生保驾护航。 MineTraffic 提供技术支撑 通过
    的头像 发表于 06-07 17:25 868次阅读

    京准电子 GPS网络时间服务器工业4.0数据保驾护航

    京准电子 GPS网络时间服务器工业4.0保驾护航
    的头像 发表于 06-07 11:27 279次阅读
    京准电子 GPS网络时间服务器<b class='flag-5'>为</b>工业4.0数据<b class='flag-5'>保驾护航</b>

    英特尔助力京东云用CPU加速AI推理,以大模型构建数智化供应链

    英特尔助力京东云用CPU加速AI推理,以大模型构建数智化供应链
    的头像 发表于 05-27 11:50 494次阅读
    英特尔助力京东云用CPU加速AI推理,以大模型<b class='flag-5'>构建</b>数智化<b class='flag-5'>供应链</b>

    使用NVIDIA Holoscan for Media构建下一代直播媒体应用

    NVIDIA Holoscan for Media 现已向所有希望在完全重复使用的集群上构建下一代直播媒体应用的开发者开放。
    的头像 发表于 04-16 14:04 594次阅读

    智慧卫监在线监测系统职业健康保驾护航

    智慧卫监在线监测系统职业健康保驾护航 在现代社会,健康是人们生活的重要组成部分,而智慧卫监在线监测系统的作用就是为了保障我们的健康和安全。 我国职业健康监管盲点多,且职业病危害申报系统和职业病职业
    的头像 发表于 03-13 16:17 519次阅读

    中国重复火箭研发进展顺利 

    据悉,今年1月份,中国航天科工火箭技术有限公司自行设计的快舟火箭重复使用技术试验箭已顺利完成垂直起降测试。相关官员表示,此次测试选用了自主研发的液氧甲烷发动机进行试航,运行时长约为22秒,
    的头像 发表于 03-04 15:25 412次阅读

    SK海力士近日研发出了重复使用的CMP抛光垫技术

    12月27日消息,根据韩媒报道,SK海力士近日研发出了重复使用的 CMP抛光垫技术,不仅可以降低成本,而且可以增强 ESG(环境、社会、治理)管理。
    的头像 发表于 12-27 13:48 667次阅读
    SK海力士近日研发出了<b class='flag-5'>可</b><b class='flag-5'>重复</b>使用的CMP抛光垫技术

    工业交换机与供应链网络的融合,优化智能供应链管理

    随着全球贸易的快速发展,供应链管理在现代企业运营中起着至关重要的作用。而工业交换机与供应链网络的融合,不仅可以提高供应链的可靠性、灵活性和效率,还能为企业带来更大的竞争优势。本文将深入探讨工业交换机与
    的头像 发表于 12-27 09:28 459次阅读

    什么是重复擦写(Flash型)语音芯片?

    什么是重复擦写(Flash型)语音芯片?重复擦写(Flash型)语音芯片是一种嵌入式语音存储解决方案,采用了Flash存储技术,使得语音内容能够被多次擦写、更新,
    的头像 发表于 12-14 10:08 578次阅读
    什么是<b class='flag-5'>可</b><b class='flag-5'>重复</b>擦写(Flash型)语音芯片?

    数字化时代的软件供应链管理新标杆 - 华为云制品仓 CodeArts Artifact

    的技术,企业提供全方位、高效的软件供应链解决方案。 全面升级的软件供应链管理 CodeArts Artifact 以其全面升级的
    的头像 发表于 12-11 09:08 892次阅读
    数字化时代的<b class='flag-5'>软件</b><b class='flag-5'>供应链</b>管理新标杆 - 华为云制品仓 CodeArts Artifact