CN107766706A - 用于保护设备的域免于未经授权的访问的方法和装置 - Google Patents

用于保护设备的域免于未经授权的访问的方法和装置 Download PDF

Info

Publication number
CN107766706A
CN107766706A CN201710689429.XA CN201710689429A CN107766706A CN 107766706 A CN107766706 A CN 107766706A CN 201710689429 A CN201710689429 A CN 201710689429A CN 107766706 A CN107766706 A CN 107766706A
Authority
CN
China
Prior art keywords
critical point
access
calling
leave
parameter
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.)
Pending
Application number
CN201710689429.XA
Other languages
English (en)
Inventor
A·安吉利诺
M·梅利亚克
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 IP Ltd
Original Assignee
Arm IP 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
Application filed by Arm IP Ltd filed Critical Arm IP Ltd
Publication of CN107766706A publication Critical patent/CN107766706A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • 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
    • 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
    • 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/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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/606Protecting data by securing the transmission between two devices or processes
    • 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/2113Multi-level security, e.g. mandatory access control
    • 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/30Managing network names, e.g. use of aliases or nicknames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了用于保护设备的域免于未经授权的访问的方法和装置。一种用于保护目标域和源域免于未经授权的访问的机器实施的方法,包括:识别包括离开过渡指令和至少一个离开访问参数的离开调用关口,所述离开访问参数限制从所述源域离开;识别对应于所述离开调用关口的进入调用关口,所述进入调用关口包括过渡指令和至少一个进入访问参数,所述进入访问参数限制对所述目标域的访问;确定所述离开访问参数与所述进入访问参数彼此兼容;以及当符合所述离开访问参数和所述进入访问参数时,实施从所述源域到所述目标域的情境切换。

Description

用于保护设备的域免于未经授权的访问的方法和装置
技术领域
本发明的主题总体上涉及用于保护设备的域免于未经授权的访问的方法和装置。更具体来说,所述方法和装置涉及用于保护目标域免于未经授权的访问的进入调用关口以及用于保护源域免于未经授权的访问的离开调用关口。
背景技术
大多数系统和架构旨在保护设备免受来自未经授权的用户的恶意攻击。存在几种防止攻击的方法,比如提供具有不同安全等级的区域,但是所有已知的方法都存在与之相关联的缺点。
发明内容
根据第一种技术,本发明提供一种用于保护目标域和源域免于未经授权的访问的机器实施的方法。所述方法包括:识别包括离开过渡指令和至少一个离开访问参数的离开调用关口,所述离开访问参数定义从所述源域的离开点;识别对应于所述离开调用关口的进入调用关口,所述进入调用关口包括过渡指令和至少一个进入访问参数,所述进入访问参数定义对所述目标域的访问点;确定所述离开访问参数与所述进入访问参数彼此兼容;以及当符合所述离开访问参数和所述进入访问参数时,实施从所述源域到所述目标域的情境切换。
根据第二种技术,本发明提供一种数据处理装置,包括:被配置成响应于程序指令实施处理功能的处理电路,所述处理电路包括目标域、源域和监视器,其中所述监视器被安排成对从所述源域过渡到所述目标域的所述处理电路应用安全凭证以便允许所述处理电路在所述目标域中实施函数,以及用于存储至少一个进入调用关口和至少一个离开调用关口的受信任的存储设备,所述进入调用关口包括过渡指令以及限制对所述目标域的访问的进入访问参数,并且所述离开调用关口包括过渡指令以及限制从所述源域离开的离开访问参数,所述监视器还被安排成:响应于过渡指令确定离开调用关口何时被存储在所述受信任的存储设备中,并且在确定所述离开调用关口被存储在所述受信任的存储设备中之后,暂停在所述离开访问参数中定义的针对所述源域的至少一项访问特权;以及响应于过渡指令确定进入调用关口何时被存储在所述受信任的存储设备中,并且在确定所述进入调用关口被存储在所述受信任的存储设备中之后,对所述处理电路应用所述安全凭证,从而使得所述处理电路可以在所述目标域中实施目标函数,所述进入访问参数包括所述目标函数。
根据第三种技术,本发明提供一种包括用于实施本文所描述的方法的程序代码的计算机程序产品。
附图说明
为了更好地理解各个实施例以及如何可以实施所述实施例,现在将仅通过举例的方式参照附图,其中:
图1示意性地示出了在物联网设备处提供的各个单元;
图2示意性地示出了在物联网设备处提供的各个单元;
图3示意性地示出了数据处理装置的两个安全区域;
图4示意性地示出了查找表;
图5示意性地示出了数据处理装置的两个安全区域;
图6是示意性地示出用于确定是否允许对安全区域的访问的处理的流程图;
图7A示意性地示出了用于调用关口的访问参数;
图7B示意性地示出了用于调用关口的访问参数;
图7C示意性地示出了用于各个调用关口的访问参数;
图8是示意性地示出用于对调用关口进行验证的处理的流程图;
图9是示意性地示出用于对调用关口进行验证的处理的流程图;
图10A示出了在访问参照图1-9描述的实施例的调用关口时的代码安排;
图10B示出了推测性调用关口实施例的代码安排;
图11A示意性地示出了经由调用关口从第一域到第二域的情境切换;
图11B示意性地示出了经由两个调用关口从第一域到第二域的情境切换;
图12示意性地示出了经由离开调用关口和目标调用关口从第一域到第二域的情境切换;
图13示意性地示出了第一域和第二域;
图14示意性地示出了在进入/离开调用关口的参数中定义的访问分包(subletting);以及
图15示意性地示出了用于保护目标域和源域免于未经授权的访问的处理。
具体实施方式
现在将详细参照各个实施例,其实例在附图中示出。在后面的详细描述中作为举例阐述了许多具体细节,以便提供对于相关教导的透彻理解。但是本领域技术人员将认识到,可以在没有这些具体细节的情况下实践本发明的教导。
另外,为了避免不必要地模糊本发明的教导的各个方面,在相对较高的层级描述了众所周知的方法、规程、组件和/或电路而没有涉及细节。
为了保护设备(比如物联网(IoT)设备)处的目标域免于未经授权的访问,提供至少一个(目标/进入)调用关口。所述调用关口通过准许在访问参数中定义的排他访问而强制到目标域的特定进入点,从而保护目标域。此外,比如在互不信任的安排中,为了保护设备处的源域免于来自目标域的未经授权的访问,提供至少一个离开调用关口。所述离开调用关口通过强制从源域离开的特定离开点来保护源域。
图1示意性地示出了IoT(物联网)设备100处的各个单元。大多数系统和架构旨在保护设备免于未经授权的用户和未经授权的处理。设备100包括许多模块101到112,并且每一个模块101-112具有旨在保护每一个模块的其自身的安全性,并且从而保护作为一个整体的设备免受恶意攻击。举例来说,密码密钥107的代码可以由安全专业人员编写并且可以具有强安全凭证,但是WiFi堆栈105代码不大可能由安全专业人员编写并且因此不大可能具有相同的安全等级。这种安排允许攻击者通过攻破“最弱”模块(具有最低安全防范的模块)的安全而攻破设备安全,因此设备的总体安全只与最弱模块相当。一旦其中一个模块被破解,就有可能通过被破解的模块获得对于设备的其余模块的访问。常见的攻击进入点是SSL库103、WiFi堆栈105或BLE堆栈102。例如在图1中,攻击者120已获得对于SSL库103的访问,并且已使用该访问进一步获得对于密码密钥108和固件更新111的访问。在大多数情况下,一旦固件更新功能被攻击者破解则不可能从针对固件更新111的攻击复原,因为驻留的恶意软件可以从RAM安全地运行,并且作为“拒绝服务”攻击的一部分可以决定阻断针对重置设备或擦除闪存(FLASH)的命令。
图2示意性地示出了提供在IoT设备200处的各个单元。在设备200中,模块201到212被划分到两个不同的域中,即针对非关键代码的较低安全域250和针对关键代码的安全域260。模块201-206被提供在较低安全域250中,并且模块207-212被提供在安全域260中。安全域与较低安全域相比要求更高的安全性,因此两个域通过安全性边界270分开。存储在较低安全域中的代码在执行时无法访问存储在安全域中的数据。只有存储在安全域中的关键代码可能需要具有完全安全审计。无法经由较低安全域获得对安全域的访问,因此较低安全域中的脆弱点无法破解安全域。密钥208从不离开安全域,并且无法由恶意代码提取。
此外,由于固件更新受到安全域的保护,因此安全域可以可靠地把较低安全域重新刷新(re-flash)到清洁状态,从而可以通过固件更新从恶意攻击复原。
设备的安全侧的模块207到212需要被实施成具有强安全性并且很少被改变。
图3示意性地示出了数据处理装置的两个简化的安全区域301、302,例如较低安全区域(第一安全区域301)和安全区域(第二安全区域302)。安全区域301具有安全域310和安全存储器312,并且安全区域302具有安全域314和安全存储器316。两个安全区域301、302经由监视器302连接。安全区域302具有高于安全区域301的安全等级。所述实施例不限于两个安全区域,并且可以提供多于两个安全区域,例如较低安全区域、安全区域和更高安全区域。在另一个实施例中,提供分别具有等效的安全等级的一个或多个安全区域,例如另外的较低安全区域和/或另外的安全区域。在另一个实施例中,较低安全区域可以与至少一个其他安全区域一起提供,所述(多个)其他安全区域具有不同的和/或相同的(多个)安全等级。在一些实施例中,监视器代码只能在监视器模式下被执行,并且只有在有限的情况集合下才可以例如通过异常(例如中断、终止或显式调用)进行访问,随后处理可以从较低安全区域过渡到安全区域,比如通过 技术所实施的那样。
为了使得来自安全域310的函数访问存储在安全存储器316中的数据,其经由监视器320获得访问,所述监视器320确定代码是否被允许访问安全域314。当代码被允许访问安全域316时,监视器320为之提供所需的安全凭证。所述安全凭证可以采取任何代码或数据的形式,比如与代码相关联的证据、断言、或属性,从而允许代码访问安全区域。由监视器对代码应用安全凭证,从而允许对安全区域的经过授权的访问。
代码经过监视器320,以便为之提供安全区域302的安全凭证。例如在恶意攻击期间,如果代码尝试从安全域310直接跳转到安全域314而不是经由监视器320,则代码将不具有所需的安全凭证,因此将不会在安全域314中被处理。相反,代码如同仍然处于安全区域301中那样被对待,这是因为其仍然具有区域301的安全凭证。获得用以进入安全区域302的正确安全凭证的唯一方式是经由监视器320。
有可能事先知道哪些函数被允许访问安全区域302。因此,可以提供列出被允许访问安全区域302的每一项函数的查找表。图4示意性地示出了被允许访问安全区域302的有效函数(函数1、函数2、函数3、函数4…函数n)的查找表。当监视器320接收到访问安全区域302的请求时,其在表400中查找所述请求是否来自被允许的有效函数。当所述函数被提供在查找表400中并且因此被允许时,所述请求被准许并且为该函数提供对于安全区域302所需的安全凭证。当所述函数没有被提供在查找表400中并且因此不被允许时,则生成出错消息或故障。
由于函数查找表被存储在受信任的存储器中,因此攻击者不可能为之添加函数。
虽然函数表克服了对安全区域的未经授权的访问的问题,但是当函数表较长时,任务的实施变得缓慢,这是因为每一条指令都需要顺序地搜索函数表直到确定函数是否出现在表中为止。其结果是不可预测的处理时间,也就是说如果函数被存储在表的顶部则处理时间可能较短,但是如果函数被存储在表的末端附近等等则处理时间可能较长。
如果存在具有相同或不同的安全等级/特权等级的多于一个安全域,则有可能具有与每一个域相关联的函数表,其中包括被允许访问相关联的域的所有函数的列表。
为了减少处理时间,有可能使用散列表而不是查找表来存储经过授权的函数。散列表把多个函数条目存储在一个桶阵列中。随后使用关键字以表明可以在哪一个桶中找到条目(如果能够找到的话)。与具有相同数目的函数的查找表相比,使用散列表减少了识别某一函数是否被授权访问安全区域所需的处理时间。但是处理时间仍然是不可预测的并且可能较长。同样地,散列表被存储在受信任的存储器中并且因此无法被改动(也就是说无法添加函数),从而防止恶意攻击。
在另一个实施例中,有可能使用调用关口而不是函数表来确定某一函数是否可以访问不同的安全等级/域。
图5示意性地示出了数据处理装置的两个简化的安全区域501、502。在一个实施例中,所述数据处理装置是微处理器。虽然仅仅示出了两个安全区域,但是数据处理装置可以具有多于两个安全区域,每一个安全区域具有通过调用关口强制的其自身的安全等级。如前所述,各个安全区域可以具有相同或不同的安全等级。数据处理装置包括提供在至少两个不同的安全区域内的多个组成模块。在一个实施例中,数据处理装置可以包括应用协议模块、BLE堆栈、SSL库、诊断模块、WiFi堆栈、设备管理模块、安全存储模块、安全ID模块、密码API模块、固件更新模块以及PRNG模块。但是正如本领域技术人员将理解的那样,数据处理装置不限于这些特征,并且可以利用其他组件。
如图5中所示,第一安全区域501(较低安全区域)具有安全域510和安全存储器512,并且第二安全区域502(更高安全区域)具有安全域514和安全存储器516。两个安全区域501、502经由监视器520连接。安全区域502具有高于安全区域501的安全等级。安全域510、514无法被直接访问,相反为了提供与第二安全域514相关联的安全凭证,经由监视器520准许访问。在安全区域502中完成函数之后,监视器在把程序代码返回到区域501之前卸除与安全区域502相关联的安全凭证。通过卸除与安全区域502相关联的安全凭证防止代码在函数完成之后继续带着安全区域502安全凭证运行。
为了使得来自安全域510的函数访问存储在安全存储器516中的数据,其被传递经过监视器520,所述监视器520确定代码是否被允许访问安全域514。当代码被允许访问安全域516时,监视器520为之提供所需的安全凭证。代码经过监视器520,以便被提供安全区域502的安全凭证。例如在恶意攻击期间,如果代码尝试从安全域510直接跳转到安全域514而不是经由监视器520,则代码将不具有安全区域501的所需安全凭证,并且将不会在安全域514中被处理。获得用以进入安全区域502的正确凭证的唯一方式是经由监视器520。此外,在安全区域502中实施函数之后,监视器520把代码的安全凭证改变回第一安全区域501的安全凭证,否则程序代码将继续带着第二安全区域502的安全凭证运行。
使用调用关口请求从第一安全区域501进入第二安全区域502。监视器520检查调用关口是否被存储在受信任的存储器中,并且当调用关口被存储在受信任的存储器中时提供访问区域502所需的安装凭证。每一个调用关口包括过渡指令(有时被称作调用关口指令或调用)和访问参数。
可以有多于一个调用关口524、526、528…52n被存储在受信任的存储器522中,每一个调用关口524、526、528…52n具有针对每一个调用关口的不同的相关联的访问参数。此外,可以有多于一个受信任的存储器存储调用关口。
每一个调用关口具有被满足的访问参数以使得监视器520提供用于访问安全区域502的安全凭证。事先已知对安全区域502的哪些访问被许可,因此定义被许可访问的调用关口被存储在受信任的存储器中。在一个实施例中,访问参数定义将在安全区域502中实施的函数。在另一个实施例中,访问参数指向取决于所定义的访问可以被写入、读取或掩蔽的存储器位置。
在另一个实施例中,调用关口包括过渡指令以及随后的可以通过预定义的目标特权执行的微代码指令。在一个实施例中,微代码指令可以是读取指令、写入指令、位掩码指令或者其组合。当需要多次实施某一动作时可以使用微代码,每一次实施所述动作时所述微代码通常将需要经过调用关口。举例来说,当需要对寄存器进行检查以便确定数据是否已被存储在寄存器中的特定存储器位置处时(在对该位置的写入指令之后),每一次实施所述检查时将需要包括过渡指令和函数(所述函数是检查存储器)的调用关口来访问存储器。这将导致程序在不同的安全区域之间来回过渡。通过包括用于存储器读取指令的微代码,可以重复实施检查直到数据已被存储在所述存储器位置处为止,而不需要持续访问调用关口。
可以在服务器处或者在安装期间对微代码进行验证。微代码仅被允许实施预定义的任务和访问预定义的位。在一个实施例中,微代码是本机CPU代码。在另一个实施例中,微代码是CPU代码的一个子集。
访问参数还可以使用目标ID来定义安全区域502内的哪一个模块可以被访问,例如安全域514或安全存储器516内的目标模块。在一个实例中,目标ID是目标模块的独有ID。目标ID的使用允许调用关口限制哪一个模块可以经由调用关口被访问。
访问参数还可以使用源ID定义访问请求可以来自何处。在一个实例中,源ID是主调模块的独有ID。源ID的使用允许把调用关口限制到仅来自(通过源ID列举的)预定义源模块的代码。在一个实施例中,如果在访问参数中没有定义源ID,假设在调用关口中定义的其他访问参数得到满足,则不具有源ID的调用关口可供所有源模块使用。或者,可以使用预定义的源ID以表明所有源ID都被允许。举例来说,用于8比特源ID的源ID 0Xff可以表明所有源ID都被允许。
每一个调用关口524、526、528…52n定义不同的访问参数。由于调用关口被存储在受信任的存储器中,因此无法被篡改。因此,即使调用关口被拷贝,其只能被拷贝到不受信任的存储器,因此将不会被系统承认。受信任的存储器之外的所有调用关口都被监视器忽略。因此,每一个调用关口无法被恶意攻击者使用来允许访问安全区域以实施不同的函数或者在安全区域内的不同位置处实施函数。
当某一调用关口不具有与存储在受信任的存储器中的任何调用关口相同的访问参数时,监视器520不提供用于访问安全区域502的安全凭证。举例来说,某一调用关口可以具有这样的访问参数,所述访问参数定义来自存储在安全区域501中的设备管理模块的指令被允许访问存储在安全区域502中的固件更新模块以实施函数X。所述调用关口被存储在受信任的存储器522中。由于所述调用关口被存储在受信任的存储器522中,因此监视器520为设备管理模块提供用于访问安全区域502的安全凭证。但是由于来自SSL库模块的指令通常不被允许访问固件更新模块,因此具有定义来自存储在安全区域501中的SSL库模块的指令被允许访问固件更新模块以实施函数X的访问参数的调用关口将不被存储在受信任的存储器中。由于这样的调用关口没有被存储在受信任的存储器522中,因此监视器520不为SSL库模块提供用于访问安全区域502的安全凭证。
监视器520参考在请求中所涉及的调用关口以确实是否允许访问。调用关口被存储在受信任的存储器522中。监视器520检查所述调用关口是否被存储在受信任的存储器522中。当调用关口没有被存储在受信任的存储器中时,监视器520将不允许访问安全区域502。在一个实施例中,当调用关口没有被存储在受信任的存储器中时,生成违反安全指示。这样就防止恶意攻击者创建其自身的调用关口以获得对安全区域的访问。由恶意攻击者创建的调用关口只能被存储在不受信任的存储器中。由于系统无视存储在不受信任的存储器中的调用关口,因此对安全区域的访问将不被准许,并且违反安全指示将表明发生了恶意攻击尝试。
一旦监视器520确定调用关口被存储在受信任的存储器中,监视器520不需要验证在调用关口中定义的访问参数。由于调用关口被存储在受信任的存储器中,因此监视器认为调用关口访问参数已经得到验证。
图6是示意性地示出用于确定是否允许对安全区域的访问的处理的流程图。在步骤S601处,在程序代码中到达过渡指令。在步骤S602处,监视器520确定具有调用关口访问参数的调用关口是否被存储在受信任的存储器522中。当所识别出的调用关口没有被存储在受信任的存储器522中时(“否”),所述方法移动到步骤S603,并且生成出错消息。当所识别出的调用关口被存储在受信任的存储器522中时(“是”),所述处理移动到步骤S604,并且监视器520准许访问安全区域并且对处理电路应用适当的安全凭证(在目标区域处所需的安全凭证)。在步骤S605处,解释调用关口访问参数,并且在安全区域中完成目标函数。在步骤S606处,在安全区域中完成目标函数之后,监视器从处理电路中去除目标安全凭证,处理电路被返回到主调者(源区域)安全凭证,并且处理电路返回到较低安全区域。
当在步骤S603处生成出错消息时,拒绝对安全区域502的访问。
由于调用关口被存储在受信任的存储器522中,因此监视器520可以信任在调用关口中提供的访问参数。恶意攻击者可以创建其自身的调用关口,但是将不可能把该调用关口存储在受信任的存储器中,因此尽管“虚假”调用关口定义允许访问,但是由于“虚假”调用关口没有被存储在受信任的存储器中,因此监视器520将不会准许访问。当调用关口没有被存储在受信任的存储器中时,将返回出错消息,比如“无效调用关口”。
在一个实施例中,调用关口在设备或数据处理装置的制造时被写入到受信任的存储器。此外,调用关口例如可以在更新期间被写入到受信任的存储器,但是在该例中需要增强的安全凭证,比如有效的签名。随后在调用关口被添加到受信任的存储器之前实施验证。一旦调用关口已被存储在受信任的存储器中,则不需要再次实施这一增强的验证。在没有有效签名的情况下不可能把调用关口存储在受信任的存储器中,从而防止恶意攻击者创建其自身的调用关口。
受信任的存储器是受信任的安全存储设备,其不允许恶意攻击者把数据(比如“虚假”调用关口)存储在所述存储设备中。在一个实施例中,所述受信任的存储设备是同时提供受信任和不受信任的存储区域的存储设备的受信任的部分。可以使用任何形式的受信任的存储器。在一个实施例中,受信任的存储器是无法由运行中的代码写入的任何存储器/存储设备。当仅有受信任的代码能够对其进行排他的写入访问时,任何存储器都可以被视为受信任的存储器。在一个实例中,受信任的存储器是比如只读存储器(ROM)的安全存储器,例如只能在运行时间被写入的闪存(FLASH)存储器。在另一个实施例中,可以使用存储器保护方案把存储器标记成不可改变,从而防止恶意攻击者把数据(比如“虚假”调用关口)存储在存储器中。在另一个实例中,受信任的存储器可以是受保护的SRAM。
在一个实施例中,调用关口包括过渡指令以及随后的访问参数。在一个实施例中,过渡指令是SVC指令调用。在另一个实施例中,取决于所使用的系统,过渡指令可以是被用来在安全域状态之间进行过渡的任何其他平台中断调用或系统调用。
在一个实施例中,访问参数是目标函数。在一个实施例中,访问参数被定义在元数据中。在另一个实施例中,访问参数是目标函数元数据。目标函数元数据指向目标函数,并且紧接在过渡调用之后被提供或者在关于过渡调用的固定位置处被提供。在程序代码中的过渡指令调用之后,监视器取回目标函数元数据,检查具有被定义成访问参数的目标函数的调用关口是否被存储在受信任的存储器中,并且当调用关口被存储在受信任的存储器中时允许访问安全区域以实施目标函数。
在一个实施例中,调用关口都被存储在受信任的调用关口存储器中。在该实施例中,过渡指令之后是指向受信任的调用关口存储器中的调用关口的指针。
在另一个实施例中,调用关口包括过渡指令以及随后的指向寄存器(目标寄存器)的一个或多个特定位的指针。举例来说,寄存器的仅仅一个位(特定位)可以被访问,同时寄存器中的其他位则不可被访问。在一个实施例中,调用关口可以包括过渡指令以及之后的指向目标寄存器的指针连同可选的访问掩码。可访问位的位掩码和指向相应寄存器的指针被定义在调用关口的访问参数中,并且调用关口被存储在受信任的存储器中。因此,寄存器的其他位无法经由调用关口被访问。实例如下:地址=0x8BADF00D;访问读取掩码=0xFFFFFFFF;访问写入掩码=0x00000002允许调用关口的请求者(源)读取地址0x8BADF00D处的所有位,但是作为0x2掩码的结果只允许写入编号为1的位(从零计数)。
在一个实施例中,从堆栈上的返回地址推断出调用关口的位置。通过修改堆栈上或者链接-返回寄存器内部的返回地址,调用关口在访问参数之后返回。在另一个实施例中,如果二进制程序在不支持调用关口的系统上尝试调用关口,则调用关口还包括在过渡指令与访问参数之间提供的跳转指令。(例如在图10A中描绘的)跳转指令防止系统从过渡指令返回时的不可预测行为,并防止结束在元数据而不是有效代码中。如果监视器从过渡指令返回到访问参数元数据之前而不是元数据之后的程序代码,那么跳转指令指示处理单元跳过访问参数元数据。这样就允许程序在调用关口中断之后继续运行。跳转指令还可以被利用来跳转到微代码指令或元数据之后,从而有效地将其略过。
在另一个实施例中,调用关口还包括已定义数字。所述已定义数字被视为访问参数。所述已定义数字被仔细选择成在代码中不产生有效结果的32位数字。所述已定义数字不表示任何意义,并且被选择成不会在代码中自然发生。在一个实施例中,任何随机数都可以被用作所述已定义数字。但是当所述已定义数字被选择成不会在可执行代码中出现时,不管是直接出现(作为整字,例如一个32位值)还是由于错误对准而出现(作为耦合到其他指令的半字),对于调用关口的服务器侧验证更强并且潜在地更容易。已定义数字的一个实例是以十六进制写出的32位数字DEADBEEF。在一个实施例中,对于每个指令集提供一个已定义数字。所述已定义数字对于所有平台可以是相同或不同的。
所述已定义数字可能会偶然出现在系统中,或者如果所述已定义数字是数据,则可以使用工具链选择另一已定义数字并且避免冲突。
所述已定义数字总是被放置在关于过渡指令的预定位置处。因此,通过识别出(多个)已定义数字并且随后确定每一个调用关口关于每一个识别出的已定义数字的位置,有可能对程序代码进行扫描并且识别出所有的调用关口。一旦识别出调用关口,可以在服务器处对其进行验证。
在另一个实施例中,调用关口还包括目标ID。目标ID是将要访问的安全域内的模块的地址。当在安全域中存储有多于一个模块时使用目标ID。
在另一个实施例中,调用关口还包括多于一个目标ID。当调用关口提供对多于一个预定义目标模块的访问时,提供目标ID的列表。在一个实施例中,目标ID的列表被提供在元数据中。
在另一个实施例中,调用关口还包括源ID。源ID是被允许访问安全域的模块的地址。在一个实施例中,源ID是主调模块的独有ID。在另一个实施例中,当源ID等于0时,调用关口可用于所有模块。在一个实施例中,系统丢弃使用另一模块的调用关口的所有尝试。举例来说,如果WiFi堆栈尝试使用为设备管理模块提供的调用关口,所述调用关口的源ID将定义设备管理模块的独有ID,因此无法被具有不同的独有ID的WiFi堆栈使用。
在另一个实施例中,调用关口还包括多于一个源ID。当调用关口提供来自多于一个预定义源模块的访问时,提供源ID的列表。在一个实施例中,源ID的列表被提供在元数据中。
在一个实施例中,调用关口还包括可以包含关于调用关口和访问参数的信息的标志字段。在一个实施例中,设定标志以表明存在访问参数。在另一个实施例中,可以使用标志来表达访问参数。实例如下:
-用于在目标函数中使用相对/绝对函数指针的标志;
-用于例如源模块上的限制之类的安全特征的标志。
在另一个实施例中,访问参数包括目标实例,这对于C++调用是可选的。目标实例指向特定于类的数据,并且允许把函数的特定类存储器实例关联到源模块。
在一个实施例中,可以使用SVC编号在多个调用关口之间作出区分。SVC编号被紧接着SVC调用(调用关口过渡指令)提供。举例来说,SVC编号“n”可以被用来表明包括目标函数和目标ID的调用关口。此外,可以使用不同的SVC编号(例如SVC编号“m”)来表明包括目标函数、目标ID和源ID的调用关口。
每一个调用关口包括过渡指令以及之后的访问参数或访问参数的组合。访问参数可以按照任意顺序提供,但是如前所述,如果将使用已定义数字,则所述已定义数字将被放置在参照过渡指令的一致位置处。
图7A示意性地示出了一种基本调用关口情形。调用关口700表明所有源模块都被允许在模块1 720处实施函数A 710。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数A(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数A只能在模块1处被实施)。在另一个实施例中,调用关口还可以包括源ID=0(源:0)这一项,从而表明所有源模块都可以在模块1处实施函数A。在这种情形中,模块1 720被提供在需要目标安全凭证的安全区域中。
图7B示意性地示出了另一种基本调用关口情形。调用关口740表明只有源模块3730被允许在模块1 750处实施函数B 760。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数B(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数B只能在模块1处被实施);源ID=3(表明只有源模块3可以在模块1处实施函数B)。在这种情形中,模块1 750被提供在需要目标安全凭证的安全区域中。
图7C示意性地示出了一种多调用关口情形。第一调用关口705允许所有源模块在目标模块1 725处实施函数A 715。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数A(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数A只能在目标模块1处被实施);源ID=0(表明所有源模块都可以在目标模块1处实施函数A)。第二调用关口735允许源模块2 745在目标模块1 725处实施函数B。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数B(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数B只能在目标模块1处被实施);源ID=2(表明源模块2可以在模块1处实施函数B)。第三调用关口765允许源模块3 775在目标模块1 725处实施函数B 755。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数B(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数B只能在目标模块1处被实施);源ID=3(表明源模块3可以在模块1处实施函数B)。最后,第四调用关口785允许源模块3 775在目标模块1 725处实施函数C 795。针对这种情形的示例性调用关口包括:过渡指令(表明调用关口中断)和包括定义函数C(目标函数)的元数据的访问参数;已定义数字;目标ID=1(表明函数C只能在目标模块1处被实施);源ID=3(表明源模块3可以在目标模块1处实施函数C)。在图7C的情形中,目标模块1 725被提供在需要目标安全凭证的安全区域中。
如前所述,调用关口被存储在受信任的存储器中。但是调用关口可以被存储在提供在源模块、目标模块处的受信任的存储器中或者被存储在单独的受信任的存储器中。参照图7C,第一调用关口705可以被存储在提供在目标模块1 725处的受信任的存储器中;第二调用关口735可以被存储在提供在源模块2 745或目标模块1 725处的受信任的存储器中;并且第三调用关口765和第四调用关口785可以被存储在提供在源模块3 775或目标模块1 725处的受信任的存储器中。
下面是提供在代码中的调用关口的实例。在该例中,所述已定义数字被称作“魔法”数字。
示例性使用:
/*call__secure_print使用secure_print_box所拥有的CGW*/
secure_gateway(secure_print_box,__secure_print,0,0,0,0);
示例性调用验证:
在一个实施例中,在服务器处编译的设备可以包括来自多个不同提供者的多个固件模块以便创建总体设备。每一个模块具有其自身的安全需求。在一个实施例中,所述设备的编译器定义了安装规则,比如:每一个模块仅被允许为其自身模块内的函数提供调用关口。在每一个固件模块的安装时,确认对于固件模块提供者的签名的验证。对每一个模块的处理代码实施扫描,并且识别出提供在代码中的所有已定义数字。随后有可能通过每一个调用关口与每一个已定义数字的位置之间的已知固定偏移量识别出模块内的每一个调用关口。一旦检测到各个调用关口,则识别出每一个调用关口的参数。当某一调用关口指向在其中提供该调用关口的模块之外的模块时,拒绝固件模块到IoT设备的安装。在另一个实施例中,当某一调用关口允许从在其中提供该调用关口的模块之外的模块进行访问时,拒绝固件模块到IoT设备的安装。
在另一个实施例中,有可能使得IoT设备对每一个模块的处理代码实施扫描,以便确定是否有任何调用关口指向其自身模块之外的模块或者允许从其自身模块之外的模块进行访问。随后有可能使得IoT设备拒绝安装包含不符合(多条)安装规则的调用关口的任何模块。
图8是示意性地示出用于对调用关口进行验证的处理的流程图。在步骤S801处,定义安装规则。在该例中,安装规则是:每一个模块仅被允许为其自身模块内的函数提供调用关口。在步骤S802处,提议用于安装的模块。在步骤S803处,确定模块提供者的签名是否得到确认。如果模块提供者的签名没有得到确认,则在步骤S804处拒绝模块的安装。如果模块提供者的签名得到确认,则所述处理继续移动到步骤S805。在步骤S805处,对每一个模块的处理代码实施扫描,并且识别出提供在代码中的所有已定义数字。在步骤S806处,通过每一个调用关口与每一个已定义数字的位置之间的已知固定偏移量识别出各个调用关口。在步骤S807处,解释每一个调用关口的访问参数。在步骤S808处,确定是否所有调用关口都符合安装规则。如果有任何调用关口不符合安装规则,则在步骤S809处拒绝模块的安装。如果所有调用关口都符合安装规则,则在步骤S810处允许模块的安装,并且信任在该模块内定义的调用关口。
在另一个实施例中,可以在步骤S808之后但是在步骤S810处的安装之前实施确认提供者签名的步骤S803。
图8的处理可以在服务器处或者在设备处实施。此外,图8中示出的处理还可以在安装代码更新时使用。
在另一个实施例中,在服务器处编译的IoT设备可以包括来自多个不同提供者的多个模块,其被链接以创建总体设备。每一个模块具有其自身的安全需求。在一个实施例中,取代如前面所描述的那样单独安装每一个模块,使用设备的多个模块的整体固件镜像。服务器使用由受信任的源创建的映射文件对系统的模块以及其在固件镜像中的最终位置进行映射。随后有可能使得服务器记住哪一个模块来自哪一个提供者。随后在服务器处对总体设备的最终得到的整体固件镜像的处理代码实施扫描,并且识别出提供在代码中的所有已定义数字。随后有可能通过每一个调用关口与每一个已定义数字的位置之间的已知固定偏移量识别出整体设备的代码内的每一个调用关口。一旦检测到各个调用关口,识别出每一个调用关口的参数。随后使用映射文件确定每一个调用关口的提供者和/或模块。在一个实施例中,设备的编译器已定义了安装规则,比如:每一个模块仅被允许为其自身模块内的函数或者为由相同提供者提供的模块内的函数提供调用关口。如果其中任一个调用关口指向在其中提供该调用关口的模块之外的模块,或者如果其中任一个调用关口允许从在其中提供该调用关口的模块之外的模块访问,则拒绝模块到设备的安装。此外,如果其中任一个调用关口指向并非由在其中提供该调用关口的模块的相同提供者所提供的模块或者允许访问该模块,则拒绝模块到设备的安装。服务器拒绝对固件镜像进行签名,并且固件不被允许安装在设备处。在一个实施例中,在服务器处的安装时实施对于调用关口的验证,在服务器处的该验证之后,调用关口被信任。
在另一个实施例中,由于IoT设备的编译器定义安装规则,因此如果在其中提供调用关口的模块之外的某一模块是来自如在安装规则中定义的受信任的提供者(而不是调用关口模块的提供者),则有可能接受指向该模块或者允许从该模块进行访问的调用关口。
在另一个实施例中,有可能使得IoT设备使用映射文件并且对总体设备的最终得到的整体固件镜像的处理代码进行扫描,以便确定是否有其中任一个模块包含不符合(多条)安装规则的调用关口,并且拒绝这些模块的安装。
在另一个实施例中,为某一提供者指派特权,从而允许其被准许访问不同提供者的固件。在一个实施例中,在准许访问之前需要进一步的验证,比如安全签名。随后可以许可来自所述提供者的模块的调用关口指向所述不同提供者的模块,或者允许从所述不同提供者的模块进行访问。
在发起固件更新时,对固件更新的签名进行验证。在验证了签名之后,对总体设备的整体固件镜像的处理代码实施扫描,并且识别出提供在代码中的所有已定义数字。随后有可能通过每一个调用关口与每一个已定义数字的位置之间的已知固定偏移量识别出总体设备的代码内的每一个调用关口。一旦检测到各个调用关口,识别出每一个调用关口的参数。随后使用映射文件确定每一个调用关口的提供者和/或模块。在一个实施例中,IoT设备的编译器已定义了安装规则,比如:每一个模块仅被允许为其自身模块内的函数或者为由相同提供者提供的模块内的函数提供调用关口。如果其中任一个调用关口指向在其中提供该调用关口的更新模块之外的模块,或者如果其中任一个调用关口允许从在其中提供该调用关口的更新模块之外的模块进行访问,则拒绝固件更新模块到IoT设备的安装。此外,如果其中任一个调用关口指向并非由在其中提供该调用关口的更新模块的相同提供者所提供的模块或者允许访问该模块,则拒绝固件更新模块到IoT设备的安装。
可以在服务器处每次更新固件时实施这一验证。在服务器处的验证之后,调用关口被信任。
对于每次更新实施一次验证,一旦获得验证就更新固件,并且调用关口被信任。
图9是示意性地示出用于对调用关口进行验证的处理的流程图。在步骤S901处,来自多个不同提供者的多个模块被链接以便创建总体设备。在步骤S902处,确定是否每一个模块提供者的签名都得到确认。如果某一模块提供者的签名没有得到确认,则在步骤S903处拒绝该模块。如果各个模块提供者的签名得到确认,则所述处理继续移动到步骤S904。在步骤S904处,创建总体设备的映射文件。在步骤S905处,定义安装规则。在该例中,安装规则是:每一个模块仅被允许为其自身模块内的函数或者为由相同提供者提供的模块内的函数提供调用关口。在步骤S906处,对总体设备的处理代码实施扫描,并且识别出提供在代码中的所有已定义数字。在步骤S907处,通过每一个调用关口与每一个已定义数字的位置之间的已知固定偏移量识别出各个调用关口。在步骤S908处,解释每一个调用关口的访问参数。在步骤S909处,使用映射文件确定每一个调用关口的提供者和/或模块。在步骤S910处,确定是否所有调用关口都符合安装规则。如果其中任一个调用关口不符合安装规则,则在步骤S911处拒绝包括该调用关口的模块的安装。如果各个调用关口符合安装规则,则在步骤S912处允许安装,并且调用关口被信任。
在另一个实施例中,可以在步骤S912处的安装之前的任何阶段实施确认提供者的签名的步骤S902。在另一个实施例中,可以在步骤S910之前的任何阶段实施定义安装规则的步骤S903。
图9的处理可以在服务器处或者在设备处实施。此外,图9中所示的处理还可以在安装代码更新时使用。
图8和9的处理允许把安全验证从运行时间移动到安装时间或者移动到建立时间之后。
正如前面所描述的那样,同样也在图10A中描绘的跳转指令通过分支越过已定义数字和元数据而防止系统在从过渡指令返回时的不可预测行为。
图10A和10B提供了调用关口的两种变型的并排比较。
图10A示出了先前参照图1-9描述的调用关口,并且由针对调用关口的SVC过渡指令(异常)1001发起。已定义数字(也被称作“魔法”数字)1005和元数据条目1003a、1003b、1003c存在于关于过渡指令1001的预定位置处以供调用关口使用。
图10B示出了先前的实施例的一种变型,其中过渡指令被省略。这种变型在后文中被称作推测性调用关口。在该实施例中,首先到达跳转操作1010(例如分支指令)并且直接分支到代码1013,所述代码1013是可执行调用关口函数并且可以由多条用于执行的指令构成。
在一些平台上,可以通过存储器保护单元(MPU)来实施存储器保护,从而把存储器划分成各个区段并且对于每一个存储器区段允许单独的保护属性(例如访问参数等等)。在某些情况下,可能优选的是推测性地尝试访问特定存储器区段中的位置,并且只有在在子区段或单独的存储器位置上具有附加的保护的某些情况下失败,从而改进了设备的总体性能。这方面的一个实例是设备中的系统寄存器,其可以被存储器映射并且驻留在MPU的一个或多个区段中。这样的系统寄存器可以具有附加的属性,这意味着只有在安全状态下才能对其进行访问。由于一些MPU内的有限资源,只有已定义数目的区段是可规定的,这意味着把单独的寄存器明确地隔离到具有相应属性的专用存储器区段中可能是不切实际的。
如果MPU由于对合并有调用关口代码的此类存储器区段的访问不被许可而发出异常(例如终止),则执行分支到异常处理程序或监视器。由于从该处取得异常的地址被保留,因此已定义数字1012和元数据条目1011a-1011c的位置对于异常处理程序/监视器是已知的(或者是可确定的),并且操作于是可以按照先前参照图1到10A所描述的实施例继续进行。
在一些实施例中,例如由于设备的流水线化或执行特性,取得异常的点可能是不精确的。为了在对调用关口代码1013的推测性访问之后防止对于另外的操作的任何不合期望的执行,可以用一条或多条“无操作”(NOPS)指令填充存储器,所述指令不执行操作或者不导致改变设备中的数据和状态。
在另一个实施例中,设备可以包括并非例如都在设备制造时被同时安装的多个模块。由于可以在不同的时间安装附加的模块,因此不可能在设备制造时为这些附加模块提供调用关口。因此,可以在每一个模块中提供代理调用关口,每一个代理调用关口定义针对该模块的特定访问许可。每一个代理调用关口包括关于所允许的访问许可的一般性描述,但是其本身并非调用关口。举例来说,关于所允许的访问许可的一般性描述可以定义哪些类型的模块被允许和不被允许访问目标模块,并且定义源模块可以以及不可以在目标模块处实施哪些函数。
在一个实施例中,代理调用关口被提供在目标模块中,所述目标模块被提供在设备处,所述代理调用关口包括关于所允许的访问许可的一般性描述。代理调用关口可以被存储在受信任的存储器中,其中所述受信任的存储器被存储在目标模块处,或者代理调用关口可以被存储在设备处的受信任的存储器中。当要把新模块安装在设备中并且所述新模块需要访问已经被提供在设备处的目标模式时,为新模块提供调用关口,其允许新模块在目标模块处实施函数。为新模块提供的调用关口符合在目标模块处提供的代理调用关口中所定义的关于所允许的访问许可的一般性描述。在新模块的安装期间,监视器验证提供在新模块处的调用关口是否符合定义在代理调用关口中的访问许可。当调用关口不符合定义在代理调用关口中的访问许可时,新模块被丢弃并且不被安装。监视器将允许提供在新模块处的调用关口限制定义在代理调用关口中的访问许可,但是将不允许提供在新模块处的调用关口扩展定义在代理调用关口中的访问许可。此外,只有当提供在新模块处的调用关口把源模块限制到所述新模块时,监视器才将允许该调用关口,也就是说,提供对其他模块的访问的调用关口不被允许。
在一个实施例中,提供在新模块处的调用关口包括指向代理调用关口的目标指针。在另一个实施例中,提供在新模块处的调用关口(例如在标志字段中)被标记成新调用关口。验证独立于所使用的编程语言。
前面所描述的调用关口触发从源域处的当前活跃的执行环境到目的地(目标)域处的另一执行环境的情境切换。域被视为系统的一个或多个模块,每一个域的一个或多个模块都具有相同的安全特权和访问。
调用关口通过准许如在访问参数中定义的排他访问而保护目标域。只有当访问参数被满足从而使得监视器提供所需的安全凭证时,运行中的代码才被允许访问目标域。如前所述,访问参数可以定义谁(哪一个主调者/源)被允许调用目标域,以及在目标域处许可实施哪些函数/访问等等。因此,调用关口把到目标域的进入点强制到如在访问参数中定义的特定主调者以及目标域处的特定函数/访问,从而增强了目标域处的安全性。除了在调用关口中定义的那些函数/访问之外,主调者被防止在目标域处实施任何其他函数/访问,从而使得在目标域处完成所允许的函数/访问之后,运行中的代码不再被允许访问目标域,并且安全凭证被去除。
系统的用户不需要看到正由调用关口触发源域与目标域之间的情境切换。
保护目标域的调用关口可以被视为目标调用关口。目标调用关口提供保护目标域免于未经授权的访问的保证(其授权访问),例如只有定义在目标调用关口中的函数可以在目标域处被在目标调用关口中定义的主调者实施。
但是目标调用关口并不强制与源模块的任何显式关系,这是因为进入目标域是单向需求。监管模块(比如监视器)决定是否允许过渡,也就是目标调用关口是否被存储在受信任的存储器中以及受信任的目标调用关口是否许可进入到目标域。因此,目标调用关口并不针对目标域保护源域。
在某些情况下,比如在互不信任的安排中,主调者可能需要针对被调目标域保护其自身的资源。举例来说,当代码正在源域处的安全关键情境中运行并且调用处于目标域中的不受信任的外部API时,希望源情境强制去到不同的安全情境的情境切换以便对于目标域隐藏/限制其自身的资源,并且同时在目标域处实施函数。举例来说,可能希望暂停源域的访问特权(也就是说强制从源情境到不同的安全情境的情境切换),并且同时在目标域处执行函数。但是目标调用关口仅仅保护目标域,因此不需要情境切换来保护源域处的资源。
如图11A中所示,目标调用关口1210被用来生成从第一域1200(源域)处的当前活跃的执行环境到第二域1201(目标域)的情境切换,从而使得可以实施所需的函数1202。目标调用关口1210把主调者(源)的进入点限制到在目标域1201处实施特定函数1202。但是目标调用关口1210并不保护第一域1200(源域)。如果目标调用关口1210例如由于其已被损坏而不实施情境切换,则第一域1200认为切换已发生,并且在没有“意识到”的情况下保持活跃。
图11B示出了使用两个目标调用关口1211、1210解决这一问题的一种实现方式。在图11B中,提供(由第一域1200生成的)中间件层1203。中间件层1203首先经由受信任的目标调用关口1211离开第一域1200,并且随后使用第二目标调用关口1210切换到第二域1201。在图11B的实施例中,源域1200受到保护,并且即使目标调用关口1210不实施情境切换,可能发生的最坏情况也就是代码被困在中间件层1203中。但是图11B的实施例需要两次过渡调用(SVC调用),并且切换较慢且容易出错,这是因为需要第一域生成中间件层1203,从而增加了间接的一层。
一种保护源域的不同方法是提供离开调用关口。离开调用关口表达在目标域处执行函数的同时暂时暂停源域的访问特权的需求,从而强制运行中的代码离开源域。此外,(前面所描述的)目标调用关口可以被利用来表达针对在目标域处实施特定函数的需求,从而强制去到目标域的进入点。
离开调用关口不同于目标调用关口,这是因为离开调用关口可以链接到另一个关口(比如目标调用关口),并且能够请求放弃当前情境。
离开调用关口强制运行中的代码离开当前(源)域。此外,离开调用关口还可以强制从源域离开的特定离开点,以及仅仅强制运行中的代码离开源域。每一个源域可以具有所需数目的离开点,并且为每一个离开点提供不同的离开调用关口。
每一个关口成为定义从源域离开的离开点的离开调用关口与定义进入目的地域的进入点的相应目标调用关口之间的调和。有可能把离开调用关口和相应的目标调用关口视为一对,定义使得从源域到目标域的切换发生的离开点和进入点。离开调用关口与相应的目标调用关口之间的调和可以由监管模块实施,比如前面所描述的监视器。
但是如前所述,可能并不总是需要离开调用关口,例如当不需要情境切换时就不需要离开调用关口,在这种情况下,仅提供目标调用关口。举例来说,当第一模块调用第二模块中的函数并且第二模块实施去到其自身域的安全关口时,第一模块有效地离开其域。离开调用关口强制代码离开当前域,但是并不排除发生其他过渡。
离开调用关口包括过渡指令/调用连同(多个)访问参数。根据一个实施例,离开调用关口访问参数定义运行中的代码将离开源域。但是离开调用关口还可以定义从源域离开的排他离开点。因此,访问参数可以定义源域的哪些访问特权被暂停/不被暂停。举例来说,离开调用关口可以定义被暂停的访问特权的列表和/或不被暂停的访问特权的列表。类似于前面参照(目标)调用关口描述的访问参数,离开调用关口访问参数还可以定义被允许在源域处实施的函数、可以实施函数的被调者(目标)等等。举例来说,离开调用关口访问参数可以包括:
-目标ID,比如目标域/模块的独有ID;
-标识目标域/模块的安全情境的目标安全情境ID;
-源ID,比如源(主调)域/模块的独有ID;
-标识被允许/不被允许实施的(多项)函数的函数ID;
-标识被允许/不被允许实施的访问的访问ID,例如目标域被允许或不被允许访问堆栈,以及/或者目标域被允许或不被允许访问外设;
-标识未被暂停的访问特权的特权ID;
-标识被暂停的访问特权的暂停特权ID等等。
监管模块(比如监视器)可以实施合理性检查(sanity check),从而把一个/一些/所有离开调用关口访问参数与目标调用关口访问参数进行比较。举例来说,监视器可以针对目标调用关口安全情境ID检查离开调用关口目标安全情境ID。
离开调用关口访问参数还可以包括已定义数字,正如前面所描述的那样。所述已定义数字总是被放置在关于过渡指令的预定位置处。离开调用关口已定义数字可以与目标调用关口已定义数字相同或不同。因此,通过识别出(多个)已定义数字并且随后确定每一个离开调用关口关于每一个识别出的已定义数字的位置,有可能对程序代码进行扫描并且识别出所有离开调用关口。一旦识别出各个离开调用关口,可以在服务器处对其进行验证。
如前所述,目标调用关口访问参数可以包括已定义数字、目标ID(比如目标域/模块的独有ID)、源ID(比如源(主调)域/模块的独有ID)、标识被允许实施的函数的函数ID、标识被允许实施的访问的访问ID等等。
目标调用关口和离开调用关口允许互不信任的情境切换。目标调用关口通过强制去到目标域的进入点而保护目标域,离开调用关口通过强制从源域离开的离开点而保护源域。举例来说,离开调用关口在运行中的代码上强制特权减少,以便在目标域处实施函数的同时暂时暂停源域的(其中一些)访问特权,并且放弃其执行环境(源域)。目标调用关口允许运行中的代码切换到目标域访问许可以便在目标域处实施函数。因此,运行中的代码在目标域处实施函数的同时不保持源域的访问特权,除非离开调用关口明确地允许这些特权。根据一个实施例,目标调用关口不需要关于离开调用关口的任何知识。
正如前面所讨论的那样,代码经过监视器320,以便为之提供目标域的安全凭证。监视器320还在访问目标域之前为代码去除/提供源域的安全凭证。
离开调用关口允许在返回时重新激活源情境,这是因为源域访问特权仅仅对于在目标域处实施函数的持续时间被暂时暂停。当运行中的代码返回到源域时,源域访问特权被监视器恢复。
离开调用关口在互不信任的环境中是有利的,其中目标域和源域具有相同的特权等级但是具有不同的访问许可。
目标调用关口与离开调用关口之间的调和由监管模块,比如的uVisor调解。监管模块检查目标调用关口、离开调用关口以及定义在调用关口中的访问参数的格式。访问参数可以被定义在ACL中。但是监管模块还可以调和其他参数,比如用于目标/源情境的框标识符(box identifier)、被调函数地址等等。基本上可以调和所有可能的调用关口参数。监管模块随后通过单一过渡调用(比如SVC调用)实施从源情境到目标情境的单一情境切换,并且把返回寄存器设定在离开调用关口的位置之后。离开调用关口和相应的目标调用关口充当一对。
图12示出了被用来生成从源域1306处的当前活跃的执行环境到目标域1300的情境切换的目标调用关口1301,从而使得可以实施所需的函数1302。目标调用关口1301限制去到特定函数1302的实施的进入点。为源域1306提供离开调用关口1308,其在目标域1300处实施函数1302的同时暂时暂停源域的访问特权。离开调用关口1308强制主调者(源)从源域1306离开的离开点。但是离开调用关口1308还允许实施特定函数,比如由目标访问源域1306的安全存储器1307,从而使得可以完成函数1302。
离开调用关口的其中一些访问参数可以是动态的。动态调用关口参数是可以被改动的参数。因此,动态参数是可以进入任何可修改存储器的任何参数。举例来说,动态参数可以是指向可修改存储器位置(例如,SRAM)的指针。此外,动态参数可以是通用寄存器,因为通用寄存器可以被用来保存针对函数调用的自变量。离开调用关口不需要包括动态参数,并且被存储在只读存储器中的离开调用关口只具有静态(也就是不可改动的)参数。但是离开调用关口有可能具有存储在只读存储器中的至少一个静态(也就是不可改动的)参数,以及存储在可修改存储器(例如SRAM)中的动态(也就是可改动的)参数。如前所述,目标调用关口包括静态访问参数,也就是无法被改动的访问参数。离开调用关口的动态参数的一个实例是回调参数。参照图13,在编写应用模块1401时,应用模块1401将被安装到其中的域的身份是未知的。因此,回调资源1405的ID是未知的。其结果是,作为动态参数提供离开调用关口的回调参数。在应用1401的安装之后,动态地更新应用的离开调用关口1408的回调参数,以便包括所述应用已被安装到其中的域1406的回调ID/地址。离开调用关口1408定义当实施了在目标调用关口1407中定义的函数时,目标被允许访问源域回调资源1405以提供“完成”消息。离开调用关口1408的回调参数被视为是动态的,这是因为其可以被改动。但是离开调用关口的其中一些或所有其他参数可以是静态的。
离开调用关口的动态参数越多,建立/保持离开调用关口的安全性就越难。这是因为对于为离开调用关口定义的每一个动态参数,难以防止恶意攻击者同样动态地改变该参数。
目标调用关口的其中一个或多个参数可以定义是否接受来自具有动态参数的离开调用关口的传入调用。目标调用关口的参数可以定义该目标调用关口将不接受来自具有一个或多个动态参数的离开调用关口的传入调用。目标调用关口的其中一个或多个参数可以定义该目标调用关口将接受离开调用关口的哪一个(哪些)参数是动态的。目标调用关口的其中一个或多个参数可以定义该目标调用关口要求离开调用关口的哪一个(哪些)参数是静态的。
目标调用关口和离开调用关口的静态参数被认为是关键的。举例来说,一些参数可能不是关键的,比如前面所讨论的ID参数,而例如将在目标模块处实施什么函数之类的其他参数则可以被认为是关键的,在这种情况下,ID参数可以是动态的,函数参数则是静态的。
根据另一个实施例,可以提供进入调用关口以取代目标调用关口,进入调用关口表达针对在目标域处实施特定函数的需求,从而强制去到目标域的进入点。进入调用关口与目标调用关口的不同之处仅在于进入调用关口可以具有至少一个动态参数,也就是可以被改动的参数。但是进入调用关口的其中一些或所有其他参数可以是静态的,也就是无法被改动的静态参数。当目标调用关口的其中一个或多个参数是动态时,目标调用关口可以被视为进入调用关口,或者换句话说,目标调用关口是仅具有静态参数的进入调用关口。由于目标调用关口的所有参数都是静态的,因此其安全性可以被完全验证,而进入调用关口的安全性则无法被完全验证,因为进入调用关口具有至少一个动态参数。
离开调用关口和进入调用关口都有可能具有动态参数(通过寄存器或者指向SRAM位置/不受信任的存储器的指针)。
进入调用关口和离开调用关口允许互不信任的情境切换。进入调用关口通过强制去到目标域的进入点而保护目标域,而离开调用关口通过强制从源域离开的离开点而保护源域。
进入调用关口与离开调用关口之间的调和由监管模块,比如或者用于互不信任的安全环境的任何其他管理程序调解。正如在后面将参照图15更加详细地讨论的那样,运行中的代码遇到离开调用关口过渡指令,所述指令发起从源域到目标域的过渡。运行中的代码不“直接”遇到目标/进入调用关口过渡指令。因此,监管模块通过单一过渡指令/SVC调用实施从源到目标域的单一情境切换。监管模块(比如监视器)作为第一过渡指令的一部分检测第一调用关口(离开调用关口),并且根据一个实施例,遵循静态或动态参数指针以检测第二调用关口(目标/进入调用关口)。取代从第一调用关口(离开调用关口)返回,其将调和全部两个关口并且执行全部两个动作的组合并且随后如同从第二调用关口返回,就如同离开调用关口和目标/进入调用关口被分开执行一样。
与离开调用关口一样,进入调用关口的动态参数越多,建立/保持进入调用关口的安全性就越难。
目标/进入调用关口访问参数还可以包括动态参数ID和/或静态参数ID。动态参数ID标识目标/进入调用关口将接受离开调用关口的哪些参数是动态的。静态参数ID标识目标/进入调用关口要求离开调用关口的哪些参数是静态的。此外,离开调用关口访问参数还可以包括动态参数ID和/或静态参数ID。动态参数ID标识离开调用关口将接受进入调用关口的哪些参数是动态的。静态参数ID标识离开调用关口要求目标/进入调用关口的哪些参数是静态的。
进入调用关口和离开调用关口的静态参数被视为是关键的。
如前所述,每一个源域可以具有所需数目的离开点,并且为每一个离开点提供不同的离开调用关口。此外,每一个目标域可以具有所需数目的进入点,并且为每一个进入点提供不同的目标/进入调用关口。监管模块实施定义从源域离开的离开点的离开调用关口与定义进入到目的地域的进入点的相应目标/进入调用关口之间的调和。
监管模块:
-从受信任的存储器中读取离开调用关口;
-读取作为目标/进入调用关口的离开调用关口的目标ID;
-读取目标/进入调用关口;
-如果找到目标/进入调用关口,则监管模块检查两个关口(离开调用关口和目标/进入调用关口)的约束是否匹配,例如检查关于静态/动态参数的限制是否得到满足;检查两个域的ACL是否允许实施过渡等等;
-如果所有检查都通过,则保存当前活跃的(源)域的状态以便在后来复原;
-从当前活跃的(源)域切换到目标域。
离开调用关口与相应的目标/进入调用关口之间的调和检查两个关口在参数和许可方面(ACL、资源共享、资源分包等等)是否彼此兼容。根据一个实施例,所述调和不仅被动地检查两个关口是否兼容,而且还合并全部两个访问参数集合。举例来说,作为调用的一部分,源模块与目标模块共享/分包一些存储器。
有可能把离开调用关口和相应的目标/进入调用关口视为创建从源域到目标域的总体关口的一对,这是因为离开点和进入点都被利用于使得从源域到目标域的切换发生。
有可能把一个离开调用关口映射到一个目标/进入调用关口;把许多不同的离开调用关口映射到一个目标/进入调用关口,把一个离开调用关口映射到许多不同的目标/进入调用关口;以及把许多不同的离开调用关口映射到许多不同的目标/进入调用关口。所述许多不同的离开调用关口定义从源域离开的不同离开点,并且所述许多不同的目标/进入调用关口定义去到目的地域的不同进入点。每一对离开调用关口和目标/进入调用关口创建一个总体关口。
下面的表格表示可能存在的不同关系。
根据一个实施例,可以提供(多个)访问控制列表,所述访问控制列表映射每一对离开调用关口和相应的目标/进入调用关口从而创建每一个总体关口。还有可能使用(多个)访问控制列表来限制不被允许的配对。
每一个安全域可以具有所需数目的进入/离开点。
根据一个实施例,在目标域处提供静态目标/进入调用关口,并且在源域处提供静态离开调用关口。根据一个实施例,在目标域处提供静态目标/进入调用关口,并且在源域处提供动态离开调用关口(至少其中一个参数是动态的)。根据一个实施例,在目标域处提供动态进入调用关口(至少其中一个参数是动态的),并且在源域处提供静态离开调用关口。根据一个实施例,在目标域处提供动态进入调用关口(至少其中一个参数是动态的),并且在源域处提供动态离开调用关口(至少其中一个参数是动态的)。静态调用关口只具有静态参数,动态调用关口具有至少一个动态参数。如前所述,存在的动态参数越多,安全解决方案的鲁棒性就越低。
离开调用关口的参数可以定义源域处的哪些资源(比如存储器或存储器的区段)可由目标域访问。离开调用关口的参数可以向目标域委托对源域所拥有的安全存储器的子集的访问(例如“在源域所拥有的40k存储器当中,源域为目标域给出对于64个字节的访问——该访问对于调用的持续时间是有效的”)。根据一个实施例,离开调用关口的参数定义可由目标域访问的资源的(多个)地址。离开调用关口的参数可以定义源域处的哪些资源(比如存储器或存储器的区段)不可由目标域访问。根据一个实施例,离开调用关口的访问参数还可以包括不可由目标域访问的资源的(多个)地址。离开调用关口的参数可以定义目标域被允许或不被允许访问堆栈。离开调用关口的参数可以定义目标域被允许或不被允许访问外设。离开调用关口的参数可以关于可许可的访问定义目标域被许可或不被许可实施哪些函数。
根据一个实施例,当在离开调用关口的参数中定义了特定的访问和/或函数时,目标域可以允许系统的其他域在源域处访问所述资源和/或实施所述函数。源域可以把定义在离开调用关口中的(多项)许可委托到目标域。委托许可在所述离开调用关口中通过委托ID标识。目标域随后可以分包在离开调用关口的参数中被定义成可委托的访问和/或函数。
举例来说,离开调用关口允许目标域访问源域处的整个存储器区段以便实施函数X。目标域随后可以“分包”离开调用关口的资源,从而允许系统的另一域访问源域处的整个存储器区段以便实施函数X。目标域无法分包未在离开调用关口的参数中定义的访问和/或函数。此外,定义在离开调用关口中的参数无法被扩展。举例来说,当离开调用关口允许目标域访问源域处的存储器的某一区段以便实施函数X时,目标域无法分包对于源域处的整个存储器区段的访问以便实施函数X。
但是目标域可以细化哪些访问和/或函数被分包。举例来说,离开调用关口允许目标域访问源域处的整个存储器区段以便实施函数X。目标域随后可以“分包”离开调用关口的资源(也就是访问源域处的整个存储器区段),从而允许另一域访问源域处的存储器区段的一部分以便实施函数X。可以通过另一调用关口或者通过操作系统/监管模块所提供的任何其他适当的机制许可成功的访问。如果目标域尝试“分包”未被定义在离开调用关口的参数中的访问和/或函数,则由监管模块捕获故障。
图14A到14D示意性地示出了定义在进入/离开调用关口的参数中的访问的分包。图14A示出了通过离开调用关口允许访问源域的整个存储器区段以便实施函数X。图14B示意性地示出了目标域1501已经分包并且细化了访问,从而准许目标域1502访问源域的存储器区段的减小的区域以便实施函数X。图14C示意性地示出了目标域1502已经分包并且细化了访问,从而准许目标域1503访问源域的存储器区段的进一步减小的区域以便实施函数X。还有可能使得目标域1501分包并且细化访问,从而准许目标域1503访问源域的存储器区段的进一步减小的区域以便实施函数X。图14D示意性地示出了目标域1503已经分包并且细化了访问,从而准许目标域1504访问源域的存储器区段的进一步减小的区域以便实施函数X。还有可能使得目标域1501或目标域1502分包并且细化访问,从而准许目标域1504访问源域的存储器区段的进一步减小的区域以便实施函数X。
对于静态参数,所述分包处理可以在启动/固件更新期间被实施一次,而不是在运行时间期间实施。
根据一个实施例,离开调用关口的参数可以被存储在访问控制列表(ACL)中。根据一个实施例,离开调用关口的参数可以定义离开调用关口是否被允许分包到目标域。根据一个实施例,离开调用关口的参数可以定义该离开调用关口能够被分包到的特定域、域的群组和/或执行流。根据一个实施例,离开调用关口的参数可以定义该离开调用关口无法被分包到的特定调用关口、调用关口的群组和/或执行流。
根据一个实施例,目标/进入调用关口的参数可以被存储在访问控制列表(ACL)中。根据一个实施例,目标/进入调用关口的参数可以定义该目标/进入调用关口是否被允许分包到源域。根据一个实施例,目标/进入调用关口的参数可以定义该目标/进入调用关口能够被分包到的特定域、域的群组和/或执行流。根据一个实施例,目标/进入调用关口的参数可以定义该目标/进入调用关口无法被分包到的特定调用关口、调用关口的群组和/或执行流。
提供在源域处的离开调用关口知晓目标域处的调用关口。根据一个实施例,离开调用关口包括表明进入调用关口/目标调用关口的参数,例如目标/进入关口ID。提供在目标域处的进入调用关口/目标调用关口不需要知晓提供在源域处的离开调用关口。但是根据一个实施例,进入调用关口/目标调用关口包括表明来自源域的传入调用使用所标识出的离开调用关口的参数,例如目标访问参数包括离开关口ID。
图15是示意性地示出用于保护目标域和源域免于未经授权的访问的处理的流程图。在步骤S1601处,运行中的代码遇到标识出离开调用关口的离开调用关口过渡指令。离开调用关口包括离开过渡指令和至少一个离开访问参数。离开调用关口要求运行中的代码在作出任何其他调用之前离开当前(源)域,并且离开访问参数定义从源域离开的离开点。在步骤S1602处,监管模块检查是否存在离开调用关口的对应方,也就是说监管模块识别对应于离开调用关口的目标/进入调用关口。如前所述,根据一个实施例,可以提供(多个)访问控制列表,其映射每一对离开调用关口和相应的目标/进入调用关口以便创建每一个总体关口。进入调用关口包括过渡指令和至少一个进入访问参数,所述进入访问参数定义到目标域的访问点。在步骤S1603处,当存在相应的目标/进入调用关口时,监管模块确定离开调用关口和相应的目标/进入调用关口的约束(定义在两个关口的访问参数中)是否彼此兼容。例如在其简化形式中,离开调用关口的访问参数可以定义作为相应的目标/进入调用关口的ID的目标ID,并且进入调用关口的访问参数可以定义作为相应的离开调用关口的ID的源ID,从而使得两个关口彼此兼容。当不存在对应于离开调用关口的相应目标/进入调用关口时,生成出错消息。当离开调用关口和相应的目标/进入调用关口的约束彼此兼容时,随后在步骤S1604处实施从源域到目标域的情境切换,从而使得符合定义在离开访问参数和目标进入访问参数中的约束。根据一个实施例,监视器确定目标调用关口和离开调用关口被存储在受信任的存储器中,并且符合定义在离开访问参数和目标/进入访问参数中的约束。监视器对从源域过渡到目标域的处理电路(代码、数据和硬件外设)应用适当的安全凭证(在目标域处所需的安全凭证)。此外,当被定义在离开调用关口中时,针对源域的(多项)访问特权被监视器暂停。当离开调用关口和相应的目标/进入调用关口的约束彼此不兼容时,则生成出错消息。在步骤S1605处,在目标域处完成定义在目标访问参数中的函数/访问之后,实施从目标域到源域的情境切换。监视器从处理电路(代码、数据和硬件外设)中去除所应用的安全凭证。此外,当被定义在离开调用关口中时,监视器重新激活针对源域的(多项)访问特权。
尽管离开调用关口和进入调用关口都具有其自身单独的过渡指令,但是由于运行中的代码遇到发起从源域到目标域的过渡的离开调用关口过渡指令,因此运行中的代码并不“直接”遇到目标/进入调用关口过渡指令。因此,所述处理只需要一轮系统调用而不是两轮。监视器辨识出配对,并且在单次操作中执行全部两次过渡。根据另外的一个实施例,有可能对调用关口链中的两个或更多调用关口进行调和。
离开调用关口与目标/进入调用关口的组合允许发生导致相同的执行特权等级(有特权/无特权/线程模式/异常模式)的互不信任的情境切换。已知的执行环境只能选择升高其特权(系统调用)或者为新的情境释放其当前执行特权。所描述的新情境所处的特权等级不同于现有的解决方案。
正如前面参照调用关口所阐述的那样,离开调用关口和目标/进入调用关口被存储在受信任的存储器中。监视器检查离开调用关口和目标/进入调用关口是否被存储在受信任的存储器中,并且当离开调用关口和目标/进入调用关口被存储在受信任的存储器中时,监视器为所需的访问提供所需的安全凭证。但是当离开调用关口和目标/进入调用关口的其中之一或全部二者没有被存储在受信任的存储器中时,监视器不为所需的访问提供所需的安全凭证——从而表明违反安全。
本领域技术人员将认识到,本发明的技术可以被具体实现成系统、方法或计算机程序产品。因此,本发明的技术可以采取完全硬件实施例、完全软件实施例或者组合软件与硬件的实施例的形式。
此外,本发明的技术可以采取具体实现在计算机可读介质中的计算机程序产品的形式,所述计算机可读介质上具体实现有计算机可读程序代码。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质例如可以是而不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或者是所述各项的任何适当的组合。
用于实施本发明的技术的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,其中包括面向对象的编程语言和传统的过程化编程语言。
举例来说,用于实施本发明的技术的操作的程序代码可以包括传统的(已解译或已编译)编程语言(比如C)中的源代码、对象代码或可执行代码,或者汇编代码,用于设置或控制ASIC(专用集成电路)或FPGA(现场可编程门阵列)的代码,或者用于例如VerilogTM或VHDL(甚高速集成电路硬件描述语言)之类的硬件描述语言的代码。
程序代码可以完全在用户的计算机上执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络连接到用户的计算机。代码组件可以被具体实现为规程、方法等等,并且可以包括子组件,所述子组件可以采取任何抽象层级的指令或指令序列的形式,包括从本机指令集的直接机器指令到高层级已编译或已解译语言结构。
本领域技术人员还将认识到,根据本发明的技术的优选实施例的逻辑方法的全部或一部分可以适当地被具体实现在逻辑装置中,所述逻辑装置包括用以实施方法步骤的逻辑单元,并且这样的逻辑单元可以包括例如可编程逻辑阵列或专用集成电路中的逻辑门之类的组件。这样的逻辑安排还可以被具体实现在使能单元中,所述使能单元用于例如使用虚拟硬件描述符语言在这样的阵列或电路中暂时或永久性地建立逻辑结构,并且可以使用固定或可传送载体介质来存储和传送。
在一种替换方案中,本发明的技术的一个实施例可以通过部署服务的计算机实施的方法的形式来实现,所述方法包括部署计算机程序代码的步骤,当被部署到计算机基础设施或网络中并且在其上执行时,所述计算机程序代码适于使得所述计算机系统或网络实施所述方法的所有步骤。
在另一种替换方案中,本发明的技术的优选实施例可以通过其上具有功能性数据的数据载体的形式来实现,所述功能性数据包括功能性计算机数据结构,当被加载到计算机系统或网络中并且在其上操作时,所述功能性计算机数据结构使得所述计算机系统能够实施所述方法的所有步骤。
本领域技术人员将认识到,在不背离本发明的技术的范围的情况下,可以对前述示例性实施例作出许多改进和修改。
从前面的说明书将认识到,本发明描述了提供用于保护目标域和源域免于未经授权的访问的机器实施的方法的技术。从而提高了总体系统的安全性。
在一些实施例中,实施从所述源域到所述目标域的所述情境切换包括:对从所述源域过渡到所述目标域的代码、数据和硬件外设应用安全凭证,以便允许在所述目标域处完成在所述进入访问参数中定义的函数和/或访问。这样只有预定义的访问被允许,从而提高了总体系统的安全性。
在一些实施例中,所述方法还包括:完成在所述目标域处定义的所述函数和/或所述访问之后,实施从所述目标域到所述源域的情境切换。在完成函数和/或访问之后,运行中的代码被要求离开目标域,从而提高了总体系统的安全性——不可实施其他非预定义的函数和/或访问。
在一些实施例中,实施从所述目标域到所述源域的所述情境切换包括:在所述目标域处完成所述函数和/或所述访问之后,从从所述目标域过渡到所述源域的所述代码中去除所述安全凭证。在目标域中被准许的访问特权在离开目标域时被去除,从而提高了总体系统的安全性。
在一些实施例中,实施从所述源域到所述目标域的所述情境切换包括:暂停在所述离开访问参数中定义的针对所述源域的至少一项访问特权。源域的访问特权在访问目标域时被暂时暂停,从而针对目标域保护源域。
在一些实施例中,所述方法还包括:在所述目标域处完成在所述进入访问参数中定义的函数和/或访问之后,实施从所述目标域到所述源域的情境切换。这样只有预定义的访问被允许,从而提高了总体系统的安全性。
在一些实施例中,实施从所述目标域到所述源域的所述情境切换包括:在所述目标域处完成在所述进入访问参数中定义的所述函数和/或所述访问之后,重新激活所述暂停的访问特权。暂停的特权被重新激活。
在一些实施例中,所述还包括:在所述目标域处完成在所述进入访问参数中定义的函数和/或访问之后,实施从所述目标域到所述源域的情境切换。这样只有预定义的访问被允许,从而提高了总体系统的安全性。
在一些实施例中,所述方法还包括:当不符合所述离开访问参数和/或所述进入访问参数时,拒绝从所述源域到所述目标域的所述情境切换。当所请求的访问不被许可时,情境切换被拒绝,从而提高了总体系统的安全性。
在一些实施例中,所述方法还包括:把所述离开调用关口映射到所述相应的进入调用关口。
在一些实施例中,所述方法还包括:定义多个离开调用关口;以及把所述多个离开调用关口当中的每一个映射到所述相应的进入调用关口。通过把来自源域的不同出口映射到目标域处的一个入口,可以提高系统的效率。
在一些实施例中,所述方法还包括:定义多个进入调用关口;以及把所述多个进入调用关口当中的每一个映射到所述相应的离开调用关口。通过把来自源域的一个出口映射到去到目标域的不同入口,可以提高系统的效率。
在一些实施例中,所述方法还包括:定义多个进入调用关口和多个离开调用关口;以及把所述多个离开调用关口当中的每一个映射到所述多个相应的进入调用关口当中的至少一个。通过把来自源域的多个出口映射到去到目标域的多个不同入口,可以提高系统的效率。
在一些实施例中,所述方法还包括:提供标识映射到所述相应的进入调用关口的所述离开调用关口的至少一个访问控制列表。在一些实施例中,所述方法还包括:当其中一个或多个所述进入调用关口不对应于所述离开调用关口时,防止所述离开调用关口被映射到所述其中一个或多个所述进入调用关口。
在一些实施例中,所述方法还包括:当其中一个或多个所述离开调用关口不对应于所述进入调用关口时,防止所述进入调用关口被映射到所述其中一个或多个所述离开调用关口。只有预定义的出口和入口组合被允许,从而提高了总体系统的安全性。
在一些实施例中,所述进入访问参数包括以下当中的至少一个:目标ID、源ID、函数ID、访问ID、已定义数字、动态参数ID、静态参数ID、离开关口ID。
在一些实施例中,所述进入调用关口被存储在安全存储器中。从而防止进入调用关口被改动。
在一些实施例中,所述进入调用关口包括一个或多个静态进入访问参数。从而防止进入调用关口被改动。
在一些实施例中,所述离开访问参数包括以下当中的至少一个:目标ID、源ID、函数ID、访问ID、特权ID、暂停特权ID、已定义数字、动态参数ID、静态参数ID、委托ID、目标关口ID。
在一些实施例中,所述离开调用关口被存储在安全存储器中。从而防止离开调用关口被改动。
在一些实施例中,所述离开调用关口包括一个或多个静态离开访问参数。从而防止离开调用关口被改动。
在一些实施例中,所述离开调用关口包括一个或多个动态离开访问参数。从而允许改动被认为并非关键的参数方面的更高灵活性。
在一些实施例中,所述进入调用关口包括目标调用关口,所述目标调用关口只包括静态离开访问参数。允许改动被认为并非关键的参数方面的更高灵活性。
在一些实施例中,所述目标域把定义在所述离开访问参数中的其中一项或多项所述访问委托到另一目标域。从而在不损害安全的情况下允许系统具有更高灵活性。
在一些实施例中,所述离开调用关口包括表明所述委托访问被许可/不被许可的委托ID。在不损害安全的情况下允许系统具有更高灵活性。
在一些实施例中,所述目标域把所述其中一项或多项所述访问的所述委托细化到所述访问的一部分。从而在不损害安全的情况下允许系统具有更高灵活性。
在一些实施例中,所述另一目标域把定义在所述离开访问参数中的所述委托访问委托到另外的目标域。
在一些实施例中,所述委托被定义在调用关口访问参数中。
在一些实施例中,所述进入访问参数和/或所述离开访问参数被存储在访问控制列表中。
在一些实施例中,所述方法还包括:确定所述离开调用关口被存储在受信任的存储设备中;确定所述进入调用关口被存储在受信任的存储设备中;以及在确定所述离开调用关口和所述进入调用关口被存储在所述受信任的存储设备中之后,实施从所述源域到所述目标域的所述情境切换。

Claims (34)

1.一种用于保护目标域和源域免于未经授权的访问的机器实施的方法,所述方法包括:
识别包括离开过渡指令和至少一个离开访问参数的离开调用关口,所述离开访问参数限制从所述源域离开;
识别对应于所述离开调用关口的进入调用关口,所述进入调用关口包括过渡指令和至少一个进入访问参数,所述进入访问参数限制对所述目标域的访问;
确定所述离开访问参数与所述进入访问参数彼此兼容;以及
当符合所述离开访问参数和所述进入访问参数时,实施从所述源域到所述目标域的情境切换。
2.根据权利要求1所述的机器实施的方法,其中,实施从所述源域到所述目标域的所述情境切换包括:对从所述源域过渡到所述目标域的代码、数据和硬件外设应用安全凭证,以允许在所述目标域处完成在所述进入访问参数中定义的函数和/或访问。
3.根据权利要求2所述的机器实施的方法,还包括:
在所述目标域处完成所述函数和/或所述访问之后,实施从所述目标域到所述源域的情境切换。
4.根据权利要求3所述的机器实施的方法,其中,实施从所述目标域到所述源域的所述情境切换包括:在所述目标域处完成所述函数和/或所述访问之后,从从所述目标域过渡到所述源域的所述代码中去除所述安全凭证。
5.根据权利要求1到4中的任一项所述的机器实施的方法,其中,实施从所述源域到所述目标域的所述情境切换包括:暂停在所述离开访问参数中定义的针对所述源域的至少一项访问特权。
6.根据权利要求5所述的机器实施的方法,还包括:
在所述目标域处完成在所述进入访问参数中定义的函数和/或访问之后,实施从所述目标域到所述源域的情境切换。
7.根据权利要求6所述的机器实施的方法,其中,实施从所述目标域到所述源域的所述情境切换包括:在所述目标域处完成在所述进入访问参数中定义的所述函数和/或所述访问之后,重新激活所述暂停的访问特权。
8.根据权利要1所述的机器实施的方法,还包括:
在所述目标域处完成在所述进入访问参数中定义的函数和/或访问之后,实施从所述目标域到所述源域的情境切换。
9.根据权利要求1到8中的任一项所述的机器实施的方法,还包括:
当不符合所述离开访问参数和/或所述进入访问参数时,拒绝从所述源域到所述目标域的所述情境切换。
10.根据权利要求1到9中的任一项所述的机器实施的方法,还包括:
把所述离开调用关口映射到所述相应的进入调用关口。
11.根据权利要求1到9中的任一项所述的机器实施的方法,还包括:
定义多个离开调用关口;以及
把所述多个离开调用关口中的每一个映射到所述相应的进入调用关口。
12.根据权利要求1到9中的任一项所述的机器实施的方法,还包括:
定义多个进入调用关口;以及
把所述多个进入调用关口中的每一个映射到所述相应的离开调用关口。
13.根据权利要求1到6中的任一项所述的机器实施的方法,还包括:
定义多个进入调用关口和多个离开调用关口;以及
把所述多个离开调用关口中的每一个映射到所述多个相应的进入调用关口中的至少一个。
14.根据权利要求10到13中的任一项所述的机器实施的方法,还包括:
提供标识映射到所述相应的进入调用关口的所述离开调用关口的至少一个访问控制列表。
15.根据权利要求10到14中的任一项所述的机器实施的方法,还包括:
当一个或多个所述进入调用关口不对应于所述离开调用关口时,防止所述离开调用关口被映射到所述一个或多个所述进入调用关口。
16.根据权利要求10到15中的任一项所述的机器实施的方法,还包括:
当一个或多个所述离开调用关口不对应于所述进入调用关口时,防止所述进入调用关口被映射到所述一个或多个所述离开调用关口。
17.根据权利要求1到16中的任一项所述的机器实施的方法,其中,所述进入访问参数包括以下当中的至少一个:目标ID、源ID、函数ID、访问ID、已定义数字、动态参数ID、静态参数ID、离开关口ID。
18.根据权利要求1到17中的任一项所述的机器实施的方法,其中,所述进入调用关口被存储在安全存储器中。
19.根据权利要求1到18中的任一项所述的机器实施的方法,其中,所述进入调用关口包括一个或多个静态进入访问参数。
20.根据权利要求1到19中的任一项所述的机器实施的方法,其中,所述离开访问参数包括以下当中的至少一个:目标ID、源ID、函数ID、访问ID、特权ID、暂停特权ID、已定义数字、动态参数ID、静态参数ID、委托ID、目标关口ID。
21.根据权利要求1到20中的任一项所述的机器实施的方法,其中,所述离开调用关口被存储在安全存储器中。
22.根据权利要求1到21中的任一项所述的机器实施的方法,其中,所述离开调用关口包括一个或多个静态离开访问参数。
23.根据权利要求1到22中的任一项所述的机器实施的方法,其中,所述离开调用关口包括一个或多个动态离开访问参数。
24.根据权利要求1到23中的任一项所述的机器实施的方法,其中,所述进入调用关口包括目标调用关口,所述目标调用关口只包括静态离开访问参数。
25.根据权利要求1到24中的任一项所述的机器实施的方法,其中,所述目标域把在所述离开访问参数中定义的一项或多项所述访问委托到另一目标域。
26.根据权利要求25所述的机器实施的方法,其中,所述离开调用关口包括表明所述委托访问被许可/不被许可的委托ID。
27.根据权利要求25或26所述的机器实施的方法,其中,所述目标域把所述一项或多项所述访问的所述委托细化到所述访问的一部分。
28.根据权利要求25到27中的任一项所述的机器实施的方法,其中,所述另一目标域把在所述离开访问参数中定义的所述委托访问委托到另外的目标域。
29.根据权利要求25到28中的任一项所述的机器实施的方法,其中,所述委托被定义在调用关口访问参数中。
30.根据权利要求1到29中的任一项所述的机器实施的方法,其中,所述进入访问参数和/或所述离开访问参数被存储在访问控制列表中。
31.根据权利要求1到30中的任一项所述的机器实施的方法,还包括:
确定所述离开调用关口被存储在受信任的存储设备中;
确定所述进入调用关口被存储在受信任的存储设备中;以及
在确定所述离开调用关口和所述进入调用关口被存储在所述受信任的存储设备中之后,实施从所述源域到所述目标域的所述情境切换。
32.一种数据处理装置,包括:
被配置成响应于程序指令实施处理函数的处理电路,所述处理电路包括目标域、源域和监视器,其中所述监视器被安排成对从所述源域过渡到所述目标域的所述处理电路应用安全凭证以允许所述处理电路在所述目标域中实施函数,以及用于存储至少一个进入调用关口和至少一个离开调用关口的受信任的存储设备,所述进入调用关口包括过渡指令以及限制对所述目标域的访问的进入访问参数,并且所述离开调用关口包括过渡指令以及限制从所述源域离开的离开访问参数,所述监视器还被安排成:
响应于过渡指令确定离开调用关口何时被存储在所述受信任的存储设备中,并且在确定所述离开调用关口被存储在所述受信任的存储设备中之后,暂停在所述离开访问参数中定义的针对所述源域的至少一项访问特权;以及
响应于过渡指令确定目标调用关口何时被存储在所述受信任的存储设备中,并且在确定所述目标调用关口被存储在所述受信任的存储设备中之后,对所述处理电路应用所述安全凭证,从而使得所述处理电路能够在所述目标域中实施目标函数,所述进入访问参数包括所述目标函数。
33.根据权利要求32所述的数据处理装置,还包括:
被安排成调和离开调用关口与相应的目标调用关口的监管模块,其中所述离开调用关口定义从所述源域的离开点,所述相应的目标调用关口定义进入到所述目标域的进入点。
34.一种包括用于实施根据权利要求1到31中的任一项的方法的程序代码的计算机程序产品。
CN201710689429.XA 2016-08-15 2017-08-14 用于保护设备的域免于未经授权的访问的方法和装置 Pending CN107766706A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1613963.6A GB2552966B (en) 2016-08-15 2016-08-15 Methods and apparatus for protecting domains of a device from unauthorised accesses
GB1613963.6 2016-08-15

