[发明专利]基于软TCM和可信软件栈的安卓系统及其可信认证系统与方法有效
申请号: | 201610052539.0 | 申请日: | 2016-01-26 |
公开(公告)号: | CN105718807B | 公开(公告)日: | 2018-08-03 |
发明(设计)人: | 周福才;易海;高健 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/51;G06F21/12;H04L9/32 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 梁焱 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 tcm 可信 软件 系统 及其 认证 方法 | ||
1.一种基于软TCM和可信软件栈的安卓系统,其特征在于:其包括建立在现有安卓系统的安卓内核上的软TCM、可信软件栈和软TCM驱动模块;所述软TCM与所述可信软件栈嵌入现有安卓系统的系统库,为安卓系统的应用程序提供调用环境;其中所述可信软件栈在所述软TCM之上,作为外部访问与管理软TCM的接口;所述软TCM驱动模块,位于现有安卓系统的Linux内核层,根据Linux系统特性编写,用于为所述软TCM提供安卓系统的底层调用接口;
所述软TCM,包括:
设备驱动模块:为可信软件栈与软TCM提供通信接口;从可信软件栈接收对软TCM的控制与查询命令、需要软TCM对其进行存储或加解密的数据;
命令解释和收发模块:对设备驱动模块传入的命令进行解析,转换为软TCM内部的命令后,发送至命令执行模块;对设备驱动模块传入的需要软TCM对其进行存储或加解密的数据进行解析后,发送给加解密模块;
加解密模块:利用中国国家密码管理局发布的SM2椭圆曲线公钥密码算法、SM3密码杂凑算法和SM4分组密码算法对解析后的需要软TCM对其进行加解密的数据进行加解密处理;
命令执行模块:执行软TCM的内部命令;
内部密钥和数据存储模块:含有模拟PCR寄存器;用于维护软TCM内部密钥、数据,实现软TCM内部状态和部分数据的永久存储。
2.权利要求书1所述的基于软TCM和可信软件栈的安卓系统的可信认证系统,其特征在于:其包括:该安卓系统启动的可信认证系统和该安卓系统的安卓软件安装的可信认证系统;
所述该安卓系统启动的可信认证系统,包括:
度量模块:在安卓系统的启动执行模块Linux Kernel、Init Process、Services、Zygote/Vm、System Server、Server Manager中均加入度量模块;从启动执行模块LinuxKernel的度量模块开始,依次由当前启动执行模块的度量模块对下一个启动执行模块进行度量,每个度量模块使用软TCM中的SM3密码杂凑算法计算下一个启动执行模块的哈希值即度量值并发送给度量模块所在的启动执行模块的扩展PCR操作模块;
扩展PCR操作模块:在安卓系统的启动执行模块Linux Kernel、Init Process、Services、Zygote/Vm、System Server、Server Manager中均加入扩展PCR操作模块;从启动执行模块Linux Kernel的扩展PCR操作模块开始,依次由当前启动执行模块的扩展PCR操作模块将模拟PCR寄存器中的当前值与对应的度量模块发送的度量值进行合并;使用软TCM中的SM3密码杂凑算法计算合并结果的哈希值,并用该哈希值更新模拟PCR寄存器中的当前值,并将模拟PCR寄存器中的当前值写入日志;
完整性认证模块:在安卓系统的启动执行模块Home Launcher中加入完整性认证模块;所述完整性认证模块用于将模拟PCR寄存器中的当前值与预设值进行比较,若模拟PCR寄存器中的当前值不等于预设值,则将日志中记录的模拟PCR寄存器中的当前值逐一与预先获取的未经篡改的模拟PCR寄存器中的当前值记录进行对比,定位被篡改的启动执行模块后,输出安卓系统启动认证失败及被篡改的启动执行模块的提示信息;
所述该安卓系统的安卓软件安装的可信认证系统,包括:
CA:接收软件开发者的公钥及身份信息;核实软件开发者身份;向可信的软件开发者颁发代码签名证书,并提供安卓软件签名与打包工具;
安卓软件签名模块:从软件开发者处获取可信的未签名安卓软件和代码签名证书;使用软TCM中的SM3密码杂凑算法计算该可信的未签名安卓软件的哈希值;使用软件开发者的私钥和软TCM中的SM2椭圆曲线公钥密码算法对该可信的未签名安卓软件的哈希值进行加密,得到数字签名;将数字签名和该可信的未签名安卓软件以及代码签名证书进行打包,形成签名后的安卓软件;
代码签名证书验证模块:用于验证代码签名证书的有效性,若无效,则停止安卓软件安装过程,若有效,则将该代码签名证书的有效验证结果发送给安卓软件完整性认证模块;
数字签名验证模块:使用软件开发者的公钥对数字签名进行解密,得到可信的未签名安卓软件的哈希值Hash_1;使用软TCM中的SM3密码杂凑算法,对未知来源的不可信的未签名安卓软件计算哈希值Hash_2;判断Hash_1与Hash_2是否相等,否,则停止安卓软件安装过程,是,则将该数字签名有效验证结果发送给安卓软件完整性认证模块;
安卓软件完整性认证模块:如果代码签名证书的有效验证结果和数字签名有效验证结果均收到,则继续进行安卓软件安装过程,否则停止安卓软件安装过程。
3.权利要求1所述的基于软TCM和可信软件栈的安卓系统的可信认证方法,其特征在于:包括:该安卓系统启动的可信认证过程和该安卓系统的安卓软件安装的可信认证过程;
所述该安卓系统的启动可信认证过程,包括如下步骤:
步骤1:开机启动安卓系统;
步骤2:首先将安卓系统的启动执行模块Linux Kernel作为控制节点,使用软TCM中的SM3密码杂凑算法计算下一个启动执行模块Init Process的哈希值即度量值;
步骤3:将模拟PCR寄存器中的当前值与Init Process的度量值进行合并;
步骤4:使用软TCM中的SM3密码杂凑算法计算步骤3合并结果的哈希值,并用该哈希值更新模拟PCR寄存器中的当前值,并将模拟PCR寄存器中的当前值写入日志;
步骤5:依次将安卓系统的启动执行模块Init Process、Services、Zygote/Vm、SystemServer和Server Manager分别作为控制节点,按照步骤2至4的方法,分别计算出Services的度量值及对应的模拟PCR寄存器中的当前值、Zygote/Vm的度量值及对应的模拟PCR寄存器中的当前值、System Server度量值及对应的模拟PCR寄存器中的当前值、ServerManager度量值及对应的模拟PCR寄存器中的当前值、Home Launcher度量值及对应的模拟PCR寄存器中的当前值;
步骤6:将模拟PCR寄存器中的当前值与预设值进行比较,若模拟PCR寄存器中的当前值不等于预设值,则将日志中记录的模拟PCR寄存器中的当前值逐一与预先获取的未经篡改的模拟PCR寄存器中的当前值记录进行对比,定位被篡改的启动执行模块后,输出安卓系统启动认证失败及被篡改的启动执行模块的提示信息;
所述该安卓系统的安卓软件安装的可信认证过程,包括如下步骤:
步骤1:CA验证软件开发者信息并向软件开发者颁发代码签名证书,并提供安卓软件签名与打包工具;具体包括如下步骤:
步骤1-1:软件开发者产生私钥对,即公钥和私钥;
步骤1-2:软件开发者与CA签订合同并支付费用;
步骤1-3:软件开发者向CA提供其身份信息及公钥;
步骤1-4:CA核实软件开发者身份;
步骤1-5:CA向可信的软件开发者颁发代码签名证书,并提供安卓软件签名与打包工具;
步骤2:软件开发者对安卓软件进行签名;
步骤2-1:软件开发者获取可信的未签名安卓软件和CA颁发的代码签名证书;
步骤2-2:使用软TCM中的SM3密码杂凑算法计算该可信的未签名安卓软件的哈希值;
步骤2-3:使用软件开发者的私钥和软TCM中的SM2椭圆曲线公钥密码算法对该可信的未签名安卓软件的哈希值进行加密,得到数字签名,并将数字签名和该可信的未签名安卓软件以及代码签名证书进行打包,形成待上传到应用商店的签名后的安卓软件;
步骤3:对从应用商店获得的待安装的安卓软件进行认证;
步骤3-1:对待安装的安卓软件进行解压,得到代码签名证书、数字签名和未知来源的不可信的未签名安卓软件;
步骤3-2:验证代码签名证书的有效性,若无效,则停止安卓软件安装过程,若有效,则将该代码签名证书的有效验证结果发送给步骤3-6;
步骤3-3:使用软件开发者的公钥对数字签名进行解密,得到可信的未签名安卓软件的哈希值Hash_1;
步骤3-4:使用软TCM中的SM3密码杂凑算法,对未知来源的不可信的未签名安卓软件计算哈希值Hash_2;
步骤3-5:判断Hash_1与Hash_2是否相等,否,则停止安卓软件安装过程,是,则将该数字签名有效验证结果发送给步骤3-6;
步骤3-6:如果代码签名证书的有效验证结果和数字签名有效验证结果均收到,则继续进行安卓软件安装过程,否则停止安卓软件安装过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610052539.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:二维码支撑系统提高数据安全性的方法
- 下一篇:一种硬件指令调用控制系统