发明名称 一种基于可信执行环境的Java代码安全动态载入方法
摘要 一种基于可信执行环境的Java代码安全动态载入方法,在所述移动智能设备中预置有可信执行环境,所述可信执行环境用于将可信区域内存划分为多个任务共存空间,支持多个独立的安全应用程序运行。本发明在保证安卓程序正常运行的前提下,通过从服务端动态下载加密过的核心代码并将加密过的核心功能代码在可信执行环境中解密,使破解者很难利用当前主流的安卓应用程序分析技术和破解工具对受保护的核心功能代码分析篡改,保护核心功能代码的安全性。
申请公布号 CN104318135A 申请公布日期 2015.01.28
申请号 CN201410585071.2 申请日期 2014.10.27
申请人 中国科学院信息工程研究所 发明人 王雅哲;徐震;胡铭铭;王瑜
分类号 G06F21/14(2013.01)I;G06F21/64(2013.01)I;G06F9/445(2006.01)I 主分类号 G06F21/14(2013.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 成金玉;孟卜娟
主权项 一种基于可信执行环境的Java代码安全动态载入方法,其特征在于:在所述移动智能设备中预置有可信执行环境,所述可信执行环境用于将可信区域内存划分为多个任务共存空间,支持多个独立的安全应用程序运行;所述方法实现步骤如下:(1)核心功能代码片段的处理和流程初始化在安卓终端中运行着普通执行环境和可信执行环境,普通执行环境预装有主体代理程序,可信执行环境运行着与主体代理程序对应的代码解密应用;针对需要保护的代码片段,服务器端利用代码解密应用所对应的公钥对该代码片段进行加密得到Encryption DEX file,并生成代码片断运行相关信息的XML code drama文件,最后将得到的Encryption DEX file和XML code drama文件保存;所述Encryption DEX file是指经过加密处理后的需要保护的核心功能代码片段的DEX文件,包括;所述XML code drama是指程序剧本,主体代理通过解析该文件,运行被代码解密应用解密的核心功能代码;(2)运行过程当安卓终端运行应用程序时,若执行核心功能代码片段,则通过主体代理程序向服务器发送核心功能代码片段文件请求,服务器将核心功能代码片段对应的XML code drama和Encryption DEX file发送到该安卓终端;然后主体代理程序向可信执行环境中代码解密应用发出解密请求,代码解密应用验证主体代理程序的签名,若主体代理程序的签名合法,则主体代理程序发送Encryption DEX file至共享内存,并通知代码解密应用Encryption DEX file在共享内存中的位置,代码解密应用通过内存共享的方式得到Encryption DEX file文件;在解密过程中,代码解密应用首先会对Encryption DEX file进行基于SHA‑256算法的校验和计算,并将结果与Encryption DEX file文件中偏移量16字节位置处的校验和进行比对,如果相等的话,则说明Encryption DEX file文件没有被破坏和篡改;如果校验不通过,则过程终止并通知主体代理程序过程失败;校验通过后,代码解密应用根据Encryption DEX file头部结构中的头部偏移量和头部长度字段得到被加密的DEX文件头部数据,并利用自己的私钥对其进行解密,得到原始的DEX文件头部数据;通过Encryption DEX file头部结构中的DEX文件体偏移量和DEX文件体长度字段得到DEX文件体数据,代码解密应用将这两部分数据重新组合得到原始的代码片段对应DEX文件,将原始DEX文件拷贝至共享内存中,并将该文件在共享内存中的地址返回给主体代理程序;主体代理程序通过内存共享的方式,得到原始代码片段对应的DEX文件,解析XML code drama文件内容得到代码运行逻辑流程,并结合DEX文件运行核心功能代码片段,获得执行结果;主体代理程序获得最终结果后,销毁获取的XML code drama文件和Encryption DEX file文件,并将结果返回给安卓应用程序,安卓应用程序继续执行后续业务处理过程。
地址 100093 北京市海淀区闵庄路甲89号