一种适用于多应用之间安全访问的mpu及其多应用之间安全访问的方法

文档序号:6525587阅读:241来源:国知局
一种适用于多应用之间安全访问的mpu及其多应用之间安全访问的方法
【专利摘要】本发明创造提供了一种适用于多应用之间安全访问的MPU,包括用于存放异常向量表和核心代码并只供超级用户访问的存储区域及用于仅供超级用户访问的MPU的控制存储区域。此外还根据此种适用于多应用之间安全访问的MPU提供了风险敏感进入敏感应用的方法及防止风险应用对敏感信息所在区域读取及修改的方法。采用了本技术方案,能够有效的解决在各种应用及系统中互相访问的安全问题,且本技术方案相应成本较低,便于应用。
【专利说明】—种适用于多应用之间安全访问的MPU及其多应用之间安全访问的方法
【技术领域】
[0001]本发明创造涉及计算机微处理器领域,尤其涉及一种适用于多应用之间安全访问的MPU及其多应用之间安全访问的方法
【背景技术】
[0002]随着信息安全技术的发展和智能卡硬件性能的不断地提升,更多的智能卡要求做到一卡多用或一卡通用,如银行发行的公交联名卡(金融卡和公交卡的耦合)、金融社保卡(金融卡和社保卡的稱合)和手机支付卡(电信SIM卡和金融卡的稱合)等。但是与智能卡硬件处理能力突飞猛进的发展相比,支持多应用的智能卡操作系统的发展却相对滞后。这种滞后产生的一个很重要的原因就是缺乏一种不同应用间的安全访问方法。

【发明内容】

[0003]本发明创造要解决的问题是提供一种能够有效的适用于多应用之间安全访问的MPU及其应用之间安全访问的方法
[0004]为解决上述技术问题,本发明创造采用的技术方案是:一种适用于多应用之间安全访问的MPU,所述的MPU包括:
[0005]用于存放异常向量表和核心代码并只供超级用户访问的存储区域;
[0006]用于仅供超级用户访问的MPU的控制存储区域;
[0007]用于存储用户可编程的32位数据/地址加密密钥的存储区域。
[0008]进一步的,述的用于用户可编程的32位数据/地址加密密钥区域还包括:
[0009]用于记录访问异常的属性的存储区域。
[0010]进一步的,所述的控制区域的前4KB部分为引导程序(loader)存储区域。
[0011]根据本发明的另一方面,还提供了一种基于所述的MPU的从敏感应用进入风险应用的方法,其特征在于所述的方法包括以下步骤:
[0012]执行引导程序(loader);
[0013]将除了所有风险应用可能用到的空间以外的空间加密并设置为不可读、不可写、不可执行;
[0014]将MPU控制存储区域由OxffffOOOO开始的64k存储区域设置为不可读写。
[0015]进一步的,所述的MPU的从风险敏感进入敏感应用的方法,其特征在于所述的方法包括以下步骤:
[0016]执行引导程序(loader);
[0017]进入敏感应用。
[0018]根据本发明的另一方面,还提供了一种基于所述的MPU的防止风险应用对敏感信息所在区域读取及修改的方法,所述的方法包括以下步骤:
[0019]将敏感信息所在区域的权限设置为不可读、不可写、不可执行;[0020]将风险应用正常情况下使用不到的剩余的存储空间全部(包括Flash、EPR0M、以及未使用的外芯片外部总线区)设置为不可读、不可写、不可执行。
[0021]进一步的,所述的防止风险应用对敏感信息所在区域读取及修改的方法,所述的方法包括以下步骤:
[0022]将风险应用可能非法访问到而正常情况下应用不到的剩余存储空间全部加密。
[0023]进一步的,所述的防止风险应用对敏感信息所在区域读取及修改的方法,所述的方法包括以下步骤:
[0024]在进入风险应用前,将MPU控制存储区域由OxffffOOOO开始的64k存储区域设置为非可读非可写状态。
[0025]进一步的,所述的防止风险应用对敏感信息所在区域读取及修改的方法,所述的方法包括以下步骤:
[0026]对敏感信息进行加密。
[0027]进一步的,所述的防止风险应用对敏感信息所在区域读取及修改的方法,所述的对敏感信息进行加密的秘钥和芯片的唯一序列号相关。
[0028]根据本发明的另一方面,还提供了一种基于所述的MPU的风险应用读取敏感应用中可以开放给风险应用的资源的方法,所述的方法包括以下步骤:
[0029]设定加密的公共区域;
[0030]对公共区域信息进行访问权限设置;
[0031]可直接对设定的公共区域存储的数据进行读取。
[0032]根据本发明的另一方面,还提供了一种基于所述的MPU的风险应用修改敏感应用中可以开放给风险应用的资源的方法其特征在于所述的方法包括以下步骤:
[0033]设定加密的公共区域;
[0034]对公共区域信息进行访问权限设置;
[0035]进行修改操作时通过公共函数提供的接口来完成。
[0036]进一步的,述的风险应用修改敏感应用中可以开放给风险应用的资源的方法其特征在于所述的方法包括以下步骤:
[0037]将所述的公共函数存储于风险应用只能够执行,不能读和写的存储区域。
[0038]进一步的,所述的风险应用修改敏感应用中可以开放给风险应用的资源的方法所述的方法包括以下步骤:
[0039]将公共函数中设置为不能出现全局变量、公共函数中不能对局部变量进行赋初值、及公共函数中不能定义静态变量。
[0040]进一步的,所述的风险应用修改敏感应用中可以开放给风险应用的资源的方法于所述的方法包括以下步骤:
[0041]为公共函数提供用于对公共区域进行擦写和编程的函数、用于将风险应用跳转到loader的跳转函数及用于将loader代码跳转到风险代码的跳转函数。
[0042]本发明创造具有的优点和积极效果是:采用了本技术方案,能够有效的解决在各种应用及系统中互相访问的安全问题,且本技术方案相应成本较低,便于应用。
【专利附图】

【附图说明】[0043]图1是本发明中一个应用实例中适用于多应用之间安全访问的MPU存储结构示意图
[0044]图2是发明中一个应用实例中loader代码跳转到风险代码的流程示意图
[0045]1、MPU的控制存储区域
2、向量表以及引导程序
3、不可进入区域(loader存储区域
[0046]4、敏感应用区、敏感SRAM
5、风险应用区、风险SRAM区
6、公共函数区、公区共SRAM区
【具体实施方式】
[0047]为了对本发明创造更加深入的了解,下面列举一具体实施例,并结合附图,对本发明创造做进一步的详细说明。
[0048]首先对本发明创造中风险应用及敏感应用进行说明,风险应用是指运行中有可能会破环系统,非法访问敏感应用中敏感信息的代码。本文中的敏感应用含有被保护的信息。在敏感应用中,除了预留给风险应用可调用的信息之外,其他的代码,数据,变量等敏感信息均不应被风险应用读取、修改以及执行(上述敏感信息中典型的为:受国家管制的某种算法、PKI体系中的私钥、不允许被外部篡改的安全操作系统等等)。
[0049]本实例中采用了国 芯MPU技术作为基础,国芯MPU具有如下特征:
[0050].可设置8个超级用户可编程的存储器区
[0051]◆每个区空间可以从IK字节到4G字节
[0052]◆区基地址可以位于4G存储空间的任意位置
[0053]◆每个区基地址根据区空间自动对齐
[0054]◆可编程的数据/地址加密/解密机制
[0055]◆灵活的访问属性:
[0056]-超级用户/用户访问
[0057]-读/写访问
[0058]-执行访问(指令取指)
[0059].一个超级用户访问区域用于存放异常向量表和核心代码
[0060]◆固定空间:4K字节
[0061]◆固定地址:0x00000000
[0062]◆地址、数据加密
[0063]◆固定访问属性
[0064]-只允许超级用户访问
[0065].一个超级用户访问区域作为MPU的控制区
[0066]◆固定尺寸:64Κ字节
[0067]◆固定位置:0xFFFF0000
[0068]◆固定访问属性
[0069]-只允许超级用户访问[0070].一个用户可编程的32位数据/地址加密密钥
[0071]?状态寄存器可以记录访问异常的属性
[0072].MPU可以由超级用户使能或者关闭
[0073]·可编程的区域在CPU复位后是无效的,必须首先由超级用户设置才有效
[0074]·异常向量表和核心代码以及MPU的控制区始终被保护
[0075]由图1可以看出本方案使用的MPU段包括:2个特殊MPU段即前4KB用以存储向量表及loader代码区(含loader中赋初值的全局变量)后64KB为MPU的控制区,即将核心重要部分区域与其他存储区域严格划分出来。
[0076]基于上述特点,本实例可以实现多应用之间安全访问。首先,上电首先执行引导程序(loader),引导程序所要完成的工作包括:
[0077](I)进行MPU的初步设置,为敏感应用及风险应用的进入提供基础条件。这里的基础条件是指对于给敏感应用的安全性提供保障。
[0078](2)引导智能卡进入特定应用(敏感应用或风险应用)。
[0079]引导程序牵扯到对MPU进行配置等敏感操作,所以应该防止风险代码对此区域的访问。保护方法是对此区域进行权限限定。采用的方法为,将loader放在前4KB中运行,即可实现自动加密并将权限设置为不可读、不可写、仅可执行。能够有效的保证loader部分不被修改和读取,避免其它恶意程序通过读取对loader进行反向破解或者对loader部分进行修改。
[0080]敏感应用和风险应用之间相互切换在工作中经常发生,为防止切换过程中
[0081]从敏感应用进入风险应用的方法是:MPU的设置是将除了所有风险应用可能用到的空间以外的空间加密并设置为不可读、不可写、不可执行。此后,对MPU上锁(MPU模块寄存器区域(OxffffOOOO开始的64k设置为不可读写)。
[0082]从风险应用跳到敏感应用区域的方法为:使用软复位的方式,直接从0x00地址开始执行loader (实现M P U的解锁)。然后,loader在合适的条件下,进入敏感应用。
[0083]为防止风险应用对敏感信息所在区域读取及修改,首先,应通过MPU采用权限控制的方式。将敏感信息所在区域的权限设置为不可读、不可写、不可执行。
[0084]为了防止风险应用通过未使用的SRAM或Flash进行数据搬移,将风险应用正常情况下使用不到的剩余的存储空间全部(包括Flash、EEPR0M、以及未使用的外芯片外部总线区)设置为不可读、不可写、不可执行。
[0085]采用权限控制的策略之后:
[0086]此时,风险应用对敏感信息的非法访问只有通过两条途径实现:(I)将MPU关闭,
(2)将MPU的段属性重新修改。
[0087]对于第一条,将风险应用可能非法访问到而正常情况下应用不到的剩余存储空间(包括Flash、EPR0M、以及未使用的外芯片外部总线区)全部加密,这样,风险代码如果进行关闭M P U的操作,程序立刻跑飞。
[0088]对于第二条,在进入风险应用前,将M P U控制寄存器区域(从OxffffOOOO开始的64K)全部设为非可读非可写状态,这样超级用户也无法对此区域进行操作。注意这个过程是对MPU进行上锁,MPU的解锁只有通过复位来实现了。
[0089]除此之外,为了防止通过对存储区进行逆向(采用物理的方式引出存储区的接口,直接读取相关的数据)的方法来读出敏感信息,MPU需要对敏感信息进行加密,且加密秘钥需要设计的和芯片的唯一序列号相关。
[0090]在实际应用中,风险应用会有相应的数据开放供风险应用进行使用,一般来讲,只允许风险应用读取敏感应用中可以共享的信息,而不能改写敏感应用的信息。本实例中还提供了一种风险应用读取、修改以及执行敏感应用中可以开放给风险应用的资源的方法。在本实例中风险应用可以通过公共函数来执行敏感应用中可以开放给风险应用的函数。
[0091]风险应用可以通过公共区域的方式来实现对敏感应用相关信息的访问,公共区域必须加密,访问权限可根据需要进行设置。公共区域优先采用Flash作为存储介质,因为Flash对写操作可以方便的进行控制,而SRAM对写进行控制,则会困难很多。风险应用对于公共区域进行读操作时可以直接进行,进行擦除或写操作时必须通过公共函数提供的接口来完成。
[0092]公共函数位于敏感应用中,公共函数是风险应用可以调用的敏感应用中的函数区域,这个区域风险应用只能够执行,不能读和写。这里涉及到了函数中的变量和常量的问题。由于这里的函数是敏感应用创建,此时又被风险应用调用。那么如果函数中又访问敏感应用的sram区或者访问敏感应用的常量存储区,那么会发生访问异常(此时,这些区域的权限应为不可读、不可写、不可执行)。在写这些函数时,应满足如下要求:(1)函数中不能出现全局变量。(2)函数中不能对局部变量进行赋初值,因为这个初值,会保存在代码区。
(3)不能定义静态变量。这样函数就可以在不同的应用之间进行调用了。
[0093]关于公共函数,进一步说明如下:
[0094]I)本区域为明文区域,因为本区域需要对MPU进行重新配置。
[0095]2)至少提供3个函数。对公共flash区域的编程函数;敏感应用和风险应用之间的跳转函数。
[0096]3)敏感应用对风险应用提供的任何其他函数,都可以放在此区域。
[0097]4)本区域的函数对于风险应用而言都是只可执行,不能读不能写的状态。
[0098]各公共函数的函数说明如下:
[0099]
【权利要求】
1.一种适用于多应用之间安全访问的MPU,其特征在于所述的MPU包括: 用于存放异常向量表和核心代码并只供超级用户访问的存储区域; 用于仅供超级用户访问的MPU的控制存储区域; 其中所述的MPU的控制存储区域还包括: 用于存储用户可编程的32位数据/地址加密密钥的存储区域; 用于记录访问异常的属性的存储区域。
2.根据权利要求1所述的适用于多应用之间安全访问的MPU,其特征在于:所述的控制存储区域的前4KB部分为为向量表以及引导程序(loader)存储区域。
3.一种使用权利要求1所述的MPU的从敏感应用进入风险应用的方法,其特征在于所述的方法包括以下步骤: 执行引导程序(loader); 将除了所有风险应用可能用到的空间以外的空间加密并设置为不可读、不可写、不可执行; 将MPU控制存储区域 由OxffffOOOO开始的64k存储区域设置为不可读写; 在合适时机进入敏感应用。
4.一种使用权利要求1所述的MPU的防止风险应用对敏感信息所在区域读取及修改的方法,其特征在于所述的方法包括以下步骤: 将敏感信息所在区域的权限设置为不可读、不可写、不可执行; 将风险应用正常情况下使用不到的剩余的存储空间全部(包括Flash、EPROM、以及未使用的外芯片外部总线区)设置为不可读、不可写、不可执行; 将风险应用可能非法访问到而正常情况下应用不到的剩余存储空间全部加密。
5.根据权利要求4所述的,防止风险应用对敏感信息所在区域读取及修改的方法,其特征在于所述的方法包括以下步骤: 在进入风险应用前,将MPU控制存储区域由OxffffOOOO开始的64k存储区域设置为非可读非可写状态; 对敏感信息进行加密。
6.根据权利要求5所述的防止风险应用对敏感信息所在区域读取及修改的方法,其特征在于:所述的对敏感信息进行加密的秘钥和芯片的唯一序列号相关。
7.一种使用权利要求1所述的MPU的风险应用读取敏感应用中可以开放给风险应用的资源的方法其特征在于所述的方法包括以下步骤: 设定加密的公共区域; 对公共区域信息进行访问权限设置; 可直接对设定的公共区域存储的数据进行读取; 进行修改操作时通过公共函数提供的接口来完成。
8.根据权利要求7所述的风险应用修改敏感应用中可以开放给风险应用的资源的方法其特征在于所述的方法包括以下步骤: 将所述的公共函数存储于风险应用只能够执行,不能读和写的存储区域。
9.根据权利要求13所述的风险应用修改敏感应用中可以开放给风险应用的资源的方法其特征在于所述的方法包括以下步骤:将公共函数中设置为不能出现全局变量,公共函数中不能对局部变量进行赋初值、及公共函数中不能定义静态变量; 为公共函数提供用于对公共区域进行擦写和编程的函数、用于将风险应用跳转到loader的跳转函数及用于将l`oader代码跳转到风险代码的跳转函数。
【文档编号】G06F9/54GK103699434SQ201310726489
【公开日】2014年4月2日 申请日期:2013年12月17日 优先权日:2013年12月17日
【发明者】艾方, 肖佐楠, 文胜利 申请人:天津国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1