掌桥专利:专业的专利平台
掌桥专利
首页

源代码与二进制版本一致性的离线验证方法

文献发布时间:2024-04-18 20:00:50


源代码与二进制版本一致性的离线验证方法

技术领域

本发明涉及版本校验技术领域,特别涉及源代码与二进制版本一致性的离线验证方法。

背景技术

在源代码及二进制发布或审查场景下验证源代码与二进制版本一致性,通常有三种方法。

方法一是通过构建源代码编译环境基于源代码重新编译二进制进行哈希值对比,具体流程是基于虚拟机镜像、容器镜像或dockerfile文件,创建运行的虚拟机或容器,并将源代码复制到虚拟机或容器通过编译脚本编译,对新生成的二进制和待验证二进制进行哈希值计算对比,验证源代码与二进制的版本是否一致,该技术方案存在的缺陷是普适性较差、效率较低,缺陷是由于以下原因导致:1、源代码编译环境的虚拟机镜像或者容器镜像过大;2、dockerfile指定的基于镜像及软件版本可能不一致。

方法二是通过提取对比源代码特征值与二进制特征值验证源代码和二进制的版本一致性,具体流程是先提取如源代码中项目标识、函数名称、变量名称、动态库链接等特征值,然后通过工具提取待验证二进制文件中项目标识、函数名称、变量名称、动态库链接等特征值,源代码特征值和二进制特征值作为多种特征值进行文本对比验证版本是否一致,该技术方案存在的缺陷是源代码及二进制特征值提取困难、版本一致性校验准确性差,缺陷是由于以下原因导致:1、源代码结构复杂,正确解析源代码难度大;2、源代码编译成二进制后,部分符号信息丢失;3、源代码或二进制改变,其特征值不一定会发生变化。

方法三是通过关联源代码及二进制哈希值验证源代码和二进制的版本一致性,具体流程是记录源代码编译环境和编译流程,并将源代码哈希值、二进制哈希值等信息关联在线记录到外部区块链网络,对待验证二进制进行哈希值计算,提交到区块链查询对应的源代码哈希值验证版本是否一致,该技术方案存在的缺陷是普适性较差,缺陷是由于源代码及二进制哈希值必须通过实时网络记录到外网,用户担忧敏感数据泄露导致。

发明内容

本发明所解决的技术问题:提供一种源代码与二进制版本一致性的离线验证方法,解决验证源代码与二进制版本一致性需要在多样的环境下构建编译环境或记录版本对应信息,导致准确性低、普适性差、效率低的问题。

本发明解决上述技术问题采用的技术方案:源代码与二进制版本一致性的离线验证方法,包括以下步骤:

S1、访问发布或审查服务器,下载与编译环境相应的版本一致性验证客户端模块,生成业务token;

S2、部署源代码压缩包、编译脚本、版本一致性验证客户端模块到编译环境;

S3、运行版本一致性验证客户端模块,将源代码压缩包、编译脚本、目标二进制文件路径作为运行参数输入;

S4、版本一致性验证客户端模块校验目标二进制文件路径是否为存在文件,若不存在,则进行下一步;

S5、版本一致性验证客户端模块通过SM3算法计算源代码压缩包哈希值,并记录为A字符串;

S6、版本一致性验证客户端模块解压源代码压缩包,并执行编译脚本,编译目标二进制文件,并通过安全措施监控目标二进制文件的编译过程,若目标二进制文件在编译过程中没有被篡改,则执行下一步;

S7、版本一致性验证客户端模块通过SM3算法计算目标二进制文件哈希值,并记录为B字符串;

S8、版本一致性验证客户端模块将A字符串、B字符串、业务token作为SM3算法输入,计算离线哈希值C;

S9、向服务端提交源代码压缩包、对应版本二进制文件、离线哈希值C;

S10、版本一致性验证服务端模块通过SM3算法计算源代码压缩包哈希值,记录为A1字符串;通过SM3算法计算对应版本二进制文件哈希值,记录为B1字符串;

S11、版本一致性验证服务端模块将A1字符串、B1字符串、业务token作为SM3算法输入,计算哈希值C1;

S12、版本一致性验证服务端模块对比离线哈希值C和哈希值C1;如果两者一致则源代码及二进制版本一致;如果两者不一致则源代码及二进制版本不一致。

进一步的,S4中,若版本一致性验证客户端模块校验目标二进制文件路径存在文件,则离线哈希值生成失败。

进一步的,S6中,所述安全措施包括对比版本一致性验证客户端模块启动时间以及目标二进制文件生成时间、监控编译脚本相关进程文件操作是否有篡改目标二进制文件行为以及监控目标二进制文件路径是否由编译脚本创建并写入内容。

