著录项信息
专利名称 | 安卓系统安全性验证方法及其验证装置 |
申请号 | CN201410826888.4 | 申请日期 | 2014-12-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-03-11 | 公开/公告号 | CN104408370A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/56 | IPC分类号 | G;0;6;F;2;1;/;5;6;;;G;0;6;F;2;1;/;5;7查看分类表>
|
申请人 | 珠海全志科技股份有限公司 | 申请人地址 | 广东省珠海市高新区唐家湾镇科技二路9号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 珠海全志科技股份有限公司 | 当前权利人 | 珠海全志科技股份有限公司 |
发明人 | 陈勇 |
代理机构 | 珠海智专专利商标代理有限公司 | 代理人 | 林永协 |
摘要
本发明提供一种在终端上使用的安卓系统安全性验证方法及其验证装置,该方法包括终端内存储有原始系统文件哈希值列表,安卓系统安全性验证方法包括文件哈希验证步骤,文件哈希验证步骤包括:读取安卓系统的系统文件;检验系统文件是否存放在安卓系统的系统目录下;根据系统文件在哈希值列表寻找对应的原始哈希值;计算系统文件的当前哈希值;判断原始哈希值是否与当前哈希值相等;如原始哈希值与当前哈希值相等,则返回系统文件安全性检验成功。和使用该验证方法的验证装置。在终端内写入原始哈希值作为校验数据,实现利用离线验证方式对安卓系统进行验证,以最小功耗来实现对系统安全的验证,也提高系统流畅度和安全性,避免升级验证的不便。
1.安卓系统安全性验证方法,所述验证方法在终端上使用;
其特征在于:
所述终端内存储有原始系统文件哈希值列表;
所述安卓系统安全性验证方法包括文件哈希验证步骤,所述文件哈希验证步骤包括读取所述安卓系统的系统文件;
检验所述系统文件是否存放在所述安卓系统的系统目录下;
根据所述系统文件在所述哈希值列表寻找对应的原始哈希值;
计算所述系统文件的当前哈希值;
判断所述原始哈希值是否与所述当前哈希值相等;
如所述原始哈希值与所述当前哈希值相等,则返回所述系统文件安全性检验成功;
如所述原始哈希值与所述当前哈希值不相等,则返回所述系统文件安全性检验失败,禁止调用读取接口;
在执行所述文件哈希验证步骤之前,所述验证方法还包括所述原始系统文件哈希值列表生成步骤;
所述原始系统文件哈希值列表生成步骤包括
读取固件内的所有文件;
根据文件名排序并生成原始系统文件名列表;
生成所述原始系统文件名列表的数字签名;
计算所述固件的每一个文件的哈希值并生成所述原始系统文件哈希值列表;
生成原始系统文件哈希值列表的数字签名;
将所述固件、公钥、所述原始系统文件名列表的数字签名、所述原始系统文件哈希值列表的数字签名和所述原始系统文件哈希值列表写入所述终端;
在将所述固件、所述公钥、所述原始系统文件名列表的数字签名、所述原始系统文件哈希值列表的数字签名和所述原始系统文件哈希值列表写入所述终端之后,所述验证方法还包括启动所述终端的步骤,启动所述终端的步骤包括:
读取所述安卓系统的所有系统文件;
采用所述公钥对所述原始系统文件名列表的数字签名进行验证,并判断是否验证通过,如所述公钥对所述原始系统文件名列表的数字签名不能通过验证,则执行移除系统文件步骤。
2.根据权利要求1所述的验证方法,其特征在于:
如所述公钥对所述原始系统文件名列表的数字签名通过验证,则执行采用所述公钥对所述原始系统文件哈希值列表的数字签名进行验证的步骤;
如所述公钥对所述原始系统文件哈希值列表的数字签名通过验证,则执行所述系统文件哈希验证步骤;
如所述公钥对所述原始系统文件哈希值列表的数字签名不能通过验证,则执行移除系统文件步骤。
3.安卓系统安全性验证装置,所述验证装置在终端上使用;
其特征在于:
所述终端内存储有原始系统文件哈希值列表;
所述安卓系统安全性验证装置包括文件哈希验证模块,所述文件哈希验证模块包括文件读取模块,用于读取所述安卓系统的系统文件;
检验模块,用于检验所述系统文件是否存放在所述安卓系统的系统目录下;
寻找模块,用于根据所述系统文件在所述哈希值列表寻找对应的原始哈希值;
当前哈希值计算模块,用于计算所述系统文件的当前哈希值;
比较模块,用于判断所述原始哈希值是否与所述当前哈希值相等;
反馈模块,用于返回所述系统文件安全性检验成功;
所述反馈模块还用于返回所述系统文件安全性检验失败并禁止调用读取接口;
所述验证装置还包括所述原始系统文件哈希值列表生成模块;
所述原始系统文件哈希值列表生成模块包括
固件读取模块,用于读取固件内的所有文件;
文件名列表生产模块,用于根据文件名排序并生成原始系统文件名列表;
文件名列表签名模块,用于生成所述原始系统文件名列表的数字签名;
原始哈希值计算模块,用于计算所述固件的每一个文件的哈希值并生成所述原始系统文件哈希值列表;
哈希值列表签名模块,用于生成原始系统文件哈希值列表的数字签名;
写入模块,用于将所述固件、公钥、所述原始系统文件名列表的数字签名、所述原始系统文件哈希值列表的数字签名和所述原始系统文件哈希值列表写入所述终端;
所述验证装置还包括启动所述终端的启动模块,启动模块包括
文件扫描模块,用于读取所述安卓系统的所有系统文件;
第一验证模块,用于采用所述公钥对所述原始系统文件名列表的数字签名进行验证;
移除模块,用于执行移除系统文件步骤。
4.根据权利要求3所述的验证装置,其特征在于:
所述启动模块还包括第二验证模块,用于采用所述公钥对所述原始系统文件哈希值列表的数字签名进行验证。
安卓系统安全性验证方法及其验证装置\n技术领域\n[0001] 本发明涉及技术安全领域,尤其涉及一种安卓系统安全性验证方法及其验证装置。\n背景技术\n[0002] 随着安卓系统上越来越多的病毒和非法程序的出现,严重威胁安卓设备安全性。\n所以安卓设备对安全性能需要日益增加,要求安卓系统在启动时进行安全性验证,即验证其系统文件是否被恶意篡改。目前的安卓系统启动的验证方式,无法解决安全性能和使用流畅度之间的矛盾。一些解决方案能保证安全性验证,但影响安卓使用流畅度或其他功能。\n一些解决方案虽然没有影响安卓系统的使用流畅度,但是安全性能容易受到影响。\n[0003] 目前从安卓系统的启动过程来看,安卓系统安全验证技术存在较大瓶颈。主要是谷歌原生代码中提供的安全验证方案是以二进制数据为单位的离线验证方式,其能保证系统的安全性,但该验证方式的缺点是升级差分包大小会迅速膨胀,严重浪费升级下载流量资源和速度资源。\n发明内容\n[0004] 本发明的第一目的是提供一种基于离线验证方式且具有良好安全性的安卓系统安全性验证方法。\n[0005] 本发明的第二目的是提供一种基于离线验证方式且具有良好安全性的安卓系统安全性验证装置。\n[0006] 为了实现本发明的第一目的,本发明提供一种在终端上使用的安卓系统安全性验证方法,其中,终端内存储有原始系统文件哈希值列表,安卓系统安全性验证方法包括文件哈希验证步骤,文件哈希验证步骤包括:读取安卓系统的系统文件;检验系统文件是否存放在安卓系统的系统目录下;根据系统文件在哈希值列表寻找对应的原始哈希值;计算系统文件的当前哈希值;判断原始哈希值是否与当前哈希值相等;如原始哈希值与当前哈希值相等,则返回系统文件安全性检验成功。\n[0007] 由上述方案可见,本发明采用以原始系统文件的原始哈希值作为基础的离线验证方式,在终端内写入原始哈希值作为校验数据,在终端需要读取或调用系统文件时,通过计算系统文件的当前哈希值,并将当前哈希值与原始哈希值进行比较,如出现哈希值相同,则可判断为系统文件正常,如出现哈希值不相同,则可判断为系统文件被非法篡改,从而实现利用离线验证方式且具有良好安全性安卓系统验证方法,以最小的功能损耗来实现对安卓系统安全性的验证,也大大提高系统流畅度,同时避免了原生安卓系统的升级验证带来的不便。\n[0008] 更进一步的方案是,如原始哈希值与当前哈希值不相等,则返回系统文件安全性检验失败,禁止调用读取接口。\n[0009] 由上可见,如出现哈希值不相同,则可判断为系统文件被非法篡改,继而可采用禁止调用读取接口,使得无法在对系统文件进行读取,有利于提高验证方法的安全性。\n[0010] 更进一步的方案是,在执行系统文件哈希验证步骤之前,验证方法还包括原始系统文件哈希值列表生成步骤,原始系统文件哈希值列表生成步骤包括:读取固件内的所有文件;根据文件名排序并生成原始系统文件名列表;生成原始系统文件名列表的数字签名;\n计算固件的每一个文件的哈希值并生成原始系统文件哈希值列表;生成原始系统文件哈希值列表的数字签名;将固件、公钥、原始系统文件名列表的数字签名、原始系统文件哈希值列表的数字签名和原始系统文件哈希值列表写入终端。\n[0011] 由上可见,在烧录固件的之前,可首先对固件的文件进行原始哈希值计算并生成原始系统文件哈希值列表,以及将固件的文件的文件名生产原始系统文件名列表,同时对哈希值列表和文件名列表进行数字签名,随后将固件、公钥、文件名列表签名、哈希值列表签名和哈希值列表写入到终端上,使得终端在验证系统文件安全性时,可调用原始系统文件哈希值列表进行校验,同时利用文件名列表签名、哈希值列表签名有效方式非法篡改文件名列表或、哈希值列表,有效地提高验证方法的安全性。\n[0012] 更进一步的方案是,在将固件、公钥、原始系统文件名列表的数字签名、原始系统文件哈希值列表的数字签名和原始系统文件哈希值列表写入终端之后,验证方法还包括启动终端的步骤,启动终端的步骤包括:读取安卓系统的所有系统文件;采用公钥对原始系统文件名列表的数字签名进行验证;判断是否验证通过,如公钥对原始系统文件名列表的数字签名不能通过验证,则执行移除系统文件步骤。\n[0013] 更进一步的方案是,如公钥对原始系统文件名列表的数字签名通过验证,则执行采用公钥对原始系统文件哈希值列表的数字签名进行验证;如公钥对原始系统文件哈希值列表的数字签名通过验证,则执行系统文件哈希验证步骤;如公钥对原始系统文件哈希值列表的数字签名不能通过验证,则执行移除系统文件步骤。\n[0014] 由上可见,本发明提供的验证方法在兼顾安全性能的同时,能最大程度降低对安卓功能的影响,即终端在启动安卓系统时使用安全启动的方式,即对系统文件进行全部验证,从而能彻底防止root引入的非法程序,同时也能防范boot阶段引入的非法程序,保证安卓设备运行环境安全性。\n[0015] 为了实现本发明的第二目的,本发明提供一种在终端上使用的安卓系统安全性验证装置,其中,终端内存储有原始系统文件哈希值列表;安卓系统安全性验证装置包括文件哈希验证模块,系统文件哈希验证模块包括:用于读取安卓系统的系统文件的文件读取模块;用于检验系统文件是否存放在安卓系统的系统目录下的检验模块;用于根据系统文件在哈希值列表寻找对应的原始哈希值的寻找模块;用于计算系统文件的当前哈希值的当前哈希值计算模块;用于判断原始哈希值是否与当前哈希值相等的比较模块;用于返回系统文件安全性检验成功的反馈模块。\n[0016] 由上述方案可见,本发明采用以原始系统文件的原始哈希值作为基础的离线验证方式,在终端内写入原始哈希值作为校验数据,在终端需要读取或调用系统文件时,通过计算系统文件的当前哈希值,并将当前哈希值与原始哈希值进行比较,如出现哈希值相同,则可判断为系统文件正常,如出现哈希值不相同,则可判断为系统文件被非法篡改,从而实现利用离线验证方式且具有良好安全性安卓系统验证方法,以最小的功能损耗来实现对安卓系统安全性的验证,也大大提高系统流畅度,同时避免了原生安卓系统的升级验证带来的不便。\n附图说明\n[0017] 图1是本发明安卓系统安全性验证方法实施例的原始系统文件哈希值列表生成步骤的流程图。\n[0018] 图2是本发明安卓系统安全性验证方法实施例的启动终端步骤的文件列表数字签名验证步骤和文件哈希列表数字签名验证步骤流程图。\n[0019] 图3是本发明安卓系统安全性验证方法实施例中读取文件时的系统文件哈希验证步骤。\n[0020] 图4是本发明安卓系统安全性验证装置实施例的系统框图。\n[0021] 图5是本发明安卓系统安全性验证装置实施例中的文件哈希值验证原理图。\n[0022] 以下结合附图及实施例对本发明作进一步说明。\n具体实施方式\n[0023] 安卓系统安全性验证方法实施例:\n[0024] 参照图1,图1是原始系统文件哈希值列表生成步骤的流程图。原始系统文件哈希值列表生成步骤包括,首先执行步骤S111,读取固件内的所有文件,随后执行步骤S112,读取固件内所有文件的文件名和路径地址,然后执行步骤S113,根据文件名对文件进行排序,并生产以文件名为主要信息的原始系统文件名列表。\n[0025] 随后执行步骤S114,读取RSA密钥对,随后执行步骤S115,利用RSA私钥对原始系统文件列表进行加密并生成原始系统文件列表数字签名。然后执行步骤S116,读取固件内所有文件的文件名、路径和文件内容,随后执行步骤S117,根据每一个文件的文件名、路径和文件内容计算哈希值,然后执行步骤118,计算每个哈希值所对应的CRC值(CRC是循环冗余校验码),并根据CRC 值对每个哈希值进行排列,同时生成原始系统文件哈希值列表。随后执行步骤S119,利用私钥对原始系统文件哈希列表进行加密并生成原始系统文件哈希值列表数字签名。最后执行步骤S120,将固件、原始系统文件哈希值列表、原始系统文件名列表数字签名、原始系统文件哈希值列表数字签名和公钥写入到终端,继而将安卓系统安装到终端上。\n[0026] 随后,需要启动终端的安卓系统时,即执行步骤S211启动终端系统,然后在启动系统时,需要将文件系统进行挂载,即执行步骤S212,随后再执行步骤S213,调用文件完整性检验模块对系统内所有的系统文件进行检验。具体地,首先执行步骤S214,读取RSA公钥,随后执行步骤S215,读取系统文件的文件名,然后执行步骤S216,根据文件名对系统文件进行排序并生成系统文件名列表,随后执行步骤S217,采用公钥验证系统文件名列表的签名,然后执行步骤S218,判断签名验证是否通过,如签名验证不通过,则执行步骤S219,移除系统文件。\n[0027] 如签名验证通过,则执行步骤S220,读取原始系统文件哈希值列表,然后执行步骤S221,采用公钥验证哈希值列表签名,随后执行步骤S31,判断签名验证是否通过,如签名验证不通过,则返回步骤S219,移除系统文件。如签名验证通过,则执行步骤S41,文件哈希验证步骤,完成文件哈希验证步骤后,执行步骤S222,文件系统挂载成功。\n[0028] 参照图3,图3是读取文件时的文件哈希验证步骤S41的流程。文件哈希验证步骤S41执行时,首先执行步骤S411,调用读取接口对文件进行读取,随后执行步骤412,对所读取的文件是否在系统目录下,如所读取的文件不在系统目录下,则执行步骤S417,返回读取接口,允许读取接口可正常地对该文件进行读取。如所读取的文件在系统目录下,则执行步骤S413,根据所读取的文件的文件名在原始系统文件哈希值列表中进行寻找,寻找该文件对应的原始哈希值,随后执行步骤S414,读取该文件内容,计算该文件的当前哈希值,随后执行步骤S415,将该文件的原始哈希值与当前哈希值进行比对,判断原始哈希值与当前哈希值是否相等,如原始哈希值与当前哈希值相等,则执行步骤S416,返回系统文件内容校验成功,随后执行步骤S417,返回读取接口,系统能够正常读取系统文件。如原始哈希值与当前哈希值不相等,则执行步骤S418,返回读取接口操作失败,继而无法正常读取该文件。\n[0029] 安卓系统安全性验证装置实施例:\n[0030] 参照图4,图4是安卓系统安全性验证装置的系统框图,安卓系统安全性验证装置包括原始系统文件哈希值列表生产模块59、系统文件哈希值验证模块52和启动模块66。\n[0031] 原始系统文件哈希值列表生产模块59包括固件读取模块60、文件名列表生产模块\n61、文件名列表签名模块62、原始哈希值计算模块63、哈希值列表签名模块64、写入模块65,固件读取模块60用于读取固件内的所有文件,读取固件内的所有文件后,文件名列表生产模块61用于根据文件名排序对所有文件进行排列,并生成原始系统文件名列表,文件名列表签名模块62用于采用RSA私钥生成原始系统文件名列表的数字签名,原始哈希值计算模块63用于计算固件的每一个文件的哈希值并生成原始系统文件哈希值列表,哈希值列表签名模块64用于采用RSA私钥生成原始系统文件哈希值列表的数字签名,写入模块65用于将固件、公钥、原始系统文件名列表的数字签名、原始系统文件哈希值列表的数字签名和原始系统文件哈希值列表写入终端,终端的存储模块51接收到固件后划分系统分区,并在系统分区建立系统数据,以及存储模块51对公钥、原始系统文件名列表的数字签名、原始系统文件哈希值列表的数字签名和原始系统文件哈希值进行保存。\n[0032] 启动模块66包括文件扫描模块67、第一验证模块68、第二验证模块69和移除模块\n70。在启动系统时,需要对全部系统文件进行验证,文件扫描模块67用于读取安卓系统的所有系统文件,第一验证模块68用于采用公钥对原始系统文件名列表的数字签名进行验证,第二验证模块69用于采用公钥对原始系统文件哈希值列表的数字签名进行验证,如果第一验证模块68或第二验证模块69对数字签名验证不能通过,则移除模块70执行移除系统文件。\n[0033] 如果第一验证模块68或第二验证模块69对数字签名验证通过,则进入系统文件哈希验证步骤,此时调用系统文件哈希验证模块52,系统文件哈希验证模块52包括文件读取模块53、检验模块54、寻找模块55、当前哈希值计算模块56、比较模块57、反馈模块58,文件读取模块53用于读取安卓系统的系统文件,检验模块54用于检验系统文件是否存放在安卓系统的系统目录下,如果系统文件存放在系统目录下,则寻找模块55根据系统文件在哈希值列表寻找对应的原始哈希值,当前哈希值计算模块56用于计算系统文件的当前哈希值,比较模块57用于判断原始哈希值是否与当前哈希值相等,如果原始哈希值与当前哈希值相等,则反馈模块58用于返回系统文件安全性检验成功。\n[0034] 参照图5,图5是文件哈希值验证原理图。当需要对文件进行哈希值验证时,寻找模块55在原始系统文件哈希值列表中对应的原始哈希值,当前哈希值计算模块56计算需要被验证的系统文件的当前哈希值,比较模块57判断原始哈希值是否与当前哈希值相等,通过该验证方法可有效地验证系统文件是否被非法篡改。\n[0035] 由上可见,本发明采用以原始系统文件的原始哈希值作为基础的离线验证方式,在终端内写入原始哈希值作为校验数据,在终端需要读取或调用系统文件时,通过计算系统文件的当前哈希值,并将当前哈希值与原始哈希值进行比较,如出现哈希值相同,则可判断为系统文件正常,如出现哈希值不相同,则可判断为系统文件被非法篡改,从而实现利用离线验证方式且具有良好安全性安卓系统验证方法,以最小的功能损耗来实现对安卓系统安全性的验证,也大大提高系统流畅度,同时避免了原生安卓系统的无线验证带来的不便。
法律信息
- 2017-08-04
- 2015-04-08
实质审查的生效
IPC(主分类): G06F 21/56
专利申请号: 201410826888.4
申请日: 2014.12.25
- 2015-03-11
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-04-16
|
2014-01-16
| | |
2
| |
2012-12-12
|
2012-07-26
| | |
3
| |
2014-12-17
|
2014-08-29
| | |
4
| | 暂无 |
2013-06-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |