CN116157795A - 分层保护域中的安全性增强 - Google Patents

分层保护域中的安全性增强 Download PDF

Info

Publication number
CN116157795A
CN116157795A CN202180057761.9A CN202180057761A CN116157795A CN 116157795 A CN116157795 A CN 116157795A CN 202180057761 A CN202180057761 A CN 202180057761A CN 116157795 A CN116157795 A CN 116157795A
Authority
CN
China
Prior art keywords
component
processor
hel
lel
address
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
CN202180057761.9A
Other languages
English (en)
Inventor
N·K·夏尔马
S·戈雷查
P·库马尔
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN116157795A publication Critical patent/CN116157795A/zh
Pending legal-status Critical Current

Links

Images

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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • 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
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

用于允许以特定异常级别(例如,EL‑3至EL‑1等)操作的软件组件重复地或连续地观察或评估以低异常级别(例如,EL‑2至EL‑0)操作的软件组件的完整性以确保软件组件尚未被损坏或被损害(例如,经受恶意软件、网络攻击等)的方法和系统包括计算设备,该计算设备通过以高异常级别操作的组件(“HEL组件”)识别当前向量基地址(VBA)、异常引发指令(ERI)地址或与以低异常级别操作的组件(“LEL组件”)相关联的控制和系统寄存器值中的至少一个。计算设备可以响应于确定当前VBA、ERI地址或控制和系统寄存器值与对应的参考数据不匹配而执行响应动作。

Description

分层保护域中的安全性增强
对相关申请的交叉引用
本申请要求于2020年6月10日提交的题目为“Security Enhancement inHierarchical Protection Domains”的第16/897,959号美国专利申请的优先权的权益,其全部内容通过引用并入本文。
背景技术
现代软件系统通常被划分成多个模块/组件,该模块/组件均具有对计算设备的资源(例如,系统资源、处理器资源、存储器资源等)的不同级别的特权或访问。这种划分的示例是在操作系统(OS)内核和用户应用之间,其中用户应用被给予比OS内核更有限的对系统资源的访问级别。
为了促进芯片级的类似划分,某些处理器和计算架构(例如,ARM、RISC-V、HexagonDSP等)包括支持分层保护域和/或实现不同级别的特权的特征。这样的系统通常一次仅以一个特权级别操作,并且特权的级别(“当前特权级别”)可以仅当设备处理器取得异常或从异常返回时改变。为此,特权级别通常被称为异常级别(EL)。这些异常级别可以被编号(例如,EL-0至EL-3),使得高级别的特权具有高的编号。例如,具有最低特权级别的软件(例如,用户应用等)可以以EL-0操作,而具有最高特权级别的软件(系统监测器等)可以以EL-3操作。
发明内容
各种方面可以包括用于评估以低异常级别在计算设备上操作的软件的设备和方法。各种方面可以包括由以高异常级别操作的组件(“HEL组件”)识别与以低异常级别操作的组件(“LEL组件”)相关联的当前向量基地址(VBA)、异常引发指令(ERI)地址或控制和系统寄存器(CSR)值中的至少一个,确定当前VBA、ERI地址或CSR值中的至少一个是否匹配对应的参考数据,以及响应于确定当前VBA、ERI地址或CSR值与对应的参考数据不匹配而执行响应动作。
一些方面可以进一步包括由HEL组件扫描至少低异常级别以收集数据,将所收集的数据的部分标记为要用作参考数据的关键数据,生成参考数据的散列,以及将所生成的散列作为参考数据存储在HEL组件可访问但LEL组件不可访问的存储器的一部分中。在这样的方面中,由HEL组件扫描至少低异常级别以收集数据可以包括HEL组件在LEL组件的加载期间收集LEL组件数据作为参考数据。
一些方面还可以包括识别当前在工作存储器中的关键数据,计算所识别的关键数据的散列,以及将所计算的散列与对应的参考数据进行比较,以确定当前VBA、ERI地址或系统寄存器值中的至少一个是否与对应的参考数据匹配。在这样的方面,识别当前在工作存储器中的关键数据可以包括识别当前存在于工作存储器中的关键读取-执行(RX)代码或关键只读(RO)数据,并且将所计算的散列与对应的参考数据进行比较可以包括将所计算的散列与由HEL组件存储在存储器中的参考数据散列进行比较。
一些方面可以进一步包括周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。一些方面可以进一步包括非周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。一些方面可以进一步包括通过基于以下中的至少一个调用HEL组件来周期性地调用HEL组件以验证LEL组件的完整性尚未被损害:具有循环执行触发的机器中断;具有伪随机表驱动的触发的随机机器中断;或具有基于事件的触发的用户触发的机器中断。
一些方面可以进一步包括检测能够引起计算设备的当前异常级别的改变的系统调用或运行时间事件,以及响应于检测到能够引起计算设备的当前异常级别的改变的系统调用或运行时间事件而调用HEL组件以验证LEL组件的完整性尚未被损害。
在一些方面,识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个可以包括通过执行以下中的一个或多个来识别当前VBA:读取向量基地址寄存器(VBAR);读取向量表基保持器;读取异常级别向量基地址寄存器(ELx_VBAR),读取机器陷阱值寄存器(MTVAL);读取事件向量基(EVB);或基于分层特权级别的指令集体系结构中的等效规定。
在一些方面,识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个可以包括通过从以下中的一个捕获最高异常级别中的地址来识别ERI地址:安全监测器调用(SMC)代码区段;异常链接寄存器(ELR);机器异常程序计数器(MEPC);当异常发生时执行的指令的程序计数器(PC)值;或处理器CSR。
在一些方面,确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配可以包括使用参考数据比较集,该参考数据比较集包括:关键区段的散列的;VBA;从异常链接寄存器(ELR)或机器异常程序计数器(MEPC)捕获的ERI的地址范围集合;或CSR值。
各种方面包括一种计算设备,该计算设备具有存储处理器可执行指令的存储器以及被配置为执行处理器可执行指令以执行上面概述的任何方法的操作的处理器。各种方面包括一种用于在计算设备中使用的处理器,该处理器具有存储器并且被配置为执行上面概述的任何方法的操作。各种方面包括其上存储有处理器可执行指令的非暂时性处理器可读存储介质,该处理器可执行指令被配置为使计算设备的处理器执行上面概述的任何方法的操作。
附图说明
并入本文并构成本说明书的一部分的附图图示了各种实施例的示例方面,并且与上面给出的总体描述和下面给出的具体实施方式一起用于解释权利要求的特征。
图1是图示适合用于实现各种实施例的示例计算设备的组件框图。
图2A和图2B是图示适合用于实现各种实施例的示例计算设备中的特权或异常级别(EL)的组件框图。
图3是图示适合用于实现一些实施例的示例管理程序可执行文件和可链接格式映像的组件框图。
图4是图示根据一些实施例的用于验证计算设备的软件组件的完整性并从验证的组件收集参考数据的方法的过程流图。
图5是图示根据一些实施例的用于收集适合用于评估软件组件的完整性的参考数据的方法的过程流图。
图6是图示根据一些实施例的被配置为定期地、周期性地和/或基于用户定义的事件来确定软件组件是否已经被损坏或损害的系统中的操作、通信和交互的消息流图。
图7是图示根据一些实施例的用于处理被配置为在运行时间确定软件组件是否已经被损坏或损害的系统中的系统调用的操作、通信和交互的消息流图。
图8-图11是图示根据各种实施例的用于评估软件组件的完整性以确定它们是否已经被损坏或损害的方法的过程流图。
图12是图示适合用于实现一些实施例的无线通信设备形式的计算设备的组件框图。
图13是图示适合用于实现一些实施例的膝上型计算机形式的计算设备的组件框图。
图14是图示适合用于实现一些实施例的服务器计算设备的组件框图。
具体实施方式
将参考附图详细描述各种实施例。在可能的情况下,在整个附图中将使用相同的附图标记来指代相同或相似的部分。对特定示例和实现方式的引用是出于说明性目的,而不旨在限制权利要求的范围。
概括地说,各种实施例包括用于允许以特定异常级别(例如,EL-3至EL-1等)操作的软件组件重复地或连续地观察或评估以低异常级别(例如,EL-2至EL-0)操作的软件组件的完整性以确保软件组件尚未被损坏或损害(例如,经受恶意软件、网络攻击等)的方法和被配置为实施该方法的计算设备。例如,各种实施例可以允许以异常级别3(EL-3)操作的监测器软件观察或评估在计算系统的非安全部分中以异常级别2(EL-2)操作的管理程序的完整性和/或在计算系统的安全部分中以异常级别1(EL-1)操作的信任区域组件的完整性。类似地,各种实施例可以允许管理程序观察或评估以异常级别1(EL-1)处操作的客户操作系统(OS)或虚拟机(VM)的完整性,允许客户OS或VM观察或评估以异常级别0(EL-0)操作的终端用户软件应用的完整性,允许信任区域组件观察或评估计算系统的安全部分中以异常级别0(EL-0)的信任应用的完整性等。
为了便于参考并将讨论集中在相关特征上,下面的一些示例可以参考以低异常级别操作的组件(“LEL组件”)和以高异常级别操作的组件(“HEL组件”)来讨论操作。应当理解,LEL组件和HEL组件可以在本申请中讨论的任何特权或执行级别(例如,EL-0和EL-1、EL-1和EL-2等)和/或在包含分层执行级别的任何处理器或处理器架构(例如,ARM、HexagonST231、RISC-V等)上实现。
在一些实施例中,计算设备或计算系统中的处理器可以被配置为收集参考数据,将所收集的参考数据的部分标记/标注为关键数据,生成关键数据的散列,将所生成的关键数据的散列作为参考数据存储在存储器中,并将与所存储的参考数据相关联的区段的加载地址传送(或使其可用)给高特权级别处理程序(例如,HEL组件处理程序、EL-3处理程序、监测器处理程序等)。处理器可以定期地、周期性地和/或基于检测到的运行时间事件来调用HEL组件。
在调用时,HEL组件可以执行各种操作以验证LEL组件的完整性尚未被损害。例如,HEL组件可以识别当前在工作存储器中的关键数据(例如,随机存取存储器中当前存在的关键读取-执行代码和关键只读数据等),计算所识别的关键数据的散列,并且将所计算的散列与对应的参考数据(例如,由HEL组件存储在存储器中的区段开始地址和/或参考散列)进行比较以确定所计算的散列是否与所存储的参考数据匹配。响应于确定所计算的散列与所存储的参考数据不匹配,HEL组件可以确定LEL组件的完整性已经被损害并且执行响应动作(例如,隔离LEL组件、通知安全软件、停止系统等)。
在一些实施例中,HEL组件可以被配置为获得或确定由LEL组件使用的当前向量基地址(VBA)、检测或识别异常引发指令(ERI)和/或读取LEL组件控制和系统寄存器(LEL-CSR)。HEL组件可以将当前VBA、ERI地址(或ERI地址范围)和/或LEL-CSR寄存器的值与对应的参考数据进行比较。HEL组件可以基于当前VBA、ERI地址(或ERI地址范围)和/或LEL-CSR寄存器值是否与对应的参考数据匹配来确定LEL组件的完整性是否已经被损害。HEL组件可以确定LEL组件的完整性已经被损害,并且响应于确定当前VBA、ERI地址(或ERI地址范围)和/或LEL-CSR寄存器值与对应的参考数据不匹配而执行响应动作(例如,隔离LEL组件、通知安全软件、停止系统等)。
术语“计算设备”在本文中用于指代各种计算设备中的任何一种,包括智能电话、无线或移动计算设备(例如,平板电脑、膝上型计算机、可穿戴设备等)、基于蜂窝的无线热点、IoT设备、eMTC设备、台式机、工作站、服务、机电系统的嵌入式系统(例如,车辆、工业和农业机械、医疗设备、控制系统等)等。无线通信设备通常还以被称为用户设备(UE)、移动设备和蜂窝设备。计算设备可以经由各种有线和/或无线通信网络接收和/或发送通信,各种有线和/或无线通信网络包括广域网(例如,移动通信网络)、局域网(例如,Wi-Fi、蓝牙等)、地理定位网络(例如,全球定位系统(“GPS”))、个域网(例如,无线USB、蓝牙、ZigBee等)、近场通信等。
术语“监测器”在本文中用于指代可以支持虚拟化技术和/或使能计算资源的抽象(或虚拟化)并且跨执行环境(例如,跨非安全或丰富/正常执行环境和信任/安全执行环境等)操作的任何硬件或软件组件。这在本文中用作最高特权级别执行环境。监测器可以包括硬件监测器、在芯片上制造的专用硬件、虚拟机监测器(VMM)、在高级操作系统(HLOS)外部运行的监测器软件以及作为设备驱动器的一部分运行的软件监测器中的任何一个或全部,软件监测器可以在HLOS、其存储器管理系统和/或其分配器功能外部。
术语“管理程序”在本文中用于指代支持虚拟化技术和/或使能计算资源的抽象(或虚拟化)并且在执行环境内(例如,在丰富/正常执行环境内等)操作的任何硬件或软件组件。管理程序可以创建和操作虚拟机(VM)和/或托管多个操作系统(称为客户操作系统),并且可以充当虚拟机管理器。管理程序向客户操作系统呈现虚拟操作平台并管理客户操作系统的执行。每个客户操作系统以其与物理硬件通信相同的方式与管理程序/监测器通信。这允许每个客户操作系统在具有对计算系统的处理器、外围设备、存储器和I/O的独占访问的错觉下操作。
图1图示适合用于实现各种实施例的计算设备100的组件。在图1所图示的示例中,计算设备100包括订户身份模块(SIM)接口102、身份模块SIM 104、通用处理器106(例如,中央处理单元(“CPU”))、编码器/解码器(CODEC)108、扬声器110、麦克风112、存储器114、基带调制解调器处理器116、射频(RF)资源118、天线120、片上系统(SOC)122、物理按钮124、触摸屏显示器126、外围设备128(例如,相机等)和各种控制器/微控制器130。在一些实施例中,通用处理器106、存储器114、基带处理器116和RF资源118可以被包括在SOC 122中。在一些实施例中,SIM 104及其对应的接口102可以在SOC 122的外部。
在一些实施例中,计算设备100还可以包括图形处理器单元(GPU)、调制解调器数字信号处理器(DSP)、应用处理器单元(APU)和/或其他专用处理器或硬件加速器(未示出)。计算设备100中的任何或所有处理器可以包括一个或多个同构或异构处理器核心。同构处理器核心可以是被配置用于相同目的和/或具有相同或相似性能特性的核心。异构处理器核心可以是被配置用于不同目的和/或具有不同性能特性的核心。此类异构处理器核心的异构性可以包括不同的指令集架构、流水线、操作频率等。此类异构处理器核心的示例可以包括所谓的“big.LITTLE”架构,其中较慢的低功率处理器核心可以与更强大和耗电的处理器核心耦接。
SIM接口102可以被配置为接收与对移动电话网络的订阅相关联的身份模块SIM104。在一些实施例中,计算设备100可以是包括附加SIM接口的多订阅计算设备,每个SIM接口可以接收与其他订阅和/或其他移动电话网络相关联的附加身份模块SIM。
通用处理器106可以耦接到CODEC 108,CODEC 108可以耦接到扬声器110和麦克风112。通用处理器106还可以耦接到至少一个存储器114。存储器114可以是存储处理器可执行指令的非暂时性计算机可读存储介质。存储器114还可以存储操作系统(OS)软件、应用数据、用户应用、软件和/或可执行指令,包括被配置为使处理器执行各种实施例的操作的指令。
基带调制解调器处理器116可以是能够管理SIM 104或订阅的协议栈并实现共存管理器软件的集成芯片。
RF资源118可以包括执行针对计算设备100的相关联的SIM 104的发送/接收功能的通信电路或收发器。RF资源118可以包括包括单独的发送和接收电路的通信电路,或者可以包括组合发送器和接收器功能的收发器。RF资源118可以被配置为支持根据不同的无线通信协议进行操作的多种无线电接入技术/无线网络。RF资源118可以包括或提供到放大器、数模转换器、模数转换器、滤波器、压控振荡器等的不同集合的连接。多个天线120和/或接收块可以耦接到RF资源118以促进与天线和接收器/发送器频率和协议(例如,LTE、Wi-Fi、蓝牙、近场通信等)的各种组合的多模通信。RF资源118还可以耦接到基带调制解调器处理器116。
计算设备100可以被配置为在诸如移动电话网络的各种通信系统内操作。计算设备100可以经由到移动电话网络的基站的蜂窝连接与移动电话网络通信。蜂窝连接可以通过使用各种通信技术的双向无线通信链路来进行,各种通信技术诸如长期演进(LTE)、第五代(5G)、第四代(4G)、第三代(3G)、码分多址(CDMA)、时分同步码分多址(TD-SCDMA)、宽带码分多址(WCDMA)、全球移动通信系统(GSM)和其他移动电话通信技术。其他连接可以包括各种其他无线连接,包括WLAN,诸如基于电气和电子工程师协会(IEEE)802.11标准的Wi-Fi,以及无线定位服务,诸如全球定位系统(GPS);WPAN,诸如无线USB、蓝牙和ZigBee;和/或近场通信。
图2A图示可以在适合用于实现各种实施例的处理器(例如,图1的106)中执行的软件、固件和功能模块(其在本文中也被称作“组件”)的计算系统200的示例软件架构。图2A图示可以在适合用于实施各种实施例的处理器(例如,图1的106)中执行的软件、固件和功能模块(“组件”)的计算系统200的示例软件架构。
在图2A所图示的示例中,计算系统200包括监测器202组件、管理程序204(或访问控制驱动器)组件、虚拟机206、208、信任区域(TZ)210组件以及安全或信任应用(TA)212。计算系统200还可以包括被配置为实现本文中所描述的各种功能的各种附加功能组件,诸如主机操作系统、DSP操作系统、库模块、软件应用程序、用户进程、监听器线程、执行硬件(例如,应用处理器、DSP等)、输入/输出设备、存储器等。
计算系统200可以包括各种执行环境,包括非安全或丰富/正常执行环境220和信任/安全执行环境222(例如,信任执行环境(TEE)、ARM信任区域执行环境等)。丰富/正常执行环境220可以包括管理程序204和虚拟机206、208(例如,虚拟机1和虚拟机2)。信任/安全执行环境222可以包括TZ 210组件和TA212。监测器202组件可以跨各种执行环境操作,并且可以被配置为控制对信任/安全执行环境222的访问。
图2A和图2B图示计算系统200中的组件可以被配置为在各种异常级别(EL)230-236内执行,异常级别控制对在每个级别内执行的组件的执行特权。在图2A所图示的示例中,软件应用216a-216d和TA212在异常级别0(EL-0230)内操作。客户操作系统214a-214b和TZ 210组件在异常级别1(EL-1 232)内操作。管理程序204在异常级别2(EL-2 234)内操作。监测器202在异常级别3(EL-3 234)内操作。图2B图示异常级别0(EL-0 230)可以包括应用/用户空间组件,异常级别1(EL-1232)可以包括内核、内核驱动器和虚拟机(VM),异常级别2(EL-2 234)可以包括管理程序和访问控制(AC)驱动器,并且异常级别3(EL-3 236)可以包括监测器。
对异常级别进行编号(例如,EL-0至EL-3),使得高级别的特权具有高的编号。例如,以异常级2(EL-2 234)操作的管理程序204可以具有比以异常级别0(EL-0 230)执行的软件应用216a-216d更大的执行特权。
监测器202组件可以包括被配置为支持虚拟化技术和/或使能计算资源的抽象(或虚拟化)的硬件和/或软件组件,包括以下中的任何一个或全部:硬件监测器、在芯片上制造的专用硬件、虚拟机监测器(VMM)、在高级操作系统(HLOS)外部运行的监测器软件以及作为设备驱动器的一部分运行的软件监测器,软件监测器可以在HLOS、其存储器管理系统和/或其分配器功能外部。监测器202组件可以在丰富/正常执行环境220和信任/安全执行环境222两者中操作,并且托管管理程序204组件。
管理程序204组件可以是操作系统和监测器202组件之间的软件控制程序。管理程序204组件可以托管多个操作系统(称为客户操作系统)。每个客户操作系统214a-214b可以以与其将与物理硬件(例如,图1中所示的通用处理器106等)通信相同的方式与管理程序204和/或监测器202组件通信,将管理程序204、监测器202和硬件的组合视为单个虚拟机。这允许每个客户操作系统214a-214b在具有对处理器、外围设备、存储器和I/O的独占访问的错觉下操作。
管理程序204组件可以被配置为管理虚拟机206、208的存储器访问请求。也就是说,操作系统通常负责跨多个进程分区物理存储器。然而,在包括在虚拟机206、208之上运行的客户操作系统214a-214b的系统中,由客户操作系统214a-214b分配的存储器不是真正的物理存储器,而是中间物理存储器。在此类系统上,管理程序204组件负责物理存储器的实际分配。
虚拟机206、208可以是像物理硬件机器一样执行软件应用程序的软件应用。例如,虚拟机206、208可以提供软件应用216a-216d与物理硬件(例如,图1中所示的通用处理器106等)之间的接口,从而允许绑定到特定指令集架构(ISA)的软件应用程序在实现不同指令集架构的硬件上执行。通过创建和管理虚拟机(VM),计算系统200可以围绕包括操作系统、应用、进程等的各种特征创建“沙箱”(即,安全分离)。计算系统200可以使用这些沙箱来实施设备的各种特征之间的访问控制。
执行环境220、222可以经由安全引导过程被加载。通常,安全引导是引导序列,其中在计算系统200上加载和执行的每个软件映像经由先前认证/授权的软件被认证和/或授权。引导序列可以被配置为通过确保在执行每个软件映像之前检查每个软件映像来防止未授权或修改的代码在计算设备上运行。引导序列中的第一个映像被称为主引导加载器(PBL),其通常被存储在不能物理改变的不可变只读存储器中。PBL通过加密地验证其加载的每个软件映像上的数字签名来授权在计算系统200上加载和执行的每个软件映像。那些软件映像加密地验证它们加载的下一组映像上的数字签名等。这确保了软件映像没有被更改。
在一些实施例中,PBL可以被配置为加载可扩展引导加载器(XBL)映像和信任安全可扩展引导加载器(XBL_SEC)映像。XBL映像可以被配置为协调丰富/正常执行环境220的加载,其可以包括OS内核和外围固件映像。XBL_SEC映像可以被配置为协调信任/安全执行环境222的加载,其可以包括信任执行环境(TEE)和TEE相关映像。在加载过程期间TEE映像的分离和隔离可以通过缩短在TEE映像可操作之前必须加载、授权和执行的映像链来提高安全性。XBL_SEC映像还可以配置监测器202或访问控制系统以将由信任/安全执行环境222使用的存储器与芯片上的所有其他执行环境隔离,并且然后以较少特权的异常级别执行XBL映像。
由XBL和/或XBL_SEC加载的软件映像可以是可执行和可链接格式(ELF)软件映像,其示例在图3中被图示。ELF软件映像可以包括多个单独的ELF片段。在图3所示的示例中,管理程序ELF映像300包括向量表片段302、关键读取-执行(RX)代码段304和关键只读(RO)数据。每个ELF片段可以包括关于软件映像的代码、数据或元数据。例如,ELF软件映像文件可以包括散列段,该散列段包括用于认证软件映像的数据。散列段可以包括密码散列值的表和关于软件映像的元数据的集合。表中的加密散列值可以在ELF映像软件中的其他段上被计算,并且用于当这些段被加载到存储器中时验证这些段的正确性。元数据可以包括关于映像的类型和软件映像被设计为在其上执行的硬件的类型的信息。
在图2A所图示的示例中,管理程序204组件在异常级别2(EL-2 234)内在丰富/正常执行环境220中操作,并且主机软件应用216a-216d在异常级别0(EL-0230)内在丰富/正常执行环境220中操作。常规管理程序不具有允许管理程序连续检查软件应用216a-216d在其上操作的虚拟机206、208的完整性的动态机制。因此,常规管理程序可能无法确定虚拟机206、208是否正在由欺骗或恶意行为者操作(例如,作为网络攻击的一部分等)和/或虚拟机206、208是否正在执行可能负面地影响计算系统200的安全性、性能或功能性的非良性活动。
此外,因为管理程序204组件托管客户操作系统214a-214b并且在丰富/正常执行环境220中操作,所以传统的管理程序204组件和客户操作系统214a-214b两者都可能易受恶意软件和欺骗或恶意行为者的网络攻击。因为管理程序204组件由监测器202托管,所以被损害的管理程序可能损害信任/安全组件(例如,信任区(TZ)210组件、信任应用(TA)212等)和信任/安全内容的完整性。传统的信任/安全组件不包括允许它们确定管理程序是否已被欺骗或恶意行为者(例如,作为网络攻击的一部分等)损害和/或正在执行非良性活动的机制。
各种实施例提供使得以特定异常级别(例如,EL-3至EL-1)操作的软件/组件能够重复地或连续地观察和/或评估以低异常级别(例如,EL-2至EL-0)操作的软件/组件的完整性的方法。使用图2A中所图示的架构作为示例,各种实施例可以使得监测器202组件能够观察和/或评估管理程序204组件的完整性,使得管理程序204组件能够观察和/或评估客户操作系统214a-214b和/或虚拟机206、208的完整性,使得客户操作系统214a-214b能够观察和/或评估软件应用216a-216d的完整性,使得TZ 210组件能够观察和/或评估TA 212的完整性等。
在一些实施例中,计算系统中的处理器(和/或XBL_SEC等)可以被配置为收集参考数据,将所收集的参考数据的部分标记/标注为关键数据,生成关键数据的散列,将所生成的关键数据的散列存储在存储器中作为参考数据,并将与所存储的参考数据相关联的区段的加载地址传送(或使其可用)给高特权级别处理程序(例如,HEL组件处理程序、EL-3处理程序、监测器处理程序等)。处理器可以定期地、周期性地和/或基于检测到的运行时间事件来调用HEL组件。在调用时,HEL组件可以执行各种操作以验证LEL组件的完整性尚未被损害。例如,HEL组件可以获得或确定由LEL组件使用的当前向量基地址(VBA),并且将当前VBA与参考数据进行比较。HEL组件可以响应于确定当前VBA与参考数据不匹配而确定LEL组件的完整性已经被损害。
根据一些实施例,计算系统200中的处理器(或XBL_SEC等)可以被配置为识别和标记关键数据。例如,处理器可以将访问控制驱动器(ACD)代码、管理程序向量表、操作系统向量表、与异常向量相关联的管理程序向量处理程序、安全监测器调用(SMC)接口/调用器代码、SMC指令代码地址、访问控制数据/策略、虚拟机策略管理器代码/资源、管理程序执行流变量和用户定义的标注的关键区段中的任何或全部识别并标记为关键数据。
与加载LEL组件同时,HEL组件(或XBL_SEC等)可以生成与LEL组件相关联的关键数据的散列,将生成的散列作为LEL组件的参考数据(或测量参数)存储在寄存器或存储器中,并且将存储的LEL组件散列的寄存器/存储器地址递送(或使其可用)到高特权级别处理程序(例如,EL-3处理程序、HEL组件处理程序等)。一旦被存储,HEL组件(即,高特权级别组件)就可以访问所存储的参考数据(例如,散列)以用于在被监测时与LEL组件的当前关键数据(或关键数据的散列)进行比较,以确定LEL组件是否已经被损害、改变或以其他方式不同于在上述引导序列期间加载的经认证版本。
在一些实施例中,计算系统200中的处理器可以被配置为调用HEL组件以定期地、周期性地、随机地或基于预定义标准来监测一个或多个LEL组件,预定义标准诸如能够指示或与变得被损害或改变的LEL组件的事件相关联。例如,处理器可以被配置为基于系统调用或其他实时或运行时间事件来调用HEL组件。在一些实施例中,处理器可以被配置为基于具有循环执行触发的常规机器中断来调用HEL组件。例如,处理器可以基于充当用于中断的循环执行程序的安全看门狗(WD)吠以周期性或规则间隔来调用HEL组件。
在一些实施例中,处理器可以被配置为基于具有伪随机表驱动触发的随机机器中断来调用HEL组件。例如,处理器可以使用以最高特权级别(例如,EL-3)注册的定时器中断,其具有基于先前定时器中断的规则间隔中断或伪随机间隔,该先前定时器中断将为下一个中断间隔调用归一化随机数。定时器中断可以用作基于伪随机化的表(定时器)驱动调度器,以调用下一个中断。
在一些实施例中,处理器可以被配置为基于具有基于事件的触发的用户触发的机器中断来调用HEL部件。例如,处理器可以通过使用基于客户端请求的调用以周期或规则间隔来调用HEL组件,基于客户端请求的调用诸如用例触发的间隔,其充当对中断的基于事件驱动的调度。
在一些实施例中,处理器可以被配置为基于系统调用或其他实时或运行时间事件来调用HEL组件。例如,处理器可以被配置为响应于检测到与当前异常级别的变化相关联的系统调用或指令执行而调用HEL组件。例如,处理器可以响应于检测到从管理程序204组件到TZ 210组件的SMC调用、响应于检测到从客户操作系统214a-214b到管理程序204组件的安全监测器调用(SMC)或管理程序调用(HVC)、响应于检测到阶段2级别数据中止操作等而调用HEL组件。
当被调用时,HEL组件可以执行各种操作以确定LEL组件的完整性是否已经被损害。例如,在一些实施例中,HEL组件可以识别由LEL组件使用的当前在工作存储器中的关键数据(例如,当前存在于DDR SDRAM中的关键RX代码和关键RO数据等),计算所识别的关键数据的散列,将所计算的散列与参考数据(例如,由XBL_SEC存储在存储器中的ELF区段起始地址和参考散列等)进行比较,基于该比较确定所计算的散列是否与参考数据匹配,响应于确定所计算的散列与参考数据匹配,验证LEL组件的完整性尚未被损害,并且响应于确定所计算的散列与参考数据不匹配,确定LEL组件的完整性已经被损害。在一些实施例中,HEL组件可以使用与用于在LEL组件加载序列期间生成散列参考数据相同的散列函数来计算当前在工作存储器中的关键数据的散列。
在一些实施例中,HEL组件可以被配置为通过以下操作来确定LEL组件的完整性是否已经被损害:确定由LEL组件使用的当前向量基地址(VBA),将当前VBA与VBA的参考数据进行比较以确定当前VBA是否与参考数据匹配,响应于确定当前VBA与参考数据匹配而确定LEL组件的完整性尚未被损害,和/或响应于确定当前VBA与参考数据不匹配,确定LEL组件的完整性已经被损害。在一些实施例中,HEL组件可以通过读取向量基地址寄存器(VBAR)来确定由LEL组件使用的当前VBA。在一些实施例中,HEL组件可以通过读取向量表基保持器(例如,ARM处理器上的ELx_VBAR、RISC-V处理器上的MTVAL、Hexagon DSP上的事件向量返回(EVB)等)来确定由LEL组件使用的当前VBA。
在一些实施例中,HEL组件可以识别“异常引发指令”,确定异常引发指令的地址,将异常引发指令的地址与参考数据进行比较,响应于确定异常引发指令的地址与参考数据匹配而确定LEL组件的完整性尚未被损害,和/或响应于确定异常引发指令的地址与参考数据不匹配而确定LEL组件的完整性已经被损害。
在一些实施例中,HEL组件可以通过从管理程序SMC代码区段捕获最高异常级别中的地址或读取异常链接寄存器(ELR、ELRx等)中的任何或全部、读取机器异常程序计数器(MEPC)、读取当异常发生时执行的指令的程序计数器(PC)值、读取处理器系统控制寄存器等来确定“异常引发指令”的地址。
在一些实施例中,HEL组件可以被配置为将最高异常链接寄存器中的捕获的SMC地址与参考数据进行比较,并且基于比较的结果来确定LEL组件的完整性是否已经被损害。
在一些实施例中,HEL组件可以被配置为确定LEL组件的当前向量基地址(VBA),确定当前VBA是否与参考数据匹配,响应于确定当前VBA与参考数据匹配而确定LEL组件的完整性尚未被损害,和/或响应于确定当前VBA与参考数据不匹配而确定LEL组件的完整性已经被损害。在一些实施例中,HEL组件可以被配置为通过读取核心向量表基地址寄存器或向量表基地址保持器来确定LEL组件的当前VBA,核心向量表基地址寄存器或向量表基地址保持器诸如异常级别向量基地址寄存器(ELx_VBAR)、机器陷阱值寄存器(MTVAL)或事件向量基(EVB)。
在一些实施例中,HEL组件可以被配置为读取LEL控制和系统(LEL-CSR)寄存器并且如由系统所要求的那样验证值。HEL组件可以将LEL-CSR寄存器的值与参考数据进行比较,确定LEL-CSR寄存器值是否与参考数据匹配,响应于确定LEL-CSR寄存器值与参考数据匹配而确定LEL组件的完整性尚未被损害,和/或响应于确定LEL-CSR寄存器值与参考数据不匹配而确定LEL组件的完整性已经被损害。
图4图示根据一些实施例的用于验证计算设备的软件组件的完整性并从验证的组件收集参考数据的方法400。参考图1-图4,方法400可以由计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)执行。
在框402中,处理器可以开始以高特权/异常级别(例如,EL-3等)执行代码。例如,在框402中,处理器可以将以高异常级别操作的软件组件(“HEL组件”)加载到计算设备的运行时间系统中。在一些实施例中,HEL组件可以是在计算设备的丰富/正常执行环境和信任/安全执行环境两者中并且在异常级别3(EL-3)内操作的监测器组件。
在框404中,处理器可以以高特权/异常级别(例如,EL-3等)加载低特权/异常级别(例如,EL-2等)映像元数据和片段。在一些实施例中,处理器还可以由HEL组件针对以低异常级别操作的软件组件(“LEL组件”)执行启动映像认证。
在一些实施例中,在框404中,处理器可以以低特权/异常级别(例如,EL-2等)加载元数据和操作软件的片段。例如,处理器可以在框404中加载LEL组件的元数据和片段。作为另一示例,在框404中,处理器可以使HEL组件加载LEL组件的元数据和片段。在一些实施例中,LEL组件可以是在异常级别2(EL-2)内在丰富/正常执行环境中操作的管理程序组件。
在确定框406中,处理器(或HEL组件中的加载器)可以将所识别的关键片段的预先计算的散列与可加载片段数据进行比较,并且确定所有所识别的关键片段的完整性是否已经被检查/评估。散列可以使用各种可用散列算法(例如,RSA256、RSA384、RSA512、DES等)中的任何一种来计算。
响应于确定所有识别的关键片段的完整性已经被检查/评估,处理器可以在框416中完成或结束验证和/或数据收集循环。这可以是数据收集和参考数据认证(来自如上所述的预先计算的散列)的结束。例如,管理程序参考数据(关键片段)完整性验证可以在安全引导(XBL_SEC)期间发生。在执行框416中的操作之后,HEL组件可以准备好调用LEL组件,并且计算设备可以继续正常执行。稍后,处理器/计算设备可以将所收集的参考数据用于LEL组件完整性验证。
响应于确定所有所识别的关键分段的完整性尚未被检查/评估,处理器可以在框408中从片段列表中选择下一片段。在确定框410中,处理器可以在确定框410中确定当前片段对于软件映像是否是关键的。例如,HEL组件可以确定当前片段是否包括用于LEL组件的关键读取-执行(RX)代码或关键只读(RO)数据。作为另一示例,HEL组件可以确定当前片段LEL组件是否包括访问控制驱动器(ACD)代码、管理程序向量表、操作系统向量表、与异常向量相关联的管理程序向量处理程序、安全监测器调用(SMC)接口/调用器代码、SMC指令代码地址、访问控制数据/策略、虚拟机策略管理器代码/资源、管理程序执行流变量或用户定义的标注的关键区段。
作为框408和/或410中的操作的一部分,处理器可以使用片段的名称来确定HEL组件中的关键片段,如在管理程序ELF映像中发布的(例如,segment_critXXXX)。处理器还能够使用片段的预定模式或布置或片段中的任何离线编译时间标注。HEL组件加载器可以检测那些标注并且标注要评估的片段。
响应于确定片段对于软件映像是关键的(即,确定框410=“是”),处理器可以在框412中存储关键片段的起始地址、大小和散列。该数据可以被存储在HEL组件可访问但LEL组件不可访问的寄存器或存储器中。参考数据可以被存储在DRAM/SRAM或在HEL组件的保护下并且可由HEL组件访问的任何存储器中。这可以确保LEL组件不破坏参考数据。存储器还可以通过本领域中已知的任何其他合适的技术或技艺来保护,诸如经由硬件保护单元、存储器管理单元(MMU)保护单元、硬件防火墙或在HEL组件中可访问的任何软件机制。
响应于确定所选择的片段对于软件映像不是关键的(即,确定框410=“否”),处理器可以在确定框406中确定所有标注的关键片段的完整性是否已经被检查/评估。执行框406-412的操作可以被重复,直到所有所识别的关键片段已经被评估为止。
图5图示根据一些实施例的用于收集适合用于评估软件组件的完整性的参考数据的方法500。参考图1-图5,方法500可以由在计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)上操作的HEL组件来执行。
在框502中,HEL组件可以扫描系统的低特权/异常级别以收集参考数据。例如,HEL组件可以针对能够包括访问控制驱动器(ACD)代码、LEL组件向量表(例如,管理程序向量表)、操作系统向量表、与异常向量相关联的LEL组件向量处理程序、安全监测器调用(SMC)接口/调用器代码、SMC指令代码地址、访问控制数据/策略、虚拟机策略管理器代码/资源、管理程序执行流变量或用户定义的标注的关键区段的数据、代码或片段来扫描软件映像。用于执行框502的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框504中,HEL组件可以将所收集的参考数据存储为关键数据,该关键数据将被用作被保护免受LEL组件访问的存储器中的参考数据。例如,HEL组件可以将所收集的数据识别和标记为关键数据,所收集的数据包括以下项中的任何或全部:访问控制驱动器(ACD)代码、管理程序向量表、操作系统向量表、与异常向量相关联的管理程序向量处理程序、安全监测器调用(SMC)接口/调用器代码、SMC指令代码地址、访问控制数据/策略、虚拟机策略管理器代码/资源、管理程序执行流变量以及用户定义的标注的关键区段。用于执行框504的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框506中,HEL组件可以生成关键/参考数据的散列。例如,处理器可以对关键数据执行散列函数或操作,以生成散列值、散列码、摘要或简单地散列,其可以被用于索引到散列表。用于执行框506的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框508中,HEL组件可以将所生成的散列作为参考数据(或测量参数)存储在HEL组件可访问但LEL组件不可访问的寄存器或存储器中。数据可以使用本领域中已知的各种技术或技艺中的任何技术或技艺来格式化和/或存储,该技术或技艺允许参考数据被存储,使得在任何时间参考数据不可由LEL组件访问,但是每当需要时参考数据可由HEL组件访问。用于执行框508的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框510中,HEL组件可以将与所存储的参考数据相关联的区段的加载地址传送(或使其可用)到高特权级别处理程序(或HEL组件处理程序、EL-3处理程序、监测器处理程序或能够执行以HEL组件级别运行的运行时间完整性检查的任何软件)。也就是说,在HEL组件中运行的HEL组件处理程序和/或软件具有相同的高特权级别。虽然一些实施例使用HEL组件处理程序作为示例,但是应当理解,将执行以HEL组件级别运行的运行时间完整性检查的任何软件同样适用。软件设计可以通过HEL组件中的任何函数调用机制来调用处理程序/完整性软件。用于执行框510的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
图6图示根据一些实施例的被配置为执行用于观察和评估软件组件是否已被损坏或损害的预测方法600的系统中的操作、通信和交互。参考图1-图6,预测方法600可以由计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)执行。
在框602中,处理器可以开始以低特权/异常级别(例如,EL-2等)执行代码。例如,在框602中,处理器可以将以低异常级别操作的软件组件(“LEL组件”)加载到计算设备的运行时间系统中。在一些实施例中,LEL组件可以是在异常级2(EL-2)内在丰富/正常执行环境中操作的管理程序组件。
在框604、606和608中的任何或全部中,处理器可以基于中断请求(IRQ)来调用HEL组件,该中断请求可以从空闲或附属组件、处理器或核心接收或在其上被检测。例如,在框604中,处理器可以基于具有循环执行触发的常规机器中断来调用HEL组件,其可以被用于基于充当中断的循环执行器的安全看门狗(WD)吠以周期或常规间隔来调用HEL组件。
在框606中,处理器可以基于具有伪随机表驱动触发的随机机器中断来调用HEL组件。例如,处理器可以使用以最高特权级别(例如,EL-3)注册的定时器中断,其具有基于先前定时器中断的规则间隔中断或伪随机间隔,该先前定时器中断将为下一个中断间隔调用归一化随机数。定时器中断可以用作基于伪随机化的表(定时器)驱动调度器,以调用下一个中断。
在框608中,处理器可以基于具有基于事件的触发的用户触发的机器中断来调用HEL组件。例如,处理器可以通过使用基于客户端请求的调用以周期或规则间隔来调用HEL组件,基于客户端请求的调用诸如充当针对中断的基于事件驱动的调度的用例触发的间隔(例如,内容保护(CPZ)用例、DRM用例、安全显示器、安全相机等)。
在框610中,处理器可以生成一个或多个低特权/异常级别组件(即,LEL组件)的关键片段的散列。在一些实施例中,处理器可以为一个或多个低特权/异常级别组件的每个关键片段生成散列。在一些实施例中,诸如在方法400的框412中,处理器可以使用与在加载一个或多个低特权/异常级别组件期间使用的散列函数相同的散列函数来生成一个或多个散列。
在框612中,处理器可以使用所生成的散列来检查/验证与以低特权/异常级别操作的组件(例如,LEL组件等)相关联的片段的完整性。例如,诸如在方法400的框412中,处理器可以将生成的散列与在加载一个或多个低特权/异常级别组件期间生成和存储的散列进行比较。
在一些实施例中,处理器可以针对每个关键片段(例如,在方法400的确定框410中被确定为关键的每个片段)重复地执行610和612中的操作。
在框614中,处理器可以响应于确定完整性检查失败而采取动作,诸如设置系统错误标志。例如,如果任何关键片段的完整性未被验证,诸如框610中生成的散列与框612中确定的存储的散列不匹配,则处理器可以在框614中发出/引发“系统致命”调用/标志。
图7图示根据一些实施例的被配置为执行用于观察和评估软件组件是否已被损坏或损害的运行时间方法700的系统中的操作、通信和交互。参考图1-7,运行时间方法700可以由计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)执行。
在操作702中,LEL组件或以低特权/异常级别(例如,EL-2等)执行的代码可以向HEL组件或以高特权/异常级别(例如,EL-3等)执行的代码发出系统调用(例如,SMC、HVC等)。操作702中的“系统调用”可以包括将控制改变为高异常级别的第二阶段数据/指令中止和处理器ISA指令的一部分,或用于切换特权级别的任何核心ISA机制(例如,可以改变特权级别的用户定义的中断)。
在框704中,HEL组件或以高特权/异常级别(例如,EL-3等)执行的代码可以确定LEL组件或低特权/异常级别代码的向量基地址寄存器(VBAR)、异常链接寄存器(ELR、ELRx等)或另一系统寄存器(例如,LEL控制和系统(LEL-CSR)寄存器等)中的值是否与对应的参考数据匹配。
如果VBAR、ELR和/或系统寄存器中的值与LEL组件的它们的对应参考数据不匹配,则HEL组件或以高特权/异常级别(例如,EL-3等)执行的代码可以在框706中向系统停止组件发出系统停止请求,这可以使得系统停止组件在框708中停止系统。
如果VBAR、ELR和/或系统寄存器中的值与其对应的参考数据匹配,则HEL组件或以高特权/异常级别(例如,EL-3等)执行的代码可以在框710中按照正常操作来处理系统调用。
在框712中,HEL组件或以高特权/异常级别(例如,EL-3等)执行的代码可以响应于系统调用和/或将系统调用的结果发送到LEL组件或以低特权/异常级别(例如,EL-2等)执行的代码。
图8图示根据一些实施例的HEL组件可以通过其评估LEL组件的完整性以确定LEL组件是否已经被损坏或损害的方法800。参考图1-图8,方法800可以由在计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)上操作的HEL组件来执行。
在框802中,HEL组件可以识别当前在工作存储器中的关键数据。例如,该过程可以确定计算设备的DDR SDRAM中当前是否存在任何关键RX代码段或关键RO数据段。用于执行框802的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框804中,HEL组件可以计算所识别的关键数据的散列。例如,处理器可以对关键数据执行散列函数或操作,以生成散列值、散列码、摘要或简单地散列,其可以被用于索引到散列表。用于执行框804的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框806中,HEL组件可以将所计算的散列与参考数据进行比较。例如,处理器可以将所计算的散列与ELF区段起始地址和/或先前由XBL_SEC存储在存储器中的参考散列进行比较。用于执行框806的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在确定框808中,HEL组件可以使用比较结果来确定所计算的散列是否与对应的参考数据匹配。例如,计算设备的核心处理器可以比较DDR中的数据的散列并将其与参考数据进行比较,或可以调用密码引擎以将消息摘要与参考数据进行比较。用于执行确定框808的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
响应于确定所计算的散列与参考数据匹配(即,确定框808=“是”),HEL组件可以在框810中推断、确定或验证LEL组件的完整性尚未被损害。在一些实施例中,HEL组件可以不采取动作,从而允许LEL组件继续运行。在一些实施例中,HEL组件可以响应于确定或验证LEL组件的完整性尚未被损害而采取动作作为框810中的操作的一部分,诸如设置LEL组件的控制和系统寄存器中的标志位,该标志位向其他功能(例如,管理程序)指示LEL组件已经被验证并且继续执行是安全的。用于执行框818的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
响应于确定所计算的散列与参考数据不匹配(即,确定框808=“否”),HEL组件可以在框812中推断或确定LEL组件的完整性已经被损害并且在框814中执行响应动作(例如,停止系统等)。例如,HEL组件可以发出/引发“系统致命”呼叫/标志(例如,在方法600的框614中)。用于执行框812的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
图9图示根据一些实施例的用于评估软件组件的完整性以确定它们是否已经被损坏或损害的方法900。参考图1-图9,方法900可以由在计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)上操作的HEL组件来执行。
在框902中,HEL组件可以获得或确定由LEL组件使用的当前向量基地址(VBA)。也就是说,由于固有的高特权级别属性,HEL组件可以访问LEL组件。这样,在框902中,HEL组件可以通过读取向量基地址寄存器(VBAR)、读取向量表基保持器、读取异常级向量基地址寄存器(ELx_VBAR)、读取机器陷阱值寄存器(MTVAL)或读取事件向量基(EVB)来识别当前VBA。用于执行框902的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框904中,HEL组件可以将当前VBA与在LEL组件的加载期间被存储在HEL可访问存储器中的对应参考数据进行比较。例如,在框904中,HEL组件可以将VBAR、ELx_VBAR、MTVAL或EVB的值与参考数据中的地址或地址范围(例如,ERI地址范围等)进行比较。比较操作可以是VBAR中包含的地址的范围检查或相等操作。用于执行框904的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在确定框906中,HEL组件可以确定当前VBA是否与对应的参考数据匹配。用于执行确定框906的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
响应于确定当前VBA与对应的参考数据匹配(即,确定框906=“是”),HEL组件可以在框810中确定或验证LEL组件的完整性尚未被损害,如所描述的。
响应于确定当前VBA与对应的参考数据不匹配(即,确定框906=“否”),HEL组件可以如所描述的在框812中推断或确定LEL组件的完整性已经被损害,并且如所描述的在框814中执行响应动作(例如,停止系统等)。
图10图示根据一些实施例的用于评估LEL软件组件的完整性以确定它们是否已经被损坏或损害的方法1000。参考图1-图10,方法1000可以由在计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)上操作的HEL组件来执行。
在框1002和1004中,HEL组件可以检测或识别异常引发指令(ERI)并且确定ERI的地址或ERI地址范围。例如,HEL组件可以通过异常链接寄存器(ELR)、机器异常程序计数器(MEPC)、当异常发生在处理器控制和状态寄存器中时在LEL组件中执行的指令的程序计数器(PC)值从LEL组件中的安全监测器调用(SMC)代码区段捕获最高异常级别中的地址。应当理解,单个地址可以由HEL组件在框1002和1004中捕获,并且将与其进行比较的参考数据可以包括在安全冷引导期间捕获的地址范围和/或地址范围集合。用于执行框1102和1104的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框1006中,HEL组件可以将所确定的ERI地址(或ERI地址范围)与在LEL组件的加载期间被存储在HEL可访问存储器中的参考数据进行比较。用于执行框1006的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在确定框1008中,HEL组件可以确定ERI地址(或ERI地址范围)是否与对应的参考数据匹配。用于执行确定框1008的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
响应于确定ERI地址(或ERI地址范围)与对应的参考数据匹配(即,确定框1008=“是”),HEL组件可以在框810中确定或验证LEL组件的完整性尚未被损害,如参考图8所描述的。
响应于确定ERI地址(或ERI地址范围)与对应的参考数据不匹配(即,确定框1008=“否”),HEL组件可以如参考图8所描述的在框812中确定LEL组件的完整性已经被损害,并且如参考图8所描述的在框814中执行响应动作(例如,停止系统等)。
图11图示根据一些实施例的用于评估软件组件的完整性以确定它们是否已经被损坏或损害的方法1100。参考图1-图11,方法1100可以由在计算设备中的处理器(例如,通用处理器106、GPU、DSP、APU等)上操作的HEL组件来执行。
在框1102中,HEL组件可以读取系统寄存器,诸如LEL控制和系统(LEL-CSR)寄存器。用于执行框1102的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在框1104中,HEL组件可以将LEL组件的控制寄存器和系统寄存器(LEL-CSR)的值与对应的参考数据进行比较。用于执行框1104的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
在确定框1106中,HEL组件可以确定寄存器值是否与对应的参考数据匹配。例如,HEL组件可以对所捕获的地址是否落在参考地址范围内执行比较操作。用于执行确定框1106的功能的部件可以包括耦接到存储器(例如,114)的处理器(例如,106)。
响应于确定寄存器值与对应的参考数据匹配(即,确定框1106=“是”),HEL组件可以在框810中确定或验证LEL组件的完整性尚未被损害,如参考图8所描述的。
响应于确定寄存器值与对应的参考数据不匹配(即,确定框1106=“否”),HEL组件可以如参考图8所描述的在框812中确定LEL组件的完整性已经被损害,并且如参考图8所描述的在框814中执行响应动作(例如,停止系统等)。
各种实施例(包含但不限于上文参考图1到图11所描述的实施例)可以在包括无线通信设备的各种各样的计算系统中实现,图12中图示适合与各种实施例一起使用的计算系统的示例。无线通信设备1200可以包括耦接到触摸屏控制器1204和内部存储器1206的处理器1202。处理器1202可以是被指定用于通用或特定处理任务的一个或多个多核心集成电路。内部存储器1206可以是易失性或非易失性存储器,并且还可以是安全和/或加密的存储器,或不安全和/或未加密的存储器,或其任何组合。触摸屏控制器1204和处理器1202还可以耦接到触摸屏面板1212,诸如电阻感测触摸屏、电容感测触摸屏、红外感测触摸屏等。另外,计算设备1200的显示器不需要具有触摸屏能力。
无线通信设备1200可以具有用于递送和接收通信的一个或多个无线电信号收发器1208(例如,Peanut、蓝牙、ZigBee、Wi-Fi、RF无线电)和天线1210,它们彼此耦接和/或耦接到处理器1202。收发器1208和天线1210可以与上述电路一起使用,以实现各种无线传输协议栈和接口。无线通信设备1200可以包括蜂窝网络无线调制解调器芯片1216,其实现经由蜂窝网络的通信并且耦接到处理器。
无线通信设备1200可以包括耦接到处理器1202的外围设备连接接口1218。外围设备连接接口1218可以被单独地配置为接受一种类型的连接,或者可以被配置为接受公共或专有的各种类型的物理和通信连接,诸如通用串行总线(USB)、FireWire、Thunderbolt或PCIe。外围设备连接接口1218还可以耦接到类似配置的外围设备连接端口(未示出)。
无线通信设备1200还可以包括用于提供音频输出的扬声器1214。无线通信设备1200还可以包括由塑料、金属或材料的组合构造的壳体1220,以包含本文描述的组件中的全部或一些。无线通信设备1200可以包括耦接到处理器1202的电源1222,诸如一次性或可充电电池。可充电电池还可以耦接到外围设备连接端口,以从无线通信设备1200外部的源接收充电电流。无线通信设备1200还可以包括用于接收用户输入的物理按钮1224。无线通信设备1200还可以包括用于打开和关闭无线通信设备1200的电源按钮1226。
各种实施例(包括但不限于上面参考图1-图11描述的实施例)可以在各种各样的计算设备中实现,包括膝上型计算机1300,其示例在图13中被图示。许多膝上型计算机包括用作计算机的定点设备的触摸板触摸表面1317,并且因此可以接收类似于在配备有触摸屏显示器并且如上所述的计算设备上实现的拖动、滚动和轻弹手势。膝上型计算机1300通常包括耦接到易失性存储器1312和大容量非易失性存储器的处理器1311,诸如闪存的磁盘驱动器1313。另外,计算机1300可以具有用于递送和接收电磁辐射的一个或多个天线1308,其可以连接到耦接到处理器1311的无线数据链路和/或蜂窝电话收发器1316。计算机1300还可以包括耦接到处理器1311的软盘驱动器1314和压缩光盘(CD)驱动器1315。在笔记本配置中,计算机壳体包括全部耦接到处理器1311的触摸板1317、键盘1318和显示器1319。计算设备的其他配置可以包括如众所周知的耦接到处理器(例如,经由USB输入)的计算机鼠标或轨迹球,其也可以结合各种实施例使用。
各种实施例(包含但不限于上文参考图1到图11所描述的实施例)还可以在固定计算系统中实现,诸如多种市售服务器中的任一者。示例服务器1400在图14中被示出。此类服务器1400通常包括耦接到易失性存储器1402和诸如磁盘驱动器1404的大容量非易失性存储器的一个或多个多核处理器组件1401。如图14中所示,可以通过将多核处理器组件1401插入到组件的机架中来将其添加到服务器1400。服务器1400还可以包括耦接到处理器1401的软盘驱动器、压缩光盘(CD)或数字通用光盘(DVD)光盘驱动器1406。服务器1400还可以包括耦接到多核心处理器组件1401的网络接入端口1403,用于与网络1405建立网络接口连接,诸如耦接到其他广播系统计算机和服务器的局域网、互联网、公共交换电话网络和/或蜂窝数据网络(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任何其他类型的蜂窝数据网络)。
如本申请中所使用的,术语“组件”、“模块”、“系统”、“引擎”、“生成器”、“管理器”等旨在包括计算机相关实体,诸如但不限于硬件、固件、硬件和软件的组合、软件或执行中的软件,其被配置为执行特定操作或功能。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。作为说明,在计算设备上运行的应用和计算设备都可以被称为组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个处理器或核心上和/或分布在两个或更多个处理器或核心之间。此外,这些组件可以从其上存储有各种指令和/或数据结构的各种非暂时性计算机可读介质执行。组件可以通过本地和/或远程进程、函数或过程调用、电子信号、数据分组、存储器读/写以及其他已知的网络、计算机、处理器和/或进程相关的通信方法来进行通信。
许多不同类型的存储器和存储器技术在将来是可用的或预期的,其中的任何一个或全部可以被包括在实现各种实施例的系统和计算设备中并在其中使用。此类存储器技术/类型可以包括非易失性随机存取存储器(NVRAM),诸如磁阻RAM(M-RAM)、电阻随机存取存储器(ReRAM或RRAM)、相变随机存取存储器(PC-RAM、PRAM或PCM)、铁电RAM(F-RAM)、自旋转移矩磁阻随机存取存储器(STT-MRAM)和三维交叉点(3D-XPOINT)存储器。此类存储器技术/类型还可以包括非易失性或只读存储器(ROM)技术,诸如可编程只读存储器(PROM)、现场可编程只读存储器(FPROM)、一次性可编程非易失性存储器(OTP NVM)。此类存储器技术/类型还可以包括易失性随机存取存储器(RAM)技术,诸如动态随机存取存储器(DRAM)、双倍数据速率(DDR)同步动态随机存取存储器(DDR SDRAM)、静态随机存取存储器(SRAM)和伪静态随机存取存储器(PSRAM)。实现各种实施例的系统和计算设备还可以包括或使用电子(固态)非易失性计算机存储介质,诸如闪存。上述存储器技术中的每一个包括例如适合于存储在计算机或其他数字电子设备中使用或由计算机或其他数字电子设备使用的指令、程序、控制信号和/或数据的元件。对与单独类型的存储器、接口、标准或存储器技术相关的术语和/或技术细节的任何引用仅用于说明性目的,并且不旨在将权利要求的范围限制于特定的存储器系统或技术,除非在权利要求语言中特别记载。
用于在可编程处理器上执行以实施各种实施例的操作的计算机程序代码或“程序代码”可以用诸如C、C++、C#、Smalltalk、Java、JavaScript、VisualBasic、结构化查询语言(例如,Transact-SQL)、Perl的高级编程语言或者用各种其他编程语言来编写。如本申请中所使用的存储在计算机可读存储介质上的程序代码或程序可以指代其格式可由处理器理解的机器语言代码(诸如目标代码)。
前述方法描述和过程流程图仅作为说明性示例提供,并不旨在要求或暗示各种实施例的操作必须以所呈现的顺序执行。如本领域技术人员将理解的,前述实施例中的操作顺序可以以任何顺序执行。诸如“此后”、“然后”、“接下来”等词语并不旨在限制操作的顺序;这些词语仅用于引导读者通读方法的描述。此外,例如使用名词对单数形式的权利要求元素的任何引用不应被解释为将元素限制为单数。
结合各种实施例描述的各种说明性逻辑块、模块、电路和算法操作可以实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此可互换性,上文已大体就其功能性描述了各种说明性组件、块、模块、电路和操作。此功能性是被实现为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可以针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为导致脱离权利要求书的范围。
用于实现结合本文中公开的各种实施例描述的各种说明性逻辑、逻辑块、模块、以及电路的硬件可以用设计位执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或多个微处理器,或任何其他此类配置。替代地,一些操作或方法可以由特定于给定功能的电路执行。
在一个或多个示例性方面,所描述的功能可以在硬件、软件、固件、或其任何组合中实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在非暂时性计算机可读介质或非暂时性处理器可读介质上。本文公开的方法或算法的步骤可以体现在处理器可执行软件模块中,该处理器可执行软件模块可以驻留在非暂时性计算机可读或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储媒体可以为可以由计算机或处理器存取的任何存储介质。作为示例而非限定,此类非瞬态计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备,或可以被用来存储指令或数据结构形式的期望程序代码且可以被计算机访问的任何其他介质。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上的组合也被包括在非瞬态计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可以作为代码和/或指令中的一者或任何组合或集合驻留在非暂时性处理器可读介质和/或计算机可读介质上,所述非暂时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
提供对所公开的实施例的前述描述是为使得本领域任何技术人员皆能够制作或使用权利要求。对于本领域技术人员来说,对这些实施例的各种修改将是显而易见的,并且在不脱离权利要求的范围的情况下,本文定义的一般原理可以应用于其他实施例和实现方式。因此,本发明并不希望限于本文中所描述的各种实施例及实施方案,而应被赋予与所附权利要求书及本文中所公开的原理和新颖特征相一致的最广范围。