进一步的,S6中,若目标二进制文件在编译过程中被篡改,则离线哈希值生成失败。

本发明的有益效果:本发明源代码与二进制版本一致性的离线验证方法,利用版本一致性验证客户端模块监控执行二进制编译,确保本地二进制文件不被篡改,通过SM3哈希算法计算源代码哈希值、生成的二进制哈希值与内置的业务token生成离线哈希值,无须额外构建编译环境;基于企业/组织提交的源代码、二进制、离线哈希值,利用版本一致性验证服务端模块,通过SM3哈希算法计算源代码哈希值、二进制哈希值与内置的业务token生成哈希值,与离线哈希值对比验证版本一致性,不传输企业/组织的敏感信息,解决了验证源代码与二进制版本一致性需要在多样的环境下构建编译环境或记录版本对应信息,导致准确性低、普适性差、效率低的问题。

附图说明

图1是本发明源代码与二进制版本一致性的离线验证方法流程图。

具体实施方式

本发明源代码与二进制版本一致性的离线验证方法,如图1所示,包括以下步骤:

S1、访问发布或审查服务器,下载与编译环境相应的版本一致性验证客户端模块,生成业务token;

具体的,编译环境相应的版本可以为Linux/unix X86架构版本或Linux/unix ARM架构版本。

S2、部署源代码压缩包、编译脚本、版本一致性验证客户端模块到编译环境;

具体的,编译环境为当前已有的编译环境,以此不需要重新构建编译环境。

S3、运行版本一致性验证客户端模块,将源代码压缩包、编译脚本、目标二进制文件路径作为运行参数输入;

S4、版本一致性验证客户端模块校验目标二进制文件路径是否为存在文件,若不存在,则进行下一步;

具体的,若版本一致性验证客户端模块校验目标二进制文件路径存在文件,则认为可能存在重复生产或者造假的行为,因此,则离线哈希值生成失败,即源代码与二进制版本一致性验证失败。

S5、版本一致性验证客户端模块通过SM3算法计算源代码压缩包哈希值,并记录为A字符串;

S6、版本一致性验证客户端模块解压源代码压缩包,并执行编译脚本,编译目标二进制文件,并通过安全措施监控目标二进制文件的编译过程,若目标二进制文件在编译过程中没有被篡改,则执行下一步;

具体的,所述安全措施包括对比版本一致性验证客户端模块启动时间以及目标二进制文件生成时间、监控编译脚本相关进程文件操作是否有篡改目标二进制文件行为以及监控目标二进制文件路径是否由编译脚本创建并写入内容,以此对目标二进制文件的编译过程进行监控,防止目标二进制文件在编译过程中被篡改,若目标二进制文件在编译过程中被篡改,则离线哈希值生成失败,即源代码与二进制版本一致性验证失败。

S7、版本一致性验证客户端模块通过SM3算法计算目标二进制文件哈希值,并记录为B字符串;

S8、版本一致性验证客户端模块将A字符串、B字符串、业务token作为SM3算法输入,计算离线哈希值C;

S9、向服务端提交源代码压缩包、对应版本二进制文件、离线哈希值C;

S10、版本一致性验证服务端模块通过SM3算法计算源代码压缩包哈希值,记录为A1字符串;通过SM3算法计算对应版本二进制文件哈希值,记录为B1字符串;

S11、版本一致性验证服务端模块将A1字符串、B1字符串、业务token作为SM3算法输入,计算哈希值C1;

S12、版本一致性验证服务端模块对比离线哈希值C和哈希值C1;如果两者一致则源代码及二进制版本一致;如果两者不一致则源代码及二进制版本不一致。

在本发明中,基于企业/组织现有的编译环境,利用版本一致性验证客户端模块监控执行二进制编译,确保本地二进制文件不被篡改,通过SM3哈希算法计算源代码哈希值、生成的二进制哈希值与内置的业务token生成离线哈希值,无须额外构建编译环境;基于企业/组织提交的源代码、二进制、离线哈希值,利用版本一致性验证服务端模块,通过SM3哈希算法计算源代码哈希值、二进制哈希值与内置的业务token生成哈希值,与离线哈希值对比验证版本一致性,不传输企业/组织的敏感信息。

相关技术
  • 用于制备量子点膜的量子点胶水、量子点膜及其制备方法以及高光效量子点膜及其制备方法
  • 一种图案化量子点彩膜及其制备方法、显示装置
  • 一种用于高阻隔热收缩膜生产的高精度分切复卷装置
  • 一种防偏移瓦楞纸切割装置
  • 量子点墨水、量子点彩膜和显示装置
  • 一种防偏移的量子点膜生产用分切装置及其工艺方法
  • 一种防偏移的OPP膜生产用分切装置
技术分类

06120116542484