用于在数据处理器的不同操作域之间切换的安全机制的制作方法

文档序号:8435869阅读:238来源:国知局
用于在数据处理器的不同操作域之间切换的安全机制的制作方法
【技术领域】
[0001] 本发明涉及数据处理的领域,且具体来讲涉及使用不同安全域的数据处理设备及 方法。
【背景技术】
[0002] 众多数据处理系统及架构提供隔离及保护敏感数据及代码区段以免被未经授权 的个人或处理进行存取的方法。尽管能够提供安全性十分重要,但与此保护相关的性能及 电路面积则存在开销。
[0003] 保持数据及代码安全的一个方法由英国剑桥的ARM?公司利用其TrustZone? 架构提供,在该架构中存在安全状态及非安全状态,且异常指令用于在这些状态之间进行 转换,同时由异常处理程序保护安全侧的安全性。尽管此方法提供较高程度的安全性,但需 要以软件异常处理程序的形式进行大量软件介入以改变安全状态,此举既降低系统性能, 又增加开发安全软件的外部应用程序编程接口API所需的工作量,因为所有调用必须经由 异常处理程序代理。
[0004] 对于诸如微控器的较小系统而言,TrustZone系统中存在的开销可能无法容忍,因 此,必须发现用于在状态之间进行转换的不同方法,该方法在不损及安全性的情况下提供 增强的性能。
[0005] 用以自安全性较低的域切换至安全性较高的域的一种方法具有相对较低的开销 且允许多个登录点进入安全状态,该方法使用分支指令以自公共域分支至私用域中的函 数。该函数可在起始处包括安全检查例程,该安全检查例程检查调用该函数的进程是否具 有充分特权以允许该进程调用该函数,由此可能存在密码或执行的其他检查。
[0006] 用以避免此检查的一种方法为分支至在安全检查例程以外一点处的代码内。另一 攻击可涉及向函数的结束处分支为私用函数,且此举可导致仅一个或两个指令得到执行, 然后该函数分支返回公共侧。然而,如若此举可得以多次执行,则可以以称作返回导向编程 的编程来建立函数。
[0007] 已授予英国剑桥ARM_?有限公司的专利US8010772公开一种禁止攻击者利用位 于此类函数起始处的允许指令来跳越至此函数中间的能力的方法,亦即由处理电路验证来 自安全性较低的域的分支指令在分支至安全性较高的域时分支至此允许指令。此系统的缺 点为处理器必须了解已发送至允许指令的指令即为来自安全性较低的域的分支指令。
[0008] 图1示出了程序代码实例,该程序代码中有自公共侧到私用侧上的允许指令PG的 分支。其中,如图1所示,当在分支指令与允许指令之间发生异常的情况下,由于此情况导 致异常处理码在PG指令之前得以执行,因此处理器将无法以任何直接方式确定哪一指令 导致该处理器分支。用以解决在此处发生异常的问题的一种方法为利用可在分支指令执行 时设定的标志,使得即使发生异常,后一指令亦将了解来自安全性较低的域的分支先前已 经出现且尚未经检查。然而,此举却导致潜在的安全性影响,因为标志本身可遭篡改。
[0009]目前需要以处理有效的方式提高状态之间进行切换的安全性。

【发明内容】