Claims (36)

1.一种评估以低异常级别在计算设备上操作的软件的方法,包括:
由以高异常级别操作的组件(“HEL组件”)识别与以低异常级别操作的组件(“LEL组件”)相关联的当前向量基地址(VBA)、异常引发指令(ERI)地址或控制和系统寄存器(CSR)值中的至少一个;
确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配;以及
响应于确定当前VBA、ERI地址或CSR值与对应的参考数据不匹配而执行响应动作。
2.根据权利要求1所述的方法,还包括:
由HEL组件扫描至少低异常级别以收集数据;
将所收集的数据的部分标记为要用作参考数据的关键数据;
生成参考数据的散列;以及
将所生成的散列作为参考数据存储在HEL组件可访问但LEL组件不可访问的存储器的部分中。
3.根据权利要求2所述的方法,其中,由HEL组件扫描至少低异常级别以收集数据包括:HEL组件在LEL组件的加载期间收集LEL组件数据作为参考数据。
4.根据权利要求1所述的方法,还包括:
识别当前在工作存储器中的关键数据;
计算所识别的关键数据的散列;以及
将所计算的散列与对应的参考数据进行比较,以确定当前VBA、ERI地址或系统寄存器值中的至少一个是否与对应的参考数据匹配。
5.根据权利要求4所述的方法,其中:
识别当前在工作存储器中的关键数据包括识别当前存在于工作存储器中的关键读取-执行(RX)代码或关键只读(RO)数据;以及
将所计算的散列与对应的参考数据进行比较包括将所计算的散列与由HEL组件存储在存储器中的参考数据散列进行比较。
6.根据权利要求1所述的方法,还包括:
周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
7.根据权利要求1所述的方法,还包括:
非周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
8.根据权利要求1所述的方法,还包括通过基于以下中的至少一个调用HEL组件来周期性地调用HEL组件以验证LEL组件的完整性尚未被损害:
具有循环执行触发的机器中断;
具有伪随机表驱动触发的随机机器中断;或者
具有基于事件的触发的用户触发的机器中断。
9.根据权利要求1所述的方法,还包括:
检测能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件;以及
响应于检测到能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件,调用HEL组件以验证LEL组件的完整性尚未被损害。
10.根据权利要求1所述的方法,其中,识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过执行以下中的一个或多个来识别当前VBA:
读取向量基地址寄存器(VBAR);
读取向量表基保持器;
读取异常级别向量基地址寄存器(ELx_VBAR);
读取机器陷阱值寄存器(MTVAL);或者
读取事件向量基(EVB);或者
基于分层特权级别的指令集体系结构中的等效规定。
11.根据权利要求1所述的方法,其中,识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过从以下中的一个捕获最高异常级别中的地址来识别ERI地址:
安全监测器调用(SMC)代码区段;
异常链接寄存器(ELR);
机器异常程序计数器(MEPC);
当异常发生时执行的指令的程序计数器(PC)值;或者
处理器CSR。
12.根据权利要求1所述的方法,其中,确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配包括使用参考数据比较集,所述参考数据比较集包括:
关键区段的散列;
VBA;
从异常链接寄存器(ELR)或机器异常程序计数器(MEPC)捕获的ERI的地址范围集合;或者
CSR值。
13.一种计算设备,包括:
存储器,包括处理器可执行指令;以及
处理器,被配置为执行处理器可执行指令以执行包括以下项的操作:
由以高异常级别在处理器中操作的组件(“HEL组件”)识别与以低异常级别在处理器中操作的组件(“LEL组件”)相关联的当前向量基地址(VBA)、异常引发指令(ERI)地址或控制和系统寄存器(CSR)值中的至少一个;
确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配;以及
响应于确定当前VBA、ERI地址或CSR值与对应的参考数据不匹配而执行响应动作。
14.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括:
由HEL组件扫描至少低异常级别以收集数据;
将所收集的数据的部分标记为要用作参考数据的关键数据;
生成参考数据的散列;以及
将所生成的散列作为参考数据存储在HEL组件可访问但LEL组件不可访问的存储器的部分中。
15.根据权利要求14所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,使得由HEL组件扫描至少低异常级别以收集数据包括:HEL组件在LEL组件的加载期间收集LEL组件数据作为参考数据。
16.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括:
识别当前在工作存储器中的关键数据;
计算所识别的关键数据的散列;以及
将所计算的散列与对应的参考数据进行比较,以确定当前VBA、ERI地址或系统寄存器值中的至少一个是否与对应的参考数据匹配。
17.根据权利要求16所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,使得:
识别当前在工作存储器中的关键数据包括识别当前存在于工作存储器中的关键读取-执行(RX)代码或关键只读(RO)数据;以及
将所计算的散列与对应的参考数据进行比较包括将所计算的散列与由HEL组件存储在存储器中的参考数据散列进行比较。
18.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括:
周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
19.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括:
非周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
20.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括通过基于以下中的至少一个调用HEL组件来周期性地调用HEL组件以验证LEL组件的完整性尚未被损害:
具有循环执行触发的机器中断;
具有伪随机表驱动触发的随机机器中断;或者
具有基于事件的触发的用户触发的机器中断。
21.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,所述操作还包括:
检测能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件;以及
响应于检测到能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件,调用HEL组件以验证LEL组件的完整性尚未被损害。
22.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,使得识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过执行以下中的一个或多个来识别当前VBA:
读取向量基地址寄存器(VBAR);
读取向量表基保持器;
读取异常级别向量基地址寄存器(ELx_VBAR);
读取机器陷阱值寄存器(MTVAL);或者
读取事件向量基(EVB);或者
基于分层特权级别的指令集体系结构中的等效规定。
23.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,使得识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过从以下中的一个捕获最高异常级别中的地址来识别ERI地址:
安全监测器调用(SMC)代码区段;
异常链接寄存器(ELR);
机器异常程序计数器(MEPC);
当异常发生时执行的指令的程序计数器(PC)值;或者
处理器CSR。
24.根据权利要求13所述的计算设备,其中,所述处理器被配置为执行处理器可执行指令以执行操作,使得确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配包括使用参考数据比较集,所述参考数据比较集包括:
关键区段的散列;
VBA;
从异常链接寄存器(ELR)或机器异常程序计数器(MEPC)捕获的ERI的地址范围集合;或者
CSR值。
25.一种其上存储有处理器可执行指令的非暂时性处理器可读介质,所述处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作包括:
由以高异常级别在处理器中操作的组件(“HEL组件”)识别与以低异常级别在处理器中操作的组件(“LEL组件”)相关联的当前向量基地址(VBA)、异常引发指令(ERI)地址或控制和系统寄存器(CSR)值中的至少一个;
确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配;以及
响应于确定当前VBA、ERI地址或CSR值与对应的参考数据不匹配而执行响应动作。
26.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作还包括:
由HEL组件扫描至少低异常级别以收集数据;
将所收集的数据的部分标记为要用作参考数据的关键数据;
生成参考数据的散列;以及
将所生成的散列作为参考数据存储在HEL组件可访问但LEL组件不可访问的存储器的部分中。
27.根据权利要求26所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,使得由HEL组件扫描至少低异常级别以收集数据包括:HEL组件在LEL组件的加载期间收集LEL组件数据作为参考数据。
28.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作还包括:
识别当前在工作存储器中的关键数据;
计算所识别的关键数据的散列;以及
将所计算的散列与对应的参考数据进行比较,以确定当前VBA、ERI地址或系统寄存器值中的至少一个是否与对应的参考数据匹配。
29.根据权利要求28所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,使得:
识别当前在工作存储器中的关键数据包括识别当前存在于工作存储器中的关键读取-执行(RX)代码或关键只读(RO)数据;以及
将所计算的散列与对应的参考数据进行比较包括将所计算的散列与由HEL组件存储在存储器中的参考数据散列进行比较。
30.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作还包括:
周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
31.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作还包括:
非周期性地调用HEL组件以验证LEL组件的完整性尚未被损害。
32.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使得计算设备的处理器执行操作,所述操作还包括通过基于以下中的至少一个调用HEL组件来周期性地调用HEL组件以验证LEL组件的完整性尚未被损害:
具有循环执行触发器的机器中断;
具有伪随机表驱动触发的随机机器中断;或者
具有基于事件的触发的用户触发的机器中断。
33.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,所述操作还包括:
检测能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件;以及
响应于检测到能够导致计算设备的当前异常级别的变化的系统调用或运行时间事件,调用HEL组件以验证LEL组件的完整性尚未被损害。
34.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,使得识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过执行以下中的一个或多个来识别当前VBA:
读取向量基地址寄存器(VBAR);
读取向量表基保持器;
读取异常级别向量基地址寄存器(ELx_VBAR);
读取机器陷阱值寄存器(MTVAL);或者
读取事件向量基(EVB);或者
基于分层特权级别的指令集体系结构中的等效规定。
35.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,使得识别与LEL组件相关联的当前VBA、ERI地址或CSR值中的至少一个包括通过从以下中的一个捕获最高异常级别中的地址来识别ERI地址:
安全监测器调用(SMC)代码区段;
异常链接寄存器(ELR);
机器异常程序计数器(MEPC);
当异常发生时执行的指令的程序计数器(PC)值;或者
处理器CSR。
36.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使计算设备的处理器执行操作,使得确定当前VBA、ERI地址或CSR值中的至少一个是否与对应的参考数据匹配包括使用参考数据比较集,所述参考数据比较集包括:
关键区段的散列;
VBA;
从异常链接寄存器(ELR)或机器异常程序计数器(MEPC)捕获的ERI的地址范围集合;或者
CSR值。
CN202180057761.9A 2020-06-10 2021-05-17 分层保护域中的安全性增强 Pending CN116157795A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/897,959 US11556346B2 (en) 2020-06-10 2020-06-10 Security enhancement in hierarchical protection domains
US16/897,959 2020-06-10
PCT/US2021/032665 WO2021252141A1 (en) 2020-06-10 2021-05-17 Security enhancement in hierarchical protection domains

