CN115905895B - 一种基于区块链的sbom标识聚类模型实现方法 - Google Patents
一种基于区块链的sbom标识聚类模型实现方法 Download PDFInfo
- Publication number
- CN115905895B CN115905895B CN202310214871.2A CN202310214871A CN115905895B CN 115905895 B CN115905895 B CN 115905895B CN 202310214871 A CN202310214871 A CN 202310214871A CN 115905895 B CN115905895 B CN 115905895B
- Authority
- CN
- China
- Prior art keywords
- sbom
- data
- content
- materials
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据处理领域,涉及一种基于区块链的SBOM标识聚类模型实现方法:获取本地软件物料清单SBOM;构建本地软件物料清单SBOM的MerkleTrees结构体;根据本地软件物料清单SBOM中的DocumentName数据项在远端数据库中查询出相应的远端软件物料清单SBOM,构建远端软件物料清单SBOM的MerkleTrees结构体;计算本地软件物料清单SBOM的MerkleTrees结构体的各个节点,与远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点的相似度;求得本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度。本发明实现对软件的聚类。
Description
技术领域
本发明属于数据处理技术领域,具体涉及一种基于区块链的SBOM标识聚类模型实现方法。
背景技术
软件是计算机系统设计的重要依据,具体指的是与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档以及数据,软件是用户与硬件之间的接口界面,主要负责用户与计算机之间的交流。一个软件通常都对应有一个SBOM清单,SBOM清单包含了软件的组件信息,由第三方开源库组件、供应商提供的软件组件和企业自己编写的专有组件构成。然而,现有技术中缺少根据软件的SBOM清单来对软件进行聚类分析的方法,由此本发明提出一种基于区块链的SBOM标识聚类模型实现方法。
发明内容
本发明分别获取本地软件物料清单SBOM和远端软件物料清单SBOM,并且又分别构建本地软件物料清单SBOM的MerkleTrees结构体,以及远端软件物料清单SBOM的MerkleTrees结构体,从而计算二者的整体相似度,当整体相似度大于一定值时,将本地软件物料清单SBOM和远端软件物料清单SBOM判定为是同一类别,旨在根据软件物料清单SBOM信息对软件进行聚类处理。
为了达到上述的发明目的,本发明给出如下所述的一种基于区块链的SBOM标识聚类模型实现方法,主要包括以下的步骤:
从本地数据库获取软件的SPDX文档格式的本地软件物料清单SBOM;
基于本地软件物料清单SBOM,获取<Package>结构体的内容信息,结构体的内容信息,以及结构体的内容信息,从而构建本地软件物料清单SBOM的MerkleTrees结构体;
从本地软件物料清单SBOM读取数据项的内容信息,并且根据数据项的内容信息在远端数据库中查询出相应的远端软件物料清单SBOM,还检查本地软件物料清单SBOM的数据项的内容信息与远端软件物料清单SBOM的数据项的内容信息是否一致,若二者一致,结束步骤,若二者不一致,获取远端软件物料清单SBOM中的<Package>结构体的内容信息,结构体的内容信息,以及结构体的内容信息,从而构建远端软件物料清单SBOM的MerkleTrees结构体;
遍历本地软件物料清单SBOM的MerkleTrees结构体的各个节点,同时以相同的方法遍历远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点,若本地软件物料清单SBOM的MerkleTrees结构体的节点对应的数据项的内容信息与远端软件物料清单SBOM的MerkleTrees结构体的相应的节点对应的数据项的内容信息一致,则将两个节点的相似度设为1,若不一致,则计算两个节点的相似度;
在遍历完成本地软件物料清单SBOM的MerkleTrees结构体的各个节点,和远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点之后,针对若干个相似度采用加权求和法得到本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度,若整体相似度大于80%,则将本地软件物料清单SBOM和远端软件物料清单SBOM归为一类,并且将整体相似度以及远端软件物料清单SBOM的数据项的内容信息写入本地软件物料清单SBOM中的数据项。
作为本发明的一种优选技术方案,将整体相似度以及远端软件物料清单SBOM的数据项的内容信息写入本地软件物料清单SBOM中的数据项之后,还包括将本地软件物料清单SBOM中的不同的<Package>结构体的内容信息分别作为数据区块以形成Package的区块链进行存储,以及将本地软件物料清单SBOM中的不同的结构体的内容信息分别作为数据区块以形成File的区块链进行存储。
作为本发明的一种优选技术方案,向Package的区块链写入信息的值的过程,包括如下步骤:
对于Package的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
Package的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
Package的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从File的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在Package的区块链中原来的全部数据区块,以及确定的File的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到Package的区块链上。
作为本发明的一种优选技术方案,向File的区块链写入信息的值的过程,包括如下步骤:
对于File的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
File的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
File的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从Package的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在File的区块链中原来的全部数据区块,以及确定的Package的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到File的区块链上。
作为本发明的一种优选技术方案,在结束向Package的区块链写入信息的值之后,还包括如下步骤:
对于Package的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
作为本发明的一种优选技术方案,在结束向File的区块链写入信息的值之后,还包括如下步骤:
对于File的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
本发明还提供一种计算机存储介质,所述计算机存储介质存储有程序指令,其中,在所述程序指令运行时控制所述计算机存储介质所在设备执行上述中任意一项所述的方法。
本发明还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的方法。
与现有技术相比,本发明的有益效果至少如下所述:
在本发明中,首先从本地数据库获取软件的SPDX文档格式的本地软件物料清单SBOM;接着基于本地软件物料清单SBOM的内容信息,构建本地软件物料清单SBOM的MerkleTrees结构体;其次根据本地软件物料清单SBOM中的数据项在远端数据库中查询出相应的远端软件物料清单SBOM,并且构建远端软件物料清单SBOM的MerkleTrees结构体;再次计算本地软件物料清单SBOM的MerkleTrees结构体的各个节点,与远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点的相似度;最后采用加权求和法得到本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度,当整体相似度大于一定值时,将本地软件物料清单SBOM和远端软件物料清单SBOM判定为是同一类别。本发明能够实现根据软件物料清单SBOM的内容信息对于不同的软件进行聚类处理。
附图说明
图1为本发明的一种基于区块链的SBOM标识聚类模型实现方法的步骤流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一xx脚本称为第二xx脚本,且类似地,可将第二xx脚本称为第一xx脚本。
本发明提供了如图1所示的一种基于区块链的SBOM标识聚类模型实现方法,主要通过执行如下的步骤过程来实现:
步骤一、从本地数据库获取软件的SPDX文档格式的本地软件物料清单SBOM;
步骤二、基于本地软件物料清单SBOM,获取<Package>结构体的内容信息,结构体的内容信息,以及结构体的内容信息,从而构建本地软件物料清单SBOM的MerkleTrees结构体;
步骤三、从本地软件物料清单SBOM读取数据项的内容信息,并且根据数据项的内容信息在远端数据库中查询出相应的远端软件物料清单SBOM,还检查本地软件物料清单SBOM的数据项的内容信息与远端软件物料清单SBOM的数据项的内容信息是否一致,若二者一致,结束步骤,若二者不一致,获取远端软件物料清单SBOM中的<Package>结构体的内容信息,结构体的内容信息,以及结构体的内容信息,从而构建远端软件物料清单SBOM的MerkleTrees结构体;
步骤四、遍历本地软件物料清单SBOM的MerkleTrees结构体的各个节点,同时以相同的方法遍历远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点,若本地软件物料清单SBOM的MerkleTrees结构体的节点对应的数据项的内容信息与远端软件物料清单SBOM的MerkleTrees结构体的相应的节点对应的数据项的内容信息一致,则将两个节点的相似度设为1,若不一致,则计算两个节点的相似度;
步骤五、在遍历完成本地软件物料清单SBOM的MerkleTrees结构体的各个节点,和远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点之后,针对若干个相似度采用加权求和法得到本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度,若整体相似度大于80%,则将本地软件物料清单SBOM和远端软件物料清单SBOM归为一类,并且将整体相似度以及远端软件物料清单SBOM的数据项的内容信息写入本地软件物料清单SBOM中的数据项。
具体的,本发明提出根据软件项目的软件物料清单SBOM信息来实现对不同软件的聚类处理,在步骤一中,首先从本地数据库获取软件的SPDX文档格式的本地软件物料清单SBOM,在步骤二中,根据本地软件物料清单SBOM,获取其中的<Package>结构体、结构体、结构体的内容信息,用来构建本地软件物料清单SBOM的MerkleTrees结构体,该MerkleTrees结构体具体为树结构,树结构的根节点为本地软件物料清单SBOM,根节点的子节点包括<Package>结构体、结构体、结构体,这3个子节点下又分别具有自己的子树结构,在步骤三中,根据本地软件物料清单SBOM中的数据项的内容信息在远端数据库中查询出相应的远端软件物料清单SBOM,如果他们的数据项的内容信息相同的话,就结束聚类处理的步骤,如果他们的数据项的内容信息不相同的话,就获取远端软件物料清单SBOM中的<Package>结构体、结构体、结构体的内容信息,从而构建远端软件物料清单SBOM的MerkleTrees结构体,该MerkleTrees结构体和上述MerkleTrees结构体类似,其中,上述数据项指的是SPDX文档格式的软件物料清单SBOM的开头部分中的数据项,在步骤四中,分别对应遍历本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的各个节点,如果遍历到的两个节点对应的数据项的内容信息相同的话,该数据项指的是两个节点对应的MerkleTrees结构体、或者结构体、或者结构体的数据项,那么他们的相似度为1,否则的话,计算两个节点对应的MerkleTrees结构体、或者结构体、或者结构体的相似度,在步骤五中,遍历完了本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的各个节点之后,已经得到了若干个上述相似度,再针对若干个上述相似度通过加权求和法得到本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度,如果整体相似度大于一定值的话,就能够判断本地软件物料清单SBOM对应的软件和远端软件物料清单SBOM对应的软件是同一类别的。
进一步的,将整体相似度以及远端软件物料清单SBOM的数据项的内容信息写入本地软件物料清单SBOM中的数据项之后,还包括将本地软件物料清单SBOM中的不同的<Package>结构体的内容信息分别作为数据区块以形成Package的区块链进行存储,以及将本地软件物料清单SBOM中的不同的结构体的内容信息分别作为数据区块以形成File的区块链进行存储。
进一步的,Package的区块链中的数据区块和File的区块链中的数据区块包括第一哈希值、第二哈希值、第一数据区域、第二数据区域的内容,其中,第一哈希值是将前一个数据区块的全部内容输入预设的哈希函数的输出结果,第二哈希值是将前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数的输出结果,第一数据区域用来存储需要加密存储的数据,第二数据区域用来存储普通的数据。
具体的,本发明的区块链中的数据区块由四部分内容组成,也即第一哈希值、第二哈希值、第一数据区域、第二数据区域的内容,在区块链建成之初每个数据区块都是通过第一哈希值和第二哈希值的内容与其他数据区块相互连接,第一哈希值的内容是把前一个数据区块的全部内容也即第一哈希值、第二哈希值、第一数据区域、第二数据区域的内容输入预设的哈希函数得到的,第二哈希值的内容是把前一个数据区块的除第一数据区域的内容之外的内容也即第一哈希值、第二哈希值、第二数据区域的内容输入预设的哈希函数得到的,此外,在新建一个数据区块时,可以把将来有加密需要的数据存储到其中的第一数据区域,而把将来没有加密需要的数据存储到其中的第二数据区域,举例如可以把<PackageName>数据项的内容信息存储到第一数据区域,把<PackageVerificationCode>数据项的内容信息存储到第二数据区域,因为<PackageName>数据项的内容信息具有更高的保密要求,数据区块的具体功能将在下文中进行详细描述。
进一步的,向Package的区块链写入信息的值的过程,包括如下步骤:
步骤一、对于Package的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
步骤二、Package的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
步骤三、Package的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从File的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在Package的区块链中原来的全部数据区块,以及确定的File的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到Package的区块链上。
进一步的,向File的区块链写入信息的值的过程,包括如下步骤:
步骤一、对于File的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
步骤二、File的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
步骤三、File的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从Package的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在File的区块链中原来的全部数据区块,以及确定的Package的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到File的区块链上。
具体的,向Package的区块链写入信息的值的过程指的是使用本地软件物料清单SBOM中的不同的<Package>结构体的内容信息建立Package的区块链的过程,而向File的区块链写入信息的值的过程指的是使用本地软件物料清单SBOM中的不同的结构体的内容信息建立File的区块链的过程,由于这两个过程是类似的,这里以向Package的区块链写入信息的值的过程为例进行说明,在步骤一中,生成一个新的数据区块,举例如将<PackageName>数据项的内容信息存储到其中的第一数据区域,而将<PackageVerificationCode>数据项的内容信息存储到其中的第二数据区域,在步骤二中,Package的区块链把之前全部的数据区块的二进制哈希值组成一个输入数据,并且输入到一个哈希函数得到二进制输出值,还把这个二进制输出值划分成几个长度相同的二进制数值,二进制数值的长度不够时用0补齐,在步骤三中,考虑到在向Package的区块链添加新的数据区块之前,应该对新的数据区块进行验证,因此按照Package的区块链中原来的数据区块的总数量和一定的比例值确定一个固定数量,该固定数量是将从File的区块链中确定的数据区块的个数,这些数据区块和Package的区块链中原来的数据区块一起来验证新的数据区块,来提高验证处理的可信性。结束向Package的区块链写入信息的值的过程时,以及结束向File的区块链写入信息的值的过程时,Package的区块链和File的区块链建立完成。
进一步的,在结束向Package的区块链写入信息的值之后,还包括如下步骤:
步骤一、对于Package的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
步骤二、确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
进一步的,在结束向File的区块链写入信息的值之后,还包括如下步骤:
步骤一、对于File的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
步骤二、确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
具体的,本发明在Package的区块链和File的区块链建成之后,才对其中的数据区块存储的数据进行加密处理,这样做不仅是为了避免在建立Package的区块链和File的区块链的同时还需要进行加密处理来花费额外的时间,从而能够缩短建立Package的区块链和File的区块链的整体时间,还能满足数据的保密要求,提升数据的安全性,这里以在Package的区块链中进行加密处理来进行说明,在File的区块链中进行加密处理与之类似,在步骤一中,对于Package的区块链中的数据区块,将第一数据区域的内容进行加密处理,举例如第一数据区域的内容为<PackageName>数据项的内容信息,并且依据加密处理后的这个数据区块,使用与计算第一哈希值的内容的方法相同的方法计算第一输出结果,使用与计算第二哈希值的内容的方法相同的方法计算第二输出结果,在步骤二中,取得这个数据区块的下一个数据区块的第一哈希值的内容和第二哈希值的内容,分别比较第一哈希值的内容和第一输出结果,以及第二哈希值的内容和第二输出结果,在第一哈希值的内容和第一输出结果不同,第二哈希值的内容和第二输出结果相同时,说明下一个数据区块的上个数据区块即这个数据区块,已经进行了加密处理,在第一哈希值的内容和第一输出结果不同,第二哈希值的内容和第二输出结果也不同时,说明下一个数据区块的上个数据区块即这个数据区块的第二数据区域的内容发生了变化。
根据本发明实施例的另一个方面,提供了一种计算机存储介质,计算机存储介质存储有程序指令,其中,在程序指令运行时控制计算机存储介质所在设备执行上述中任意一项的方法。
根据本发明实施例的另一个方面,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的方法。
应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一个非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上上述的实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上上述的实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
以上上述的仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,包括如下步骤:
从本地数据库获取软件的SPDX文档格式的本地软件物料清单SBOM;
基于本地软件物料清单SBOM,获取Package结构体的内容信息,File Infomation结构体的内容信息,以及Relationships结构体的内容信息,从而构建本地软件物料清单SBOM的MerkleTrees结构体;
从本地软件物料清单SBOM读取DocumentName数据项的内容信息,并且根据DocumentName数据项的内容信息在远端数据库中查询出相应的远端软件物料清单SBOM,还检查本地软件物料清单SBOM的SPDXID数据项的内容信息与远端软件物料清单SBOM的SPDXID数据项的内容信息是否一致,若二者一致,结束步骤,若二者不一致,获取远端软件物料清单SBOM中的Package结构体的内容信息,File Infomation结构体的内容信息,以及Relationships结构体的内容信息,从而构建远端软件物料清单SBOM的MerkleTrees结构体;
遍历本地软件物料清单SBOM的MerkleTrees结构体的各个节点,同时以相同的方法遍历远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点,若本地软件物料清单SBOM的MerkleTrees结构体的节点对应的SPDXID数据项的内容信息与远端软件物料清单SBOM的MerkleTrees结构体的相应的节点对应的SPDXID数据项的内容信息一致,则将两个节点的相似度设为1,若不一致,则计算两个节点的相似度;
在遍历完成本地软件物料清单SBOM的MerkleTrees结构体的各个节点,和远端软件物料清单SBOM的MerkleTrees结构体的相应的各个节点之后,针对若干个相似度采用加权求和法得到本地软件物料清单SBOM的MerkleTrees结构体和远端软件物料清单SBOM的MerkleTrees结构体的整体相似度,若整体相似度大于80%,则将本地软件物料清单SBOM和远端软件物料清单SBOM归为一类,并且将整体相似度以及远端软件物料清单SBOM的SPDXID数据项的内容信息写入本地软件物料清单SBOM中的Annotation数据项;
将本地软件物料清单SBOM中的不同的Package结构体的内容信息分别作为数据区块以形成Package的区块链进行存储,以及将本地软件物料清单SBOM中的不同的FileInfomation结构体的内容信息分别作为数据区块以形成File的区块链进行存储。
2.根据权利要求1所述的一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,Package的区块链中的数据区块和File的区块链中的数据区块包括第一哈希值、第二哈希值、第一数据区域、第二数据区域的内容,其中,第一哈希值是将前一个数据区块的全部内容输入预设的哈希函数的输出结果,第二哈希值是将前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数的输出结果,第一数据区域用来存储需要加密存储的数据,第二数据区域用来存储普通的数据。
3.根据权利要求2所述的一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,向Package的区块链写入信息的值的过程,包括如下步骤:
对于Package的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
Package的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
Package的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从File的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在Package的区块链中原来的全部数据区块,以及确定的File的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到Package的区块链上。
4.根据权利要求2所述的一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,向File的区块链写入信息的值的过程,包括如下步骤:
对于File的区块链,在需要写入信息的值的情况下,新建一个数据区块,并且将信息的值写入新的数据区块的第一数据区域和第二数据区域;
File的区块链将其中原来的全部数据区块的二进制哈希值组成一个输入数据,并且将这个输入数据输入预设的哈希函数,并且得到哈希函数的二进制输出值,同时将哈希函数的二进制输出值等分为长度相等的若干个二进制数值;
File的区块链统计其中原来的全部数据区块的总数量,同时使用总数量乘以预设的比例值得到固定数量,从若干个二进制数值中随机选择固定数量的二进制数值,还从Package的区块链中确定出编号与被选择的二进制数值相同的数据区块,仅在File的区块链中原来的全部数据区块,以及确定的Package的区块链中的数据区块都针对新的数据区块验证通过时,把前一个数据区块的全部内容输入预设的哈希函数得到的输出结果作为新的数据区块的第一哈希值的内容,同时把前一个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到的输出结果作为新的数据区块的第二哈希值的内容,以将新的数据区块连接到File的区块链上。
5.根据权利要求3所述的一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,在结束向Package的区块链写入信息的值之后,还包括如下步骤:
对于Package的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
6.根据权利要求4所述的一种基于区块链的SBOM标识聚类模型实现方法,其特征在于,在结束向File的区块链写入信息的值之后,还包括如下步骤:
对于File的区块链中的数据区块,将第一数据区域的内容进行加密处理,并且把这个数据区块的全部内容输入预设的哈希函数得到第一输出结果,还把这个数据区块的除第一数据区域的内容之外的内容输入预设的哈希函数得到第二输出结果;
确定下一个数据区块,同时获取下一个数据区块的第一哈希值的内容和第二哈希值的内容,当第一输出结果与第一哈希值的内容不同,并且第二输出结果与第二哈希值的内容相同时,判定下一个数据区块的上一个数据区块进行了加密处理。
7.一种计算机存储介质,其特征在于,所述计算机存储介质存储有程序指令,其中,在所述程序指令运行时控制所述计算机存储介质所在设备执行权利要求1至6中任意一项所述的方法。
8.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310214871.2A CN115905895B (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链的sbom标识聚类模型实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310214871.2A CN115905895B (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链的sbom标识聚类模型实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905895A CN115905895A (zh) | 2023-04-04 |
CN115905895B true CN115905895B (zh) | 2023-05-09 |
Family
ID=85739236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310214871.2A Active CN115905895B (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链的sbom标识聚类模型实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905895B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408319A (zh) * | 2018-08-30 | 2019-03-01 | 中国地质大学(武汉) | 一种基于区块链的软件运行技术状态监控方法 |
CN115271586A (zh) * | 2022-07-12 | 2022-11-01 | 苏州浪潮智能科技有限公司 | 物料清单生成方法、装置、计算机设备和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8650506B2 (en) * | 2005-11-10 | 2014-02-11 | International Business Machines Corporation | Use of extensible object data to represent a fully qualified solution order |
US11150888B2 (en) * | 2018-12-22 | 2021-10-19 | Daniel Ivan Beard | Software bill of materials validation systems and methods |
CN112150149A (zh) * | 2020-09-24 | 2020-12-29 | 深圳市中装智链科技有限公司 | 基于区块链的数据追溯方法、装置、计算机设备及存储介质 |
CN114021776A (zh) * | 2021-09-30 | 2022-02-08 | 联想(北京)有限公司 | 一种物料组合选取方法、装置和电子设备 |
CN115018431B (zh) * | 2022-08-08 | 2022-10-25 | 树根格致科技(湖南)有限公司 | Bom数据共享方法、区块链服务器和计算机可读存储介质 |
CN115658128A (zh) * | 2022-10-18 | 2023-01-31 | 北京瀚马信息科技有限公司 | 一种生成软件物料清单的方法、装置及存储介质 |
CN115658080A (zh) * | 2022-11-11 | 2023-01-31 | 浙江路为科技有限公司 | 一种软件开源代码成分的识别方法及系统 |
CN115643017B (zh) * | 2022-12-23 | 2023-03-31 | 云加速(北京)科技有限公司 | 一种基于混合编码模型的软件标识有效性校验方法 |
-
2023
- 2023-03-08 CN CN202310214871.2A patent/CN115905895B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408319A (zh) * | 2018-08-30 | 2019-03-01 | 中国地质大学(武汉) | 一种基于区块链的软件运行技术状态监控方法 |
CN115271586A (zh) * | 2022-07-12 | 2022-11-01 | 苏州浪潮智能科技有限公司 | 物料清单生成方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115905895A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11283616B2 (en) | Method for index-based and integrity-assured search in a blockchain | |
KR102519646B1 (ko) | 앵커링 기반 정보 공유 방법 및 이를 지원하는 앵커링 장치 | |
CN111652615B (zh) | 基于区块链大数据的安全识别方法及人工智能云服务平台 | |
CN111695903A (zh) | 基于区块链和移动互联网的信息流分析方法及云计算平台 | |
CN112451972A (zh) | 基于游戏引擎的资源压缩包构建方法、装置、系统及介质 | |
CN115905895B (zh) | 一种基于区块链的sbom标识聚类模型实现方法 | |
CN110569240B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
US11138000B2 (en) | Tree delta encoding | |
CN115421699A (zh) | 类继承关系分析方法、装置、计算机设备和存储介质 | |
Bernasconi et al. | Index-resilient zero-suppressed bdds: Definition and operations | |
CN112633736A (zh) | 基于区块链系统的风险监测方法、系统及装置 | |
CN116126998B (zh) | 一种档案同源核查方法和系统 | |
CN112307087B (zh) | 基于决策树的业务数据投被关系匹配方法和装置 | |
CN115686380B (zh) | 一种文件存储的方法、装置、计算机设备及存储介质 | |
CN111815337B (zh) | 一种基于区块链的全链路防伪追溯方法、系统、智能终端及存储介质 | |
US11675817B1 (en) | Synthetic data generation | |
CN117478149B (zh) | 一种数据压缩的方法、装置、计算机设备和可读存储介质 | |
CN112100249B (zh) | 一种数据挖掘方法及系统 | |
CN113868341B (zh) | 联盟链的预期共识方法 | |
CN117932124B (zh) | 一种cpe设备的信息交互方法、装置、设备及存储介质 | |
US20220043899A1 (en) | Electronic device and method for authenticating software based on blockchain | |
RU2637482C2 (ru) | Способ многоуровневого контроля целостности электронных документов | |
CN116881164A (zh) | 金融信息系统中测试数据的校验修正方法、装置和设备 | |
CN116911589A (zh) | 审核流程的生成方法、审核流程的生成装置及存储介质 | |
Arora et al. | Analysis of XML Data Integrity Using Multiple Digest Schemes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |