基于联盟链的软件完整性远程快速验证方法与系统

文档序号:37226861发布日期:2024-03-05 15:31阅读:17来源:国知局
基于联盟链的软件完整性远程快速验证方法与系统

本发明属于计算机软件安全,涉及软件完整性验证技术,尤其涉及一种基于联盟链的软件完整性远程快速验证方法与系统。


背景技术:

1、软件完整性验证技术。数字签名是一种软件完整性验证技术,软件发布者在发布的时候对应用进行签名,系统验证签名通过的时候,才可以成功安装应用。如windows需要对驱动签名进行认证,如果签名不通过,驱动就不能正常运行。但是这种机制需要安全中心自主收集公钥验证,厂商并没有形成联合机制。并且此种机制对安装后的软件文件缺乏验证,在软件安装后释放多个动态链接库文件,这些文件在软件运行前也需要进行验证。dpkg包管理程序同样具有验证功能,可以对安装后的软件文件进行完整性验证,但是它的哈希列表存储在本地,容易遭到篡改。因此这种方法主要是验证网络传输过程中软件文件没有被损坏,而不是防范恶意篡改。可信计算模块,如ima会度量软件文件的完整性,并验证存储在本地系统中的签名,但是这种方式的完整性状态时来自于系统的某一时刻,系统管理员无法判断此时系统完整性状态。

2、完整性度量技术。完整性度量是可信计算的一部分,以linux的完整性度量架构(ima)为例,会动态度量打开的软件文件的完整性,形成度量列表。远程度量技术,即通过可信计算的签名,将系统的软件文件的度量列表发送到远程机器中,同时保证度量列表的完整性,这一机制保证度量列表没有在传输中,或者发送前被篡改。完整性度量技术提供了软件文件的度量值,但是缺乏文件的正确完整性哈希值,因此需要用户自主收集文件的权威完整性哈希值,并和度量值进行对比,获得验证结果。

3、联盟链技术。联盟链技术是区块链技术的一种,它的每一个参与者都是明确了身份的,并且由pki机制进行身份鉴别。以hyperledger fabric为例,联盟链产生的交易需要签名来验证身份,需要系统中的参与者的有效签名。在联盟链中实现了数据库,可以存储相关的数据,在hyperledger fabric中是goleveldb或者couchdb。联盟链中实现了智能合约,可以处理读写的逻辑。联盟链中的智能合约是图灵完备的,可以实现各种逻辑的代码,实现身份鉴别和多种安全机制。因此联盟链技术特别适合多方协作的场景,可以方便地进行身份识别和相关的管理。但是联盟链技术的性能比较差,它的交易吞吐量始终是业务应用瓶颈,并且它的存储成本也过高。因此联盟链技术在参与者过多的情况下,需要突破性能瓶颈,实现轻量级的机制。目前的技术存在验证过程不安全,软件正确哈希值获取困难,验证效率低等缺点。


技术实现思路

1、针对上述现有技术存在的问题,本发明提供一种基于联盟链的软件完整性远程快速验证方法与系统,将联盟链作为整个软件系统的信任根,建立证据链,将软件的版本列表、软件文件哈希值列表等等存储成本、管理成本较高的部分存储在外部设备上,并且保证其完整性。

2、本发明中的联盟链主要和可信计算中可信链有关。可信链通常存在一个信任根,信任根的安全性一般由硬件可信芯片保证,在可信根的基础上,一级信任一级,最终建立起来一个可信链,从而保证整个系统的可信状态。在整个系统中,可信根最为重要,保证了整个系统的可信状态。本发明将联盟链作为整个系统的信任根,建立证据链。

3、本发明提供一种基于联盟链的软件完整性远程快速验证方法,对开发完成的软件(待验证软件)进行完整性度量,产生软件文件哈希值列表并发布,确定寻找地址方式;将寻址方式和哈希值存入版本列表;更新联盟链中的版本列表的哈希值;远程快速验证方法包括如下步骤:

4、1)获取待验证软件的名称和版本号。待验证软件的正确哈希值已经被发布。

