CN103310163B - 使用安全域与次安全域的数据处理装置和方法 - Google Patents

使用安全域与次安全域的数据处理装置和方法 Download PDF

Info

Publication number
CN103310163B
CN103310163B CN201310038646.4A CN201310038646A CN103310163B CN 103310163 B CN103310163 B CN 103310163B CN 201310038646 A CN201310038646 A CN 201310038646A CN 103310163 B CN103310163 B CN 103310163B
Authority
CN
China
Prior art keywords
domain
instruction
process circuit
data processing
security
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310038646.4A
Other languages
English (en)
Other versions
CN103310163A (zh
Inventor
托马斯·克里斯托弗·乔洛卡特
理查德·罗伊·格里森思怀特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/368,419 external-priority patent/US9477834B2/en
Priority claimed from GB201217531A external-priority patent/GB201217531D0/en
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN103310163A publication Critical patent/CN103310163A/zh
Application granted granted Critical
Publication of CN103310163B publication Critical patent/CN103310163B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明涉及使用安全域与次安全域的数据处理装置和方法。一种数据处理装置(2)具有处理电路(4),所述处理电路(4)具有安全操作域和次安全操作域。当在安全域中操作时,所述处理电路(4)能访问当在次安全域中操作时不可访问的数据。响应于控制流改变指令,处理切换到目标地址处的程序指令。执行域选择以确定所述处理电路(4)将在其中针对所述目标地址处的指令进行操作的所选择域。可以执行域检查以检查哪个域被允许作为所述域选择所确定的所选择域。如果所述域选择中的所选择域不是允许选择域,则触发域检查错误。

Description

使用安全域与次安全域的数据处理装置和方法
技术领域
本发明涉及数据处理领域。更具体而言,本发明涉及使用安全域与次安全域(lesssecure domain)的数据处理装置和方法。
背景技术
数据处理装置可以能在安全域与次安全域中操作。当在安全域中操作时,能访问在次安全域中操作时不可访问的数据。这提供了一种将潜在敏感的数据和代码与未获授权人士或进程的访问相隔离的方式。
英国剑桥(Cambridge UK)的提供了一种保持数据和代码安全的方式,在其Trustzone构架中,存在安全状态和非安全状态,并使用异常指令在这些状态之间转移,异常处理程序保护安全侧的安全。虽然该方法提供了高度安全性,但需要大量的软件异常处理程序形式的软件干预来更改安全状态,这既降低了系统的性能,又增加了开发用于安全软件的外部应用程序接口API所需的工作量,因为所有调用都必须通过异常处理程序进行代理。
对于诸如微控制器的小系统而言,可能更重要的是实现安全级与系统性能之间的折衷,并因此将与实现安全域相关联的开销保持在相当低的水平。
发明内容
根据一个方面,本发明提供了一种数据处理装置,所述装置包括:
处理电路,用于响应于程序指令执行数据处理操作,所述处理电路具有包含安全域和次安全域的多个操作域,其中当在所述安全域中操作时,所述处理电路能访问当在所述次安全域中操作时不可访问的数据;
其中响应于控制流改变指令的执行,所述处理电路被配置为切换为处理所述控制流改变指令所指示的目标地址处的程序指令,并执行用于确定所述处理电路将在其中针对所述目标地址处的程序指令进行操作的所选择域的域选择;以及
至少如果在所述安全域中操作时所述控制流改变指令被执行,则所述处理电路被配置为:
(i)执行域检查,以用于确定所述多个域中的哪个域被允许作为通过针对所述目标地址处的程序指令进行的所述域选择而确定的所选择域,所述域检查使用与所述域选择不同的技术;以及
(ii)如果在所述域选择中确定的所选择域不是在所述域检查中确定的允许选择域,则触发域检查错误。
在该技术中,控制流改变指令可用于在多个域之间切换处理。这意味着不必使用异常和相应的软件异常处理程序来控制域之间的更改,因此改进了性能。然而,重要的是控制流改变指令不规避系统的安全保障。
在所述控制流改变指令之后,使用域选择技术来确定将在其中处理目标地址的程序指令的所选择域。因此,取决于所使用的域选择技术,相同的控制流改变指令可以用于切换为不同域中的处理。
该技术认识到,如果控制流改变指令的行为(程序员旨在通过该行为切换为一个域中的程序指令的处理)被次安全域中的代码改变,以使得其转而切换为在不同域中的程序指令的处理,就会发生安全风险。例如,次安全域中的代码可能更改控制流改变指令的目标地址。举例而言,可能存在将在安全域中被执行的控制流改变指令,其旨在引起到次安全域中的指令的切换。然而,控制流改变指令的目标地址可被次安全域中的代码设置为指向将在安全域中处理的程序指令,从而使得现在控制流改变指令可能转而切换到安全域中的处理。这会允许黑客使用次安全域中的代码来触发从安全域到安全代码的不受控转移,因为通常安全到安全的切换不会被监督,这是由于安全的处理被预期为受信任的。这会造成安全漏洞。
为了解决这个问题,处理电路可以至少在处于安全域中时在控制流改变指令被执行时,执行域检查。域检查确定多个域中的哪个域被允许作为通过针对目标地址处的程序指令进行的域选择而确定的所选择域。域检查不影响系统将在其中针对目标地址处的指令进行操作的实际域,因为这是通过域选择来确定的。然而,域检查允许系统确认控制流改变指令已引起了预期的域转移。如果在域选择中所确定的域不是在域检查中确定的允许选择域,则可以触发域检查错误。以此方式,如果次安全代码使控制流改变指令以非预期方式起作用,则可触发错误以防备对安全数据的未获授权的访问。
控制流改变指令可以是引起被处理的指令中的非顺序转移的任何指令。更常见地,控制流改变指令可以包括分支指令。然而,控制流改变指令还可以包括其他种类的指令,例如装入指令,该装入指令向存储了程序计数器的寄存器装入指示将要处理的下一个指令的值。
非必要的是,针对在处于次安全域中时被执行的控制流改变指令执行域检查。这可能似乎是违反直觉的,因为人们通常期望的是,处于次安全域中的指令应受到更严格的检查。然而,通常会存在一些其他的用于调节从次安全域到安全域的转移的机制。另一方面,当处于安全域中时,上述类型的攻击是最麻烦的,因为通常当系统已处于安全域中时,代码将被信任并假定为正在正确地活动,因此这可能被黑客利用而使用次安全代码更改处于安全域中的控制流改变指令的行为。因此,至少针对处于安全域中时执行的控制流改变指令执行域检查。
然而,如果希望的话,也可以在当在次安全域中操作时执行控制流改变指令时,执行域检查。除了防备安全漏洞,域检查还可用于检测由于粒子撞击或其他种类的错误造成位值已更改状态从而使得指令现在不像预期那样起作用的被破坏指令或目标地址。这在安全域与次安全域中都可以是有用的。
除了控制流改变指令之外,还可以针对其他指令来执行域选择。例如,在一些系统中,处理电路能够针对每个指令确定应在哪个域中处理该指令。
域选择和域检查使用不同的技术来确定所选择域和(一个或多个)允许域,以使得可以通过不同形式的域检查来确认域选择。例如,第一确定可以用于域选择和域检查中的一者,而第二确定用于另一者。在一个实施例中用于域选择的技术可以在另一个实施例中用于域检查,反之亦然。
在一个实施例中,可以有数据储存器,该储存器具有包含安全区域和次安全区域(less secure region)的多个区域,安全区域用于存储当在安全域中操作时处理电路可访问而当处于次安全域中时不可访问的数据。次安全区域可以是当处于安全域中时和当处于次安全域中时都可访问的。
因此,第一确定可以包括至少取决于哪个区域与目标地址处的程序指令的指令地址相对应来确定至少一个所选择域。一般而言,如果程序指令的指令地址对应于次安全区域,次安全域则可以被选择为所选择域,而如果指令地址对应于安全区域,安全域则可以被选择。该技术可以用于域选择或者域检查。
哪个区域对应于指令地址可以不是第一确定的唯一标准。例如,对于某些指令,第一指令还可以取决于目标地址处的程序指令的类型。而且,在第一确定用于域检查的情况下,则多个域可被选择为允许选择域。
第二确定可以包括将目标域值所指示的多个域之一确定为所选择域(或者在域检查的情况下,确定为若干允许选择域之一)。目标域值可由处理器维护,以指示目标地址处的程序指令被期望在哪个域中进行处理。这可以是域选择或者域检查的一部分。
因此,在一个示例中,可以基于与目标地址处的程序指令的指令地址相对应的数据储存器的区域来执行域选择,并且可以基于目标域值来执行域检查。在该情况下,目标域值提供用于确认控制流改变指令是否已切换到正确区域中的程序指令的检查。在另一个示例中,目标域值可用于控制目标地址处的程序指令将在其中被处理的实际域,并且然后域检查可以确认目标地址是在数据储存器的正确区域中。
目标域值可以不同的方式表示。在一个示例中,可以在控制流改变指令的编码中指定目标域值。例如,可以有对应于不同的目标域值的几个版本的控制流改变指令,这些目标域值指示不同的安全域为所选择域。当编写程序时,程序员可以选择使用哪个版本的控制流改变指令,以使得该改变指令的控制流将使适当的域被选择为所选择域(在域选择的情况下)或者允许域(在域检查的情况下)。
可替代地,可以在控制流改变指令所使用的目标地址的一部分中指定目标域值。这种形式的目标域值对于识别存储了目标地址的寄存器的间接控制流改变指令可以是有用的。
目标域值可以响应于目标域值设置指令而被设置。这允许了程序员通过在下一个控制流改变指令之前包括将被执行的目标域值设置指令来控制该控制流改变指令的预期转移。例如,如果处于次安全域中时设置了函数指针,那么在安全域中使用该函数指针之前,可以执行目标域值设置指令以设置该控制流改变指令的预期行为。
目标域值设置指令的一个示例是用于保护从次安全域到安全域的转移的防护指令。通常重要的是,避免到安全函数的中间的不受控切换,因为这有时会规避在安全函数中较早执行的安全检查。为了防止这样的切换,系统可以要求在处理从次安全域切换到安全域的点处必须存在防护指令。如果在处理电路在切换为在安全区域中处理目标地址处的程序指令之前,在次安全域中操作所针对的控制流改变指令之后,目标地址的程序指令不是防护指令,则可以触发错误。因此,防护指令应被用于标记安全代码的受信任入口点。防护指令对于设置目标域值来说可以是有用的,因为当目标地址被设置在次安全域中而用于安全域中时,必需存在安全域的入口,因此将执行防护指令。通过使用防护指令来设置目标域值,则不必为此目的执行进一步的指令。
具体而言,防护指令对于为随后的控制流改变指令将处理切换到的返回地址设置目标域值而言可以是有用的。防护指令的存在通常意味着程序员预料到存在着这样的风险:安全域中的函数本可以被次安全代码调用,并且因此可能存在这样的随后的函数返回控制流改变指令,该指令触发处理切换到由次安全域指定的返回地址处的程序指令。为了保护免于这种可能,可以使用防护来为返回地址设置目标域值以设立该函数返回的预期转移。
在一个示例中,如果在执行目标域值设置指令之前处理电路是在次安全域中操作,则目标域值可被设置为指示次安全域。例如,如果目标域值设置指令为防护指令,那么如果在切换到该防护指令之前系统处于次安全域中,将期望的是,随后的函数返回应切换回次安全域。
数据储存器可以具有包含安全堆栈和次安全堆栈的多个堆栈,其中当处于安全域中时安全堆栈是可访问的,而当处于次安全域中时安全堆栈是不可访问的。次安全堆栈可以从安全域和次安全域被访问。
当使用控制流改变指令来调用一函数时,有时可能希望传递来自函数调用之前执行的代码的函数自变量(数据值)供函数调用之后执行的代码所用。堆栈可以用于传递函数自变量。如果函数调用使得从安全域转移到次安全域,那么自变量将需要被放在次安全堆栈上,因为安全堆栈对于处理电路来说将是不可访问的。另一方面,如果函数调用使得从次安全域转移到安全域,那么自变量应被放在安全堆栈中,以防止次安全代码访问这些数据值。因此,当在安全域中执行函数调用时,确定使用哪个堆栈将取决于函数调用之后的操作域。和例如基于目标地址的其他技术相比,目标域值能够提供函数调用被期望切换到哪个域的更快指示。因此,将目标域值再利用来确定将哪个堆栈用于传递函数自变量使得能够更快切换到函数,因此改进了处理性能。
目标域值的另一个用途是设置函数返回地址。通常,当调用函数时,将执行第一控制流改变指令,当从函数返回时,将执行第二控制流改变指令。第一控制流改变指令出现时,返回地址通常被存储在预定存储位置(例如链接寄存器)以指示响应于第二控制流改变指令处理应返回到的位置。当从安全域中的代码调用次安全域中的函数时出现的一个问题是,返回地址可能是敏感的,因此可能希望防止次安全域获得对返回地址的访问。
为了解决这个问题,响应于第一控制流改变指令(当在安全域中被执行并引起向次安全域的转移时),伪返回地址可被存储到预定存储位置,伪返回地址不是有效的指令地址。实际返回地址可被存储到当处于次安全域中时不可访问的安全存储位置(例如安全堆栈或安全存储器区域)。当执行第二控制流改变指令时,处理器检测到返回地址为伪返回地址,这然后使得从安全存储位置取回实际返回地址。处理然后被切换到实际返回地址以从函数返回。
因此,当从安全域调用函数时,有用的是能够确定将在安全域还是次安全域中处理该函数以便确定应将实际返回地址还是伪返回地址存储到预定存储位置。这可以使用目标域值来快速容易地做到。
目标域值可以各种方式表示。可以有用的是,使用控制流改变指令的编码中的或控制流改变指令所使用的目标地址中的冗余数据字段。例如,如果给定的功能性不被数据处理装置支持,则最初旨在用于该功能性的字段就可能不是相关的,因此该字段可被再用于指示目标域值。这避免了增加用于目标域值的附加位字段的需要。
例如,一些系统能够执行来自多个指令集的指令。在这样的系统中,控制流改变指令或目标地址可以包含目标指令集字段,该字段指示目标地址处的指令将来自第一指令集还是第二指令集。这允许处理器在执行控制流改变指令时确定如何解码目标地址处的指令。其他系统可能只能执行这些指令集之一,但仍可以执行为支持两个指令集的系统设计的指令。在该情况下,该指令或目标地址的目标指令字段可变得冗余。因此,该字段可被再用于指示目标域值。
目标指令集字段可以具有指示第一指令集的第一值和指示第二指令集的第二值。在第一指令集为处理电路所支持的指令集并且第二指令集不被处理电路支持的情况下,可以有用的是将目标指令集字段的值映射到目标域值的值,这样使得第一值指示安全域为所选择域并且第二值指示次安全域为所选择域。由于只有第一指令集被支持,因此这将意味着使用第一指令集的指令编写的软件中现存的控制流改变指令将指定该目标指令集字段的第一值。由于通常在安全域中执行的多数控制流改变指令旨在使得转移到安全域中的其他位置,因此有用的是,将该值映射到指示安全域的目标域值,以使得为了指示不同的目标域值,需要修改相对较少的指令或目标地址。只有旨在切换到次安全域的、安全域中的控制流改变指令的目标域值才会需要被改变(例如通过增加早期目标域值设置指令以指示次安全域为所选择域)。因此,采用这种目标指令集字段到目标域值的映射使得能够与传统代码后向兼容。
当使用这种目标域值的映射时,有用的是当在次安全域中执行控制流改变指令时,省略执行域检查,以改进与传统代码的后向兼容。次安全域中的多数控制流改变指令将引起向也在该次安全域中的另一个指令的转移。然而,使用上述目标域值的映射,第一指令集的传统指令将指示目标指令集字段中的第一值,这将指示安全域被期望为所选择域。因此,如果也在次安全域中执行域检查,那么将需要修改与将在次安全域中执行的多数控制流改变指令相关联的目标域值,以防止域检查错误。这将降低系统与传统代码的后向兼容。由于在任何情况下域检查对于次安全域中的指令来说都是不太重要的,因为可能已经提供了诸如防护指令之类的其他机制用于控制从次安全域到安全域的转移,那么可以更有效的是当处于次安全域中时省略域检查,以使得不需要修改之前编写的代码。
通常,域检查将确定单个域为用于程序指令的允许选择域。例如,在安全代码中可能存在着理应切换回次安全域的控制流改变指令,因此只有次安全域才能被选择为允许域。
然而,在其他情况下,可以有用的是确定多个域为用于同一程序指令的允许选择域。例如,在安全域中可以存在着有时被用于切换到安全域而有时被用于切换到次安全域的一些控制流改变指令。在该情况下,通过选择多个允许域,那么无论指令切换到哪个域,都可以执行这个指令而不触发域检查错误。在另一个示例中,由于当处于次安全域中时域检查错误并非如此关键,因此对于次安全域中的控制流改变指令而言,两个域都可以被设置为可允许域。
选择多个允许域对其有用的另一个指令是防护指令。例如,可以从安全域或次安全域调用同一个程序函数,在该情况下防护指令通常会存在于函数开始之处以指示从次安全域的允许入口点。如果从次安全域调用该函数,则可能希望推迟从次安全域的切换直到确定是否存在防护指令,从而使得如果无防护指令,则还没有切换到安全域。因此,防护指令可以取决于从安全域还是次安全域调用函数而能够在任一个域中操作。为了防止在该情况下出现域检查错误,可能方便的是无论防护指令处于存储器的哪个区域或目标域值为何值,都将安全域和次安全域二者设置为防护指令的允许域。
对于在安全域中执行的至少一个控制流改变指令,有时有用的是,在切换为处理目标地址处的程序指令之前,从安全域中的操作切换为次安全域中的操作。这意味着,在该切换之后,系统会看起来好像是来自次安全域中的指令,因此将需要防护指令以避免错误。这对于切换到安全域中的安全入口点可能不被信任的控制流改变指令而言是有用的,例如对于目标域值指示次安全域为允许域的控制流改变指令(在该情况下有可能的是次安全代码已为该控制流改变指令设置了目标地址)。
从另一个方面看,本发明提供了一种数据处理装置,所述装置包括:
处理装置,用于响应于程序指令执行数据处理操作,所述处理装置具有包含安全域和次安全域的多个操作域,其中当在所述安全域中操作时,所述处理装置能访问当在所述次安全域中操作时不可访问的数据;
其中响应于控制流改变指令的执行,所述处理装置被配置为切换为处理所述控制流改变指令所指示的目标地址处的程序指令,并执行用于确定所述处理装置将在其中针对所述目标地址处的程序指令进行操作的所选择域的域选择;以及
至少如果在所述安全域中操作时所述控制流改变指令被执行,则所述处理执行被配置为:
(i)执行域检查,以用于确定所述多个域中的哪个域被允许作为通过针对所述目标地址处的程序指令进行的所述域选择而确定的所选择域,所述域检查使用与所述域选择不同的技术;以及
(ii)如果在所述域选择中确定的所选择域不是在所述域检查中确定的允许选择域,则触发域检查错误。
从又一个方面看,本发明提供了一种数据处理方法,该方法用于包括用于响应于程序指令来执行数据处理操作的处理电路的装置,所述处理电路具有包含安全域和次安全域的多个操作域,其中当在所述安全域中操作时,所述处理电路能访问当在所述次安全域中操作时不可访问的数据;所述方法包括:
响应于控制流改变指令的执行,切换为处理所述控制流改变指令所指示的目标地址处的程序指令;
执行用于确定所述处理电路将在其中针对所述目标地址处的程序指令进行操作的所选择域的域选择;以及
至少如果在所述安全域中操作时所述控制流改变指令被执行,则:
(i)执行域检查,以用于确定所述多个域中的哪个域被允许作为通过针对所述目标地址处的程序指令进行的域选择而确定的所选择域,所述域检查使用与所述域选择不同的技术;以及
(ii)如果在所述域选择中确定的所选择域不是在所述域检查中确定的允许选择域,则触发域检查错误。
根据以下说明性实施例的详细说明并结合附图,本发明的以上和其他目的、特征和优点将变得清楚。
附图说明
图1示例性地示出了数据处理装置;
图2示出了具有次安全区域和安全区域的存储地址空间;
图3A示出了程序代码的一个示例,其中次安全域中的指令为安全域中的分支指令设置目标地址;
图3B示出了如果黑客修改图3A的次安全代码则会发生的安全问题;
图4A示出了使用控制流改变指令的指令编码的一部分来指示目标域值的示例;
图4B示出了以控制流改变指令的目标地址的一部分来表示目标域值的示例;
图5示出了包括域选择和域检查的数据处理方法;
图6示出了可用于域选择或域检查的第一确定的示例;
图7示出了可用于域选择或域检查的第二确定的示例;
图8示出了可以如何通过执行域检查以确认域选择来防止图3B所示的安全问题的示例;
图9示出了使用域检查来防御试图使用函数指针来访问安全代码的次安全代码的示例;
图10和图11分别示出了处理函数调用和函数返回的示例;
图12示出了选择安全堆栈和次安全堆栈中的哪一个来用于传递函数自变量的示例;
图13示出了次安全代码控制安全代码切换为处理进一步的安全代码可以是合法的情形的示例;
图14示出了可以如何安全地并且不触发错误地实现图13中的情形的第一示例;并且
图15示出了可以如何安全地并且不触发错误地实现图13中的情形的第二示例。
具体实施方式
图1示例性地示出了数据处理装置2,该装置包括处理电路4、数据储存器(存储器)6和寄存器8。数据储存器可以包括至少一个缓存以及主存储器。处理电路4包括处理流水线,该处理流水线包含用于从存储器6取回指令的取回级10、用于解码所取回的指令的解码级12以及用于执行解码指令的执行级14。应理解的是,该处理流水线可以包括其他类型的级,例如寄存器重命名级或发布级。
寄存器8包括用于代表处理电路4存储数据的若干通用寄存器R0至R12。虽然图1示出了13个通用寄存器R0至R12,但应理解的是也可以提供其他数量的寄存器,并且可选地还可以提供用于存储浮点值的浮点寄存器。寄存器8还包括一些专用寄存器,包括程序计数(PC)寄存器20、链接寄存器(LR)22和堆栈指针寄存器24、26。程序计数寄存器20存储指示将由处理电路4执行的下一个程序指令的指令地址的程序计数器。一般而言,在执行指令之后,程序计数器将被更新以指示来自存储器的下一个指令。然而,响应于控制流改变指令,程序计数器可被设为并非在顺序上是在前一个值之后的值。链接寄存器22可被设置为存储当从函数或异常返回时使用的返回值,以确定在函数或异常结束后应处理哪个程序指令。堆栈指针寄存器24、26存储指示存储器6内的堆栈30、32的位置的堆栈指针。例如,堆栈指针可以指示置于堆栈30、32上的术项的位置。
存储器6包括安全区域40和次安全区域50。如图2所示,地址存储器6的存储地址空间可以被分成安全区域和次安全区域,其中一些范围的存储地址对应于存储器的安全区域40,并且其他范围的存储地址对应于次安全区域50。存储保护单元(MPU)65可以控制将地址空间分割成不同的区域。虽然图2示出了一个安全区域和一个次安全区域,但还有可能的是存储地址空间包含两个或更多个离散的安全区域或者两个或更多个离散的次安全区域。存储地址空间还包括保留地址范围70(例如0xF0000000或更高的地址值),在该范围内地址值不对应于任何有效指令地址。这些地址可用于特殊目的,例如用于处理异常返回和函数返回。安全区域40和次安全区域50均可包含程序代码60和相应的堆栈30、32。分开的安全和非安全堆栈指针寄存器24、26被用来维护用于安全区域40中的安全堆栈30和次安全区域50中的次安全堆栈32的堆栈指针。
处理电路4可以在安全域和次安全域中操作。当处理电路处于安全域中时,处理电路4可以访问存储器6的安全区域40中的数据和代码,并且还可以访问次安全区域50中的数据和代码。然而,当处理电路4处于次安全域中时,那么只可访问次安全区域50,而安全区域40是不可访问的。这防止了次安全域中的不受信任的代码访问安全数据。虽然图1和图2示出了只有一个安全域、一个次安全域和存储器6的相应安全区域40和次安全区域50的示例,但还有可能提供两个以上的域和区域。例如,可以有若干安全域,每个安全域具有一个安全级,或者可以有若干次安全域。在一些实施例中,每个域可以具有一个不同的安全级。在其他实施例中,可以有多个具有相同安全级的域。
一般而言,图1的系统进行操作,使得当处理电路4执行来自存储器6的安全区域40的代码时,处理电路4则处于安全域中,并且当处理电路执行来自存储器6的次安全区域50的代码时,处理电路4则在次安全域中操作。然而,图3A和图3B示出了如果这是所使用的唯一域确定技术则会产生的安全问题的一个示例。
在图中3A,程序代码60包括次安全域中的函数bob()和安全域中的两个函数joe()和fred()。函数joe()被bob()调用并且检查bob()所提供的密码是否有效。如果该密码有效,joe()则调用函数fred()用于执行安全处理。清楚的是,希望只有通过了函数joe()中的密码检查才可执行函数fred()。图3A示出了代码正确地操作的情况。函数bob()包含调用函数joe()的分支指令100。如图3A所示,分支指令100使返回地址(PC+4)被放入链接寄存器22并且函数joe()的地址被放入程序计数寄存器20。返回地址表示一旦函数joe()已完成,处理就应切换到的指令的地址。程序计数寄存器20的更新使处理跳转到函数joe()的起始地址。由于用于函数joe()的代码被存储在安全区域40中,所以joe()将在安全域中被处理。
当响应于分支指令或其他控制流改变指令而从次安全域变到安全域时,在分支指令100的目标地址必须存在防护(guard)指令102,否则将触发防护检查错误(该机制防备次安全域中的分支到存储器的安全区域中的函数的中间的分支)。在该情况下,由于存在防护指令102,因此处理可以在安全域中继续。函数joe()然后检查bob()所提供的密码是否匹配所存储的密码,若是,则调用函数fred()。当fred()结束时,然后另一个分支指令104通过使得分支到其地址被存储在链接寄存器22中的程序指令,而将处理返回到次安全域。
图3B示出了安全漏洞的示例,其中,黑客可以无正确密码而获得对安全函数fred()的访问。如图3A所示,在调用joe()时,bob()理应编写函数返回地址PC+4到链接寄存器22。然而,取而代之的是,黑客可以编写bob(),使得MOV指令106将函数fred()的地址放入链接寄存器22。因此,即使因为未提供正确密码而使joe()中的密码检查失败,joe()中的函数返回分支104也将分支到存储于链接寄存器22中的地址,即函数fred()的地址。因此,在没有正确的密码的情况下,次安全域已能够使安全域执行函数fred()。
而且,由于使处理切换到函数fred()的分支指令104是在安全域中被执行的,因此系统将不需要在fred()中存在防护指令。因此,黑客可以使用不受信任的次安全代码来触发到存储器6中的任何任意安全位置的分支,这可以导致对安全数据或安全代码的未获授权的访问。
为了防止这种类型的攻击,提供了目标域值,这提供了用于确定在诸如分支指令之类的控制流改变指令之后处理器将被期望在哪个域中操作的第二技术。与基于控制流改变指令的目标地址的第一确定技术一起,存在两种不同的确定所选择区域的方式。至少对于在安全域中执行的控制流改变指令而言,一种技术可以用于选择在分支之后处理器实际上应该在哪个域中操作,而另一种技术可用于检查所选择域是否为允许域。如果域选择中的所选择域不匹配允许域,则会触发错误,因此,可以防止图3B所示的类型的攻击。
图4A示出了维护目标域值的第一示例。控制流改变指令150,例如分支指令,可以包含用于表示目标域值的位字段T。如果目标域值T具有一值(例如T=1),则指示该指令被期望分支到安全域,如果它具有另一值(例如T=0),该指令则被期望分支到次安全域。图4B示出了可以用目标地址的一个位表示目标域值T的另一个示例。这在分支指令或其他控制流改变指令155指定用于存储目标地址的寄存器时可以是有用的。在图4A和图4B的示例中,目标域值通过之前用于表示目标地址处的指令是来自第一指令集还是第二指令集的冗余位字段来表示。处理电路4只支持第一指令集,因此该位字段已变得冗余,并因此被再用于目标域值。图4A所示的目标指令集字段到目标域值的映射改进了与传统代码的后向兼容性。
图5示出了处理控制流改变指令的一个示例。在步骤200,处理电路4判断下一个指令是否为控制流改变指令。控制流改变指令可以是引起程序计数寄存器20的非顺序更改的任何指令,例如分支指令或将新值装入程序计数寄存器20的另外的指令。如果该指令不是控制流改变指令,那么在步骤202,处理电路4则处理其他种类的指令。处理然后移至下一个指令。
如果当前的指令是控制流改变指令,该方法则移至步骤204,在该步骤中处理电路4确定哪个域为处理器4应在其中针对目标地址处的程序指令进行操作的所选择域。执行该步骤的定时可以变化,例如,该步骤可以响应于控制流改变指令的执行被执行,或者响应于控制流更改之后的目标地址处的程序指令的执行而被执行。如将在图6和图7中所论述的,可以使用第一确定技术或第二确定技术来执行域选择。
在步骤206,处理电路判断控制流改变指令是否是在安全域中被执行的。若是,那么在步骤208中,处理电路则执行域检查来确定哪个域是允许域选择选择用于目标地址处的程序指令的允许选择域。在步骤210,处理电路判断在步骤204中被选择的域是否为在步骤208中被选择的允许选择域。若否,那么在步骤212,则触发域检查错误。另一方面,如果所选择域与允许选择域相匹配,那么在步骤214,在所选择域中处理目标地址处的指令。该方法然后返回到步骤200用于下一个指令。
同时,如果在步骤206中判定在执行控制流改变指令时系统未处于安全状态,那么在步骤220,则判断目标指令是否来自安全区域。若否,该方法则继续到步骤214,在该步骤中在次安全域中处理目标地址处的指令。在该情况下,控制流改变指令和目标地址处的目标指令处于次安全区域中,因此更改是可接受的,因为不存在正被处理的安全代码。
然而,如果在步骤220判定目标地址处的指令来自安全区域,那么在步骤222,则判断该指令是否为防护指令。若否,则在步骤224中触发防护检查错误并且该方法结束。因此,当从非安全域更改为安全域时,该切换之后的第一指令必须为防护指令。这防止了能够分支到安全代码内的任何任意点从而引起安全漏洞的非安全代码。另一方面,如果在步骤222该指令为防护指令,该方法则继续到步骤214,在该步骤中处理该指令,然后该方法返回到步骤200用于下一指令。
图5示出了如果在次安全域中执行控制流改变则不执行域检查的示例。然而,如果希望的话,也可以在次安全域中执行域检查。
图5示出了两种用于确定所选择域的技术。在步骤204中执行的域选择确定将在其中处理指令的实际域。在步骤208中执行域检查以检查该域是否为允许域。图6和图7示出可以使用的两种确定技术。
图6示出了第一域确定技术。在步骤230,处理电路4确定存储器6中的哪个区域包含将被处理的下一个指令的地址。例如,处理电路4可以发送地址到存储器保护单元65,该存储器保护单元65可以返回哪个存储器区域对应于该地址的指示。如果指令地址是在次安全区域50中,那么在步骤232中,次安全域则被选择为所选择域,而如果指令地址是在安全区域40中,那么在步骤234中,安全域则被选择为所选择域。对于多数指令通常都会执行该技术,虽然可能有一些例外。可以存在可使用不同技术或其他参数来确定所选择域的一些指令。例如,如将稍后进行说明的,防护指令102可能需要不同的技术。
图7示出了基于图4A或图4B所示的目标域值的第二确定技术。在步骤250,确定目标域值T的值。如果目标域值具有值0,那么在步骤252,次安全域则被选择为所选择域,而如果目标域值具有目标1,那么在步骤254,安全域则被选择为所选择域。应理解的是,也可以使用域到目标域值T的值的不同映射,虽然图4A和图7所示的映射对于与传统代码的后向兼容是有用的。
图6和图7所示的第一确定和第二确定可以用于域选择或域检查。在一个示例中,图6所示的第一确定可用于选择处理器将在其中进行操作的实际域的域选择,而基于目标域值的图7所示的第二确定可用作检查以查找哪个是允许选择域。另一方面,目标域值(第二确定)可用于触发实际域选择,而下一个指令的地址(第一确定)可用做检查以查看目标地址是否匹配目标域值中指示的域。以任一方式,安全域中的代码都可用于设置目标域值以指示控制流改变指令被期望分支到的域。
图8和图9示出了可以使用域检查来防止对安全代码的未获授权的访问的示例。图8示出了与图3B相同的情形。再次,黑客已编写函数bob()以将函数fred()的地址放入链接寄存器22,以试图使安全域104中的函数返回分支指令104切换到安全函数fred()。然而,响应于防护指令102,处理电路4将链接寄存器22中的该地址的目标域值T设为值0,以指示函数返回分支104应分支到存储器的次安全区域中的指令。当函数返回分支指令104被执行时,处理实际上切换到安全区域中的函数fred()。因此,在第一确定(其基于函数fred()的第一指令的地址确定所选择域应该为安全域)和第二确定(其基于目标域值确定所选择域应该为次安全域)之间将存在不匹配。无论第一确定还是第二确定中的哪一个代表域选择以及哪一个代表域检查,这种不匹配都将引起错误触发,这将防止安全函数fred()的进一步处理。因此,这防止了黑客使用次安全代码来触发从安全代码到另一个安全位置的分支。
图9示出了执行域检查可以是有用的另一个示例。在该情况下,安全风险来自在寄存器R0中存储函数指针的次安全域中的函数john(),安全域中的函数bill()然后用其调用函数。从bill()调用函数的分支指令300分支到寄存器R0中指示的地址。如果函数指针已被设为安全位置,次安全代码就可以触发安全代码切换到任意安全位置,即使该位置不是防护指令所标记的有效安全入口点。因此,这会造成安全漏洞。
然而,通过包含将目标域值T设为0以指示函数指针应指向次安全域中的地址的早期目标域设置指令302,编写安全函数bill()的程序员就可以防备该种攻击。当响应于分支指令300而分支到函数指针位置时,如果黑客已将函数指针设为安全值,那么域检查将确定如下的不匹配:由于该指令处于安全区域中而确定的安全域与目标域值所指示的次安全域之间的不匹配。因此,可以触发错误,并且可以防止安全漏洞。
虽然图8和图9示出了触发错误的情况,但在其他实施例中,如果在函数指针位置存在防护指令以指示其为控制流的未获授权更改,就可以避免该错误(参见以下的图14和图15)。
如图8和图9所示,分支指令之前的目标域值设置指令被用于将目标域值设为所希望的值。目标域值设置指令可以是如图8所示的防护指令或者如图9所示的另一种目标域设置指令。一般而言,安全代码的程序员应在安全域中的控制流改变指令之前的程序代码中包含目标域值设置指令,以确保控制流改变指令正确地起作用。
目标域值T对于其他目的以及域检查和域选择而言可以是有用的。在图10和图11中示出了一个示例。该示例涉及函数调用和函数返回。通常会使用第一控制流改变指令来调用上述函数bob()、joe()等,该第一控制流改变指令将函数返回地址放入链接寄存器22并分支到与将被调用的函数的第一指令相应的地址,然后第二控制流改变指令会将处理返回到该函数返回地址。然而,如果函数是从安全域被调用并且将在次安全域中被执行,那么返回地址可能需要对次安全代码隐藏。因此,伪返回地址可被存储在链接寄存器中。例如,伪返回地址可以是图2所示的保留范围70的地址之一。实际返回地址可以被保存到安全堆栈30用于在从该函数调用返回时在安全域中进行访问。
为了使得更容易确定伪地址还是实际返回地址应被保存到链接寄存器22,可以使用目标域值T。这在图10和图11中示出。图10示出了当执行触发函数调用的第一控制流改变指令时的处理。在步骤350,判断下一个指令是否为将返回地址放在链接寄存器中的类型的分支指令BL或BLX。若是,在步骤360中判断处理当前是否处于安全域中,并且用于分支的目标域值T指示该分支被期望切换到次安全域。如果不是这样的情况,那么实际返回地址在步骤365中被存储在链接寄存器22中。然而,如果在步骤360中,处理处于安全域中,并且目标域值T指示处理被期望切换到次安全域(T=0),那么在步骤370,伪返回地址被存储在链接寄存器22中。在步骤380,实际返回地址被保存到安全堆栈。无论哪个地址被保存到链接寄存器,该方法然后都继续到步骤390,在该步骤中处理分支到目标地址并且函数然后被处理。然后针对目标地址处的指令的域选择和检查将如图5所示地继续进行。在图10的步骤360,目标域值使得能够比基于目标地址进行判断的情况更快地确定是伪返回地址还是实际返回地址应被保存在链接寄存器中。
最终,将遇到另一个控制流改变指令(图11的步骤400)。在步骤410,检查目标地址在步骤410是否为伪地址。若否,处理则在步骤420分支到控制流改变指令的目标地址,因为该指令是不是函数返回的正常控制流改变指令,或者是其目标地址为存储在链接寄存器中的实际返回地址的函数返回。另一方面,如果在步骤410确定目标地址为伪地址,那么在步骤430处理切换到安全域。在步骤440从存储器的安全区域40中的安全堆栈取回实际返回地址。然后,在步骤450处理分支到实际返回地址,然后域选择和检查继续如常。
图12示出了目标域值可以是有用的另一个示例。当调用函数时,有时调用函数有必要通过堆栈将函数自变量传递到被调用函数。如果函数调用是从安全域作出,那么函数自变量应被存储在安全堆栈30还是次安全堆栈32将取决于被调用函数是在安全域还是次安全域中被执行。如图12所示,确定哪个堆栈用于传递函数自变量可以使用目标域值T而作出。使用目标域值T使得能够比利用存储器保护单元65检查哪个区域与代表被调用函数的位置的目标地址相对应的情况更快地确定目标域。图12的确定可以由处理电路在硬件中执行,或者由处理电路所运行的代码在软件中执行。
至此示出的示例已说明了在单个域为具体控制流改变指令的允许域的环境下的域检查。然而,在一些情况下,可能希望使若干域为允许域。图13示出了这样的一个示例。图13对应于图9所示的情形,但在该情况下函数reg()包含分支指令300,该分支指令300取决于由次安全函数mary()放入寄存器R0的值,有时应返回到次安全域并且在其他时候应切换到安全域中的受信任函数alice()。利用上述技术(在该技术中目标域值设置指令302设置寄存器R0中的函数指针的目标域值,以指示次安全域为期望的目标域),当mary()将寄存器R0设为安全位置时,将触发错误。在该情况下,在执行分支指令300时,目标域值将指示次安全域为所选择域,而在分支到函数alice()时,MPU65将确定安全域为所选择域。如果该具体分支是合法的,则希望在该情况下避免触发错误,但仍保护免于这种类型的未获授权的切换。
图14和图15示出了可以解决这个问题的方式。对于一些程序指令,系统可以确定多个域为允许域,使得无论分支指令300之后的行为如何,都允许域切换。然而,为了保护免于未获授权的切换,系统可以要求分支指令300之后的第一指令为防护(GUARD)指令。
在图14的示例中,域选择是基于目标域值的,而域检查是基于由MPU65针对一地址而确定的区域的。对于防护指令,MPU65确定安全域和次安全域二者为允许域。因此,在分支300之后,处理将切换到次安全域,因为目标域值T被设为了0。然而,对于alice()中的防护指令306,基于第一确定的域检查选择安全域和次安全域二者为允许域。因此,实际域为次安全域,并且这与允许域之一相匹配,因此不存在错误。类似地,对于受安全代码控制的到alice()的分支,目标域值将被设为1,使得在该分支之后,系统在安全域中执行。因此,alice()既可以从安全代码也可以从次安全代码被访问,并且分支300可以正确地切换到安全代码和次安全代码二者。如果分支300导致切换到安全区域中的程序指令而不是防护指令,则会触发错误。因此,仍可以避免到任意安全位置的未获授权的切换。
在图15所示的另一个示例中,域检查是基于目标域值,而域选择是基于指令地址所对应的存储器区域。在该情况下,响应于分支指令300,次安全域和安全域二者都被选择为用于目标地址处的指令的允许选择域(无论目标域值为何值)。在分支到alice()中的防护指令306时,MPU65将确定安全域为所选择域,该域将与来自域检查的允许域之一相匹配。倘若在目标位置存在防护指令306,就不会触发错误。
因此,无论域选择和域检查中的哪一个使用目标位,系统都可允许从安全域到受次安全域所设置的地址控制的安全位置的一些合法切换。需要防护指令来确认这样的切换。通常,当已处于安全域中时,不需要防护检查,因此,为了确保执行防护检查,系统可以在执行目标域值具有值0的存储器的安全区域中的分支指令300之前切换到次安全域。如果分支切换到安全域,则分支将看起来好像是来自次安全域的,因此在目标地址将需要防护指令以避免错误。
本申请的主题涉及在共同转让的同时待决的美国申请号13/368,419和英国专利申请号1217531.1中论述的主题,这两个文件的全部内容通过引用结合在此。
虽然已参照附图详细说明了本发明的说明性实施例,但应理解的是本发明不限于那些精确的实施例,并且本领域的技术人员可以在不脱离如权利要求所限定的本发明的范围和精神的情况下作出各种更改和修改。

Claims (27)

1.一种数据处理装置,包括:
处理电路,用于响应于程序指令执行数据处理操作,所述处理电路具有包含安全域和次安全域的多个操作域,其中当在所述安全域中操作时,所述处理电路能访问当在所述次安全域中操作时不可访问的数据;
其中响应于控制流改变指令的执行,所述处理电路被配置为切换为处理所述控制流改变指令所指示的目标地址处的程序指令,并执行用于确定所述处理电路将在其中针对所述目标地址处的程序指令进行操作的所选择域的域选择;以及
至少如果在所述安全域中操作时所述控制流改变指令被执行,则所述处理电路被配置为:
(i)执行域检查,以用于确定所述多个域中的哪个域被允许作为通过针对所述目标地址处的程序指令进行的所述域选择而确定的所选择域,所述域检查使用与所述域选择不同的技术;以及
(ii)如果在所述域选择中确定的所选择域不是在所述域检查中确定的允许选择域,则触发域检查错误,
其中,响应于控制流改变指令在所述安全域中操作时的执行并且所述域选择确定所述安全域是所选择域,所述处理电路被配置为当所述安全域不是在所述域检查中确定的允许选择域时触发所述域检查错误。
2.根据权利要求1所述的数据处理装置,其中所述控制流改变指令包括分支指令。
3.根据权利要求1或2所述的数据处理装置,其中如果在所述次安全域中操作时所述控制流改变指令被执行,则所述处理电路还被配置为执行所述域检查,并且如果在所述域选择中确定的所选择域与在所述域检查中确定的允许域不相匹配,则触发所述域检查错误。
4.根据权利要求1所述的数据处理装置,其中所述域选择和所述域检查中的一者包括第一确定,并且所述域选择和所述域检查中的另一者包括第二确定。
5.根据权利要求4所述的数据处理装置,包括用于存储数据的数据储存器,所述数据储存器包括包含安全区域和次安全区域的多个区域,其中所述安全区域用于存储当在所述安全域中操作时所述处理电路能访问而当在所述次安全域中操作时所述处理电路不能访问的数据;
其中第一确定包括至少取决于所述多个区域中的哪个区域与所述目标地址处的程序指令的指令地址相对应来确定至少一个所选择域。
6.根据权利要求5所述的数据处理装置,其中对于至少一些程序指令而言,第一确定包括如果所述指令地址对应于所述次安全区域,则选择所述次安全域为所述所选择域,而如果所述指令地址对应于所述安全区域,则选择所述安全域为所述所选择域。
7.根据权利要求4至6中的任一项所述的数据处理装置,其中所述第二确定包括确定所述多个域中由目标域值指示的一个域为所述所选择域。
8.根据权利要求7所述的数据处理装置,其中所述目标域值是在对控制流改变指令的编码中被指定的。
9.根据权利要求7所述的数据处理装置,其中所述目标域值是在控制流改变指令所使用的目标地址的一部分中被指定的。
10.根据权利要求7所述的数据处理装置,其中所述处理电路被配置为响应于目标域值设置指令而设置所述目标域值。
11.根据权利要求10所述的数据处理装置,其中如果在所述目标域值设置指令被执行之前所述处理电路是在所述次安全域中操作,那么所述处理电路被配置为设置所述目标域值以指示所述次安全域。
12.根据权利要求10和11中任一项所述的数据处理装置,其中所述处理电路被配置为:如果在所述处理电路在进行切换以在安全区域中处理所述目标地址处的程序指令之前,在次安全域中操作所针对的受防护保护的控制流改变指令之后,所述目标地址处的程序指令不是防护指令,则触发错误;并且
所述目标域值设置指令包括所述防护指令。
13.根据权利要求12所述的数据处理装置,其中响应于第一控制流改变指令,所述处理电路被配置为将返回地址存储到预定存储位置,并且切换为处理所述目标地址处的程序指令;并且
响应于第二控制流改变指令,所述处理电路被配置为切换为处理所述返回地址处的程序指令;
其中响应于所述防护指令,所述处理电路被配置为如果所述第一控制流改变指令是在所述次安全域中被执行的,则将针对所述第二控制流改变指令的目标域值设置为指示所述次安全域。
14.根据权利要求7所述的数据处理装置,包括数据储存器,所述数据储存器包括包含安全堆栈和次安全堆栈的多个堆栈,其中当在安全域中操作时所述处理电路能访问所述安全堆栈,而当在次安全域中操作时所述处理电路不能访问所述安全堆栈。
15.根据权利要求14所述的数据处理装置,其中所述处理电路和在所述处理电路上执行的软件中的至少一者被配置为取决于所述目标域值确定所述多个堆栈中的哪个能用于传递函数自变量。
16.根据权利要求7所述的数据处理装置,其中响应于第一控制流改变指令,所述处理电路被配置为将返回地址存储到预定存储位置,并且将所述控制流切换到所述目标地址处的程序指令;并且
响应于第二控制流改变指令,所述处理电路被配置为切换为处理所述返回地址处的程序指令。
17.根据权利要求16所述的数据处理装置,其中如果所述第一控制流改变指令在所述安全域中被执行并引起向所述次安全域的转移,所述处理电路则被配置为将伪返回地址存储到所述预定存储位置作为所述返回地址,并将实际返回地址存储到当处于所述次安全域中时不可访问的安全存储位置,所述伪返回地址不是有效指令地址;并且
响应于所述第二控制流改变指令,如果所述返回地址为所述伪返回地址,所述处理电路则被配置为从所述安全存储位置检索回所述实际返回地址并切换为处理所述实际返回地址处的程序指令。
18.根据权利要求17所述的数据处理装置,其中所述处理电路被配置为响应于所述第一控制流改变指令,取决于至少所述目标域值,确定所述伪返回地址和所述实际返回地址中的哪一个存储到所述预定存储位置。
19.根据权利要求7所述的数据处理装置,其中所述目标域值由如下项中的一者中的冗余数据字段来表示:所述控制流改变指令的编码和所述控制流改变指令所使用的目标地址。
20.根据权利要求7所述的数据处理装置,其中所述处理电路被配置为执行来自第一指令集的指令;
所述控制流改变指令的编码和所述控制流改变指令所使用的所述目标地址中的一者包含目标指令集字段,所述目标指令集字段指示所述目标地址处的程序指令是来自所述第一指令集还是第二指令集,其中所述第二指令集不被所述处理电路支持;并且
所述目标域值是使用所述目标指令集字段来指示的。
21.根据权利要求20所述的数据处理装置,其中所述目标指令集字段的第一值指示所述第一指令集并且对应于指示所述安全域为所述所选择域的所述目标域值;并且
所述目标指令集字段的第二值指示所述第二指令集并且对应于指示所述次安全域为所述所选择域的所述目标域值。
22.根据权利要求21所述的数据处理装置,其中所述域检查包括所述第二确定,并且如果所述控制流改变指令是在处于所述次安全域中时被执行的,那么所述域检查错误是否是在切换为处理所述目标地址处的程序指令之后被生成则不取决于所述目标域值的值。
23.根据权利要求7所述的数据处理装置,其中对于至少一个程序指令,所述域检查包括确定多个所述域为针对所述程序指令的允许选择域。
24.根据权利要求23所述的数据处理装置,其中所述至少一个程序指令包括防护指令。
25.根据权利要求7所述的数据处理装置,其中对于在所述安全域中执行的至少一个控制流改变指令,所述处理电路则被配置为在切换为处理所述目标地址处的程序指令之前,从所述安全域中的操作切换为所述次安全域中的操作。
26.根据权利要求23至25中任一项所述的数据处理装置,其中所述处理电路被配置为如果所述目标地址处的程序指令不是防护指令,则触发错误。
27.一种数据处理方法,用于包括用于响应于程序指令来执行数据处理操作的处理电路的装置,所述处理电路具有包含安全域和次安全域的多个操作域,其中当在所述安全域中操作时,所述处理电路能访问当在所述次安全域中操作时不可访问的数据;所述方法包括:
响应于控制流改变指令的执行,切换为处理所述控制流改变指令所指示的目标地址处的程序指令;
执行用于确定所述处理电路将在其中针对所述目标地址处的程序指令进行操作的所选择域的域选择;以及
至少如果在所述安全域中操作时所述控制流改变指令被执行,则:
(i)执行域检查,以用于确定所述多个域中的哪个域被允许作为通过针对所述目标地址处的程序指令进行的域选择而确定的所选择域,所述域检查使用与所述域选择不同的技术;以及
(ii)如果在所述域选择中确定的所选择域不是在所述域检查中确定的允许选择域,则触发域检查错误,
其中,响应于控制流改变指令在所述安全域中操作时的执行并且所述域选择确定所述安全域是所选择域,所述域检查错误在所述安全域不是在所述域检查中确定的允许选择域时被触发。
CN201310038646.4A 2012-02-08 2013-01-31 使用安全域与次安全域的数据处理装置和方法 Active CN103310163B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13/368,419 US9477834B2 (en) 2012-02-08 2012-02-08 Maintaining secure data isolated from non-secure access when switching between domains
US13/368,419 2012-02-08
GB201217531A GB201217531D0 (en) 2012-10-01 2012-10-01 ARMv7-M Asset Protection Proposal
GB1217531.1 2012-10-01
GB1220769.2 2012-11-19
GB1220769.2A GB2501343A (en) 2012-02-08 2012-11-19 Data processing apparatus and method using secure domain and less secure domain

Publications (2)

Publication Number Publication Date
CN103310163A CN103310163A (zh) 2013-09-18
CN103310163B true CN103310163B (zh) 2018-01-05

Family

ID=47521366

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201380008455.1A Active CN104115155B (zh) 2012-02-08 2013-01-17 在具有安全域和次安全域的数据处理设备中的异常处理
CN201310038646.4A Active CN103310163B (zh) 2012-02-08 2013-01-31 使用安全域与次安全域的数据处理装置和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201380008455.1A Active CN104115155B (zh) 2012-02-08 2013-01-17 在具有安全域和次安全域的数据处理设备中的异常处理

Country Status (10)

Country Link
EP (1) EP2812836B1 (zh)
JP (2) JP6134742B2 (zh)
KR (1) KR102075367B1 (zh)
CN (2) CN104115155B (zh)
GB (2) GB2501343A (zh)
IL (1) IL233521A (zh)
IN (1) IN2014DN05705A (zh)
MY (1) MY167888A (zh)
TW (1) TWI569164B (zh)
WO (1) WO2013117899A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268970B2 (en) 2014-03-20 2016-02-23 Analog Devices, Inc. System and method for security-aware master
GB2531844B (en) * 2014-10-31 2019-06-26 Hewlett Packard Development Co Hardware-protective data processing systems and methods using an application executing in a secure domain
WO2017034008A1 (ja) 2015-08-25 2017-03-02 株式会社Seltech ハイパーバイザーを有するシステム
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
GB2552966B (en) * 2016-08-15 2019-12-11 Arm Ip Ltd Methods and apparatus for protecting domains of a device from unauthorised accesses
US11392438B2 (en) * 2017-02-09 2022-07-19 Arm Limited Responding to unresponsive processing circuitry
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
CN107436752B (zh) * 2017-07-20 2020-12-01 龙芯中科技术有限公司 异常现场恢复方法、装置及计算机可读存储介质
GB2577878B (en) * 2018-10-08 2020-11-11 Advanced Risc Mach Ltd Transition disable indicator
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
JP6877475B2 (ja) * 2019-03-11 2021-05-26 日立Astemo株式会社 電子制御装置及びスタック使用方法
GB2589895B (en) 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
GB2589897B (en) 2019-12-11 2022-03-23 Advanced Risc Mach Ltd Domain transition disable configuration parameter
CN114490448A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 一种切换执行环境的方法及其相关设备
CN117400387B (zh) * 2023-12-13 2024-03-15 邯郸市丰泰陶瓷贸易有限公司 一种高性能陶瓷坯料制作装置及其方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363474B1 (en) * 1999-06-30 2002-03-26 Bull Hn Information Systems Inc. Process switching register replication in a data processing system
CN100524224C (zh) * 2002-11-18 2009-08-05 Arm有限公司 用于在安全模式和非安全模式间切换处理器的装置和方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
JP2990140B2 (ja) * 1998-01-09 1999-12-13 日本電気アイシーマイコンシステム株式会社 割り込み制御回路
JP3716604B2 (ja) * 1998-03-24 2005-11-16 富士電機機器制御株式会社 情報処理装置
CA2309627A1 (en) * 1998-09-25 2000-04-06 Hughes Electronics Corporation An apparatus for providing a secure processing environment
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
GB2411254B (en) * 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396034B (en) * 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB2402785B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Processor switching between secure and non-secure modes
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US7383587B2 (en) * 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
US20080133858A1 (en) * 2004-11-04 2008-06-05 Board Of Trustees Of Michigan State University Secure Bit
US7401210B2 (en) * 2005-03-30 2008-07-15 Arm Limited Selecting subroutine return mechanisms
JP4519738B2 (ja) * 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US8959339B2 (en) * 2005-12-23 2015-02-17 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
JP5388851B2 (ja) * 2006-09-06 2014-01-15 シリコン ヒフェ ベー.フェー. 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8051467B2 (en) * 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
JP2010186386A (ja) * 2009-02-13 2010-08-26 Oki Semiconductor Co Ltd プロセッサ
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch
JP2011070290A (ja) * 2009-09-24 2011-04-07 Renesas Electronics Corp データプロセッサ
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363474B1 (en) * 1999-06-30 2002-03-26 Bull Hn Information Systems Inc. Process switching register replication in a data processing system
CN100524224C (zh) * 2002-11-18 2009-08-05 Arm有限公司 用于在安全模式和非安全模式间切换处理器的装置和方法

Also Published As

Publication number Publication date
GB201220771D0 (en) 2013-01-02
EP2812836A1 (en) 2014-12-17
CN104115155B (zh) 2016-12-28
JP6134742B2 (ja) 2017-05-24
WO2013117899A1 (en) 2013-08-15
GB2501343A (en) 2013-10-23
CN103310163A (zh) 2013-09-18
IL233521A0 (en) 2014-08-31
IN2014DN05705A (zh) 2015-04-10
GB2499287A (en) 2013-08-14
JP2013161479A (ja) 2013-08-19
KR102075367B1 (ko) 2020-02-11
EP2812836B1 (en) 2016-01-06
TWI569164B (zh) 2017-02-01
KR20140123545A (ko) 2014-10-22
CN104115155A (zh) 2014-10-22
MY167888A (en) 2018-09-26
JP2015506525A (ja) 2015-03-02
IL233521A (en) 2017-11-30
GB201220769D0 (en) 2013-01-02
TW201346625A (zh) 2013-11-16
JP6189039B2 (ja) 2017-08-30

Similar Documents

Publication Publication Date Title
CN103310163B (zh) 使用安全域与次安全域的数据处理装置和方法
KR102160916B1 (ko) 안전한 도메인과 덜 안전한 도메인을 이용한 데이터 처리 장치 및 방법
CN104685508B (zh) 数据处理装置和数据处理方法
CN104704503B (zh) 在安全域与次安全域之间进行转换时保护安全数据和程序代码免受非安全访问的数据处理装置和方法
EP3779745B1 (en) Code pointer authentication for hardware flow control
McGregor et al. A processor architecture defense against buffer overflow attacks
KR102192835B1 (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
US10210349B2 (en) Data processing apparatus and method using secure domain and less secure domain
CN105980993A (zh) 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作
EP3864555B1 (en) Verifying a stack pointer
JP2023505149A (ja) ドメイン遷移無効化構成パラメータ
Piromsopa et al. Survey of protections from buffer-overflow attacks
WO2017201453A1 (en) System and method for probabilistic defense against remote exploitation of memory
CN113032737B (zh) 软件的保护方法、装置、电子设备及存储介质
CN105279451A (zh) 安全领域预测
EP4073635B1 (en) Intermodal calling branch instruction
Liu et al. Static-Dynamic Control Flow Integrity

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant