一种动态库完整性校验方法、装置、设备及可读存储介质与流程

文档序号:32750820发布日期:2022-12-31 00:39阅读:49来源:国知局
一种动态库完整性校验方法、装置、设备及可读存储介质与流程

1.本发明涉及计算机技术领域,特别涉及一种动态库完整性校验方法、装置、设备及可读存储介质。


背景技术:

2.计算机网络技术的迅猛发展极大地促进了信息交互,但伴随着攻击手段也在不断演化更新,当前动态库面临各种各样的安全威胁,比如软件代码被恶意篡改或破坏,如何保护数据的安全已经成为社会热点问题之一。如何对动态库中的代码和数据的完整性进行有效保护成为从业者日渐关心的问题。
3.动态库完整性的约束是为了防止代码、数据等重要信息被不法分子恶意篡改,造成服务器崩溃,而目前对动态库进行完整性保护的技术方案,大多是借助外部可执行程序,对动态库文件进行完整性计算,并将校验值在动态库的文件外部存储和管理,完整性校验的时候也由外部程序从外部获取对应的校验值并执行校验过程。可见,现有技术由外部程序获取对应校验值进行校验的过程对应用程序的侵入性较强,使用体验较差。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种动态库完整性校验方法、装置、设备及可读存储介质,解决了现有技术由外部程序获取对应校验值进行校验的过程对应用程序的侵入性较强,使用体验较差的问题。
5.为解决上述技术问题,本发明提供了一种动态库完整性校验方法,包括:
6.当接收到校验指令时,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,所述代码段中包括完整性校验代码段,所述动态库的完整数据段中包括完整性校验数据段和所述数据段;
7.对所述第一起止地址和所述第二起止地址进行完整性计算;
8.获取根据所述完整性计算得到的校验值,以及获取所述完整性校验数据段中的完整性校验值;
9.根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性。
10.可选的,所述获取数据段的第二起止地址,包括:
11.当所述数据段被所述完整性校验数据段分为两段时,获取第一段数据段的起止地址和第二段数据段的起止地址。
12.可选的,所述对所述第一起止地址和所述第二起止地址进行完整性计算,包括:
13.利用哈希算法对所述第一起止地址和所述第二起止地址进行完整性计算。
14.可选的,生成所述动态库的过程,包括:
15.获取初始代码段和初始数据段的起止地址,并进行完整性计算,得到所述完整性校验值;其中,所述初始代码段和所述初始数据段具有完整性;
16.将所述完整性校验值写入所述完整性校验数据段;
17.将所述完整性校验数据段、所述初始数据段与所述初始代码段进行集成,得到所述动态库。
18.可选的,所述将所述完整性校验值写入所述完整性校验数据段之前,还包括:
19.获取密钥,并将所述密钥写入所述完整性校验数据段;
20.相应地,获取初始代码段和初始数据段的起止地址,并进行完整性计算,得到所述完整性校验值,包括:
21.获取所述初始代码段的第三起止地址和所述初始数据段的第四起止地址;
22.按照预设提取规则提取所述密钥;
23.对所述密钥、所述第三起止地址和所述第四起止地址进行hmac计算,得到所述完整性校验值。
24.可选的,所述将所述完整性校验值写入所述完整性校验数据段,包括:
25.利用随机数算法生成随机数,并写入所述完整性校验数据段;
26.获取所述完整性校验值,并按预设隐藏规则写入所述完整性校验数据段。
27.可选的,所述根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性,包括:
28.当所述比对结果为所述校验值和所述完整性校验值不相同时,输出完整性校验失败的提示信息。
29.本发明还提供了一种动态库完整性校验装置,包括:
30.起止地址获取模块,用于当接收到启动指令时,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,所述代码段中包括完整性校验代码段,所述动态库的完整数据段中包括完整性校验数据段和所述数据段;
31.完整性计算模块,用于对所述第一起止地址和所述第二起止地址进行完整性计算;
32.校验值获取模块,用于获取根据所述完整性计算得到的校验值,以及获取所述完整性校验数据段中的完整性校验值;
33.完整性校验模块,用于根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性。
34.本发明还提供了一种动态库完整性校验设备,包括:
35.存储器,用于存储计算机程序;
36.处理器,用于执行所述计算机程序时实现上述动态库完整性校验方法的步骤。
37.本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的动态库完整性校验方法的步骤。
38.可见,本方法根据接收到的校验指令,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,代码段中包括完整性校验代码段,动态库的完整数据段中包括完整性校验数据段和数据段;对第一起止地址和第二起止地址进行完整性计算;获取根据完整性计算得到的校验值,以及获取完整性校验数据段中的完整性校验值;根据校验值与完整性校验值的比对结果,确定动态库的完整性。可见,和现有技术相比,本技术所提供的动态库完整性校验方法由于动态库自身包括完整性校验数据段,所以动态库自身可以执行完整性校验过程,应用程序完全不感知完整性校验过程,所以该方案对应用程序
message authentication code,哈希消息认证码)的完整性计算,那么此时该实施例对第一起止地址和第二起止地址进行完整性计算时也基于hmac(hash-based message authentication code,哈希消息认证码)的完整性计算;或者当生成动态库时基于sm4(对称加密算法)消息鉴别完整计算方法,那么此时该实施例对第一起止地址和第二起止地址进行完整性计算时也基于sm4(对称加密算法)消息鉴别进行完整性计算。该实施例中使用定位技术获取第一起止地址和第二起止地址,该实施例并不限定定位技术的类型,只要该定位技术可以获取该动态库中代码段和数据段的起止地址即可。
50.s102,获取根据完整性计算得到的校验值,以及获取完整性校验数据段中的完整性校验值。
51.该实施例并不限定校验值和完整性校验值的具体数值,只要完整性校验值和校验值是根据相同的完整性算法计算得到的即可。
52.s103,根据校验值与完整性校验值的比对结果,确定动态库的完整性。
53.该实施例中当校验值和完整性校验值的比对结果不一致时,说明动态库的完整性已经被破坏,当校验值和完整性校验值的比对结果一致时,说明动态库具有完整性没有被破坏。
54.基于上述实施方案,本发明实施例直接通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,代码段中包括完整性校验代码段,动态库的完整数据段中包括完整性校验数据段和数据段;对第一起止地址和第二起止地址进行完整性计算;获取根据完整性计算得到的校验值,以及获取完整性校验数据段中的完整性校验值;根据校验值与完整性校验值的比对结果,确定动态库的完整性。和现有技术将完整性校验值在动态库外部进行存储和管理,由外部程序从外部获取对应的校验值执行完整性校验过程相比,本发明实施例可以直接在动态库内部利用代码段中的完整性校验代码进行完整性校验,减少了外部程序对应用程序的侵入性,提高了使用者的体验感。
55.进一步,为了提高完整性校验数据段的安全性,以及位置设置的灵活性,获取上述数据段的第二起止地址,可以包括:
56.当数据段被完整性校验数据段分为两段时,获取第一段数据段的起止地址和第二段数据段的起止地址。
57.该实施例中,由于完整性校验数据段可以在数据段的任何位置,当完整性校验数据段位于数据段的中间时,数据段将被分成两段,此时完整性校验数据段位于数据段的中间,所以需要分别获取连续两段数据段的起止地址,即,第一段数据段的起止地址和第二段数据段的起止地址。当完整性校验数据段位于数据段中间时,被攻击的可能性会减少,所以具有更高的完整性。
58.进一步,为了提高加密的效率,对上述第一起止地址和第二起止地址进行完整性计算,可以包括:
59.利用哈希算法对第一起止地址和第二起止地址进行完整性计算。
60.该实施例中并不限定哈希算法的具体类型,只要可以用来计算第一起止地址和第二起止地址的完整性即可。例如哈希算法为sm3(国产哈希算法),使用哈希算法sm3(国产哈希算法)对第一起止地址和第二起止地址进行完整性计算,更加符合国家要求,加密的效率也更高;或者使用md5(message-digest algorithm,消息摘要算法)对第一起止地址和第二
起止地址进行完整性计算,或者使用sha(secure hash algorithm,安全哈希算法)。
61.进一步,为了确保动态库完整性校验方法的可行性,生成上述动态库的过程,可以包括:
62.获取初始代码段和初始数据段的起止地址,并进行完整性计算,得到完整性校验值;其中,初始代码段和初始数据段具有完整性;
63.将完整性校验值写入完整性校验数据段;
64.将完整性校验数据段、初始数据段与初始代码段进行集成,得到动态库。
65.该实施例中并不限定获取初始代码段和初始数据段起止地址的具体时机,只要可以确保生成该动态库时,数据段和代码段是完整地即可。例如,可以是当编辑好完整的初始代码段和初始数据段时,获取初始代码段和初始数据段起止地址,也可以是使用动态库一段时间并且确保该动态库是完整时,再获取初始代码段和初始数据段起止地址。
66.进一步,为了提高利用该动态库进行完整性校验的安全性,上述将完整性校验值写入完整性校验数据段之前,还可以包括:
67.获取密钥,并将密钥写入完整性校验数据段;
68.相应地,获取初始代码段和初始数据段的起止地址,并进行完整性计算,得到完整性校验值,包括:
69.获取初始代码段的第三起止地址和初始数据段的第四起止地址;
70.按照预设提取规则提取密钥;
71.对密钥、第三起止地址和第四起止地址进行hmac计算,得到完整性校验值。
72.该实施例并不限定密钥的具体数值,只要是事先协商或约定好的密钥,并且第三方并不知道的密钥即可。可根据用户设置自行选择,支持来自密码机、加密机等可信密码设备生成的密钥,也可以是现有的密钥管理系统生成的密钥。例如密钥可以是“mdddddddkc-j63b3
‑‑
ktjjjhhhhkpb”、“vx-48-qhc7k-6xxr2-x6hxx”、“d9y8h-4hw6b-26t-2cvpb-cdb9p”等。该实施例并不限定预设提取规则的具体类型,只要该预设提取规则与将该密钥写入完整性校验数据段的写入方式相对应即可。该实施例并不限定hmac(hash-based message authentication code,哈希消息认证码)的具体算法,例如可以是hmacmd5(基于md5(message digest algorithm 5)的消息验证代码)、hmacsha1(基于sha1(secure hash algorithm-1)的消息验证代码)、hmacsm3(基于sm3的消息验证代码)等完整性计算方法。
73.基于上述实施例,进一步,为了提高完整性校验值的隐藏性,上述将完整性校验值写入完整性校验数据段,可以包括:
74.利用随机数算法生成随机数,并写入完整性校验数据段;
75.获取完整性校验值,并按预设隐藏规则写入完整性校验数据段。
76.该实施例中并不限定随机数的具体生成方法,只要该随机数符合安全性、合规性即可。可以直接利用密码机生成随机数。该实施例也并不限定具体的隐藏规则,只要可以将完整性校验值写入保护密钥的完整性校验数据段即可。例如,将完整性校验值分为四部分,分散隐藏于包含随机数的完整性校验数据段,也可以将完整性校验值分为五部分,分散隐藏于包含随机数的完整性校验数据段。
77.进一步,为了提醒用户动态库完整性验证失败,上述根据校验值与完整性校验值的比对结果,确定动态库的完整性,可以包括:
78.当比对结果为校验值和完整性校验值不相同时,输出完整性校验失败的提示信息。
79.该实施例中并不限定提示信息的具体方式,例如可以是警报、文字提示、语音提示等,例如,输出动态库完整性校验失败的文字消息,或者语音输出动态库完整性校验失败的文字消息。
80.综上,基于上述实施例,通过本发明提供的动态库完整性校验方法,可以通过动态库自身所包含的完整性校验数据段中的完整性校验值和完整性校验代码段对该数据库直接进行完整性校验,不需要从动态库外部获取校验值,应用程序完全不感知完整性校验过程,所以该方案对应用程序无侵入性,易用性更好。并且,可以使用hmac(hash-based message authentication code,哈希消息认证码)方法对动态库进行完整性校验,提高利用该动态库进行完整性校验的安全性;进一步,为了提高完整性校验值的隐藏性,在完整性校验数据段加入随机数;进一步,为了提醒用户动态库完整性验证失败,动态库会输出完整性校验失败的提示信息。
81.下面对本发明实施例提供的一种动态库完整性校验装置进行介绍。下文描述的动态库完整性校验装置与上文描述的动态库完整性校验方法可相互对应参照。
82.具体请参考图2,图2为本发明实施例提供的一种动态库完整性校验装置的结构示意图,可以包括:
83.起止地址获取模块100,用于当接收到启动指令时,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,所述代码段中包括完整性校验代码段,所述动态库的完整数据段中包括完整性校验数据段和所述数据段;
84.完整性计算模块200,用于对所述第一起止地址和所述第二起止地址进行完整性计算;
85.校验值获取模块300,用于获取根据所述完整性计算得到的校验值,以及获取所述完整性校验数据段中的完整性校验值;
86.完整性校验模块400,用于根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性。
87.基于上述实施例,所述起止地址获取模块100,可以包括:
88.数据段获取单元,用于当所述数据段被所述完整性校验数据段分为两段时,获取第一段数据段的起止地址和第二段数据段的起止地址。
89.基于上述任意实施例,所述完整性计算模块200,可以包括:
90.哈希算法计算单元,用于利用哈希算法对所述第一起止地址和所述第二起止地址进行完整性计算。
91.基于上述任意实施例,所述起止地址获取模块100之前,还可以包括:
92.完整性设置模块,获取初始代码段和初始数据段的起止地址,并进行完整性计算,得到所述完整性校验值;其中,所述初始代码段和所述初始数据段具有完整性;
93.完整性校验数据段设置模块,用于将所述完整性校验值写入所述完整性校验数据段;
94.动态库生成模块,用于将所述完整性校验数据段、所述初始数据段与所述初始代码段进行集成,得到所述动态库。
95.基于上述任意实施例,所述完整性校验数据段设置模块之前,还可以包括:
96.密钥获取模块,用于获取密钥,并将所述密钥写入所述完整性校验数据段;
97.相应地,所述完整性设置模块,可以包括:
98.初始地址获取单元,用于获取所述初始代码段的第三起止地址和所述初始数据段的第四起止地址;
99.密钥提取单元,用于按照预设提取规则提取所述密钥;
100.完整性校验值计算单元,用于对所述密钥、所述第三起止地址和所述第四起止地址进行hmac计算,得到所述完整性校验值。
101.基于上述任意实施例,所述完整性校验数据段设置模块,可以包括:
102.随机数生成单元,用于利用随机数算法生成随机数,并写入所述完整性校验数据段;
103.隐藏单元,用于获取所述完整性校验值,并按预设隐藏规则写入所述完整性校验数据段。
104.基于上述任意实施例,所述完整性校验模块400,可以包括:
105.提示模块,用于当所述比对结果为所述校验值和所述完整性校验值不相同时,输出完整性校验失败的提示信息。
106.基于上述实施方案,本实施例提供了一种动态库完整性校验装置,该装置可以包括,起止地址获取模块100,用于当接收到启动指令时,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,所述代码段中包括完整性校验代码段,所述动态库的完整数据段中包括完整性校验数据段和所述数据段;完整性计算模块200,用于对所述第一起止地址和所述第二起止地址进行完整性计算;校验值获取模块300,用于获取根据所述完整性计算得到的校验值,以及获取所述完整性校验数据段中的完整性校验值;完整性校验模块400,用于根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性。可见,本实施例所提供的动态库完整性校验装置通过在代码段中加入完整性校验代码段,以及添加包含完整性校验值的完整性校验代码段,从而利用完整性校验数据段中的完整性校验值对动态库的中代码段和数据段进行完整性校验,因此动态库自身可以执行完整性校验过程,应用程序完全不感知完整性校验过程,所以该方案对应用程序无侵入性,易用性更好。
107.下面对本发明实施例提供的动态库完整性校验设备进行介绍,下文描述的动态库完整性校验设备与上文描述的动态库完整性校验方法可相互对应参照。
108.请参考图3,图3为本发明实施例提供的一种动态库完整性校验设备的结构示意图,可以包括:
109.存储器10,用于存储计算机程序;
110.处理器20,用于执行计算机程序,以实现上述动态库完整性校验方法的步骤。
111.如图3所示,为动态库完整性校验设备的结构示意图,可以包括:存储器10、处理器20、通信接口31和通信总线32。存储器10、处理器20、通信接口31均通过通信总线32完成相互间的通信。
112.在本发明实施例中,存储器10中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本技术实施例中,存储器10中可以存储有用于
实现以下功能的程序:
113.当接收到校验指令时,通过动态库获取代码段的第一起止地址,以及获取数据段的第二起止地址;其中,所述代码段中包括完整性校验代码段,所述动态库的完整数据段中包括完整性校验数据段和所述数据段;
114.对所述第一起止地址和所述第二起止地址进行完整性计算;
115.获取根据所述完整性计算得到的校验值,以及获取所述完整性校验数据段中的完整性校验值;
116.根据所述校验值与所述完整性校验值的比对结果,确定所述动态库的完整性。
117.在一种可能的实现方式中,存储器10可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
118.此外,存储器10可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括nvram。存储器存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可以包括各种系统程序,用于实现各种基础任务以及处理基于硬件的任务。
119.处理器20可以为中央处理器(central processing unit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件,处理器20可以是微处理器或者也可以是任何常规的处理器等。处理器20可以调用存储器10中存储的程序。
120.通信接口31可以为通信模块的接口,用于与其他设备或者系统连接。
121.当然,需要说明的是,图3所示的结构并不构成对本技术实施例中动态库完整性校验设备的限定,在实际应用中动态库完整性校验设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。
122.下面对本发明实施例提供的可读存储介质进行介绍,下文描述的可读存储介质与上文描述的动态库完整性校验方法可相互对应参照。
123.本发明还提供一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的动态库完整性校验方法的步骤。
124.该可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
125.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
126.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不
应该认为超出本发明的范围。
127.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
128.以上对本发明所提供的一种动态库完整性校验设备方法、装置、设备和可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,例如也可以使用该方法对静态库或者可执行代码的完整性进行检测,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1