[0010] 由第一方面可见,本发明提供一种数据处理设备,包括:
[0011] 处理电路,用于响应于程序指令而执行数据处理操作,所述处理电路具有多个具 有不同安全等级的操作域,所述操作域包括安全域及另一不同安全域,其中,当在所述安全 域内操作时,所述处理电路可存取在所述另一不同安全域内无法存取的至少一些数据;
[0012] 数据存储器,用于存储数据及指令,所述数据存储器包括多个区域,每一区域与所 述多个操作域中的一个域对应,且所述数据存储器包括至少一个安全区域和安全性较低的 区域,所述至少一个安全区域用于存储敏感数据,所述敏感数据能够由在所述安全域内操 作的所述数据处理电路存取,但无法由在所述另一不同安全域内操作的所述数据处理电路 存取,所述安全性较低的区域用于存储敏感性较低的数据;
[0013] 所述处理电路被配置为:
[0014] 针对待执行的程序指令,验证存储所述程序指令的数据存储器的区域与所述处理 电路的当前操作域对应;及
[0015] 响应于侦测到所述程序指令存储在所述数据存储器与所述处理电路的所述当前 操作域不对应的区域中;
[0016] 验证所述程序指令是否包括防护指令;及
[0017] 若所述程序指令包括所述防护指令,则将所述操作域切换至与存储所述程序指令 的所述数据存储器的所述区域对应的域;及
[0018] 若所述程序指令不包括所述防护指令,则产生安全违规指示。
[0019] 本发明辨识在不同安全域的处理之间切换时产生的安全影响,这些安全域中的一 些安全域可能具有不同安全等级。就此方面而言,众多处理电路在具有不同安全等级的域 中操作,并存取仅当在安全性较高的域内操作时才可用的一些敏感数据。不同域可具有不 同安全等级,或它们可以为具有相同安全等级但却彼此隔离的同级域。一般而言,安全性较 高的域中的处理操作将可存取内存的安全性较低区域中及内存的相对安全区域中的数据。 当存在不同但却具有相同安全等级的同级域时,则这些同级域可存取数据存储器中同样的 安全性较低的区域,但却不可存取具有相同敏感性且存储在其安全等级与它们的域不对应 而与同级域对应的内存的区域中的数据。正在处理的程序指令亦存储在数据存储器的不同 安全区域内,数据存储器中存储当前正在执行的指令的区域的安全等级一般与当前操作域 的安全等级对应。就此而言,亦有内存区域与同级域对应。由此,如若处理电路确定待执行 的指令已从与不同域对应的区域取回至当前操作域的区域,则此情况指示有问题存在,或 在取回的指令为防护指令时指示将发生域切换。
[0020] 就此而言,应注意,尽管处理电路可能无法存取存储在数据存储器中具有高于当 前操作域的安全等级的安全性的区域中的敏感数据,但存储在安全性较高的区域或同级安 全区域中的指令则可被提取。这是因为数据存取与指令提取的存取许可的设定是不同的, 因为指令提取不会呈现与数据存取相同的安全影响,指令提取对软件不可见。尽管提取存 储在安全性更高或不同的区域中的指令可能与安全影响不相关,但可能存在与执行这些指 令有关的安全影响。
[0021] 由此,在提取指令时,执行检查以查看数据存储器中从其提取指令的区域是否与 当前操作域对应。如若不对应,则确定该程序指令是否为防护指令。如若该程序指令为防 护指令,则处理电路切换至与数据存储器中从其提取防护指令的区域对应的操作域,反之, 如若该指令并非防护指令,则产生安全违规指示。
[0022] 以此方式,由对不同域中的指令的分支所触发的域切换仅经由防护指令而得到允 许。此举确保域切换仅在防护指令处发生,同时避免处理电路需要了解其如何到达防护指 令,处理电路仅需了解其当前操作域及与待执行的下一指令所存储的区域对应的域。此方 法有效,因为直至防护指令已被存取才发生域切换,因此在切换之前的操作域被称为当前 操作域,且防护指令的存在足以指示切换为可接受的。此外,由于是从与当前操作域不对应 的内存区域中提取指令而触发对该指令的检查及在该指令为防护指令时的可能的域变更, 因此该检查及域变更作为单一原子操作而执行,意味着该操作不可被半途中断。
[0023] 如若位于与不同域对应的区域中的指令被存取并且其并非防护指令,则产生安全 违规指示。
[0024] 应注意,尽管域及数据存储器可具有对应的安全等级,但可能并不存在一一对应 的关系。就此而言,数据存储器区域中所具有的安全等级可能高于处理电路的操作域。但 每一区域将与域对应,因此可能存在两个处理域,即一公共域及一私用域,及四个数据存储 器区域,即与该公共域对应的公共区域及具有不同安全等级的三个不同的内存安全区域, 每一区域与私用域对应,使得存储在这些私用区域中的任何一个中的防护指令将触发至私 用域中的处理的切换。
[0025] 尽管在一些实施例中,安全域与另一不同安全域可能为具有相同安全等级的同级 域,但在其他实施例中,所有域具有不同安全等级,且所述另一不同安全域包括安全性低于 所述安全域的域。
[0026] 在一些实施例中,所述处理电路被配置为仅响应于侦测到所述程序指令存储在所 述数据存储器的、安全等级高于所述处理电路的当前操作域的所述安全等级的区域中,而 验证所述程序指令是否包括防护指令。
[0027] 在一些实施例中,响应于所述程序指令存储在所述数据存储器的、与安全等级低 于当前操作域的所述安全等级的域对应的区域中,所述处理电路被配置为将所述操作域切 换至所述较低的安全等级,无论所述指令是否包括所述防护指令。
[0028] 尽管防护指令一般可用于控制不同安全等级之间的切换,但在一些实施例中,防 护指令仅在从安全性较低的域切换至安全性较高的域时使用。显而易见,安全问题在从安 全性较低的域切换至安全性较高的域时更为频繁地出现,因此,在此切换时,使用者务必在 预定点进行切换以便需要执行的任何安全检查将得以执行。由此,防护指令对控制从安全 性较低的域至安全性较高的域的切换尤其实用,且在一些情况下,处理电路仅检查防护指 令,在此情况下,指令的域为较高的安全等级,且总是允许向较低的安全等级的域切换。
[0029] 尽管如此,在其他情况下,尤其在有两个以上域的情况下,如若从安全性较低或较 高的域向相当安全的域的切换采用经由防护指令的相同方式执行,则该切换可得到有效管 理。提供此对称性使得用于控制此切换的软件写入更为直接并使代码更为有效。
[0030] 在一些实施例中,所述处理电路响应于所述安全违规指示产生异常并执行故障处 理码。
[0031] 如若来自与不同域对应的数据存储器的区域的指令并非防护指令,则可执行不同 的安全操作。例如,可产生异常,随后可执行故障处理码,该码辨识当前正在执行的软件可 能为攻击软件且不应允许该
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1