一种基于ARMTrustZone的加密方法及加密系统的制作方法

文档序号:6486483阅读:151来源:国知局
一种基于ARM TrustZone的加密方法及加密系统的制作方法
【专利摘要】本发明实施例公开了一种基于ARM?TrustZone的加密方法及加密系统。所述方法用于移动设备,所述移动设备具有ARM处理器,所述方法包括:在所述移动设备中预置安全微内核,所述安全微内核用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任;进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区;当上层应用需要加解密时,通过TrustZone?API调用所述安全微内核完成加解密。本发明实施例在ARM?TrustZone技术基础上构建安全微内核,令安全区域与普通区域隔离,将移动设备上所有安全性相关的应用都放在安全区域,大大提高移动设备的安全性。
【专利说明】—种基于ARM TrustZone的加密方法及加密系统
【技术领域】
[0001]本发明涉及移动设备的加密领域,尤其涉及一种基于ARM TrustZone的加密方法及加密系统。
【背景技术】
[0002]移动设备,如手机、平板电脑、电子书设备等,往往都会带有加密系统以完成一些如认证等功能。在现有技术中,移动设备的加密系统一般是基于加密芯片的,通过专用接口如I2C接口来与移动设备的处理器通信,且加解密运算以及认证都在用户层完成。
[0003]发明人在实现本发明的过程中发现:现有技术中,由于加解密运算以及认证都是在用户层完成,每个用户都能访问到加密芯片,或者通过特定的编程工具将加密芯片中的内容取出,甚至可以通过模拟加密芯片运算来达到欺骗认证服务器的目的,故存在很大的安全隐患;再者,由于要防止暴力认证破解,加密芯片的内部firmware (固件)都做了加密运算限速,因此加解密速度非常慢;此外,加密芯片跟移动设备处理器之间是通过I2C等专用接口来通信,进一步制约了加密系统的效率,使得加密系统仅能用来作移动设备的认证功能,使用范围非常狭窄。

【发明内容】

[0004]本发明实施例的目的是提供基于ARM TrustZone的加密方法及加密系统,以提高移动设备加密系统的安全性。
[0005]本发明实施例公开了一种基于ARM TrustZone的加密方法,所述方法用于移动设备,所述移动设备具有ARM处理器,所述方法包括:
[0006]在所述移动设备中预置安全微内核,所述安全微内核用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任;
[0007]进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区;
[0008]当上层应用需要加解密时,通过TrustZone API调用所述安全微内核完成加解密。
[0009]优选的,所述当上层应用需要加解密时,通过TrustZone API调用所述安全微内核完成加解密的步骤,具体包括:
[0010]当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接口 ;
[0011]所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核;
[0012]所述安全微内核经过加解密后返回密钥;
[0013]用户态程序将所述返回的密钥发送给服务器,进行验证;
[0014]服务器验证通过后,用户态程序与服务器开始进行正常的数据交换,一次加解密过程完成。
[0015]优选的,所述进行安全启动的步骤之前,还包括:
[0016]在刷机前利用RSA密钥对来加解密烧机固件。
[0017]优选的,所述在刷机前利用RSA密钥对来加解密烧机固件的步骤,具体包括:[0018]在刷机前用公钥来加密固件,将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
[0019]优选的,所述进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区的步骤,具体包括:
[0020]将根信任信息保存在片上ROM中;
[0021]在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区。
[0022]本发明实施例还公开了一种基于ARM TrustZone的加密系统,所述系统用于移动设备,所述移动设备具有ARM处理器,所述系统包括:
[0023]安全微内核模块,用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任;
[0024]安全启动模块,用于进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区;
[0025]通信模块,用于当上层应用需要加解密时,通过TrustZone API调用所述安全微内核模块完成加解密。
[0026]优选的,所述通信模块具体包括:
[0027]驱动层调用子模块,用于当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接口;
[0028]API调用子模块,用于在所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核;
[0029]密钥返回子模块,用于所述安全微内核经过加解密后返回密钥;
[0030]密钥验证子模块,用于用户态程序将所述返回的密钥发送给服务器,进行验证;
[0031]数据交换子模块,用于在服务器验证通过后,使用户态程序与服务器开始进行正常的数据交换。
[0032]优选的,所述系统还包括:
[0033]密钥固化模块,用于在刷机前利用RSA密钥对来加解密烧机固件。
[0034]优选的,所述密钥固化模块具体包括:
[0035]公钥加密子模块,用于在刷机前用公钥来加密固件;
[0036]烧入子模块,用于将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
[0037]优选的,所述安全启动模块具体包括:
[0038]跟信息保存子模块,用于将根信任信息保存在片上ROM中;
[0039]信任链执行子模块,用于在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区
[0040]本发明实施例并未采用现有技术中常用的利用加密芯片来设计加密系统,而是在ARM TrustZone技术基础上构建安全微内核,令安全区域与普通区域隔离,将移动设备上所有安全性相关的应用都放在安全区域,从而大大提高了移动设备的安全性;此外,本发明实施例还可以使加密及其他安全应用都通过比加密芯片速度更快的CPU来完成,故加解密等操作的效率也有很大提升。
【专利附图】

【附图说明】
[0041]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0042]图1是本发明实施例一安全框架示意图;
[0043]图2是本发明实施例一方法的流程图;
[0044]图3是本发明实施例一安全区操作系统的示意图;
[0045]图4是本发明实施例一普通区域与安全区域通信示意图;
[0046]图5是本发明实施例二系统的示意图。
【具体实施方式】
[0047]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048]实施例一
[0049]本实施例提出了一种基于ARM TrustZone的加密方法,在一块对用户不可见的安全区域存储移动设备的密钥以及在本安全区域进行加解密和认证运算,而这种加解密运算以及这块安全区域的安全性既有ARM总线加密也有中断保护来确保,这种安全加密技术利用了 ARM TrustZone架构的CPU即有特性,因此是一种软硬件结合的安全加密技术。
[0050]参见图1所示,本实施例提供的方案首先提供了一种安全框架,从而使设备能够抵御将遇到的众多特定威胁。并且也支持构建可编程环境,以防止移动设备硬件受到破解以及内容版权受到攻击。采用TrustZone架构ARM平台可以通过本方案构建一组范围广泛的安全解决方案,而使用传统方法即加密芯片来构建这些解决方案将费时费力。
[0051]本方案的实施步骤分为构建安全启动技术、在安全区域构建安全微内核操作系统、普通区域跟安全区域的通信,这种通信遵守TrustZone API调用规范。
[0052]本实施例中使用的是ARM TrusZone平台,采用的是Android/Linux操作系统。本实施例所提供的方法用于移动设备,所述移动设备具有ARM处理器,参见图2所示,所述方法包括:
[0053]S1:在所述移动设备中预置安全微内核,所述安全微内核用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任。
[0054]在安全微内核即安全区操作系统中可以同时支持多个独立的安全应用程序同时运行,支持新的安全应用程序动态下载。一种紧集成设计是使用安全区任务和普通区中申请这些任务的任务通讯协议来实现的。在这种设计方式中,安全区任务继承了普通区请求任务的优先级,这将实现多媒体应用中的软实时功能。这种设计优点之一就是使用安全区使用MMU (Memory Management Unit,内存管理单元)将安全区内存分为多个任务内存空间,使得多个任务独立运行,不需要互相检测可信任。参见图3所示,安全微内核,即安全区操作系统,包括以下几部分:安全服务程序,安全服务管理,核心Kernel及监控模式,安全服务管理与核心Kernel之间可以相互通信,核心Kernel又包含进程通信管理和进程调度,FIQ快速中断输入至进程调度,而IRQ普通中断则输入至监控模式。
[0055]S2:进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区。在本实施例中,优选的步骤S2可以具体包括:
[0056]S21:将根信任信息保存在片上ROM中。
[0057]S22:在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区。
[0058]本实施例使ARM处理器在启动的时候就运行在Secure安全区,这使得在Normal普通区更改系统安全信息之前,系统敏感安全信息已经被检查过。从而在移动设备启动来之前就进行了一次安全认证。这个安全启动代码,需要在CPU出厂之间就固化到片上ROM中,负责初始化关键外围部件,如sdram。在启动移动设备上保存在flash或TF卡等外部非易失存储器件上的bootloader前,ROM中bootloader必须进行一系列的安全检查步骤。其中bootLoader就是在操作系统内核运行之前运行的一段小程序,通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。简单来说bootloader就是引导操作系统的程序。
[0059]在刷机前,利用RSA密钥对来加解密烧机固件。用公钥来加密固件,将对应的移动设备私钥与固件烧入移动设备,RSA私钥可以用来证实设备中的软件没有被更改。从而在启动移动设备前就可以从源头上验证移动设备固件是否被恶意更改。
[0060]安全启动流程执行一个信任链,每一步在执行前都必须有安全认证,链上发起认证的所有权可以改变,RSA私钥可以认证每安全启动的每一步,根信任信息必须保存在片上ROM中,片上ROM是唯一让攻击者不容易更改的存储区。
[0061]最安全的防止攻击的办法就是使安全区资源运行在片上内存,如果代码及数据不暴露在片外,就很难被修改。
[0062]S3:当上层应用需要加解密时,通过TrustZone API调用所述安全微内核完成加解密。
[0063]为了鼓励开发者开发基于TrustZone扩展架构的安全解决方案,ARM标准化了一套TrustZone API (简称TZAPI ),这套API为开发基于TrustZone架构之上的应用程序定义了标准的接口以和安全区环境进行交互或通信。
[0064]这套TZAPI主要特征是通信API,使客户端需要受保护的应用程序发送请求命令到安全区,并和安全区服务程序进行数据交互,参见图4所示。这套通信接口支持共享内存原则,以提高批量数据交互时提高性能。
[0065]TZAPI另一个特征是使普通区运行的客户端程序通过安全区服务程序来认证本身、查询安全服务的特性、使可信任的普通区应用程序动态下载新的安全服务。
[0066]本方案中的所有数据都是通过TZAPI进行传输的,故达完了数据传输的安全性与完整性。
[0067]在本实施例中,优选的步骤S3具体可以包括:[0068]S31:当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接□。
[0069]S32:所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核。
[0070]S33:所述安全微内核经过加解密后返回密钥。
[0071]S34:用户态程序将所述返回的密钥发送给服务器,进行验证。
[0072]S35:服务器验证通过后,用户态程序与服务器开始进行正常的数据交换,一次加解密过程完成。
[0073]在本实施例中优选的,所述进行安全启动的步骤S2之前,还可以包括:
[0074]S4:在刷机前利用RSA密钥对来加解密烧机固件。进一步的,步骤S4又具体可以包括:
[0075]S41:在刷机前用公钥来加密固件,将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
[0076]实施例二
[0077]本实施例提供了一种基于ARM TrustZone的加密系统,参见图5所示,所述系统用于移动设备,所述移动设备具有ARM处理器,所述系统包括:
[0078]安全微内核模块501,用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任;
[0079]安全启动模块502,用于进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区;
[0080]通信模块503,用于当上层应用需要加解密时,通过TrustZone API调用所述安全微内核模块完成加解密。
[0081]优选的,所述通信模块503具体可以包括:
[0082]驱动层调用子模块,用于当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接口;
[0083]API调用子模块,用于在所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核;
[0084]密钥返回子模块,用于所述安全微内核经过加解密后返回密钥;
[0085]密钥验证子模块,用于用户态程序将所述返回的密钥发送给服务器,进行验证;
[0086]数据交换子模块,用于在服务器验证通过后,使用户态程序与服务器开始进行正常的数据交换。
[0087]优选的,所述系统还可以包括:
[0088]密钥固化模块504,用于在刷机前利用RSA密钥对来加解密烧机固件。
[0089]优选的,所述密钥固化模块504具体可以包括:
[0090]公钥加密子模块,用于在刷机前用公钥来加密固件;
[0091]烧入子模块,用于将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
[0092]优选的,所述安全启动模块具体可以包括:
[0093]跟信息保存子模块,用于将根信任信息保存在片上ROM中;[0094]信任链执行子模块,用于在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区。
[0095]对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0096]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0097]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:R0M、RAM、磁碟、 光盘等。
[0098]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种基于ARM TrustZone的加密方法,其特征在于,所述方法用于移动设备,所述移动设备具有ARM处理器,所述方法包括: 在所述移动设备中预置安全微内核,所述安全微内核用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任; 进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区; 当上层应用需要加解密时,通过TrustZone API调用所述安全微内核完成加解密。
2.根据权利要求1所述的方法,其特征在于,所述当上层应用需要加解密时,通过TrustZone API调用所述安全微内核完成加解密的步骤,具体包括: 当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接口 ; 所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核; 所述安全微内核经过加解密后返回密钥; 用户态程序将所述返回的密钥发送给服务器,进行验证; 服务器验证通过后,用户态程序与服务器开始进行正常的数据交换,一次加解密过程完成。
3.根据权利要求1所述的方法,其特征在于,所述进行安全启动的步骤之前,还包括: 在刷机前利用RSA密钥对来加解密烧机固件。
4.根据权利要求3所述的方法,其特征在于,所述在刷机前利用RSA密钥对来加解密烧机固件的步骤,具体包括: 在刷机前用公钥来加密固件,将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
5.根据权利要求4所述的方法,其特征在于,所述进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区的步骤,具体包括: 将根信任信息保存在片上ROM中; 在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区。
6.一种基于ARM TrustZone的加密系统,其特征在于,所述系统用于移动设备,所述移动设备具有ARM处理器,所述系统包括: 安全微内核模块,用于将安全区内存分为多个任务内存空间,支持多个独立的安全应用程序同时运行,不需要互相检测可信任; 安全启动模块,用于进行安全启动,使所述移动设备在系统内核启动的时候即运行在安全区; 通信模块,用于当上层应用需要加解密时,通过TrustZone API调用所述安全微内核模块完成加解密。
7.根据权利要求6所述的系统,其特征在于,所述通信模块具体包括: 驱动层调用子模块,用于当上层应用需要加解密时,通过共享内存的方式调用所述移动设备驱动层接口; API调用子模块,用于在所述驱动层接到上层的调用命令后,通过TrustZone API调用所述安全微内核; 密钥返回子模块,用于所述安全微内核经过加解密后返回密钥;密钥验证子模块,用于用户态程序将所述返回的密钥发送给服务器,进行验证; 数据交换子模块,用于在服务器验证通过后,使用户态程序与服务器开始进行正常的数据交换。
8.根据权利要求6所述的系统,其特征在于,所述系统还包括: 密钥固化模块,用于在刷机前利用RSA密钥对来加解密烧机固件。
9.根据权利要求8所述的系统,其特征在于,所述密钥固化模块具体包括: 公钥加密子模块,用于在刷机前用公钥来加密固件; 烧入子模块,用于将对应的私钥与固件烧入所述移动设备,所述私钥用来证实所述移动设备中的软件没有被更改。
10.根据权利要求9所述的系统,其特征在于,所述安全启动模块具体包括: 跟信息保存子模块,用于将根信任信息保存在片上ROM中; 信任链执行子模块,用于在安全启动流程中执行一个信任链,每一步在执行前都进行安全认证,通过所述私钥认证安全启动的每一步,使所述移动设备在系统内核启动的时候即运行在安全区。
【文档编号】G06F21/71GK103514414SQ201210214356
【公开日】2014年1月15日 申请日期:2012年6月26日 优先权日:2012年6月26日
【发明者】李炎华, 狄俊龙 申请人:上海盛轩网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1