CN101236496A - 一种软件一致性检测方法和装置 - Google Patents
一种软件一致性检测方法和装置 Download PDFInfo
- Publication number
- CN101236496A CN101236496A CNA2007100368988A CN200710036898A CN101236496A CN 101236496 A CN101236496 A CN 101236496A CN A2007100368988 A CNA2007100368988 A CN A2007100368988A CN 200710036898 A CN200710036898 A CN 200710036898A CN 101236496 A CN101236496 A CN 101236496A
- Authority
- CN
- China
- Prior art keywords
- address
- software
- hash value
- data
- unit
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种软件一致性检测方法和装置,防止攻击者采取修改系统程序或加入恶意代码的方法破坏移动终端的正常运行,以保护移动终端自身的安全。其技术方案为:本发明在移动终端的软件首次运行时通过系统初始化程序随机生成并存储校验值,并在后续的每次运行前解密该校验值,重新计算起始地址和结束地址之间的HASH值,再将初始化时的HASH值和之后的HASH值进行比较以判断软件程序是否被修改。本发明应用于移动通信领域。
Description
技术领域
本发明涉及一种检测方法和装置,尤其涉及一种移动终端在开机阶段对引导程序和系统程序以及其他重要数据的一致性检测方法和装置。
背景技术
移动终端软件是移动终端的重要组成部分,特别是对于引导程序和系统程序,它们又是软件中的核心部分,它们的安全构成了整个移动终端安全的基础。如果它们遭到了非法的修改或者被加入了恶意的程序,就会导致移动终端不可想象的后果。轻则造成移动终端无法正常工作,重则导致移动终端内的重要数据被泄漏或监听。因此,非常有必要在移动终端开机的时候对关键软件程序进行一致性检测,以保证软件程序的完整性和可信性。
目前,对软件进行一致性检测的方法主要是通过计算软件代码的哈希(Hash)值来进行的。哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个较小二进制值称为Hash值。Hash值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的Ha sh值可以检验数据的完整性。
理论上,计算并校验所有软件代码的Hash值是最好的检测软件一致性的方法。然而实际上计算所有代码的Hash值存在两个问题:1)代码多、计算量大,会大大增加移动终端的开机时间;2)攻击者同时修改程序和程序对应的Ha sh值便可以轻易破解该检测方法。
而固定的截取程序的某一段内容计算Hash值,虽然可减小计算量且可防止攻击者采用上述2)的方法来破解检测程序,但是由于计算地址是固定的,攻击者仍然可以通过破解一个移动终端来达到破译所有同型号移动终端的目的。
发明内容
本发明的目的在于解决上述问题,提供了一种软件一致性检测方法和装置,防止攻击者采取修改系统程序或加入恶意代码的方法破坏移动终端的正常运行,以保护移动终端自身的安全。
本发明的技术方案为:本发明提供了一种软件一致性检测方法,对移动终端的软件进行一致性检测,判断该软件的数据是否被改动,该方法包括系统初始化过程及后续的检测过程,其中,
该系统初始化过程仅在一移动终端的软件第一次运行过程中有效运行一次,包括:
在软件程序的地址范围内随机选取一起始地址和一结束地址;
计算该起始地址和该结束地址之间的数据的第一HASH值;
对该起始地址、该结束地址以及该第一HASH值进行加密得到一校验值;
存储该校验值;
删除或失效该系统初始化程序;
该检测过程包括:
读取并解密存储在系统中的该校验值,得到该起始地址、该结束地址和该第一HASH值;
计算该起始地址和该结束地址之间的数据的第二HASH值;
判断该第一HASH值和第二HASH值是否相等,如果相等则数据未被改动,软件通过一致性检测;如果不等则数据已被改动,软件未通过一致性检测。
上述的软件一致性检测方法,其中,HASH值的计算是指将一任意长度的二进制值映射为固定长度的二进制值,该固定长度的二进制值即为HASH值。
上述的软件一致性检测方法,其中,该起始地址和结束地址的随机选取是采用随机数发生器产生数据地址。
上述的软件一致性检测方法,其中,该起始地址和结束地址的随机选取是:先将多组起始地址和结束地址做成表格,然后以随机查表的方式选取其中的一组起始地址和结束地址作为数据地址。
上述的软件一致性检测方法,其中,该起始地址、结束地址和HASH值的加密包括对称加密算法和非对称加密算法。
基于上述的检测方法,本发明还提供了一种软件一致性检测装置,对移动终端的软件进行一致性检测,判断该软件的数据是否被改动,该检测装置包括:
一系统初始化模块,在一移动终端第一次开机时运行,该模块进一步包括:
数据地址选取单元,在该移动终端的软件程序的地址范围内随机选取一个起始地址和一个结束地址;
第一HASH值计算单元,计算该起始地址和该结束地址之间的数据的第一HASH值;
加密单元,将该起始地址、该结束地址以及该第一HASH值加密得到一校验值;
存储单元,存储该校验值;
删除/失效单元,在存储单元存储校验值之后删除或失效该系统初始化模块;
一检测模块,在已经系统初始化的该移动终端的每次开机之前运行,该模块进一步包括:
解密单元,将该校验值解密,得到该起始地址、该结束地址和该第一HASH值;
第二HASH值计算单元,计算该起始地址和该结束地址之间的数据的第二HASH值;
判断单元,判断该第一HASH值和该第二HASH值是否相等,如果相等则数据未被改动,该移动终端的软件通过一致性检测;如果不等则数据已被改动,该移动终端的软件未通过一致性检测。
上述的软件一致性检测装置,其中,该第一HASH值计算单元和第二HASH值计算单元中HASH值的计算方式是指将一任意长度的二进制值映射为固定长度的二进制值,该固定长度的二进制值即为HASH值。
上述的软件一致性检测装置,其中,该数据地址选取单元是将随机数发生器产生的数据地址作为起始地址和结束地址。
上述的软件一致性检测装置,其中,该数据地址选取单元先将多组设置好的起始地址和结束地址做成表格,再以随机查表的方式选取其中的一组数据地址作为起始地址和结束地址。
上述的软件一致性检测装置,其中,该加密单元采用对称加密算法或非对称加密算法对起始地址、结束地址和HASH值进行加密。
本发明对比现有技术有如下的有益效果:本发明在移动终端的软件首次运行时通过系统初始化程序生成并存储校验值,并在后续的每次运行前解密该校验值,重新计算起始地址和结束地址之间的HASH值,再将初始化时的HASH值和之后的HASH值进行比较以判断软件程序是否被修改。对比现有技术,本发明精简了计算量,缩短了移动终端过长的开机时间,同时避免了攻击者通过修改程序和程序对应的HASH值来破解检测方法,也避免了攻击者通过破解一个移动终端来达到破译所有同型号的移动终端。
附图说明
图1是本发明的软件一致性检测方法的一个较佳实施例的流程图。
图2是本发明的软件一致性检测装置的一个较佳实施例的框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的软件一致性检测方法的一个较佳实施例的流程。请参见图1,下面是对该方法流程中各步骤的详细描述。
本发明基于HASH值的一致性检测原理,通过系统初始化过程及后续的检测过程来实现对移动终端软件的一致性检测。
步骤S100:判断系统是否是首次运行。如果是则进入步骤S110,否则进入步骤S120。
步骤S110:进入系统初始化的过程。在软件程序的地址范围内随机选取一个起始地址Addr_begin和一个结束地址Addr_end。这种随机选取的方式可以采用随机数产生器来产生数据地址,或者先将多组起始地址和结束地址做成表格,再以随机查表的方式选取其中的一组起始地址和结束地址作为数据地址。随机选取数据地址的目的是为了做到移动终端中软件校验值的差异化,这样才能最大限度的防止同一型号的移动终端被大面积攻击。
步骤S111:计算起始地址Addr_begin和结束地址Addr_end之间的数据的HASH值。HASH值的计算一般是指将任意长度的二进制值映射为固定长度的较小的二进制值,这一较小的二进制值即为HASH值。
步骤S112:对起始地址Addr_begin、结束地址Addr_end和HASH值进行加密,得到校验值SW_check。加密算法可以是任一已知的加密算法,可以是对称的加密算法,也可以是非对称的加密算法。
步骤S113:存储校验值SW_check。
步骤S114:删除或失效该系统初始化程序,然后初始化程序结束。为了防止恶意攻击者利用该系统初始化程序再次进行这种初始化操作,系统初始化程序在系统软件的生命周期中只允许出现一次。当系统初始化结束后该初始化程序的存在也已经没有意义。
经过初始化的系统再次开机时将对校验值SW_check进行检测,具体步骤如下:
步骤S120:读取校验值SW_check。
步骤S121:对校验值SW_check进行解密,得到起始地址Addr_begin、结束地址Addr_end和HASH值。
步骤S122:计算起始地址Addr_begin和结束地址Addr_end之间的数据的哈希值得到HASH’。计算方式与步骤S111相同。
步骤S130:判断HASH值与HASH’是否相等。如果相等,则说明软件程序中的数据未被改动,软件通过一致性检测,移动终端正常开机。如果不等,则说明软件程序中的数据已被改动,软件未通过一致性检测,移动终端出现告警信息。
基于上述的软件一致性检测方法,本发明还提供了软件一致性检测装置。请参见图2,软件一致性检测装置主要包括系统初始化模块1和检测模块2。其中系统初始化模块1主要包括:数据地址选取单元11、第一HASH值计算单元12、加密单元13、存储单元14和删除/失效单元15。检测模块2主要包括:解密单元21、第二HASH值计算单元22和判断单元23。
系统初始化模块1在移动终端第一次开机时运行。其中的数据地址选取单元11在移动终端软件程序的地址范围内随机选取一个起始地址和一个结束地址,选取方式可以是将随机数发生器产生的数据地址作为起始地址和结束地址,也可以预先将多组设置好的起始地址和结束地址做成表格,再以随机查表的方式选取其中的一组数据地址作为起始地址和结束地址。第一HASH值计算单元12计算起始地址和结束地址之间的数据的HASH值,计算方式是将任意长度的二进制值映射为固定长度的二进制值,该固定长度的二进制值即为HASH值。加密单元13将起始地址、结束地址和HASH值加密得到一个校验值,加密方式可以是对称加密也可以是非对称加密。存储单元14存储得到的校验值。在校验值存储成功之后,删除/失效单元15删除该系统初始化模块或使其失效。
检测模块2在已经初始化的移动终端的每次开机之前运行。其中的解密单元21读取存储的校验值并进行解密,得到起始地址、结束地址和HASH值。第二HASH值计算单元22计算起始地址和结束地址之间的数据的HASH’值。判断单元23判断HASH值和HASH’值是否相等,如果相等则表示数据未被改动,移动终端软件通过一致性检测,移动终端正常开机;如果不等则表示数据已被改动,移动终端软件未通过一致性检测,移动终端发出告警信息。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (10)
1. 一种软件一致性检测方法,对移动终端的软件进行一致性检测,判断该软件的数据是否被改动,该方法包括系统初始化过程及后续的检测过程,其中,
该系统初始化过程仅在一移动终端的软件第一次运行过程中有效运行一次,包括:
在软件程序的地址范围内随机选取一起始地址和一结束地址;
计算该起始地址和该结束地址之间的数据的第一HASH值;
对该起始地址、该结束地址以及该第一HASH值进行加密得到一校验值;存储该校验值;
删除或失效该系统初始化程序;
该检测过程包括:
读取并解密存储在系统中的该校验值,得到该起始地址、该结束地址和该第一HASH值;
计算该起始地址和该结束地址之间的数据的第二HASH值;
判断该第一HASH值和第二HASH值是否相等,如果相等则数据未被改动,软件通过一致性检测;如果不等则数据已被改动,软件未通过一致性检测。
2. 据权利要求1所述的软件一致性检测方法,其特征在于,HASH值的计算是指将一任意长度的二进制值映射为固定长度的二进制值,该固定长度的二进制值即为HASH值。
3. 据权利要求1所述的软件一致性检测方法,其特征在于,该起始地址和结束地址的随机选取是采用随机数发生器产生数据地址。
4. 据权利要求1所述的软件一致性检测方法,其特征在于,该起始地址和结束地址的随机选取是:先将多组起始地址和结束地址做成表格,然后以随机查表的方式选取其中的一组起始地址和结束地址作为数据地址。
5. 根据权利要求1所述的软件一致性检测方法,其特征在于,该起始地址、结束地址和HASH值的加密包括对称加密算法和非对称加密算法。
6. 种软件一致性检测装置,对移动终端的软件进行一致性检测,判断该软件的数据是否被改动,该检测装置包括:
一系统初始化模块,在一移动终端第一次开机时运行,该模块进一步包括:
数据地址选取单元,在该移动终端的软件程序的地址范围内随机选取一个起始地址和一个结束地址;
第一HASH值计算单元,计算该起始地址和该结束地址之间的数据的第一HASH值;
加密单元,将该起始地址、该结束地址以及该第一HASH值加密得到一校验值;
存储单元,存储该校验值;
删除/失效单元,在存储单元存储校验值之后删除或失效该系统初始化模块;
一检测模块,在已经系统初始化的该移动终端的每次开机之前运行,该模块进一步包括:
解密单元,将该校验值解密,得到该起始地址、该结束地址和该第一HASH值;
第二HASH值计算单元,计算该起始地址和该结束地址之间的数据的第二HASH值;
判断单元,判断该第一HASH值和该第二HASH值是否相等,如果相等则数据未被改动,该移动终端的软件通过一致性检测;如果不等则数据已被改动,该移动终端的软件未通过一致性检测。
7. 根据权利要求6所述的软件一致性检测装置,其特征在于,该第一HASH值计算单元和第二HASH值计算单元中HASH值的计算方式是指将一任意长度的二进制值映射为固定长度的二进制值,该固定长度的二进制值即为HASH值。
8. 根据权利要求6所述的软件一致性检测装置,其特征在于,该数据地址选取单元是将随机数发生器产生的数据地址作为起始地址和结束地址。
9. 根据权利要求6所述的软件一致性检测装置,其特征在于,该数据地址选取单元先将多组设置好的起始地址和结束地址做成表格,再以随机查表的方式选取其中的一组数据地址作为起始地址和结束地址。
10. 根据权利要求6所述的软件一致性检测装置,其特征在于,该加密单元采用对称加密算法或非对称加密算法对起始地址、结束地址和HASH值进行加密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100368988A CN101236496A (zh) | 2007-01-29 | 2007-01-29 | 一种软件一致性检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100368988A CN101236496A (zh) | 2007-01-29 | 2007-01-29 | 一种软件一致性检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101236496A true CN101236496A (zh) | 2008-08-06 |
Family
ID=39920142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100368988A Pending CN101236496A (zh) | 2007-01-29 | 2007-01-29 | 一种软件一致性检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101236496A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254264A (zh) * | 2011-08-17 | 2011-11-23 | 广州广电运通金融电子股份有限公司 | 手机支付安全控制方法及系统 |
CN101661599B (zh) * | 2009-09-25 | 2012-08-22 | 浙江维尔生物识别技术股份有限公司 | 一种对设备系统自带的软件进行合法性认证的方法 |
CN102804194A (zh) * | 2009-05-12 | 2012-11-28 | 诺基亚公司 | 用于提供应用安全性的方法、装置和计算机程序 |
CN103093130A (zh) * | 2013-01-09 | 2013-05-08 | 杭州华三通信技术有限公司 | 一种硬件绑定信息加密方法和网络设备 |
CN103198011A (zh) * | 2012-01-09 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种探测java 程序文件扰动的方法及装置 |
CN104301292A (zh) * | 2013-07-19 | 2015-01-21 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104298935A (zh) * | 2014-09-25 | 2015-01-21 | 广东欧珀移动通信有限公司 | 嵌入式设备固件的保护方法与装置 |
CN107958141A (zh) * | 2017-11-15 | 2018-04-24 | 广西师范大学 | 一种基于芯片id号的软件保护方法 |
CN108090358A (zh) * | 2017-12-28 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN108881303A (zh) * | 2018-08-06 | 2018-11-23 | 罗伯特·博世有限公司 | 具有计算功能的节点、安全验证网络和安全验证方法 |
CN109391600A (zh) * | 2017-08-10 | 2019-02-26 | 东软集团股份有限公司 | 分布式拒绝服务攻击防护方法、装置、系统、介质及设备 |
CN112307468A (zh) * | 2019-07-31 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种软件检测方法、软件检测装置及介质 |
CN114615075A (zh) * | 2022-03-28 | 2022-06-10 | 重庆长安汽车股份有限公司 | 一种控制器的软件防篡改系统、方法及存储介质 |
-
2007
- 2007-01-29 CN CNA2007100368988A patent/CN101236496A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102804194B (zh) * | 2009-05-12 | 2016-01-20 | 诺基亚公司 | 用于提供应用安全性的方法及装置 |
CN102804194A (zh) * | 2009-05-12 | 2012-11-28 | 诺基亚公司 | 用于提供应用安全性的方法、装置和计算机程序 |
CN101661599B (zh) * | 2009-09-25 | 2012-08-22 | 浙江维尔生物识别技术股份有限公司 | 一种对设备系统自带的软件进行合法性认证的方法 |
CN102254264A (zh) * | 2011-08-17 | 2011-11-23 | 广州广电运通金融电子股份有限公司 | 手机支付安全控制方法及系统 |
CN103198011B (zh) * | 2012-01-09 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 一种探测java程序文件扰动的方法及装置 |
CN103198011A (zh) * | 2012-01-09 | 2013-07-10 | 阿里巴巴集团控股有限公司 | 一种探测java 程序文件扰动的方法及装置 |
CN103093130B (zh) * | 2013-01-09 | 2016-05-11 | 杭州华三通信技术有限公司 | 一种硬件绑定信息加密方法和网络设备 |
CN103093130A (zh) * | 2013-01-09 | 2013-05-08 | 杭州华三通信技术有限公司 | 一种硬件绑定信息加密方法和网络设备 |
CN104301292A (zh) * | 2013-07-19 | 2015-01-21 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104301292B (zh) * | 2013-07-19 | 2018-05-18 | 中国银联股份有限公司 | 安全性信息交互系统、装置及方法 |
CN104298935A (zh) * | 2014-09-25 | 2015-01-21 | 广东欧珀移动通信有限公司 | 嵌入式设备固件的保护方法与装置 |
CN109391600A (zh) * | 2017-08-10 | 2019-02-26 | 东软集团股份有限公司 | 分布式拒绝服务攻击防护方法、装置、系统、介质及设备 |
CN107958141A (zh) * | 2017-11-15 | 2018-04-24 | 广西师范大学 | 一种基于芯片id号的软件保护方法 |
CN108090358A (zh) * | 2017-12-28 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN108090358B (zh) * | 2017-12-28 | 2021-07-20 | 哈尔滨安天科技集团股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN108881303A (zh) * | 2018-08-06 | 2018-11-23 | 罗伯特·博世有限公司 | 具有计算功能的节点、安全验证网络和安全验证方法 |
CN112307468A (zh) * | 2019-07-31 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种软件检测方法、软件检测装置及介质 |
CN112307468B (zh) * | 2019-07-31 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 一种软件检测方法、软件检测装置及介质 |
CN114615075A (zh) * | 2022-03-28 | 2022-06-10 | 重庆长安汽车股份有限公司 | 一种控制器的软件防篡改系统、方法及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101236496A (zh) | 一种软件一致性检测方法和装置 | |
CN101419652B (zh) | 一种软硬件结合的保护程序的方法 | |
KR101324825B1 (ko) | 메시지 인증 코드 사전 연산 방법 및 시스템 | |
US7131036B2 (en) | Method of detecting malicious code | |
EP2795829B1 (en) | Cryptographic system and methodology for securing software cryptography | |
US9514334B1 (en) | Decentralized token table generation | |
EP2423843A1 (en) | Secure field-programmable gate array (FPGA) architecture | |
US20180204004A1 (en) | Authentication method and apparatus for reinforced software | |
CN101311942A (zh) | 对软件进行加密、解密的方法及加密、解密的装置 | |
CN106612180A (zh) | 实现会话标识同步的方法及装置 | |
CN111404682B (zh) | 一种Android环境密钥分段处理方法及装置 | |
CN204360381U (zh) | 移动设备 | |
CN103914662A (zh) | 一种基于分区的文件加密系统的访问控制方法和装置 | |
CN108537048B (zh) | 一种加密固态硬盘与授权计算机的安全关联方法及系统 | |
CN106056017A (zh) | 智能卡cos加密下载系统 | |
CN103336918B (zh) | 电子盘系统授权方法和装置 | |
Jeong et al. | MysteryChecker: Unpredictable attestation to detect repackaged malicious applications in Android | |
US10200348B2 (en) | Method to detect an OTA (over the air) standard message affected by an error | |
CN102708069A (zh) | 安卓系统中内存数据的保护方法 | |
CN105426702A (zh) | 基于安卓操作系统的应用程序加密解密方法和装置 | |
CN108242997B (zh) | 安全通信的方法与设备 | |
CN106650342B (zh) | 一种Jar包加固方法及系统 | |
CN109255225A (zh) | 基于双重身份认证的硬盘数据安全管理装置 | |
CN105022651A (zh) | 一种设备生产过程中的防盗版方法及固件烧写装置 | |
CN101571899B (zh) | 一种智能设备软件防盗版的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080806 |