Publications (1)

Publication Number Publication Date
CN107766706A true CN107766706A (zh) 2018-03-06

Family

ID=56985774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710689429.XA Pending CN107766706A (zh) 2016-08-15 2017-08-14 用于保护设备的域免于未经授权的访问的方法和装置

Country Status (4)

Country Link
US (1) US10757100B2 (zh)
KR (1) KR102352505B1 (zh)
CN (1) CN107766706A (zh)
GB (1) GB2552966B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113381989A (zh) * 2021-04-27 2021-09-10 中国科学院软件研究所 一种针对激光注入攻击的防护能力验证方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190356502A1 (en) * 2018-05-17 2019-11-21 Honeywell International Inc. Systems and methods for remote configuration of a building control system into a bms based system
WO2020026228A1 (en) * 2018-08-01 2020-02-06 Vdoo Connected Trust Ltd. Firmware verification
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11914726B2 (en) * 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
KR102432003B1 (ko) * 2021-01-21 2022-08-12 인하대학교 산학협력단 개인 정보 보호 도메인 적응 방법 및 장치

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1834978A (zh) * 2005-03-14 2006-09-20 株式会社Ntt都科摩 访问控制装置以及访问控制方法
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
CN101444037A (zh) * 2005-01-11 2009-05-27 美国电影协会 用于多个设备域的自适应数字权限管理系统
US20120042361A1 (en) * 2008-07-25 2012-02-16 Resolvo Systems Pte Ltd Method and system for securing against leakage of source code
WO2012094602A1 (en) * 2011-01-07 2012-07-12 Interdigital Patent Holdings, Inc. Client and server group sso with local openid
US8397306B1 (en) * 2009-09-23 2013-03-12 Parallels IP Holdings GmbH Security domain in virtual environment
US20130212637A1 (en) * 2010-03-02 2013-08-15 Interdigital Patent Holdings, Inc. Migration of credentials and/or domains between trusted hardware subscription modules
CN103310163A (zh) * 2012-02-08 2013-09-18 Arm有限公司 使用安全域与次安全域的数据处理装置和方法
US20140373171A1 (en) * 2013-06-12 2014-12-18 Arm Limited Security protection of software libraries in a data processing apparatus
CN104704503A (zh) * 2012-10-01 2015-06-10 Arm有限公司 在安全域与次安全域之间进行转换时保护安全数据和程序代码免受非安全访问的数据处理装置和方法
WO2016118224A1 (en) * 2015-01-22 2016-07-28 Raytheon Company Multi-level security domain separation using soft-core processor embedded in an fpga

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768519A (en) * 1996-01-18 1998-06-16 Microsoft Corporation Method and apparatus for merging user accounts from a source security domain into a target security domain
US6873616B1 (en) * 1998-12-28 2005-03-29 Nortel Networks Limited Quasi-deterministic gateway selection algorithm for multi-domain source routed networks
US8695066B1 (en) * 2000-05-09 2014-04-08 Paul Clark System and method for secure communication between domains
WO2006043199A1 (en) * 2004-10-18 2006-04-27 Koninklijke Philips Electronics N.V. Authorized domain management with enhanced flexibility
US7747597B2 (en) * 2005-06-29 2010-06-29 Microsoft Corporation Security execution context for a database management system
US20070067826A1 (en) * 2005-09-19 2007-03-22 Texas Instruments Incorporated Method and system for preventing unsecure memory accesses
WO2007047798A1 (en) * 2005-10-21 2007-04-26 Sensis Corporation Method and apparatus for providing secure access control for protected information
US8135645B2 (en) * 2005-12-06 2012-03-13 Microsoft Corporation Key distribution for secure messaging
US20070130069A1 (en) * 2005-12-06 2007-06-07 Microsoft Corporation Encapsulating Address Components
US7739731B2 (en) * 2006-01-09 2010-06-15 Oracle America, Inc. Method and apparatus for protection domain based security
US7984170B1 (en) * 2009-01-29 2011-07-19 Amazon Technologies, Inc. Cross-domain communication in domain-restricted communication environments
US9003543B2 (en) * 2010-12-21 2015-04-07 Microsoft Technology Licensing, Llc Providing a security boundary
US9038172B2 (en) * 2011-05-06 2015-05-19 The Penn State Research Foundation Robust anomaly detection and regularized domain adaptation of classifiers with application to internet packet-flows
US10122656B2 (en) * 2013-08-05 2018-11-06 Oath Inc. Systems and methods for managing electronic communications
US9398019B2 (en) * 2014-08-07 2016-07-19 Vmware, Inc. Verifying caller authorization using secret data embedded in code
US10922402B2 (en) * 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
US10230696B2 (en) * 2015-06-09 2019-03-12 Intel Corporation System, apparatus and method for managing lifecycle of secure publish-subscribe system
US9973480B2 (en) * 2015-09-30 2018-05-15 International Business Machines Corporation Multi-level security enforcement utilizing data typing
US10296765B2 (en) * 2015-09-30 2019-05-21 International Business Machines Corporation Multi-level security enforcement

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101444037A (zh) * 2005-01-11 2009-05-27 美国电影协会 用于多个设备域的自适应数字权限管理系统
CN1834978A (zh) * 2005-03-14 2006-09-20 株式会社Ntt都科摩 访问控制装置以及访问控制方法
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
US20080250216A1 (en) * 2007-04-03 2008-10-09 Daniel Kershaw Protected function calling
US20120042361A1 (en) * 2008-07-25 2012-02-16 Resolvo Systems Pte Ltd Method and system for securing against leakage of source code
US8397306B1 (en) * 2009-09-23 2013-03-12 Parallels IP Holdings GmbH Security domain in virtual environment
US20130212637A1 (en) * 2010-03-02 2013-08-15 Interdigital Patent Holdings, Inc. Migration of credentials and/or domains between trusted hardware subscription modules
WO2012094602A1 (en) * 2011-01-07 2012-07-12 Interdigital Patent Holdings, Inc. Client and server group sso with local openid
CN103310163A (zh) * 2012-02-08 2013-09-18 Arm有限公司 使用安全域与次安全域的数据处理装置和方法
CN104704503A (zh) * 2012-10-01 2015-06-10 Arm有限公司 在安全域与次安全域之间进行转换时保护安全数据和程序代码免受非安全访问的数据处理装置和方法
US20140373171A1 (en) * 2013-06-12 2014-12-18 Arm Limited Security protection of software libraries in a data processing apparatus
WO2016118224A1 (en) * 2015-01-22 2016-07-28 Raytheon Company Multi-level security domain separation using soft-core processor embedded in an fpga

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113381989A (zh) * 2021-04-27 2021-09-10 中国科学院软件研究所 一种针对激光注入攻击的防护能力验证方法
CN113381989B (zh) * 2021-04-27 2022-06-28 中国科学院软件研究所 一种针对激光注入攻击的防护能力验证方法