Publications (1)

Publication Number Publication Date
CN116157795A true CN116157795A (zh) 2023-05-23

Family

ID=76270115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180057761.9A Pending CN116157795A (zh) 2020-06-10 2021-05-17 分层保护域中的安全性增强

Country Status (5)

Country Link
US (1) US11556346B2 (zh)
EP (1) EP4165533A1 (zh)
CN (1) CN116157795A (zh)
TW (1) TW202203039A (zh)
WO (1) WO2021252141A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024070044A1 (ja) * 2022-09-28 2024-04-04 パナソニックオートモーティブシステムズ株式会社 検証システム、検証方法、及び、プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
JP6370098B2 (ja) 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
GB2535514B (en) * 2015-02-19 2021-09-22 Advanced Risc Mach Ltd Processor exception handling
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
JP2018036695A (ja) 2016-08-29 2018-03-08 杉中 順子 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置
CN108959916B (zh) * 2017-05-22 2022-01-14 华为技术有限公司 用于访问安全世界的方法、装置和系统
US20200409740A1 (en) * 2019-06-27 2020-12-31 Shih-Wei Li Systems, methods, and media for trusted hypervisors

Also Published As

Publication number Publication date
TW202203039A (zh) 2022-01-16
WO2021252141A1 (en) 2021-12-16
EP4165533A1 (en) 2023-04-19
US11556346B2 (en) 2023-01-17
US20210389953A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
US10789105B2 (en) Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
CN109918919B (zh) 认证变量的管理
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
JP5985631B2 (ja) 信頼レベルのアクティブ化
US8566935B2 (en) Balancing malware rootkit detection with power consumption on mobile devices
US20170277903A1 (en) Data Protection Using Virtual Resource Views
WO2016137579A1 (en) Return oriented programming attack detection via memory monitoring
US20180060569A1 (en) Detection and Prevention of Malicious Shell Exploits
US20090125974A1 (en) Method and system for enforcing trusted computing policies in a hypervisor security module architecture
EP2973154B1 (en) Method, apparatus, system, and computer readable medium to provide secure operation
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
CN109558372B (zh) 用于安全处理器的设备和方法
US20080028180A1 (en) Inappropriate access detector based on system segmentation faults
JP2015219682A (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
KR20200041639A (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
US11556346B2 (en) Security enhancement in hierarchical protection domains
Bousquet et al. Mandatory access control for the android dalvik virtual machine
Yalew et al. DroidPosture: A trusted posture assessment service for mobile devices
US20220129542A1 (en) Deterministic trusted execution container through managed runtime language metadata
Mituca et al. Access control for apps running on constrained devices in the internet of things

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