5、2)读取远程待验证软件的度量日志,获取待验证软件的度量值,并通过可信签名和验证机制保证度量日志的正确性;

6、3)如果本地存在对应证据链缓存,读取本地证据链缓存,并从查询交易开始验证证据链的正确性。本发明的验证方法是逐级验证,通过联盟链的签名机制验证版本列表的正确性。版本列表中包含软件文件哈希值列表的寻址方式和哈希值,用于验证软件文件哈希值列表的完整性;如果联盟链签名机制验签通过,并且重新计算软件文件哈希值列表的哈希值,与版本列表中的哈希值一致则通过验证进入步骤6),如果不通过则进入步骤4)。

7、4)读取远程服务器的缓存,并且验证。

8、如果远程服务器存在对应的证据链的缓存,就进行验证,验证方法同步骤3,如果通过认证则进入步骤6),如果不通过则进入步骤5)。

9、5)以验证者的身份登录联盟链,查询软件的版本列表地址和哈希值,逐级访问验证,形成证据链,获取软件列表的完整性哈希值。

10、6)采用哈希值对比验证方法对比验证软件的度量值,得到验证结果。前面的步骤中,已经得到待验证软件的度量值以及发布者发布的完整性哈希值列表,两者一致则通过验证,不一致则不通过验证。

11、具体实施时,本发明实现了一种基于联盟链的软件完整性远程快速验证系统,包括外部存储系统、联盟链系统、度量验证系统三个子系统。

12、第一个子系统是外部存储系统,用于存储软件的版本列表和软件完整性哈希值列表,是具体存储系统。

13、软件在安装后会产生多个二进制文件,这些文件在软件启动运行的过程中应该是没有经过篡改的。软件发布者在一个版本的软件开发完成后,对软件文件进行度量(动态链接库等等可执行文件),形成此版本的软件文件的哈希值列表。软件发布者即可将该列表发布。在软件的版本列表中添加新版本的软件文件哈希值列表信息,至少包括软件文件哈希值列表的寻找方式及其完整性哈希值。

14、在一个可能实施方案中,软件文件哈希值列表包括该软件的所有的不可篡改的文件的标识及其哈希值。为考虑兼容性,文件标识可以使用安装时文件的默认绝对路径。版本列表中存储该版本软件文件哈希值列表的地址,及其完整性哈希值。

15、在外部存储系统中,可以根据版本列表中的软件文件哈希值列表的哈希值,保证软件文件哈希值列表的安全性,保证获取的软件文件哈希值列表是未经篡改的。

16、第二个子系统是联盟链系统,用于权限控制,联盟链系统的成员包括软件验证者以及发布者,他们的权限不同。联盟链系统存储软件版本列表的地址和哈希值,通过逐级验证的方法,保证外部存储系统存储内容的正确性。

17、联盟链系统具有多方协作、身份鉴别、不易篡改等等特性,是快速验证系统的信任根。对一个联盟链系统,新的用户加入需要联盟链中的成员同意,并且给予身份标识。在本发明中,联盟链的用户即软件发布者以及验证者。软件发布者需要在联盟链中写入软件相关的信息,至少包括版本列表的寻址方式以及版本列表的完整性哈希值。验证者需要读取软件的信息,但是不能写入。联盟链系统至少包括软件发布者的身份识别、权限管理以及存储软件相关信息的能力。

18、一般情况下,联盟链系统的交易需要多个成员进行签名,并且区块等数据需要多个节点进行存储。这导致联盟链系统在交易吞吐量,在本发明中体现为写入和查询能力比较低,难以满足大量用户的同时使用。另外存储成功过高,因此在可能实施方案中,应该避免在联盟链系统中写入过多信息,进行过多的操作。

19、在一个可能的实施方案中,联盟链系统具有身份鉴别、权限管理、版本列表信息的写入和读出能力。身份鉴别由联盟链本身的pki(public key infrastructure,公钥基础设施)实现。联盟链中实现链码,使用联盟链系统的api(application programminginterface,应用程序编程接口)鉴别交易发起者的身份。基于身份鉴别实现权限管理,软件发布者对自己软件的信息具有读写能力,对其他发布者的软件信息有读的能力。验证者只能读取软件信息。联盟链系统中同样需要具有存储能力可以存储软件相关的信息。