Also Published As

Publication number Publication date
GB201613963D0 (en) 2016-09-28
GB2552966A (en) 2018-02-21
KR102352505B1 (ko) 2022-01-19
GB2552966B (en) 2019-12-11
US10757100B2 (en) 2020-08-25
KR20180019057A (ko) 2018-02-23
US20180048648A1 (en) 2018-02-15

Similar Documents

Publication Publication Date Title
CN107766706A (zh) 用于保护设备的域免于未经授权的访问的方法和装置
US11630904B2 (en) System, apparatus and method for configurable trusted input/output access from authorized software
CN101162492B (zh) 保护数据处理设备中的系统控制寄存器
JP5114617B2 (ja) 秘密鍵を保護する、セキュア端末、プログラム、および方法
CN104520867B (zh) 用于目标装置的主动监测、存储器保护和完整性验证的方法、系统和计算机可读介质
CN103827881B (zh) 用于设备操作系统中的动态平台安全的方法和系统
CN103907101B (zh) 用于管理器环境中的内核rootkit防护的系统和方法
KR101204726B1 (ko) 보안성 동적 로딩
CN102667712B (zh) 用于同时定义和实行访问控制和完整性策略的系统、方法和装置
CN101004776B (zh) 用于基于保护域的安全性的方法和装置
CN109901911A (zh) 一种信息设置方法、控制方法、装置及相关设备
US9934374B2 (en) Method and apparatus for program flow in software operation
CN107771335A (zh) 受保护区域
JPH10313309A (ja) 国際暗号法フレームワークでアプリケーションが一定のサービスクラスを合法的に実行することを認証する装置
CN104081404A (zh) 使用动态优化框架的应用沙盒化
CN102667794A (zh) 用于保护操作系统免于非授权修改的方法和系统
CN110058921B (zh) 客户虚拟机内存动态隔离和监控方法及系统
US10628562B2 (en) Method for protecting a computer program from being influenced, and computer system
CN106462508A (zh) 访问控制与代码调度
WO2007040228A1 (ja) 情報処理装置、情報処理方法およびプログラム
KR20190085387A (ko) 반도체 장치 및 반도체 장치의 동작 방법
CN107735790B (zh) 用于在安全区域和不太安全区域之间转换的装置和方法
Khan et al. Utilizing and extending trusted execution environment in heterogeneous SoCs for a pay-per-device IP licensing scheme
CN105095766B (zh) 用于处理控制设备中的软件功能的方法
US9659168B2 (en) Software identification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20230929