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

文档序号:8435869阅读:来源:国知局
软件存取处理器的安全侧。在安全性较高的系统中,可能存在 其他被执行的操作,例如,关闭处理器或甚至在一些极端情况下损坏电路自身。
[0032] 在一些实施例中,所述处理电路被配置为执行来自具有不同长度的指令的指令集 的程序指令,所述处理电路所要求的指令地址对准依据所述不同长度,所述防护指令的长 度足够长,使得若防护指令的起始位于所述地址对准点的至少一个子集中的、位于所述程 序指令之一内的一个子集内,则所述防护指令的一部分将与下一指令的起始重迭。
[0033] 显而易见,务必不得因疏忽而使用其他代码仿真防护指令。当指令集具有不同长 度的指令时,处理电路则可存取由指令的不同长度控制的某些地址对准点处的指令。可能 在这些地址对准点之一处半路存取指令,鉴于指令的不同长度,这些地址对准点将不时出 现在指令内。此举可产生问题,因为尽管指令集可能已经写入使得防护指令具有与其他指 令相比的唯一代码,但与一个指令的一部分相比所述代码可能并非唯一。此可能通过分支 到并非位于指令起始处的地址对准点之一处的指令,而向安全性不同的域提供疏忽的登陆 点。通过故意分支至指令内而寻找可用的代码序列是执行返回导向编程攻击时的常见技 术。
[0034] 确保相邻指令的部分的组合中的指令的任何部分无法仿真防护指令可能需要保 留大量编码空间以用于防护指令。此潜在问题已通过提供一防护指令而得以解决,该防护 指令的长度足以使该防护指令在开始于另一指令内的情况下与下一指令的起始重迭。以此 方式,必须为防护指令保留使得它无法因疏忽而被仿真的编码空间量得以缩减。
[0035] 尽管在一些实施例中,例如在一些地址对准由于编码约束而不会导致仿真危险的 情况下,可能仅需要考虑地址对准点的子集,但在其他实施例中,在确定防护指令的所需长 度时可能需要考虑所有地址对准点,以确保在防护指令起始于另一指令中时该防护指令与 下一指令重迭。
[0036] 在一些情况下,这意味着防护指令的长度与来自指令集的最长程序指令的长度相 等。
[0037] 上述可能是例如存在两种指令长度且其中一长度为另一长度的两倍的情况。在此 种情况下,为确保在该指令未与一指令的开头正确对准时该指令总是与下一指令重迭,则 该指令必须具有最长程序指令的长度。
[0038] 在一些实施例中,在利用所述处理电路所要求的所述地址对准而被对准时,可与 来自所述指令集的另一指令重迭的所述防护指令的任一部分的值并非来自所述指令集的 任一其他指令的有效操作码或操作码的起始。
[0039] 用以避免疏忽仿真的一种方法是通过确保可能与另一指令重迭的防护指令的任 一部份的值不应为来自指令集的任一其他指令的有效操作码或操作码的起始。需要保留以 用于防护指令的编码空间量随指令的非对准可能性的增大而增大,因为在此种情况下,操 作码可能仅有一部分与防护指令重迭,因此,此部分亦需要保留,以便其不会因疏忽而仿真 防护指令。
[0040] 用以解决此问题的一种方法为:先编码防护指令的部分,这些部分与指令地址对 准点之间的最小距离长度相等;然后使这些部分具有相同值。由于此值将与其他指令重迭, 因此如若使用相同值,则仅此值需要避免被用作其他指令的操作码或操作码的起始。以此 方式,保留用于防护指令的编码空间量得以缩减。
[0041] 在一些情况下,例如,当用户具有两种指令长度且其中一长度为另一长度的两倍 时,防护指令将包括两个部分并将在实质上为对称,且该两个部分中的值将为并非由指令 集中的其他指令中的任一个的操作码或操作码起始所使用的值。
[0042] 在一些实施例中,该相同值并非来自所述指令集的任一其他指令的有效操作码或 操作码的起始段。
[0043] 如前所述,此相同值不应为所述指令集上的任一其他指令的有效操作码或事实上 甚至不得为操作码的起始段。
[0044] 在一些实施例中,所述数据存储器被配置为不将与防护指令具有相同值的任何数 据值存储为程序代码内的文字。
[0045] 使来自指令集的指令的操作码防止因疏忽而仿真防护指令是一个要点,但在一些 程序代码中,数据值被存储为程序代码内的文字,这些文字被存储在可由代码内的指令存 取的各种地址中。在此类程序代码中,文字亦可能在攻击期间成为分支的目标,因此,这些 文字亦务必不得因疏忽而仿真防护指令。由此,在一些实施例中存在一进程用以确保不将 与防护指令具有相同值的数据值存储为程序代码内的文字。
[0046] 在一些实施例中,在代码产生时可避免产生匹配文字;例如,编译程序可被配置为 侦测当文字存取提取匹配文字时的情况,并改变所产生的代码以便移除发射文字库中的匹 配文字值的需求。在一实施例中,该编译程序可通过使用数据处理操作结合众多非匹配文 字存取的值而在处理器寄存器中形成所要值。例如,如若匹配文字为四,则此值可经改变为 2乘以二。在另一实施例中,该编译程序可通过使用数据处理操作及立即移动的顺序而形成 所要值。
[0047] 在一些实施例中,可执行程序可经产生后扫瞄以便侦测与防护指令具有相同值的 文字值。在一些实施例中,扫瞄进程可为程序开发进程中的部分,并在用作发布软件之前的 检查。在其他实施例中,扫瞄进程可作为可执行文件而得以执行,该可执行文件经加载以用 于执行,且扫瞄进程可具有在发现匹配文字值时防止程序被执行的效用。
[0048] 在一些实施例中,所述数据处理设备被配置为将所述数据存储器分段,使得所述 数据存储器的至少一个预定区段经允许以有效存储所述防护指令,所述数据处理电路被配 置以响应于侦测到所述防护指令位于所述数据存储器中并非所述至少一个预定区段的分 段中而产生安全违规指示。
[0049] 用以防止防护指令因疏忽而被仿真的另一种方法是将数据存储器分段及仅将防 护指令存储在预定区段中。如若发生此疏忽仿真情况,则仅有这些区段需要被监视以检查 这些区段并未因疏忽而存储防护指令。在分支至防护指令时,将执行检查以检查经存取的 数据存储器区域是否为预定区段,如若该区域并非预定区段,则将产生安全违规指示。此举 减少需要检查以确保代码并未存储文字形式的防护指令的代码量,但此举确实具有需要将 数据存储器分段及以某种方式指示此分段的开销。
[0050] 在一些实施例中,所述程序代码中可由安全性较低的代码调用的部分被存储在所 述至少一个预定区段中。
[0051] 防护指令将仅在该代码的某些部分中出现。在一些实施例中,当防护指令仅用于 自安全性较低的域切换至安全性较高的域时,该代码的此部分将成为可由安全性较低的函 数调用的代码。如若在此情况下,则将该代码的这些部分存储在预定区段内意味着防护指 令将总是位于这些区段内。
[0052] 替代地及/或另外,所述数据存储器被配置为仅将指令存储在所述至少一个预定 区段中。
[0053] 如前所述,尽管避免指令因疏忽而仿真防护指令相当简单,但避免数据文字因疏 忽而仿真防护指令则更为困难,因为数据文字可具有任何值。因此,用以解决此问题的一种 方法为将数据存储器分段,且在可发现防护指令的预定区段中仅能存储指令。换言之,不允 许数据文字存在于代码的这些区段中。对代码进行编译以避免代码中具有数据文字对代码 的大小及速度具有显著影响。然而,在代码中仅有某些区段可能含有需要以此方式编译的 防护指令的情况下,则对性能及代码的大小的整体作用较低。
[0054] 在一些实施例中,所述数据处理设备包括内存存取控制电路以用于控制对所述数 据存储器的存取,所述内存存取控制电路被配置为通过在所述内存存取控制电路内设定内 存属性标记来指示所述数据存储器的所述至少一个预定区段。
[0055] 用以标记预定区段的一种方法为在内存存取控制电路内利用属性标记来标记预 定区段。一般而言,内存存取控制电路的存在是用以控制对数据存储器中安全性不同的区 段的存取,及数据存储器的各区段属性存储在内存存取控制电路内,该内存存取控制电路 将对比存取请求的地址与各个区域的地址并确定该特定地址具有哪些属性及是否应允许 该存取。额外的内存属性标记可用以指示数据存储器的特定区段为经允许以存储防护指令 的预定区段。
[0056] 用以标记预定区段的另一种方法是使内存存取控制电路被配置具有固定地址映 射,地址空间区经映射作为预定区段。在一些实施例中,所述处理电路被配置为将所述防护 指令作为域切换指令来处理,并响应于所述防护指令而将所述操作域切换至与存储所述防 护指令的所述数据存储器的所述区域对应的域。
[0057] 尽管处理电路可被配置为响应于侦测到具有适合的值的指令被存储在数据存储 器的、与不同于处理电路的当前操作域的域对应的区域中而切换域,但在一些情况下,防护 指令自身在被执行时产生控制信号,所述控制信号控制处理电路以将域切换至存储该防护 指令的区域的域。
[0058] 本发明的第二方面提供一种用于设备的数据处理方法,该设备包括:
[0059] 处理电路,用于响应于程序指令而执行数据处理操作,所述处理电路具有多个具 有不同安全等级的操作域,所述操作域包括安全域及另一不同安全域,其中,当在所述安全 域中操作时,所述处理电路能够存取在所述另一不同安全域内无法存取的至少一些数据; 及数据存储器,用于存储数据及指令,所述数据存储器包括多个不同安全区域,每一区域与 所述多个操作域中的一个对应;该方法包括以下步骤:
[0060] 针对待执行的程序指令,验证存储所述程序指令的所述数据存储器的区域的域与 所述处理电路的当前操作域对应;及
[0061] 响应于侦测到所述程序指令存储在所述数据存储器的与所述处理电路的所述当 前操作域不对应的区域中;
[0062] 验证所述程序指令是否包括防护指令;及
[0063] 若所述程序指令包括所述防护指令,则将所述操作域切
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1