20、另一方面,联盟链系统和外部存储系统形成了证据链。这是可信计算的思想。联盟链系统中存储软件版本列表的地址和哈希值,保证版本列表的完整性。版本列表中存储文件哈希值列表的地址和哈希值,保证其完整性。在证据链中,联盟链是信任根。

21、在一个可能的实施方案中,联盟链的查询交易查询出版本列表的地址和哈希值,查询交易的正确性由联盟链的签名机制来保证。版本列表经过验证后,可以通过它寻找到对应版本的文件哈希值列表,并验证其完整性。

22、第三个子系统是度量验证系统,用于验证软件的完整性。此系统通过远程度量技术获取待验证软件的度量值,即目前待验证软件的哈希值;通过查询缓存或联盟链的方式获取待验证软件的正确哈希值,此哈希值由发布者发布,可以保证正确性;对比验证得到结果。

23、此系统包括度量值获取、软件文件哈希值列表获取、对比验证等。度量值获取可通过可信度量模块,获取远程机器的待验证软件的度量值。软件文件哈希值列表可以在缓存中获取,也可以查询联盟链获取。获取的过程即形成证据链的过程,此过程中,信任根是查询交易,通过联盟链验证查询交易的正确性,通过查询交易获得版本列表,通过版本列表获取待验证软件正确的文件哈希值列表,该哈希值列表由软件发布者发布,并经过了本发明的验证过程,可以认为是正确的。

24、在一种可能的实施方案中,度量模块可以通过ima(linux下的度量模块)以及acs(远程度量值获取),得到远程机器的度量值。验证者输入需要验证的软件名称和版本,在本地缓存或者远程服务器中获取缓存的证据链,并从查询交易开始验证证据链的正确性。在获取软件文件哈希值列表后,和度量值进行对比,得到对比的结果。

25、下面通过发布者发布、验证者验证的全过程说明本发明的具体使用。

26、对于软件的发布者采用以下过程。

27、步骤1:软件发布者在软件开发完成后,度量软件文件的完整性,产生软件文件哈希值列表,并且发布,确定地址等寻找方式。

28、步骤2:更新版本列表,将寻找方式和哈希值放入。

29、这两步都是在外部存储系统中完成的,不要经过联盟链的认证以及存储,可以实现软件文件哈希值列表获取的高效性。

30、步骤3:更新联盟链中,版本列表的信息,包括版本列表的哈希值等。

31、这一步需要权限识别、联盟链的其他节点验证,效率比较慢,但是是本发明发布过程需要写入联盟链的唯一一步,可以极大程度上减少联盟链系统的负载。

32、验证者的验证的步骤分为下面的过程。

33、步骤1:验证者需要验证的软件的名称和版本号。

34、步骤2:验证者读取远程的度量日志,获取目标软件的度量值。

35、度量值的获取主要通过可信模块,并且通过可信模块的签名和验证机制保证度量日志的正确性。

36、步骤3:验证者读取本地证据链缓存,并且验证。

37、如果本地存在待验证软件证据链的缓存,就进行验证,即从查询交易开始验证证据链的正确性,如果通过验证则进入步骤6,如果不通过则进入步骤4。

38、步骤4:验证读取远程服务器的缓存,并且验证。

39、如果远程服务器存在待验证软件的证据链缓存,就进行验证,如果通过认证则进入步骤6,如果不通过则进入步骤5。

40、步骤5:以验证者的身份登录联盟链,查询软件的版本列表地址和哈希值,逐级访问验证,形成证据链,获取软件列表的完整性哈希值。

41、步骤6:对比验证软件的度量值,得到验证结果。

42、在验证者验证的过程中,尽量避免访问联盟链系统,减轻联盟链的负载。根据实施显示,访问外部存储系统下载的过程要远远快于访问联盟链进行查询交易的过程。因此,本发明通过上述技术方案,实现了高效、安全、全面的软件完整性远程验证。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1