著录项信息
专利名称 | 数字签名方法及移动终端和服务器 |
申请号 | CN201410835701.7 | 申请日期 | 2014-12-26 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-04-01 | 公开/公告号 | CN104486086A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L9/32 | IPC分类号 | H;0;4;L;9;/;3;2;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 北京奇虎科技有限公司;奇智软件(北京)有限公司 | 申请人地址 | 北京市西城区新街口外大街28号D座112室(德胜园区)
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 | 当前权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 |
发明人 | 李常坤;石浩然 |
代理机构 | 北京市立方律师事务所 | 代理人 | 王增鑫 |
摘要
本发明实施例提供了数字签名方法及移动终端和服务器,所述方法包括:移动终端对于二阶散列值文件中的二阶散列值序列,对该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算,得到第一子摘要信息;将第一子摘要信息和代码文件的二阶散列值向服务器上传;其中,二阶散列值对应原始文件;原始文件的二阶散列值是根据该原始文件的一阶散列值算得的,该原始文件的一阶散列值是根据该原始文件的内容算得的。本发明的技术方案中,由服务器保存私钥,可以防止恶意程序窃取私钥,保证后续生成的数字签名文件更加安全可靠,使得移动终端可以根据更安全可靠的数据签名文件进行签名认证,保护用户利益,提高用户体验。
数字签名方法及移动终端和服务器\n技术领域\n[0001] 本发明涉及移动通信技术领域,具体而言,本发明涉及一种数字签名方法及移动终端和服务器。\n背景技术\n[0002] 随着科技的进步和社会发展,移动终端的使用已经相当的广泛。越来越多的程序被技术人员开发出来,以应用于移动终端中。\n[0003] 对于一个适用于移动终端的程序,技术人员通常在开发出该程序的代码文件、配置文件、资源文件、图片等等原始文件后,对原始文件进行数字签名,得到签名相关的文件;\n将该程序的原始文件和签名相关的文件一起打包成安装包,供用户下载安装。\n[0004] 以适用于安卓操作系统的程序为例,开发方的技术人员对于该程序的代码文件Classex.dex、配置文件AndroidManifest.xml、资源文件、图片等等原始文件,通常利用签名工具程序对各原始文件进行签名:计算出各原始文件的一阶散列值记载到Manifest.mf文件中;根据各原始文件的一阶散列值计算出各原始文件的二阶散列值记载到Cert.sf文件中;对各二阶散列值进行摘要计算得到摘要信息;根据预先生成的私钥对摘要信息进行加密;根据加密结果以及预先生成的公钥生成Cert.rsa文件。之后,将各原始文件,与签名相关的Manifest.mf文件、Cert.sf文件和Cert.rsa文件一起打包成程序的安装包。\n[0005] 移动终端的操作系统接收到安装程序的指令后,从该程序的安装包中解压出该程序的各原始文件、以及Manifest.mf文件、Cert.sf文件和Cert.rsa文件;利用Manifest.mf文件、Cert.sf文件和Cert.rsa文件,对各原始文件进行签名认证,以验证原始文件是否被恶意程序所篡改。\n[0006] 此外,安装于移动终端中的第三方的安全类应用程序,对于安全性未知的程序,通常需要从该程序的安装包中解压出各原始文件,对多个原始文件进行适用于沙箱中运行的修改后,重新进行数字签名,得到重新签名的签名相关的文件。将签名相关的文件、与修改后的原始文件进行二次打包,以便于该安全性未知的程序在创建的沙箱中安装运行。\n[0007] 但是,现有的数字签名方法对程序的原始文件进行数字签名的过程通常是在移动终端中执行;也就是说,数字签名过程中涉及的私钥存放在移动终端中;该方式容易导致恶意程序盗取私钥后,即可随意篡改待安装程序的原始文件,也可以通过对篡改后的原始文件进行重新签名,得到合法的签名相关的文件;现有的数字签名方法可能导致被恶意程序劫持或污染的程序的安装包,可以通过操作系统的签名认证而被允许安装;进一步地,可能造成恶意程序利用移动终端中存储的用户信息执行恶意行为。\n[0008] 因此,综上,现有的数字签名方法安全性较低,可能会给用户带来潜在的安全隐患,造成用户的利益损失,从而降低了用户的体验。\n发明内容\n[0009] 本发明针对现有的数字签名方法的缺点,提出一种数据签名方法及移动终端和服务器,用以解决现有的数字签名方法存在的安全性较低的问题。\n[0010] 本发明的技术方案根据一个方面,提供了一种移动终端的数字签名方法,包括:\n[0011] 移动终端对于二阶散列值文件中的二阶散列值序列,对该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算,得到第一子摘要信息;\n[0012] 将第一子摘要信息和所述代码文件的二阶散列值向服务器上传;\n[0013] 其中,所述二阶散列值对应原始文件;所述原始文件的二阶散列值是根据该原始文件的一阶散列值算得的,该原始文件的一阶散列值是根据该原始文件的内容算得的;所述代码文件是所述原始文件之一。\n[0014] 进一步,所述将该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算之前,还包括:\n[0015] 将所述代码文件的二阶散列值,移动到所述二阶散列值序列的末尾,得到二阶散列值序列重排后的二阶散列值文件。\n[0016] 进一步,所述移动终端的数字签名方法,还包括:\n[0017] 所述移动终端接收到所述服务器返回的数字签名文件后,对于一阶散列值文件中的一阶散列值序列,将该一阶散列值序列中所述代码文件的一阶散列值,移动到所述一阶散列值序列的末尾,得到一阶散列值序列重排后的一阶散列值文件;\n[0018] 将所述数字签名文件、二阶散列值序列重排后的二阶散列值文件、一阶散列值序列重排后的一阶散列值文件,以及所述二阶散列值序列中各二阶散列值各自对应的原始文件一起打包成安装包。\n[0019] 较佳地,所述一阶散列值文件具体为Manifest.mf文件;所述二阶散列值文件具体为Cert.sf文件;所述数字签名文件具体为Cert.rsa文件。\n[0020] 本发明的技术方案根据另一个方面,还提供了一种服务器端的数字签名方法,包括:\n[0021] 接收到移动终端上传的第一子摘要信息和代码文件的二阶散列值后,对接收的代码文件的二阶散列值进行摘要计算,得到第二子摘要信息;\n[0022] 根据所述代码文件的二阶散列值预设在二阶散列值文件中的二阶散列值序列中的位置信息,将第一子摘要信息与第二子摘要信息拼接成摘要信息;\n[0023] 根据预先生成的私钥对所述摘要信息进行非对称加密;\n[0024] 根据加密结果、以及预先生成的公钥,生成数字签名文件返回至所述移动终端。\n[0025] 进一步,所述对接收的代码文件的二阶散列值进行摘要计算之前,还包括:\n[0026] 根据预存的经过认证的代码文件的二阶散列值,对接收的代码文件的二阶散列值进行校验。\n[0027] 本发明的技术方案根据另一个方面,还提供了一种移动终端的安全防护方法,包括:\n[0028] 确定目标应用,保存其安装包至指定目录;\n[0029] 利用目标应用的安装包配置外壳应用安装包,向所述目标应用的安装包注入用于调用监控单元的桩模块,修改所述目标应用的安装包的配置参数以用于加载所述目标应用,所述监控单元用于实现对源自所述目标应用的事件行为的挂钩监控;\n[0030] 对于所述外壳应用安装包中的每个原始文件,根据该原始文件的内容算得该原始文件的一阶散列值,进而根据所述一阶散列值算得该原始文件的二阶散列值;将所述安装包中各原始文件的二阶散列值组成二阶散列值序列记录到二阶散列值文件中;所述各原始文件中包括代码文件;\n[0031] 对于所述二阶散列值序列中除了代码文件的二阶散列值文件之外的各二阶散列值进行摘要计算,得到第一子摘要信息;将第一子摘要信息和所述代码文件的二阶散列值向服务器上传;\n[0032] 根据所述服务器返回的数字签名文件,对所述各原始文件进行签名认证;认证通过后安装所述各原始文件;加载运行所述目标应用和所述监控单元;\n[0033] 根据监控的结果判断所述目标应用的安全性。\n[0034] 进一步,所述根据监控的结果判断所述目标应用的安全性的步骤,还包括:\n[0035] 当监控到目标应用进程触发释放子进程的事件行为时,为该子进程加载监控单元,以继续监控该子进程所触发的事件行为。\n[0036] 较佳地,所述运行所述目标应用,具体包括:\n[0037] 响应运行目标应用的指令,运行相应的外壳应用;\n[0038] 利用所述外壳应用先后加载所述监控单元及所述目标应用。\n[0039] 进一步,在所述响应运行目前应用的指令之前,还包括:\n[0040] 在图形用户界面中提供快捷方式用于获取所述运行目标应用的指令,该快捷方式的图标由目标应用默认图标修改而得,监控目标应用的运行状态;\n[0041] 其中,外壳应用通过其内建的交互接口与预设的交互模块通信,借助该交互模块向图形用户界面弹窗实现人机交互;所述交互模块被预先注册为系统服务。\n[0042] 本发明的技术方案根据另一个方面,还提供了一种移动终端,包括:\n[0043] 第一子摘要信息计算模块,用于对于二阶散列值文件中的二阶散列值序列,将该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算,得到第一子摘要信息;其中,所述二阶散列值对应原始文件;所述原始文件的二阶散列值是根据该原始文件的一阶散列值算得的,该原始文件的一阶散列值是根据该原始文件的内容算得的;\n[0044] 上传模块,用于将第一子摘要信息和所述代码文件的二阶散列值向服务器上传。\n[0045] 进一步,所述移动终端,还包括:\n[0046] 散列值移序模块,用于将所述二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算之前,将所述代码文件的二阶散列值,移动到所述二阶散列值序列的末尾,得到二阶散列值序列重排后的二阶散列值文件。\n[0047] 本发明的技术方案根据另一个方面,还提供了一种服务器,包括:\n[0048] 第二子摘要信息计算模块,用于接收到移动终端上传的第一子摘要信息和代码文件的二阶散列值后,对接收的代码文件的二阶散列值进行摘要计算,得到第二子摘要信息;\n[0049] 摘要信息拼接模块,用于根据所述代码文件的二阶散列值预设在二阶散列值文件中的二阶散列值序列中的位置,将第一子摘要信息与第二子摘要信息拼接成摘要信息;\n[0050] 数字签名文件生成模块,用于根据预先生成的私钥对所述摘要信息进行非对称加密;根据加密结果、以及预先生成的公钥,生成数字签名文件向所述移动终端返回。\n[0051] 进一7步,所述服务器,还包括:\n[0052] 校验模块,用于根据预存的经过认证的代码文件的二阶散列值,对第二子摘要信息计算模块接收的代码文件的二阶散列值进行校验。\n[0053] 本发明的技术方案,由服务器保存私钥并利用私钥对摘要信息进行加密;与由移动终端保存私钥并利用私钥进行加密相比,凭借服务器远超移动终端的防护能力,可以防止恶意程序窃取私钥,保证后续生成的数字签名文件更加安全可靠,使得移动终端可以根据更安全可靠的数据签名文件,对该程序的原始文件进行签名认证,可以有效地消除恶意程序篡改程序的原始文件所带来的危害,保护用户利益,提高用户体验。\n[0054] 而且,本发明的技术方案,根据摘要计算分步骤计算的特点,由移动终端计算出程序的除了代码文件之外的原始文件的二阶散列值的第一子摘要信息,将程序的代码文件的二阶散列值、以及第一子摘要信息上传至服务器进行后续计算;与上传整个二阶散列值文件相比,大大降低了网络传输的数据量,有效地降低了用户因上传数据而所需的费用,大大拓宽了本发明实施例的技术方案的适用范围。\n[0055] 进一步,本发明的技术方案中,服务器对移动终端上传的代码文件的二阶散列值进行校验,相当于对移动终端的代码文件进行校验,保证了上传的代码文件的二阶散列值的安全可靠性,有利于在后续步骤中生成更安全可靠的数字签名文件。\n[0056] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。\n附图说明\n[0057] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:\n[0058] 图1为本发明实施例的数字签名方法的流程示意图;\n[0059] 图2为本发明实施例的移动终端的内部结构的框架示意图;\n[0060] 图3为本发明实施例的服务器的内容结构的框架示意图;\n[0061] 图4为本发明实施例的移动终端的安全防护方法的流程示意图;\n[0062] 图5为根据本发明实现的一个程序实例的用户界面之一,用于展示扫描到的应用程序列表,并向用户提供用于确定目标应用的选择区域;\n[0063] 图6为根据本发明实现的一个程序实例的用户界面之一,用于展示发现未防御应用之后的弹框交互功能;\n[0064] 图7为本发明的安全防护方法中将安装原包配置成外壳应用的过程的原理示意图;\n[0065] 图8为本发明的安全防护方法中利用外壳应用的运行对目标应用的事件行为进行监控的原理示意图;\n[0066] 图9为本发明的安全防护方法中对捕获的事件进行处理的原理示意图\n[0067] 图10为根据本发明实现的一个程序实例的用户界面之一,用于展示进行事件行为拦截后的人机交互效果,具体是拦截发送短信的事件行为\n[0068] 图11为根据本发明实现的一个程序实例的用户界面之一,用于展示进行事件行为拦截后的人机交互效果,具体是拦截插入短信的事件行为\n[0069] 图12为根据本发明实现的一个程序实例的用户界面之一,用于展示单个应用所有事件行为的默认处理策略,并提供给用户对处理策略进行修改的选项。\n具体实施方式\n[0070] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。\n[0071] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。\n[0072] 本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。\n[0073] 本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。同理,本发明所称的“目标应用”、“安装包”之间存在对应关系,安装包为目标应用的文件存在形式。\n[0074] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。\n[0075] 本发明的方法所应用的环境包括可与远程服务器或云端通信的移动终端,该移动终端安装有Android操作系统,该系统处于未经ROOT授权的状态。需要指出的是,即使该操作系统处于ROOT授权后的状态,本发明所述的各种方法也依然适用于该操作系统中。也就是说,本发明各种方法的实现,不受操作系统是否开放最高权限所限制。\n[0076] 本发明的发明人考虑到,以适用于安卓操作系统的程序为例,可以由移动终端计算出该程序的原始文件的二阶散列值记录到相应的文件(为便于描述,本文后续称该文件为二阶散列值文件)中,并将二阶散列值文件上传至服务器;可以由云端的服务器保存预先生成的私钥和公钥,并对接收的二阶散列值文件中的二阶散列值进行摘要计算;根据私钥、公钥和算得的摘要信息,生成数据签名文件的过程,也在服务器端完成。之后,将数据签名文件返回移动终端。凭借服务器远超移动终端的防护能力,可以防止恶意程序窃取私钥,保证生成的数字签名文件更加安全可靠,使得移动终端可以根据更安全可靠的数据签名文件,对该程序的原始文件进行签名认证,有效地消除恶意程序篡改程序的原始文件所带来的危害。\n[0077] 本发明的发明人进一步发现,当程序的原始文件的数量较大(例如几百个、几千个)时,原始文件的二阶散列值的数量也较大,容易造成二阶散列值文件所占用较大存储空间,将该文件上传至服务器通常需要耗费较大的数据流量,造成用户付出较多的成本。因此,移动终端通常在移动终端开启WiFi(Wireless Fidelity,无线局域网)的情况下上传二阶散列值文件,而在开启2G(2nd-Generation wireless telephone technology,第二代手机通信技术)/3G(3rd-Generation wireless telephone technology,第三代手机通信技术)/LTE(Long Term Evolution,长期演进)网络等移动网络的情况下不上传该文件;从而导致服务器根据上传的二阶散列值文件生成数字签名文件的数字签名方法的适用范围受到限制。\n[0078] 本发明的发明人为了实现在对程序的原始文件进行数字签名的过程中,由服务器完成根据私钥对摘要信息进行加密的步骤,并且减少移动终端上传至服务器的数据量,以增强数字签名文件的安全可靠性且扩大该数字签名方法的适用范围,对数字签名的过程进行了较为深入的研究。\n[0079] 本发明的发明人经过研究发现,二阶散列值文件中各原始文件的二阶散列值排列成二阶散列值序列;对二阶散列值序列进行摘要计算的过程,实际上是逐步进行的,每一步对该序列中一个二阶散列值进行摘要计算,得到该二阶散列值的子摘要信息,直到最终算得整个二阶散列值序列的摘要信息。\n[0080] 因此,摘要信息相当于是由各二阶散列值的子摘要信息,依照各二阶散列值在二阶散列值序列中的位置顺序,拼接而成。在保证拼接顺序不变的情况下,哪个二阶散列值先进行摘要计算,哪个二阶散列值后进行摘要计算,都不会影响最终得到的二阶散列值序列的摘要信息。因此,可以对二阶散列值序列进行拆分,将一部分二阶散列值留在移动终端中进行摘要计算后上传算得的中间结果,另一部分二阶散列值上传到服务器进行摘要计算,与上传整个二阶散列值文件相比,大大降低了网络传输的数据量。\n[0081] 本发明的发明人进一步研究发现,恶意程序通常通过篡改程序的原始文件中的代码文件,由篡改后的代码文件来执行恶意行为。那么由服务器代替移动终端对代码文件的二阶散列值进行摘要计算,并执行数字签名过程中摘要计算后续的步骤,可以生成更安全可靠的数字签名文件;移动终端可以根据更安全可靠的数字签名文件,识别出本移动终端中程序的代码文件是否被篡改;从而可以拒绝安装被篡改的代码文件来杜绝恶意行为,有效地消除恶意行为所带来的危害,保护用户利益,提高用户体验。\n[0082] 基于上述研究分析,下面结合附图具体介绍本发明实施例的技术方案。\n[0083] 移动终端对于本移动终端中的程序,针对该程序待打包的每个原始文件,利用散列算法对该原始文件的内容进行计算,对计算结果进行编码后,得到该原始文件的一阶散列值,并将该原始文件的名称与一阶散列值一并记录到一阶散列值文件中。一阶散列值具体可以是设定位数的字符串。\n[0084] 较佳地,移动终端对于程序的原始文件,可以利用SHA(Secure Hash Algorith,安全哈希算法)1对该原始文件的内容进行计算,得到一个固定位数的字符串,对该字符串进行Base64编码后,得到该原始文件的一阶散列值。\n[0085] 较佳地,程序的一阶散列值文件可以是Manifest.mf文件。程序的一阶散列值文件中,该程序的各原始文件的一阶散列值排列成一阶散列值序列;且对应原始文件的名称对应记录该原始文件的一阶散列值。\n[0086] 更优的,一阶散列值文件中记录的原始文件的名称,可以包括该原始文件的存放的路径;该路径以代码文件所在的目录为根目录。\n[0087] 例如,一阶散列值文件中记录有如下包含N个一阶散列值的一阶散列值序列:\n[0088] 原始文件1的名称:res/drawable/bg_web_progress.xml\n[0089] 原始文件1的一阶散列值:GEvfG3xwR+RoBhUaEPEbEJXpz04=\n[0090] 原始文件2的名称:res/anim/zoomout_30_bottom.xml\n[0091] 原始文件2的一阶散列值:ESybMUibcTWOWwbmLT6kyDDndj0=\n[0092] 原始文件3的名称:res/drawable-nodpi-v4/ic_clear_focus.png\n[0093] 原始文件3的一阶散列值:Ijr85w4Jz6EtQ2oHwZTz8QQOcxo=\n[0094] ……\n[0095] 原始文件N的名称:classes.dex\n[0096] 原始文件N的一阶散列值:gFgVRUSfqiKi7igP2Z8IIvw4SIc=\n[0097] 其中,N为大于3的自然数。\n[0098] 更优的,一阶散列值文件中还记录有一阶散列值文件的版本信息、以及创建一阶散列值文件的系统程序的版本信息。\n[0099] 移动终端在得到记录有程序的一阶散列值序列的一阶散列值文件后,对于一阶散列值序列中每个原始文件的一阶散列值,利用散列算法对该原始文件的一阶散列值进行计算,对计算结果进行编码后,得到该原始文件的二阶散列值,并将该原始文件的名称与二阶散列值一并记录到二阶散列值文件中。二阶散列值具体可以是设定位数的字符串。\n[0100] 较佳地,移动终端还可以利用散列算法对一阶散列值文件的整体内容进行计算,对计算结果进行编码后,得到一阶散列值文件的散列值,记录到二阶散列值文件中。\n[0101] 较佳地,移动终端对于一阶散列值序列中每个原始文件的一阶散列值,可以利用SHA(Secure Hash Algorith,安全哈希算法)1对该原始文件的一阶散列值进行计算,得到一个固定位数的字符串,对该字符串进行Base64编码后,得到该原始文件的二阶散列值。\n[0102] 较佳地,程序的二阶散列值文件可以是Cert.sf文件。程序的二阶散列值文件中,该程序的各原始文件的二阶散列值排列成二阶散列值序列;且对应原始文件的名称对应记录该原始文件的二阶散列值。\n[0103] 更优的,二阶散列值文件中记录的原始文件的名称,可以包括该原始文件的存放的路径;该路径以代码文件所在的目录为根目录。\n[0104] 例如:二阶散列值文件中记录有如下包含N个二阶散列值的二阶散列值序列:\n[0105] 原始文件1的名称:res/drawable/bg_web_progress.xml\n[0106] 原始文件1的二阶散列值:Kt/suoPcs6qs8O+371aQz6kM+7w=\n[0107] 原始文件2的名称:res/anim/zoomout_30_bottom.xml\n[0108] 原始文件2的二阶散列值:qlausfeQlU5TtwaCOXb2YLZ6wT4=\n[0109] 原始文件3的名称:res/drawable-nodpi-v4/ic_clear_focus.png\n[0110] 原始文件3的二阶散列值:qTJugXHfniznJxtJBvLfZIxLZAc=\n[0111] ……\n[0112] 原始文件N的名称:classes.dex\n[0113] 原始文件N的二阶散列值:yGfugoL/4nElByb3uMco0cSnrDE=\n[0114] 更优的,二阶散列值文件中还记录有本二阶散列值文件的版本信息、以及创建本二阶散列值文件的系统程序的版本信息。\n[0115] 基于上述移动终端计算得到的程序的一阶散列值文件和二散列值文件,本发明实施例的数字签名方法的流程示意图如图1所示,包括如下步骤:\n[0116] S101:移动终端对于二阶散列值文件中的二阶散列值序列,对该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算,得到第一子摘要信息。\n[0117] 具体地,移动终端对于程序的二阶散列值文件中的二阶散列值序列,依照二阶散列值序列中各二阶散列值的排列顺序、或者随机顺序等任意顺序,利用摘要算法,对该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值分别进行摘要计算,得到除了代码文件之外的各原始文件的二阶散列值各自的摘要信息片段。较佳地,代码文件具体可以是classex.dex文件。\n[0118] 较佳地,摘要算法可以是MD(Message Digest algorithm,消息摘要算法),例如DM5;或者摘要算法可以是SHA,例如SHA1;或者摘要算法可以是RIPEMD(RACE Integrity Primitives Evaluation Message Digest,RACE原始完整性校验消息摘要)算法。\n[0119] 移动终端将除了代码文件之外的各原始文件的二阶散列值各自的摘要信息片段进行拼接,得到第一摘要信息。\n[0120] 较佳地,移动终端依照二阶散列值序列中各二阶散列值的排列顺序,将除了代码文件之外的各原始文件的二阶散列值各自的摘要信息片段,依次进行拼接,得到第一摘要信息。\n[0121] 较佳地,第一摘要信息具体可以是设定位数的字符串;例如,设定位数的二进制数字串。更优的,合理地选择摘要算法,可以进一步缩减第一摘要信息的位数;例如,将第一摘要信息的位数缩减为96位。\n[0122] 更优的,移动终端在进行摘要计算之前,还可以将程序的代码文件的二阶散列值,移动到二阶散列值序列的末尾,得到二阶散列值序列重排后的二阶散列值文件。\n[0123] S102:移动终端将第一子摘要信息和代码文件的二阶散列值向服务器上传。\n[0124] 较佳地,移动终端根据程序的代码文件的名称,从二阶散列值文件中查找出与代码文件的名称对应记录的代码文件的二阶散列值;将查找出的代码文件的二阶散列值,与上述步骤S101中算得的第一子摘要信息一并通过互联网等网络向服务器上传。\n[0125] 与上传整个二阶散列值文件相比,仅仅上传一个原始文件的二阶散列值、以及设定位数的第一子摘要信息,大大减少了上传到服务器的数据量;即使移动终端在WiFi之外的2G/3G/LTE网络等网络环境下,将一个二阶散列值和第一子摘要信息上传至服务器所耗费的流量也很少,用户完全可以承受小流量数据所产生的资费;从而大大扩宽了本发明的数字签名方法的应用范围。\n[0126] S103:服务器接收到移动终端上传的第一子摘要信息和代码文件的二阶散列值后,对接收的代码文件的二阶散列值进行摘要计算,得到第二子摘要信息。\n[0127] 具体地,服务器接收到移动终端上传的第一子摘要信息和代码文件的二阶散列值后,利用与上述步骤S101中相同的摘要算法,对接收的代码文件的二阶散列值进行摘要计算,得到代码文件的二阶散列值的摘要片段,并将代码文件的二阶散列值的摘要片段作为第二子摘要信息。\n[0128] 较佳地,第二摘要信息具体可以是设定位数的字符串;例如,设定位数的二进制数字串。\n[0129] 较佳地,服务器在对接收的代码文件的二阶散列值进行摘要计算之前,还可以根据预存的经过认证的代码文件的二阶散列值,对接收的代码文件的二阶散列值进行校验。\n经过认证的代码文件的二阶散列值是服务器根据预存的经过认证的代码文件计算得到的,具体计算方法与移动终端根据程序的原始文件、算得该原始文件的二阶散列值的方法相同,此处不再赘述。\n[0130] 例如,服务器将接收的代码文件的二阶散列值,与预存的经过认证的代码文件的二阶散列值进行逐位对比,判断两者的每一位字符是否都一致:若是,则判断出接收的二阶散列值对应的代码文件,与经过认证的代码文件一致,进而确定出接收的二阶散列值对应的代码文件未被篡改;否则,判断出接收的二阶散列值对应的代码文件,与经过认证的代码文件不一致,进而确定出接收的二阶散列值对应的代码文件已经被篡改。\n[0131] 更优的,程序的经过认证的代码文件可以是官方发布的该程序的代码文件。或者,程序的经过认证的代码文件可以是经过第三方的安全程序或相关程序修改后的代码文件,以便于在隔离环境下安装运行该程序的代码文件;例如,经过认证的代码文件可以是经过修改的适用于在沙箱环境下安装运行的代码文件。\n[0132] 恶意程序通常通过篡改程序的代码文件,由篡改后的代码文件来执行恶意行为。\n本步骤中,由服务器对移动终端中的代码文件的二阶散列值进行校验,相当于由服务器对移动终端中的代码文件进行校验;可以有效地校验出移动终端中的代码文件是否被未知程序(例如恶意程序)篡改,从而可以使得本发明实施例的数字签名方法的更安全可靠。\n[0133] S104:服务器根据接收的代码文件的二阶散列值预设在二阶散列值文件中的二阶散列值序列中的位置信息,将第一子摘要信息与第二子摘要信息拼接成摘要信息。\n[0134] 具体地,服务器中预存有程序的代码文件的二阶散列值预设在二阶散列值文件中的二阶散列值序列中的位置信息。\n[0135] 例如,服务器中预存有程序的原始文件列表,该列表中包含了代码文件在该程序的所有原始文件中的位置信息,由于二阶散列值文件中原始文件与其二阶散列值对应记录,即代码文件在原始文件列表中的位置与代码文件的二阶散列值在二阶散列值序列中的位置相对应,因此相当于服务器中预设有代码文件的二阶散列值在二阶散列值文件中的二阶散列值序列中的位置信息。\n[0136] 服务器将第一子摘要信息中各二阶散列值各自的摘要信息片段,根据二阶散列值序列中各二阶散列值的排列顺序进行排列,得到摘要信息片段序列。\n[0137] 服务器根据接收的代码文件的二阶散列值预设在二阶散列值序列中的位置信息,将第二子摘要信息作为代码文件的二阶散列值的摘要信息片段,插入到摘要信息片段序列中,得到二阶散列值序列的摘要信息。\n[0138] 较佳地,二阶散列值序列的摘要信息可以是字符串。\n[0139] 更优的,服务器还可以根据接收的代码文件的二阶散列值预设在二阶散列值序列末尾的位置信息,将第二子摘要信息作为代码文件的二阶散列值拼接在摘要信息片段序列的末尾,得到二阶散列值序列的摘要信息。\n[0140] S105:服务器根据预先生成的私钥对摘要信息进行非对称加密;根据加密结果、以及预先生成的公钥,生成数字签名文件返回至移动终端。\n[0141] 具体地,服务器在本服务器预先生成非对称加密算法的密钥和公钥。\n[0142] 较佳地,服务器预先确定出两个大质数;根据两个大质数的乘积,确定出RSA算法的密钥的长度,进而确定出RSA算法的密钥和公钥。\n[0143] 服务器根据预先生成的非对称加密算法的密钥,对上述步骤S104中得到的二阶散列值序列的摘要信息进行非对称加密计算,得到加密后的摘要信息。\n[0144] 服务器根据加密后的摘要信息、以及预先生成的非对称加密算法的公钥,生成程序的数字签名文件。\n[0145] 较佳地,服务器将加密后的摘要信息记录到数字签名文件中;服务器利用加密算法,例如PKCS(Public-Key Cryptography Standards,公钥加密标准)#7算法,对非对称加密算法的公钥进行加密后,将加密后的公钥记录到数字签名文件中。数字签名文件中还记录有公钥的加密算法、以及算得二阶散列值序列的摘要信息的摘要算法。\n[0146] 更优的,数字签名文件中还记录有算得原始文件的一阶散列值的散列算法、算得一阶散列值文件的散列值的散列算法、算得原始文件的二阶散列值的散列算法等等。\n[0147] 较佳地,数据签名文件可以是Cert.rsa文件。\n[0148] 服务器生成程序的数字签名文件后,将其返回至移动终端。\n[0149] 事实上,移动终端接收到服务器返回的程序的数字签名文件后,将程序的数字签名文件、二阶散列值文件、一阶散列值文件,以及二阶散列值序列中各二阶散列值各自对应的原始文件一起打包成该程序的安装包。\n[0150] 更优的,移动终端接收到服务器返回的程序的数字签名文件后,对于一阶散列值文件中的一阶散列值序列,将该一阶散列值序列中该程序的代码文件的一阶散列值,移动到一阶散列值序列的末尾,得到一阶散列值序列重排后的一阶散列值文件。\n[0151] 移动终端将程序的数字签名文件、二阶散列值序列重排后的二阶散列值文件、一阶散列值序列重排后的一阶散列值文件,以及二阶散列值序列中各二阶散列值各自对应的原始文件一起打包成该程序的安装包。\n[0152] 事实上,移动终端在安装程序的安装包的过程中,从该程序的安装包中解压出该程序的各原始文件、一阶散列值文件、二阶散列值文件和数字签名文件;利用一阶散列值文件、二阶散列值文件和数字签名文件对该程序的各原始文件进行签名认证。\n[0153] 基于上述程序的原始文件的数字签名方法,本发明实施例提供了一种移动终端,其内部结构的框架示意图如图2所示,包括:第一子摘要信息计算模块201和上传模块202。\n[0154] 其中,第一子摘要信息计算模块201用于对于二阶散列值文件中的二阶散列值序列,将该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算,得到第一子摘要信息;其中,二阶散列值对应原始文件;原始文件的二阶散列值是根据该原始文件的一阶散列值算得的,该原始文件的一阶散列值是根据该原始文件的内容算得的。\n[0155] 具体地,第一子摘要信息计算模块201对于程序的二阶散列值文件中的二阶散列值序列,依照二阶散列值序列中各二阶散列值的排列顺序、或者随机顺序等任意顺序,利用摘要算法,对该二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值分别进行摘要计算,得到除了代码文件之外的各原始文件的二阶散列值各自的摘要信息片段。\n[0156] 第一子摘要信息计算模块201将除了代码文件之外的各原始文件的二阶散列值各自的摘要信息片段进行拼接,得到第一摘要信息。\n[0157] 上传模块202用于将第一子摘要信息和代码文件的二阶散列值向服务器上传。\n[0158] 更优的,如图2所示,本发明实施例的移动终端中,还包括:散列值移序模块203。\n[0159] 散列值移序模块203用于将二阶散列值序列中除了代码文件的二阶散列值之外的各二阶散列值进行摘要计算之前,将该代码文件的二阶散列值,移动到二阶散列值序列的末尾,得到二阶散列值序列重排后的二阶散列值文件。\n[0160] 上述第一子摘要信息计算模块201、上传模块202和散列值移序模块203功能的具体实现方法,请参考上述如图1所示的方法流程步骤的具体内容,此处不再赘述。\n[0161] 基于上述程序的原始文件的数字签名方法,本发明实施例提供了一种服务器,其内部结构的框架示意图如图3所示,包括:第二子摘要信息计算模块301、摘要信息拼接模块\n302和数字签名文件生成模块303。\n[0162] 其中,第二子摘要信息计算模块301用于接收到移动终端上传的第一子摘要信息和代码文件的二阶散列值后,对接收的代码文件的二阶散列值进行摘要计算,得到第二子摘要信息。\n[0163] 具体地,第二子摘要信息计算模块301将第一子摘要信息中各二阶散列值各自的摘要信息片段,根据二阶散列值序列中各二阶散列值的排列顺序进行排列,得到摘要信息片段序列。\n[0164] 第二子摘要信息计算模块301根据接收的代码文件的二阶散列值预设在二阶散列值序列中的位置信息,将第二子摘要信息作为代码文件的二阶散列值的摘要信息片段,插入到摘要信息片段序列中,得到二阶散列值序列的摘要信息。\n[0165] 摘要信息拼接模块302用于根据代码文件的二阶散列值预设在二阶散列值文件中的二阶散列值序列中的位置,将第一子摘要信息与第二子摘要信息拼接成摘要信息。\n[0166] 数字签名文件生成模块303用于根据预先生成的私钥对所述摘要信息进行非对称加密;根据加密结果、以及预先生成的公钥,生成数字签名文件向移动终端返回。\n[0167] 更优的,如图3所述,本发明实施例的服务器中,还包括:校验模块304。\n[0168] 校验模块304用于根据预存的经过认证的代码文件的二阶散列值,对第二子摘要信息计算模块301接收的代码文件的二阶散列值进行校验。\n[0169] 上述第二子摘要信息计算模块301、摘要信息拼接模块302、数字签名文件生成模块303和校验模块304功能的具体实现方法,请参考上述如图1所示的方法流程步骤的具体内容,此处不再赘述。\n[0170] 更优的,本发明实施例将上述数字签名方法与沙箱技术相结合,提供了一种移动终端的安全方法,该方法的流程示意图如图4所示,包括如下步骤:\n[0171] S401:确定目标应用,保存其安装包至指定目录。\n[0172] 所述的目标应用,即需要建构主动防御环境的目标应用程序,就特定的处于非ROOT授权环境下的Android系统而言,出于权限限制的考虑,一般适用于第三方应用。\n[0173] 本发明所称的指定目录,是指本发明出于文件组织、管理效率的考虑而为这些需要建构主动防御环境的目标应用安装包提供的自定义默认目录,所有通过本发明建立了主动防御环境的目标应用的安装包,均可被移动或复制保存到该指定目录中,进一步还可以对其进行加密或隐藏,以确保其安全性。需要指出的是,这里的指定目录,还可以是系统已经存在的目录。既可以是单个目录,也可以是多个目录。概括而言,是为本发明所采用的用于存放由本发明建构主动防御环境的目标应用安装包的目录。\n[0174] 目标应用的确定和处理,非常灵活,以下提供几种确定目标应用和后续处理的实施方式:\n[0175] 方式一:\n[0176] 对于已经完成安装的应用程序而言,本发明可以自动或受用户指令控制对这些已安装应用程序进行扫描,获得这些应用程序的安装信息,将这些应用程序作为候选目标应用列表显示在用户界面中(参阅图5),在图形用户界面的相应指示区域中为列表中的每个候选目标应用提供相对应的选择开关,由用户对这些开关状态进行设定,从而获得用户对具体目标应用的确定。具体而言,用户可以将某个目标应用所对应的指示区域中的选择开关,从未选定状态切换至选定状态,如图5中的“已监控”、“点击监控”二态开关示例,这种情况下,即可视为用户完成了对该目标应用的确定操作。\n[0177] 众所周知的,Android系统中,第三方应用的安装会涉及对如下目录做如下操作:\ndata/app,第三方应用安装目录,安装时先把apk文件复制到此目录;data/dalvik-cache,将apk解压后的代码文件(.dex文件)安装到该目录下;data/data,用于建立并存放应用程序所需的数据。基于上述原理可知,第三方应用的apk文件即为其安装包,在data/app中可以找到该安装包。因此,对于已安装的目标应用而言,可以从data/app中复制相应的apk文件到指定目录中,然后卸载该目标应用。\n[0178] 方式二:\n[0179] 参阅图6,对于准备或者正在进行安装的应用程序而言,本发明可以通过将自身注册为默认安装器的形式,获取该应用程序的安装广播信息。继而,将这个新装应用程序作为目标应用,将其安装包或签名之类的特征信息通过远程规则库接口发送到云端服务器中,由云端服务器对其做出安全性判断。\n[0180] 在本发明实施例中,云端服务器为应用程序的安全级别设定黑、灰、白三种级别,分别代表不同危险程度,并设定对应的处理规则。例如,黑应用禁止安装,灰应用由用户自行选择,白应用则可径行安装。当然,可以进一步简化为灰、白两种,或者简化为黑、白两种。\n本领域技术人员熟悉服务器的这种云端控制技术,将在后续进一步概要揭示。无论如何,本发明将从本机远程规则库接口中获得云端服务器有关这些应用的处理规则的反馈,利用反馈结果做出相应的后续处理。具体而言,当针对当前目标应用返回黑应用标识时,可以随即停止该目标应用的安装;当标识为白应用或灰应用时,则可放行安装。出于交互性的考虑,当完成远程判断后,本发明将向用户界面弹窗提醒用户有关判断结果,并显示相应的处理建议,询问用户是否确定对当前新装应用建构主动防御环境,用户从中确定对当前新装目标应用进行主动防御的标识后,即确定了该目标应用。\n[0181] 如前提供的两种典型的有关确定目标应用的方式,可由本领域技术人员变通利用。例如,对于方式一中的已安装目标应用而言,可以适用方式二中将已安装应用通过远程规则库接口发送到云端进行安全等级判断,并在返回结果后,参照方式二的处理方式,对已安装应用进行处理。又如,如果当前应用属于黑应用,而用户仍然希望安装该应用,则仍可允许用户在建立主动防御环境的前提下保留该已安装应用程序,或者允许相应的新装应用继续安装。\n[0182] S402:利用目标应用的安装包配置外壳应用安装包,向其中注入用于调用监控单元的桩模块,修改其中的配置参数以用于加载目标应用,监控单元用于实现对源自目标应用的事件行为的挂钩监控。\n[0183] 确定需要建构主动防御环境的目标应用后,进一步创建外壳应用。请参阅图7,该外壳应用的创建包括如下具体步骤:\n[0184] S4021、解析目标应用安装包,生成外壳应用镜像。\n[0185] 众所周知,目标应用安装包为压缩文件,将该安装包解压,即可获得其中的文件。\n较佳的,将目标应用安装包解压至一个临时工作目录以完成解压工作。解压后,即可对目标应用安装包中的各个文件进行解析。另一种方式中,也可以在内存中直接解析该目标应用安装包。无论如何,本领域技术人员均能通过已知方式对目标应用进行解析,获得用于配置外壳应用的相关参数和资源,并据此生成外壳应用镜像。该镜像既可以是硬盘镜像,也可以是内存镜像,其功能在于在构造外壳应用过程中作为中间状态出现,故其具体存在形式应不影响本发明的实现,本领域技术人员可以结合公知常识灵活变通之,下不赘述。\n[0186] S4022、修改或替换镜像中的代码文件,以注入所述的桩模块。\n[0187] 公知的,apk安装包的构成文件中包含代码文件Classes.dex。本发明中,通过修改或者替换的方式,为外壳应用镜像构造新的Classes.dex,使该新文件中包含本发明所提供的桩模块nStub。该桩模块通过加载利用HOOK技术实现的监控单元,使监控单元可在运行时实现对目标应用所创建的进程的事件行为的监控捕获。\n[0188] 需要指出的是,所述的监控单元,是通过从一后台沙箱HOOK框架中获取对应于特定的事件行为的挂钩插件,利用该挂钩插件监控目标应用的特定事件行为而实现的。所述的后台沙箱HOOK框架,在云端进行集中管理,向各终端进行分发。其中,云端主要构造有Java挂钩插件库和Native挂钩插件库。监控单元可以通过远程插件接口向后台沙箱HOOK框架发送请求,获得针对特定事件行为的HOOK函数,即所述的挂钩插件,借此建立对特定事件行为的监控捕获和处理。\n[0189] S4023、修改镜像中的配置文件的配置参数,用于加载指定目录中的目标应用。\n[0190] 同理,安装包的构成文件中还包含配置文件Androidmanifest.xml,对该文件进行修改,对应修改外壳应用镜像中有关目标应用的配置信息,使其适于加载指定目录中的目标应用。此外,本发明利用Java反射调用机制,将LoadApk与ActivityThread涉及的运行时配置信息用反射替换成指定目录中目标应用安装包的ClassLoader与资源,从而实现外壳应用在运行时对目标应用的加载。\n[0191] 此外,图标作为一种可供人机识别的资源,在本发明中也作为配置文件之一被修改。为了使图标更易识别,本发明利用该目标应用的原图标作为底稿,对其添加图戳,以原文件名保存替换原图标,如此,即可在外壳应用安装后,供用户通过该图戳识别其为已防御的应用。同一个目标应用可能包括多个图标资源,可以仅对其中目标应用所采用的主图标进行修改,也可对其包含的多个或所有图标进行类似的修改。\n[0192] S4024、完成该外壳应用的封装。\n[0193] 本子步骤为本领域技术人员所知悉的常规步骤,在完成上述的修改后,对外壳应用镜像进行打包,得到外壳应用的安装包。本发明实施例中,外壳应用的安装包中包含沙箱HOOK框架中的监控功能模块。\n[0194] S403:对于外壳应用安装包中的每个原始文件,根据该原始文件的内容算得该原始文件的一阶散列值,进而根据该一阶散列值算得该原始文件的二阶散列值;将该安装包中各原始文件的二阶散列值组成二阶散列值序列记录到二阶散列值文件中。\n[0195] 本步骤中,移动终端对于外壳应用的安装包中的每个原始文件,根据该原始文件的内容算得该原始文件的一阶散列值的具体方法,与上述步骤S101之前移动终端算得程序的原始文件的一阶散列值的方法相同,此处不再赘述。其中,外壳应用的安装包中的各原始文件中包括代码文件。\n[0196] 移动终端对于外壳应用的安装包中的每个原始文件,根据该一阶散列值算得该原始文件的二阶散列值的具体方法,与上述步骤S101之前移动终端根据原始文件的一阶散列值算得二阶散列值的方法相同,此处不再赘述。\n[0197] 移动终端对于外壳应用的安装包中的各原始文件,将各原始文件的二阶散列值组成二阶散列值序列记录到二阶散列值文件中。二阶散列值文件及其内容,与上述步骤S101之前程序的二阶散列值文件及其内容都相同;二阶散列值序列的内容及排列方式,与上述步骤S101之前程序的二阶散列值文件中的二阶散列值序列的内容及排列方式都相同;此处不再赘述。\n[0198] S404:对于二阶散列值序列中除了代码文件的二阶散列值文件之外的各二阶散列值进行摘要计算,得到第一子摘要信息;将第一子摘要信息和代码文件的二阶散列值向服务器上传。\n[0199] 本步骤的具体内容,与上述如图1所示的方法流程中步骤S101至步骤S102中的内容相同,此处不再赘述。\n[0200] S405:服务器根据接收的第一子摘要信息和代码文件的二阶散列值,生成数字签名文件并返回至移动终端。\n[0201] 本步骤的具体内容,与上述如图1所示的方法流程中步骤S103至步骤S105中的内容相同,此处不再赘述。\n[0202] S406:根据服务器返回的数字签名文件,对各原始文件进行签名认证;认证通过后安装各原始文件;加载运行目标应用和监控单元。\n[0203] 移动终端根据服务器返回的数字签名文件,对外壳应用的安装包中的各原始文件进行签名认证,具体方法为本领域的惯用技术手段,此处不再赘述。\n[0204] 外壳应用的安装包中的所有原始文件都通过签名认证后,移动终端在沙箱环境下安装该安装包中的所有原始文件。\n[0205] 移动终端响应运行目标应用的指令,运行相应的外壳应用。\n[0206] 具体地,参阅前述步骤S402的内容可知,外壳应用被安装后,其文件名与原来的目标应用的文件名相同,伪装成目标应用,用户对目标应用的操作,实际上,通过桌面图标指引的快捷方式,将被引导至运行预先伪装的外壳应用,此时,用户在用户界面上的点选操作便构成运行该外壳应用的运行指令。需要指出的是,运行目标应用的指令并不局限于由用户触发,也包括如前所述的,由应用程序、定时任务或者通过其它公知途径以函数调用的方式执行的加载指令。外壳应用为轻应用,可以快速加载至内存中运行,对用户而言,其启动过程是透明的。\n[0207] 外壳应用的图标是从目标应用的默认图标改进的,一般是以该默认图标加图戳来实现这种改进,因而,从视觉效果上,还可起到一定的示警作用。\n[0208] 一旦产生运行目标应用的指令,本发明即作出响应,外壳应用随即被加载到JAVA虚拟机中运行。\n[0209] 之后,移动终端利用外壳应用先后加载监控单元及目标应用。\n[0210] 具体地,如前述步骤S402的内容所述,本发明的外壳应用中,其代码文件Classes.dex配置有桩模块nstub,通过该桩模块可以加载监控模块;其配置文件Androidmanifest.xml运用Java反射调用原理,对其中的配置参数进行修改,使其适于加载保存在所述指定目录中的目标应用,此外,还对目标应用的运行时配置参数进行了适应性的修改,确定目标应用能正常运行。\n[0211] 因此,请参阅图8,外壳应用运行后,如步骤S4061所揭示,首先通过桩模块调用加载监控单元,所述监控单元从一后台沙箱HOOK框架中获取对应于特定的事件行为的挂钩插件,利用该挂钩插件挂钩并监控目标应用的特定事件行为。所述的后台沙箱HOOK框架,在云端进行集中管理,向各终端进行分发。其中,云端主要构造有Java挂钩插件库和Native挂钩插件库。监控单元需要挂钩具体事件行为时,通过远程插件接口向后台沙箱HOOK框架发送请求,获得针对特定事件行为的HOOK函数,即所述的挂钩插件,借此建立对特定事件行为的监控捕获和处理。\n[0212] 进而,如步骤S4062所揭示,运行中的外壳应用将进一步加载所述位于指定目录中的目标应用。如前所述,目标应用调用,是利用公知的Java反射调用机制实现的。外壳应用的进程将LoadApk与ActivityThread涉及的运行时配置信息用反射替换成指定目录中目标应用安装包的ClassLoader与资源,从而实现对目标应用的加载。\n[0213] 如步骤S4063显示,目标应用被加载时,已被监控单元利用挂钩插件建立了监控,因此,目标应用的一切事件行为均在监控单元的监控范围之内。位于目标应用的安装包是完整未经修改的,因此,目标应用被外壳应用加载后,能够完全合法、正常地运行,实现目标应用原本能实现的所有功能。\n[0214] 由于监控单元与目标应用的加载,均为外壳应用进程所驱动,同为外壳应用进程的一部分,且监控单元先于目标应用加载,因而,运行中的监控单元即建立了对目标应用一切事件行为的监控。目标应用运行过程中产生的任何事件行为,其事件消息均会被监控单元捕获并进行相应的处理。\n[0215] S407:根据监控的结果判断目标应用的安全性。\n[0216] 请结合图9,步骤S4071显示,目标应用产生的特定事件行为被监控单元捕获,实质上是触发特定事件行为时,所产生的事件消息被监控单元中相应的挂钩插件(钩子函数)所捕获。捕获该事件消息,即可知晓该事件的意图,继而可以进行后续的处理。\n[0217] 步骤S4072显示,对特定事件行为进行处理,需要获取事件行为处理策略。在这一子步骤中,可以进一步借助系统服务来实现人机交互功能。为了实现人机交互效果,本发明预先将一交互模块注册为系统服务,外壳应用可以通过其交互接口与该交互模块通信,从而实现外壳应用对用户指令或预设指令的获取。\n[0218] 事件行为策略的获取方式非常灵活多样,以下列举几种为本发明所择一或任意组合使用的策略:\n[0219] (1)监控单元捕获特定事件行为后,通过外壳应用内建的交互接口,向所述交互模块发送请求,由交互模块向用户界面弹窗问询用户处理策略,如图10和图11所示,该弹窗界面可以直接告知用户有关事件行为的内容及其风险,由用户选择相应的选项作为处理策略。用户选择相应选项并确定后,交互模块获得针对该特定事件行为的处理策略,将其反馈给监控单元,监控单元即可根据该用户指令所产生的处理策略对目标应用的相应事件行为进行下一步的处理。\n[0220] (2)在某些已被公认为相对低风险的事件行为发生时,例如对联系人的只读操作行为,或者在用户为本发明设置了自行检索针对特定事件行为所应采取的处理策略时,本发明利用一本地策略数据库检索相应的针对特定事件行为的处理策略。例如,如图12所示,某个应用的所有事件行为的默认处理策略可以被以表单的形式给出。也就是说,该本地策略数据库中,建立了特定事件行为与相应的处理策略之间的关联,并且存储了多种事件行为与相应的处理策略之间对应关系的记录数据,可以供本发明检索使用。本发明从本地策略数据库中获取相应的处理策略后,方能对相应事件行为做下一步的处理。\n[0221] (3)如果用户为本发明设置了远程获取处理策略的选项,或者默认在本地策略数据库检索不到特定事件行为的具体策略时可以远程获取,又或通过前述第(1)种情况进行交互而在规定时限内得不到用户对弹窗的响应,诸如此类的情况,外壳应用均可通过其内建的远程策略接口,向预架构的云端发送请求,获得对应于该特定事件行为的相应的处理策略,并用于后续的处理。\n[0222] 需要指出的是,有关以上三种获取处理策略的方式,可以交叉配合使用,例如,一旦交互模块接收到监控单元传递的事件消息的特征,即可依照默认设置,参照第(2)种方式先行检索本地策略数据库,获得系统推荐的处理策略(如果不能从本地策略数据库中获得,甚至可以进一步按第(3)种方式从云端策略数据库中获取)。继而,参照第(1)种方式,在弹窗界面设置系统推荐的处理策略为默认选项。如果用户未在规定时限内确认该默认选项,则以系统推荐的处理策略为准执行后续指令;如果用户将之改变为新的默认选项,则向监控单元返回用户设置的处理策略。可见,人机交互过程是可以更为灵活自由地实现的。\n[0223] 所述的本地策略数据库,可以是云端策略数据库的一个复件,因此,本发明中,设置一个更新步骤,用于下载云端策略数据库用于更新本地策略数据库。\n[0224] 一般情况下,针对特定事件行为的策略可以设置为“拒绝”、“运行”、“询问”三个常见选项,其表征的具体意向为:\n[0225] 拒绝:针对该特定事件行为,向目标应用发送事件行为已经执行完毕的虚假消息,以禁止该事件行为实际发生;\n[0226] 运行:针对该特定事件行为不做任何改变,将相应的事件消息直接转送给系统消息机制,允许目标应用继续其事件行为;\n[0227] 询问:独立或依附于前述两个选项任意之一,针对该特定事件行为,标记其状态为未知状态,后续重复发生该行为时,需要再行弹窗询问用户。\n[0228] 实际应用中,选项“询问”可被忽略,仅需考虑是否拒绝或允许当前事件行为发生即可。\n[0229] 所述的事件行为,多种多样,具体包括如下几大类型:\n[0230] (1)终端、联网有关的操作:\n[0231] 获取运营商信息:目标应用例如通过getSimOperatorName()函数可以获得移动终端的IMSI,由此可进一步判断运营商的名称,进一步可以向运营商发送约定指令,实现扣费之类的非法目的。监控平台通过挂钩与此相关的消息,便可以对事件行为的捕获。\n[0232] 切换APN操作:同理,目标应用通过与APN切换有关的函数实现ANP切换控制的操作,也可被监控单元通过调用相应的挂钩插件进行监控。\n[0233] 类似的操作,还包括获取手机识别码IME的操作,也与上述同理。\n[0234] (2)通知栏广告操作:通知栏广告是最易被恶意程序利用的手段,监控单元通过调用相应的挂钩插件对notify函数产生的事件消息进行监控,也可对其实施监控。\n[0235] (3)通信操作:\n[0236] 如电话拔打操作,通过StartActivity()函数可以监控拔打电话的事件行为,利用相应的挂钩插件可以对拔打电话操作建立事件行为监控。\n[0237] 短信操作,对应于SendTextMessage()之类的函数,同理,可以借助挂钩插件对这类函数建立事件行为监控。\n[0238] 联系人操作:一般对应于Query()、Insert()函数,监控单元利用挂钩插件挂钩此类函数可以实现对此类事件行为的监控捕获。\n[0239] (4)命令操作:\n[0240] 如SU提权操作或执行命令操作,均需用到Execve()函数,监控单元通过监控此函数的返回消息,便可实现该类事件行为的监控。\n[0241] (5)界面及访问操作:\n[0242] 如创造快捷方式的事件行为,则对应于SentBroacast()函数。同理,对于隐藏程序图标的操作,也可对应特定函数监控之。\n[0243] 如HTTP网络访问操作,则对应于Sentto()、Write()等函数。\n[0244] (6)程序操作:\n[0245] 如应用加载操作,指当前目标应用加载相关应用的操作,通过对dexclassloader()、loadlibrary()等函数进行挂钩监控,可以实现对此类事件行为的捕获。\n[0246] 又如安装子包,则对应于StartActivity()函数。\n[0247] (7)其它危险操作:\n[0248] 例如,子进程侵入操作、衍生物操作、激活设备管理器操作等,分别对应于。\n[0249] 其中,子进程是指目标应用建立的子进程,在目标应用创建子进程时,监控单元将收到相应的消息,而判定其创建子进程的事件行为。由此,监控单元进一步向该子进程以内联钩子的方式在该子进程中植入监控单元,后续便可继续对该子进程的事件行为进行监控。因而,无论是目标应用的自身进程,还是其创建的子进程,它们直接或间接所触发的事件行为,均能被本发明的监控单元所监控,使主动防御效果更佳。\n[0250] 而所述衍生物,是指目标应用自行创建的文件,或者远程下载的文件,通常是指敏感的衍生物,例如安装包。通过挂钩fclose()函数可以捕获该事件。需要指出的是,当监控单元捕获该事件行为后,可以按照前述的方法,进一步利用远程规则库接口发送请求到云端,由云端利用其黑、白、灰的安全等级行为规则判断该衍生物的安全等级,本发明通过远程规则库接口获得云端判定结果后,进一步弹窗询问用户是否建立对该敏感衍生物的主动防御,由此便可进一步巩固主动防御的效果。\n[0251] 上述的事件行为仅为摘录之用,不能理解为对本发明监控的事件行为的限制。\n[0252] 步骤S4073显示,依据上述的处理策略和上述关于事件行为的说明,本发明的主动防御方法便可对各种事件行为进行相应的处理,其处理过程的概括在前文中已散列给出,以下进一步列举几种典型的应用实例:\n[0253] (1)对目标应用的精细拦截的应用:\n[0254] 部分恶意程序被安装后,在相当长的一段时间内处于正常使用的状态,麻痹用户的安全意识。但是,运行一段长时间之后,该目标应用尝试从后台插入一短信引起用户的关注,达到广告和诈骗的效果。参阅图11,对该目标应用建立主动防御机制后,本发明如前所述,通过监控单元中相应的挂钩插件对短信操作函数的监控,一旦目标应用产生短信操作的事件行为,便可捕获这一事件行为,继而,监控单元通过其交互接口通知作为系统服务运行的交互模块,由交互模块向用户界面弹窗示警。用户点选“拒绝”的处理策略后,被逆反馈给监控单元,其中相应的挂钩插件便能阻该事件行为的实际发生,达到防范风险的目的。\n[0255] (2)对目标应用释放恶意文件的应用。\n[0256] 目标应用为一游戏软件,通过检查更新的方式下载并释放恶意子包,并且调用系统功能安装该子包。本发明对该目标应用建立了主动防御之后,可以监控到其下载完文件而产生的事件行为,据此通过交互模块弹窗告警。用户指令拒绝之后,监控单元中相应的挂钩插件便可直接删除该文件,或者仅仅拒绝该文件的安装行为。\n[0257] 本发明中,对于诸如此类的恶意子包,视为敏感衍生物,对衍生物是否存在恶意的判断,参照前述防御配置方法中所述及的确定安全等级的方式进行远程判断。具体而言,当检测到产生衍生物时,将相应的文件或者其签名之类的特征信息通过远程规则库接口发送给云端,并从云端获得其安全等级,如果为黑、灰应用,则在弹窗中建议用户拒绝安装;如果为白应用,则可允许其通行。通过这种方法,便可实现对敏感衍生物的安全防御。如果云端检测不到该衍生物的相关记录,可以要求本方法为其上传该文件,并由云端标示为未知应用,相应的,以灰应用予以标记,以备后用。\n[0258] (3)对子进程侵入的应用。\n[0259] 被监控的目标应用在运行过程中创建子进程,而子进程进一步释放恶意事件行为。监控单元监控到目标应用创建子进程时,即获得子进程的入口,然后向该子进程植入本发明的监控单元,所有HOOK插件(挂钩插件)都会被以内联钩子的方式加载到该子进程中并初始化好实现挂钩,以便建立对该子进程的事件行为的监控。由此,可以看出,无论是由目标应用进程直接触发的事件行为,还是由目标应用进程所创建的子进程所触发的间接事件行为,均能被监控单元成功监控。\n[0260] 本发明实施例的技术方案,由服务器保存私钥并利用私钥对摘要信息进行加密;\n与由移动终端保存私钥并利用私钥进行加密相比,凭借服务器远超移动终端的防护能力,可以防止恶意程序窃取私钥,保证后续生成的数字签名文件更加安全可靠,使得移动终端可以根据更安全可靠的数据签名文件,对该程序的原始文件进行签名认证,可以有效地消除恶意程序篡改程序的原始文件所带来的危害,保护用户利益,提高用户体验。\n[0261] 而且,本发明实施例的技术方案,根据摘要计算分步骤计算的特点,由移动终端计算出程序的除了代码文件之外的原始文件的二阶散列值的第一子摘要信息,将程序的代码文件的二阶散列值、以及第一子摘要信息上传至服务器进行后续计算;与上传整个二阶散列值文件相比,大大降低了网络传输的数据量,有效地降低了用户因上传数据而所需的费用,大大拓宽了本发明实施例的技术方案的适用范围。\n[0262] 进一步,本发明实施例的技术方案中,服务器对移动终端上传的代码文件的二阶散列值进行校验,相当于对移动终端的代码文件进行校验,保证了上传的代码文件的二阶散列值的安全可靠性,有利于在后续步骤中生成更安全可靠的数字签名文件。\n[0263] 本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。\n[0264] 本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。\n[0265] 本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。\n进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。\n[0266] 以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
法律信息
- 2022-08-09
专利权的转移
登记生效日: 2022.07.28
专利权人由北京奇虎科技有限公司变更为北京奇虎科技有限公司
地址由100088 北京市西城区新街口外大街28号D座112室(德胜园区)变更为100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801
专利权人由奇智软件(北京)有限公司 变更为空
- 2017-10-20
- 2015-04-29
实质审查的生效
IPC(主分类): H04L 9/32
专利申请号: 201410835701.7
申请日: 2014.12.26
- 2015-04-01
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-12-19
|
2012-06-28
| | |
2
| |
2009-11-25
|
2008-05-21
| | |
3
| |
2014-02-12
|
2012-07-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |