CN113168380B - 电子设备和地址访问方法 - Google Patents

电子设备和地址访问方法 Download PDF

Info

Publication number
CN113168380B
CN113168380B CN201980077662.XA CN201980077662A CN113168380B CN 113168380 B CN113168380 B CN 113168380B CN 201980077662 A CN201980077662 A CN 201980077662A CN 113168380 B CN113168380 B CN 113168380B
Authority
CN
China
Prior art keywords
page
target
module
physical address
iommu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980077662.XA
Other languages
English (en)
Other versions
CN113168380A (zh
Inventor
骆华敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN113168380A publication Critical patent/CN113168380A/zh
Application granted granted Critical
Publication of CN113168380B publication Critical patent/CN113168380B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种电子设备和地址访问方法,涉及电子技术领域,用于确保内存块鉴权的准确度,提升了安全隔离的可靠性,并提升了电子设备的性能。该电子设备包括:硬件模块和与硬件模块对应的IOMMU模块,其中,IOMMU模块包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,用于指示硬件模块具有访问操作权限的内存页的页标记号。IOMMU模块用于获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,其中,目标虚拟地址为硬件模块待访问的目标内存页对应的一段虚拟地址中的一个虚拟地址;确定至少一个鉴权页标记号中是否包括目标内存页的页标记号;硬件模块用于:当至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址。

Description

电子设备和地址访问方法
技术领域
本申请涉及电子技术领域,尤其涉及一种电子设备和地址访问方法。
背景技术
随着互联网与通讯技术的演进,操作系统环境越来越开放,软件应用越来越丰富,如何保护数据和用户隐私的安全成为关注焦点,内存隔离技术成为一种重要的安全保障措施。
现有技术中的内存隔离技术,通常采用集中式鉴权的方式对硬件模块访问内存块进行鉴权来实现内存隔离。具体地,在硬件模块访问内存块的物理地址时,通过寄存器配置或查找线性映射表的方式确定该硬件模块对该物理地址的访问权限,从而决定是否允许硬件模块访问该物理地址。
集中式鉴权的方式很难在性能、成本和安全性上取得综合优势。如果采用寄存器配置,则性能无风险,但鉴权的颗粒度只能非常粗,很难做到非常细粒度的鉴权。如果采用查找线性映射表的方式,则该线性映射表不管存储在设备内部内存还是设备外部内存中都会面临挑战:因为线性映射表标识所有物理地址的访问权限,所以线性映射表占用较大内存空间,存储在设备内部内存则设备成本会显著增加,存储在设备外部内存中则每次鉴权都需要先从外部内存中读取,导致系统的延迟增加,性能下降。
发明内容
本申请实施例提供一种电子设备和地址访问方法,确保内存块鉴权的准确度,提升了安全隔离的可靠性,并可以有效地解决性能和成本的矛盾。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种电子设备,包括:硬件模块和与硬件模块对应的输入输出存储管理单元IOMMU模块,其中,IOMMU模块包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,至少一个鉴权页标记号用于指示硬件模块具有访问操作权限的内存页的页标记号,内存页分别对应一段虚拟地址和一段物理地址,其中每个内存页对应一个页标记号;IOMMU模块用于:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,其中,目标虚拟地址为硬件模块待访问的目标内存页对应的一段虚拟地址中的一个虚拟地址;IOMMU模块还用于:确定至少一个鉴权页标记号中是否包括目标内存页的页标记号;硬件模块用于:当IOMMU模块确定至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址。
本申请实施例提供的电子设备,涉及安全保护的硬件模块对应IOMMU模块,IOMMU模块包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,至少一个鉴权页标记号用于指示硬件模块具有访问操作权限的内存页的页标记号。IOMMU模块用于:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,目标虚拟地址为目标内存页对应的一段虚拟地址中的一个虚拟地址。当过滤寄存器中存储的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块可以访问目标物理地址。由于硬件模块与IOMMU模块一一对应,对于涉及安全保护的硬件模块,由对应的IOMMU模块对其访问操作进行鉴权。进一步的,本申请实施例可以对涉及安全保护的每一个内存页进行访问鉴权,鉴权粒度更细,确保内存块鉴权的准确度,提升了安全隔离的可靠性。并且现有的SOC通常都已经有类似的IOMMU模块,可以直接基于现有的SOC架构部署本申请的实施例,不增加额外的成本。另外,由于用于鉴权的页标记号存储在IOMMU的寄存器中,无需从设备外部内存读取鉴权信息,因此不会增加系统时延;并且用于鉴权的页标记号是存储在IOMMU模块的寄存器中,无需占用较大内存空间。综上所述,本申请实施例可以有效地解决性能和成本的矛盾。
在一种可能的实施方式中,该电子设备还包括存储模块,存储模块包括多个内存块,内存块包括多个具有相同页标记号的内存页。
该实施方式提供了内存页与存储模块之间的关系。
在一种可能的实施方式中,该电子设备还包括处理器,处理器包括驱动程序,IOMMU模块还用于从该驱动程序获取目标虚拟地址。
该实施方式提供了一种示例性的目标虚拟地址的来源。
在一种可能的实施方式中,每个内存页对应一个页描述符,页描述符中包括与页描述符对应的内存页的起始物理地址和页标记号;IOMMU模块具体用于:根据目标虚拟地址获取目标内存页对应的目标页描述符,目标页描述符中包括目标内存页的起始物理地址和目标内存页的页标记号;根据目标虚拟地址和目标内存页的起始物理地址得到目标物理地址。
该实施方式提供了获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号的一种方式。
在一种可能的实施方式中,页描述符占用连续存储空间,页描述符在连续存储空间中的地址与页描述符对应的内存页的页号对应,内存页分别对应2N个连续的虚拟地址和2N个连续的物理地址,IOMMU模块具体用于:将目标虚拟地址右移N位得到目标内存页的页号;从连续存储空间中与目标内存页的页号对应的地址中得到目标页描述符;将目标虚拟地址对2N取余得到页内偏移量,其中,页内偏移量为目标虚拟地址相对于目标内存页的起始虚拟地址的相对距离;将目标页描述符中的起始物理地址加上页内偏移量,得到目标物理地址。
该实施方式进一步提供了获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号的一种方式。
在一种可能的实施方式中,页描述符还包括有效标志,有效标志用于指示页描述符是否有效,IOMMU模块还用于:获取目标页描述符中的有效标志;以及确定目标页描述符中的有效标志是否有效;硬件模块用于:当IOMMU模块确定目标页描述符中的有效标志有效,并且IOMMU模块确定至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址。
在该实施方式中,只有有效标志为有效的页描述符可以用于鉴权。
在一种可能的实施方式中,过滤寄存器包括读过滤寄存器和写过滤寄存器,读过滤寄存器中存储的至少一个鉴权页标记号用于指示硬件模块具有读操作权限的内存页的页标记号,写过滤寄存器中存储的至少一个鉴权页标记号用于指示硬件模块具有写操作权限的内存页的页标记号。当访问操作为读操作,并且IOMMU模块确定读过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块用于读目标物理地址;当访问操作为写操作,并且IOMMU模块确定写过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块用于写目标物理地址。
在该实施方式中,读写操作分别对应各自的过滤寄存器,因此读写操作可以分别进行鉴权。
在一种可能的实施方式中,当至少一个鉴权页标记号中不包括目标内存页的页标记号时,IOMMU模块还用于拒绝硬件模块访问操作目标内存页,或者,硬件模块还用于访问预设物理地址,预设物理地址为目标内存页对应的一段物理地址之外的物理地址。
该实施方式提供了鉴权失败时的处理方式,可以防止未经鉴权的硬件模块的访问操作。
在一种可能的实施方式中,处理器还包括软件IOMMU管理模块,软件IOMMU管理模块用于:建立虚拟地址、物理地址和内存页的页标记号之间的对应关系。
该实施方式提供了虚拟地址、物理地址和内存页的页标记号之间的对应关系的来源。
在一种可能的实施方式中,软件IOMMU管理模块还用于:根据驱动程序所指示的硬件模块的访问操作权限,更新对应的IOMMU模块的过滤寄存器中的至少一个鉴权页标记号。
该实施方式提供了IOMMU模块的过滤寄存器中的至少一个鉴权页标记号的更新依据。
在一种可能的实施方式中,该电子设备包括:可信执行环境TEE和普通执行环境REE,TEE和REE具有独立的IOMMU模块。
在该实施方式中,TEE IOMMU模块仅能在TEE中对硬件模块对TEE内存块的虚拟地址的访问操作进行鉴权;REE IOMMU模块仅能在REE中对REE内存块的虚拟地址的访问操作进行鉴权。
第二方面,提供了一种地址访问方法,包括:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,目标虚拟地址为硬件模块待访问的目标内存页对应的一段虚拟地址中的一个虚拟地址;确定至少一个鉴权页标记号中是否包括目标内存页的页标记号,其中,至少一个鉴权页标记号存储于与硬件模块对应的输入输出存储管理单元IOMMU模块的过滤寄存器中,至少一个鉴权页标记号用于指示硬件模块具有访问操作权限的内存页的页标记号,内存页分别对应一段虚拟地址和一段物理地址,其中每个内存页对应一个页标记号;当至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块访问目标物理地址。
本申请实施例提供的地址访问方法,涉及安全保护的硬件模块对应IOMMU模块,IOMMU模块包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,至少一个鉴权页标记号用于指示硬件模块具有访问操作权限的内存页的页标记号。IOMMU模块用于:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,目标虚拟地址为目标内存页对应的一段虚拟地址中的一个虚拟地址。当过滤寄存器中存储的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块可以访问目标物理地址。由于硬件模块与IOMMU模块一一对应,对于涉及安全保护的硬件模块,由对应的IOMMU模块对其访问操作进行鉴权。进一步的,进一步的,本申请实施例可以对涉及安全保护的每一个内存页进行访问鉴权,鉴权粒度更细,确保内存块鉴权的准确度,提升了安全隔离的可靠性。并且现有的SOC通常都已经有类似的IOMMU模块,可以直接基于现有的SOC架构部署本申请的实施例,不增加额外的成本。另外,由于用于鉴权的页标记号存储在IOMMU的寄存器中,无需从设备外部内存读取鉴权信息,因此不会增加系统时延;并且用于鉴权的页标记号的存储不占用设备内部内存,因此也不会额外增加设备成本。综上所述,可以有效地解决性能和成本的矛盾。
在一种可能的实施方式中,该方法还包括:从驱动程序获取目标虚拟地址。
该实施方式提供了一种示例性的目标虚拟地址的来源。
在一种可能的实施方式中,每个内存页对应一个页描述符,页描述符中包括与页描述符对应的内存页的起始物理地址和页标记号;获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,包括:根据目标虚拟地址获取目标内存页对应的目标页描述符,目标页描述符中包括目标内存页的起始物理地址和目标内存页的页标记号;根据目标虚拟地址和目标内存页的起始物理地址得到目标物理地址。
该实施方式提供了获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号的一种方式。
在一种可能的实施方式中,页描述符占用连续存储空间,页描述符在连续存储空间中的地址与页描述符对应的内存页的页号对应,内存页分别对应2N个连续的虚拟地址和2N个连续的物理地址。根据目标虚拟地址获取目标内存页对应的目标页描述符,包括:将目标虚拟地址右移N位得到目标内存页的页号;从连续存储空间中与目标内存页的页号对应的地址中得到目标页描述符。根据目标虚拟地址和目标内存页的起始物理地址得到目标物理地址,包括:将目标虚拟地址对2N取余得到页内偏移量,其中,页内偏移量为目标虚拟地址相对于目标内存页的起始虚拟地址的相对距离;将目标页描述符中的起始物理地址加上页内偏移量,得到目标物理地址。
该实施方式进一步提供了获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号的一种方式。
在一种可能的实施方式中,页描述符还包括有效标志,有效标志用于指示页描述符是否有效,该方法还包括:获取目标页描述符中的有效标志;确定目标页描述符中的有效标志是否有效;当至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址,包括:当目标页描述符中的有效标志有效,并且至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址。
在该实施方式中,只有有效标志为有效的页描述符可以用于鉴权。
在一种可能的实施方式中,过滤寄存器包括读过滤寄存器和写过滤寄存器,读过滤寄存器中存储的至少一个鉴权页标记号用于指示硬件模块具有读操作权限的内存页的页标记号,写过滤寄存器中存储的至少一个鉴权页标记号用于指示硬件模块具有写操作权限的内存页的页标记号,当至少一个鉴权页标记号中包括目标内存页的页标记号时,访问目标物理地址,包括:当访问操作为读操作,并且读过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,读目标物理地址;当访问操作为写操作,并且写过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,写目标物理地址。
在该实施方式中,读写操作分别对应各自的过滤寄存器,因此读写操作可以分别进行鉴权。
在一种可能的实施方式中,该方法还包括:当至少一个鉴权页标记号中不包括目标内存页的页标记号时,拒绝硬件模块访问操作目标内存页,或者,硬件模块访问预设物理地址,预设物理地址为目标内存页对应的一段物理地址之外的物理地址。
该实施方式提供了鉴权失败时的处理方式,可以防止未经鉴权的硬件模块的访问操作。
在一种可能的实施方式中,该方法还包括:建立虚拟地址、物理地址和内存页的页标记号之间的对应关系。
该实施方式提供了虚拟地址、物理地址和内存页的页标记号之间的对应关系的来源。
在一种可能的实施方式中,该方法还包括:根据驱动程序所指示的硬件模块的访问操作权限,更新对应的过滤寄存器中的至少一个鉴权页标记号。
该实施方式提供了IOMMU模块的过滤寄存器中的至少一个鉴权页标记号的更新依据。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机或处理器上运行时,使得计算机或处理器执行如第二方面或者其任一种可能的实施方式中的方法。
第四方面,提供了一种包含指令的计算机程序产品,当该指令在计算机或处理器上运行时,使得计算机或处理器执行如第二方面或者其任一种可能的实施方式中的方法。
第三方面至第四方面的技术效果可以参照第二方面的各种可能实施方式所述内容。
附图说明
图1为本申请实施例提供的一种软件应用访问内存块的系统架构示意图;
图2为本申请实施例提供的一种电子设备的结构示意图;
图3为本申请实施例提供的另一种电子设备的结构示意图;
图4为本申请实施例提供的一种地址访问方法的流程示意图一;
图5为本申请实施例提供的一种地址访问方法的流程示意图二;
图6为本申请实施例提供的一种地址访问方法的流程示意图三。
具体实施方式
如本申请所使用的,术语“组件”、“模块”、“系统”等等旨在指代计算机相关实体,该计算机相关实体可以是硬件、固件、硬件和软件的结合、软件或者运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、对象、可执行文件、执行中的线程和/或程序。作为示例,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于执行中的过程和/或线程中,并且组件可以位于一个计算机中以及/或者分布在两个或更多个计算机之间。此外,这些组件能够从在其上具有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互)的信号,以本地和/或远程过程的方式进行通信。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例性的”一词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
图1示出了一种典型的软件应用访问内存块的系统架构,普遍适用于智能手机、智能机顶盒、智能电视等领域。该系统架构包括:软件应用层、软件接口适配层、软件驱动层、软件操作系统层、硬件模块和存储模块。软件应用层用于运行应用软件,例如微信、支付宝等,应用软件启动时向操作系统层申请分配内存块,并获取内存块中的虚拟地址,应用软件运行过程中的数据都可以通过该虚拟地址进行访问操作。软件接口适配层用于根据软件应用层访问的虚拟地址匹配软件驱动层中的驱动程序。软件驱动层中包括针对各个硬件模块编写的驱动程序,驱动程序根据虚拟地址对相应的硬件模块进行访问操作。操作系统层负责内存管理、堆栈管理、任务调度管理等。软件应用层中的软件应用可以通过软件接口适配层、软件驱动层和软件操作系统层控制硬件模块,对存储模块中的内存块进行访问操作。
假设软件应用1使用硬件模块1、2和3,并通过硬件模块1和2访问内存块1、2和3。软件应用2使用到硬件模块3和4,并通过硬件模块3和4访问内存块3、4和5。
因为软件应用层和软件接口适配层通常运行在用户态模式,需要支持各种定制化和多样化,代码更新也会相对频繁,代码容易受到攻击或被篡改,因此认为是不安全的。其中,用户态指非特权状态,在此状态下,每个软件应用都在各自的用户空间中运行,不允许访问其他软件应用的用户空间。在未采用内存隔离的情况下,软件应用2只要知道了软件应用1访问的内存块1、2、和3的地址,就可以通过硬件模块3或4访问这些内存块,从而导致软件应用1的数据或隐私泄露。
本申请实施例提供了一种电子设备和地址访问方法,对于涉及安全保护的硬件模块,由对应的IOMMU模块对其访问操作进行鉴权;可对涉及安全保护的每一个内存页进行读写访问操作的鉴权,提升了内存隔离的准确度,并且不增加硬件模块访问内存的延迟,不降低系统性能。进一步的,现有的系统级芯片(system on chip,SOC)通常都已经有类似的IOMMU模块,可以直接在其上部署本申请的实施例,不增加额外的成本。
首先,对本申请实施例涉及的概念进行描述:
本申请实施例中,内存页分别对应一段虚拟地址和一段物理地址,一段虚拟地址可以是连续的,一段物理地址也可以是连续的。其中,内存页的大小可以为4KB、16KB、64KB等,本申请不作限定。
本申请实施例中,每个内存页对应一个页标记号。但并不限定一个内存页对应一个唯一的页标记号,可以多个内存页对应一个页标记号,例如,一个硬件模块对多个内存页具有相同访问操作权限,则可以将这些内存页用同一个页标记号进行映射。本申请并不限定页标记号的位宽,例如8bit位宽可以支持256个页标记号。
本申请实施例中,物理地址(physical address)是指:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元具有的唯一的存储器地址。物理地址也可称为实际地址或绝对地址。物理地址是可以通过地址总线在存储器中寻址的,是数据实际存储的地址。
虚拟地址是指:软件应用访问存储器所使用的逻辑地址。虚拟地址并不实际存储数据,而是需要映射到实际的物理地址上来获取数据。虚拟地址的分配由操作系统来执行,示例性的,虚拟地址的分配由图1中的软件操作系统层来执行,虚拟地址到物理地址的映射由处理器中的内存管理单元(memory management unit,MMU)(图中未示出)执行,不同软件应用之间的虚拟地址映射到不同的物理地址,以实现内存隔离。示例性的,虚拟地址与物理地址之间是以页为单位进行映射的。
本申请实施例涉及的访问操作包括读操作和写操作,访问操作权限包括读操作权限和写操作权限。
本申请实施例涉及的可信执行环境(trusted execution environment,TEE)与普通执行环境(rich execution environment,REE)相对应,TEE应用于安全智能设备,安全支付等领域,可以提供受保护的执行环境,REE用于执行不必受严格保护的软件应用。TEE与REE之间内存隔离,即REE中的软件应用不允许访问TEE中的内存。对于支持TEE的电子设备来说,本申请只涉及同一执行环境内硬件模块间的内存隔离,不涉及不同执行环境间的硬件模块间的内存隔离。
本申请实施例提供了一种电子设备,该电子设备可以为手机、智能机顶盒、智能电视等设备。图2中示出了一种示例性的不支持TEE的电子设备的架构,图3中示出了一种示例性的支持TEE的电子设备的架构。
如图2和图3所示,该电子设备包括:硬件模块200和与硬件模块200对应的输入输出存储管理单元(input output memory management unit,IOMMU)模块300,可选的,该电子设备还可以包括存储模块100。进一步的,该电子设备还可以包括处理器400。处理器400包括:软件IOMMU管理模块500、软件操作系统层、软件驱动层、软件接口适配层和软件应用层。应当理解,软件IOMMU管理模块500、软件操作系统层、软件驱动层、软件接口适配层和软件应用层运行在处理器上。
存储模块100、硬件模块200、IOMMU模块300和处理器400可以位于同一SOC中;或者,硬件模块200、IOMMU模块300和处理器400可以位于同一SOC中,存储模块100独立于SOC之外,本申请并不限定。
对于图3所示的支持TEE的电子设备来说,TEE IOMMU模块301、REE IOMMU模块302、硬件模块200和处理器400可以位于同一SOC中。
处理器400可以为例如系统级芯片控制逻辑单元、微处理器、微控制器(micro-controller unit,MCU)、中央处理器(central process unit,CPU)、数字信号处理器(digital signal processing,DSP)、图形处理单元(graphics processing unit,GPU)、现场可编程门阵列(field programmable gate array,FPGA)、专用集成电路(applicationspecific integrated circuit,ASIC)等,本申请不作限定。
存储模块100指具有存储功能的模块,示例性的,可以包括但不限于例如双倍速率(double data rate,DDR)存储器、闪存(Flash)、静态随机存取存储器(static randomaccess memory,SRAM)等,本申请不作限定。存储模块100包括多个内存块,每个内存块包括多个内存页。具体的,存储模块100包括多个内存块(memory block)101,可选的,每个内存块101包括的多个内存页具有相同的页标记号,这种情况下,每个内存块中的多个内存页具有相同的访问权限。对于图3所示的支持TEE的电子设备来说,TEE中的存储模块100包括TEE内存块102,REE中的存储模块100包括REE内存块103。TEE内存块102和REE内存块103可以位于同一存储模块中。
硬件模块200指通过硬件实现具体功能的模块,示例性的,可以包括例如硬件解密模块、硬件加密模块、硬件解码模块、硬件通信模块、硬件图形处理模块、硬件显示模块、模数转换器(analog to digital converter,ADC)、数模转换器(digital to analogconverter,DAC)、通讯接口、射频单元以及微电子机械模块等,本申请不作限定。
硬件模块200仅能访问具有访问操作权限的物理地址,示例性的,如图2所示,硬件模块4对内存块4具有写操作权限,对内存块5具有读操作权限。对于图3所示的支持TEE的电子设备来说,TEE和REE可以共用同一硬件模块。
硬件模块200与IOMMU模块300一一对应,IOMMU模块300用于对对应的硬件模块200对虚拟地址的访问操作进行鉴权。示例性的,如图2所示,硬件模块1和IOMMU模块1对应,硬件模块2和IOMMU模块2对应,硬件模块3和IOMMU模块3对应,硬件模块4和IOMMU模块4对应。
对于图3所示的支持TEE的电子设备来说,TEE和REE具有独立的IOMMU模块,其中,TEE具有TEE IOMMU模块301,REE具有REE IOMMU模块302。TEE中,硬件模块200与TEE IOMMU模块301一一对应,REE中硬件模块200与REE IOMMU模块302一一对应。
TEE IOMMU模块301仅能在TEE中对硬件模块200对TEE内存块102的虚拟地址的访问操作进行鉴权;REE IOMMU模块302仅能在REE中对REE内存块103的虚拟地址的访问操作进行鉴权。
IOMMU模块300包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,用于指示硬件模块200具有访问操作权限的内存页的页标记号。
进一步的,过滤寄存器可以包括读过滤寄存器和写过滤寄存器,读过滤寄存器中存储的至少一个鉴权页标记号用于指示硬件模块200具有读操作权限的内存页的页标记号;写过滤寄存器中存储的至少一个鉴权页标号用于指示硬件模块200具有写操作权限的内存页的页标记号。
对于图3所示的支持TEE的电子设备来说,TEE IOMMU模块301的过滤寄存器中存储的至少一个鉴权页标记号,用于指示TEE中硬件模块200具有访问操作权限的TEE内存页的页标记号。TEE软件IOMMU管理模块501负责更新TEE IOMMU模块301的过滤寄存器中存储的至少一个鉴权页标记号。REE IOMMU模块302的过滤寄存器中存储的至少一个鉴权页标记号,用于指示REE中硬件模块200具有访问操作权限的REE内存页的页标记号。REE软件IOMMU管理模块502负责更新REE IOMMU模块302的过滤寄存器中存储的至少一个鉴权页标记号。
在一种可能的实施方式中,过滤寄存器中的内容默认为空,即不允许对任何内存页进行访问操作。只有在过滤寄存器中添加了至少一个鉴权页标记号以后,才可以对与至少一个鉴权页标记号对应的内存页进行访问操作。过滤寄存器中存储的至少一个鉴权页标记号,可以在系统初始化的时候进行初始化并锁定,也可以由软件动态更新。
需要说明的是,对于图3所示的支持TEE的电子设备来说,REE中的REE IOMMU模块302和REE软件IOMMU管理模块502是可选的,因为对于需要保护的敏感数据通常在TEE中存储,REE中一般不存储敏感数据。
下面对处理器400上运行的软件的功能进行描述:
对于图3所示的支持TEE的电子设备来说,TEE和REE具有独立的软件分层架构,TEE与REE之间的软件相互隔离。如图3所示,TEE中包括软件TEE IOMMU管理模块501、TEE软件操作系统层、TEE软件驱动层、TEE软件接口适配层和TEE软件应用层;REE中包括软件REEIOMMU管理模块502、REE软件操作系统层、REE软件驱动层、REE软件接口适配层和REE软件应用层。下文针对软件各层的功能描述,均是针对同一执行环境来说。
其中,软件应用层用于运行应用软件,例如微信、支付宝等,应用软件启动时向操作系统层申请分配内存块,并获取内存块中的虚拟地址,应用软件运行过程中的数据都可以通过该虚拟地址进行访问操作。软件接口适配层用于根据软件应用层访问的虚拟地址匹配软件驱动层中的驱动程序。软件驱动层中包括针对各个硬件模块编写的驱动程序,驱动程序根据虚拟地址对相应的硬件模块200进行访问操作。操作系统层负责内存管理、堆栈管理、任务调度管理等。示例性的,处理器400包括软件IOMMU管理模块500,软件IOMMU管理模块500可以在软件操作系统层中实现,软件IOMMU管理模块500用于建立虚拟地址、物理地址和内存的页标记号之间的对应关系。处理器400包括驱动程序,软件IOMMU管理模块500还用于根据驱动程序所指示的硬件模块200的访问操作权限,更新对应的IOMMU模块300的过滤寄存器中存储的至少一个鉴权页标记号,具体见后文描述。本申请实施例中,处理器400包括软件IOMMU管理模块500表示处理器400上运行有软件IOMMU管理模块500,处理器400包括驱动程序表示处理器400上运行有驱动程序。
如图4所示,本申请实施例提供了一种地址访问方法,包括步骤S101-S103:
S101、IOMMU模块300获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号。
其中,目标虚拟地址为硬件模块200待访问的目标内存页对应的一段虚拟地址中的一个虚拟地址。
处理器400包括驱动程序,IOMMU模块300可以从驱动程序获取该目标虚拟地址。
可选的,IOMMU模块300可以获取一段虚拟地址与对应的一段物理地址的映射关系,并根据该映射关系得到目标虚拟地址对应的目标物理地址;进一步的,IOMMU模块300获取虚拟地址与内存页的页标记号的对应关系,并根据该对应关系得到目标虚拟地址对应的目标内存页的页标记号,相当于通过两个对应关系找到目标物理地址和内存页的页标记号。或者,IOMMU模块300可以获取虚拟地址、物理地址和内存页的页标记号三者之间的对应关系,并根据该对应关系得到目标虚拟地址对应的目标物理地址和目标内存页的页标记号。本申请实施例以后者为例进行说明,但并不意在限定于此。
示例性的,虚拟地址、物理地址和内存页的页标记号三者之间的对应关系可以存储于页描述符中。每个内存页对应一个页描述符。
示例性的,如表1所示为一种页描述符的示例:页描述符中包括与页描述符对应的内存页的起始物理地址和页标记号。页描述符占用连续存储空间,该连续存储空间可以称为IOMMU地址映射表,该IOMMU地址映射表可以是一级映射关系,即通过虚拟地址查找一级地址映射表就可以得到页描述符;该IOMMU地址映射表也可以是多级映射关系,即通过虚拟地址需要查找多级地址映射表才可以得到页描述符,本申请不作限定。
页描述符在连续存储空间中的地址与页描述符对应的内存页的页号对应。例如,假设虚拟地址对应的内存页的页号为0,则连续存储空间中存储的第1个页描述符为与该内存页对应的描述符。
如图5所示,为本申请实施例提供的一种示例性的地址映射的方法。该方法包括步骤S1011-S1012:
S1011、IOMMU模块300根据目标虚拟地址获取目标内存页对应的目标页描述符。
目标页描述符中包括目标内存页的起始物理地址和目标内存页的页标记号。
以IOMMU地址映射表是一级映射关系为例进行说明:
具体的,假设内存页分别对应2N个虚拟地址和2N个物理地址,即内存页的大小为2N字节。
IOMMU模块300可以将目标虚拟地址右移N位得到目标内存页的页号。从连续存储空间中与目标内存页的页号对应的地址中得到目标页描述符。
S1012、IOMMU模块300根据目标虚拟地址和目标内存页的起始物理地址得到目标物理地址。
具体的,IOMMU模块300可以将目标虚拟地址对2N取余得到页内偏移量,其中,页内偏移量为目标虚拟地址相对于目标内存页的起始虚拟地址的相对距离,该页内偏移量也为目标物理地址相对于目标内存页的起始物理地址的相对距离。将目标页描述符中的起始物理地址加上页内偏移量,得到目标物理地址。
表1
Physical Address 起始物理地址
Tag 页标记号
对于图3所示的支持TEE的电子设备来说,TEE和REE分别存储独立的虚拟地址、物理地址和内存页的页标记号之间的对应关系,并且只能被本执行环境的IOMMU模块和软件IOMMU管理模块访问。例如,TEE中的IOMMU地址映射表存储TEE中虚拟地址、物理地址和内存页的页标记号之间的对应关系,REE中的IOMMU地址映射表存储REE中虚拟地址、物理地址和内存页的页标记号之间的对应关系。
可选的,如表2中所示,该页描述符还可以包括有效标志,该有效标志用于指示有效标志所属的页描述符是否有效。示例性的,有效标志为1时表示该有效标志所属的页描述符有效,有效标志为0时表示该有效标志所属的页描述符无效。
表2
Physical Address 物理地址
Tag 页标记号
Valid 有效标志
S102、IOMMU模块300确定至少一个鉴权页标记号中是否包括目标内存页的页标记号。
IOMMU模块300可以从过滤寄存器中存储的至少一个鉴权页标记号中查找是否包括目标内存页的页标记号。
进一步的,对于表2所示的页描述符,IOMMU模块300还可以获取目标页描述符中的有效标志;并确定目标页描述符中的有效标志是否有效。
进一步的,当访问操作为读操作,IOMMU模块300可以确定读过滤寄存器中存储的所述至少一个鉴权页标记号中是否包括所述目标内存页的页标记号;当访问操作为写操作,IOMMU模块300可以确定写过滤寄存器中存储的所述至少一个鉴权页标记号中是否包括所述目标内存页的页标记号。
对于图3所示的支持TEE的电子设备来说,当TEE中的硬件模块200的访问操作为读操作,TEE IOMMU模块301可以确定TEE IOMMU模块301的读过滤寄存器的至少一个鉴权页标记号中是否包括目标TEE内存页的页标记号。当TEE中的硬件模块200的访问操作为写操作,TEE IOMMU模块301可以确定TEE IOMMU模块301的写过滤寄存器的至少一个鉴权页标记号中是否包括目标TEE内存页的页标记号。当REE中的硬件模块200的访问操作为读操作,REEIOMMU模块302可以确定REE IOMMU模块302的读过滤寄存器的至少一个鉴权页标记号中是否包括目标REE内存页的页标记号。当REE中的硬件模块200的访问操作为写操作,REEIOMMU模块302可以确定REE IOMMU模块302的写过滤寄存器的至少一个鉴权页标记号中是否包括目标REE内存页的页标记号。
S103、当IOMMU模块300确定IOMMU模块300的过滤寄存器中存储的至少一个鉴权页标记号包括目标内存页的页标记号时,硬件模块200可以访问目标物理地址。
对于表2所示的页描述符,当IOMMU模块300确定目标页描述符中的有效标志有效,并且IOMMU模块300确定过滤寄存器中存储的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块200可以访问目标物理地址。
进一步的,当访问操作为读操作,并且IOMMU模块300确定读过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块200可以读目标物理地址。当访问操作为写操作,并且IOMMU模块300确定写过滤寄存器的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块200可以写目标物理地址。
对于图3所示的支持TEE的电子设备来说,当TEE中的硬件模块200的访问操作为读操作,并且TEE IOMMU模块301确定TEE IOMMU模块301的读过滤寄存器的至少一个鉴权页标记号中包括目标TEE内存页的页标记号时,硬件模块200可以读目标TEE物理地址。当TEE中的硬件模块200的访问操作为写操作,并且TEE IOMMU模块301确定TEE IOMMU模块301的写过滤寄存器的至少一个鉴权页标记号中包括目标TEE内存页的页标记号时,硬件模块200可以写目标TEE物理地址。当REE中的硬件模块200的访问操作为读操作,并且REE IOMMU模块302确定REE IOMMU模块302的读过滤寄存器的至少一个鉴权页标记号中包括目标REE内存页的页标记号时,硬件模块200可以读目标REE物理地址。当REE中的硬件模块200的访问操作为写操作,并且REE IOMMU模块302确定REE IOMMU模块302的写过滤寄存器的至少一个鉴权页标记号中包括目标REE内存页的页标记号时,硬件模块200可以写目标REE物理地址。
另外,当过滤寄存器中存储的至少一个鉴权页标记号中不包括目标内存页的页标记号时,IOMMU模块300还用于拒绝硬件模块200访问目标内存页。或者,当过滤寄存器中存储的至少一个鉴权页标记号中不包括目标内存页的页标记号时,硬件模块200还可以访问预设物理地址,预设物理地址为目标内存页对应的一段物理地址之外的物理地址,或者也可以说预设物理地址为垃圾物理地址,可以存储无实际意义的数据。
本申请实施例提供的电子设备和地址访问方法,涉及安全保护的硬件模块对应IOMMU模块,IOMMU模块包括过滤寄存器,过滤寄存器中存储有至少一个鉴权页标记号,至少一个鉴权页标记号用于指示硬件模块具有访问操作权限的内存页的页标记号。IOMMU模块用于:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,目标虚拟地址为目标内存页对应的一段虚拟地址中的一个虚拟地址。当过滤寄存器中存储的至少一个鉴权页标记号中包括目标内存页的页标记号时,硬件模块可以访问目标物理地址。由于硬件模块与IOMMU模块一一对应,对于涉及安全保护的硬件模块,由对应的IOMMU模块对其访问操作进行鉴权。确保内存块鉴权的准确度,提升了安全隔离的可靠性。并且现有的SOC通常都已经有类似的IOMMU模块,可以直接在其上部署本申请的实施例,不增加额外的成本,可以有效地解决性能和成本的矛盾。
下面以不支持TEE的电子设备为例,对上述地址访问方法进行详细描述,如图6所示,该地址访问方法包括S201-S207:
S201、软件应用层中的软件应用向软件操作系统层申请分配内存块,并得到内存块中的虚拟地址,对该虚拟地址进行访问操作。
S202、软件接口适配层和软件驱动层根据上述虚拟地址确定能够对该内存块进行访问操作的硬件模块200。
系统初始化的时候,处理器400上运行的驱动程序(位于软件驱动层)可以指示硬件模块200的访问操作权限,访问操作权限包括硬件模块200对内存页的读写权限。
S203、软件IOMMU管理模块500建立该内存块中各内存页的虚拟地址、物理地址和内存页的页标记号之间的对应关系。
可以由软件IOMMU管理模块分配内存块中的内存页对应的页标记号,或者,由其他操作系统模块(例如安全内存管理模块)分配内存块中的内存页对应的页标记号。同一内存块中的内存页对应的页标记号可以相同。
软件IOMMU管理模块将内存页的起始物理地址和页标记号写入到IOMMU地址映射表中与该内存页对应的页描述符中。不同内存页的起始物理地址不同。
处理器400包括驱动程序,可选的,如果系统初始化的时候没有初始化IOMMU模块的过滤寄存器中的至少一个鉴权页标记号,则此时软件IOMMU管理模块500根据驱动程序所指示的硬件模块200的访问操作权限将该页标记号存储至对应的IOMMU模块的过滤寄存器中,以更新过滤寄存器中的至少一个鉴权页标记号。
具体的,如果该硬件模块200只需要对该内存块中的内存页进行读操作,则只将该页标记号存储到读过滤寄存器中;如果该硬件模块200只需要对该内存块中的内存页进行写操作,则只将该页标记号存储到写过滤寄存器中;如果该硬件模块200需要对该内存块中的内存页进行读操作和写操作,则将该页标记号存储到读过滤寄存器和写过滤寄存器中。
对于图3所示的支持TEE的电子设备来说,如果TEE中的硬件模块200只需要对TEE内存块中的内存页进行读操作,则TEE软件IOMMU管理模块501只将该页标记号存储到TEEIOMMU模块301的读过滤寄存器中;如果TEE中的硬件模块200只需要对该TEE内存块中的内存页进行写操作,则只将该页标记号存储到TEE IOMMU模块301的写过滤寄存器中;如果TEE中的硬件模块需要对该TEE内存块中的内存页进行读操作和写操作,则将该页标记号存储到TEE IOMMU模块301的读过滤寄存器和写过滤寄存器中。
S204、软件驱动层将虚拟地址配置到硬件模块200,并启动硬件模块200工作。
S205、IOMMU模块300获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号。
具体参照步骤S101,在此不再重复。
S206、IOMMU模块300确定至少一个鉴权页标记号中是否包括目标内存页的页标记号。
具体参照步骤S102,在此不再重复。
S207、当IOMMU模块300确定IOMMU模块300的过滤寄存器中存储的至少一个鉴权页标记号包括目标内存页的页标记号时,硬件模块200可以访问目标物理地址。
具体参照步骤S103,在此不再重复。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机或处理器上运行时,使得计算机或处理器执行图4-图6中的地址访问方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当指令在计算机或处理器上运行时,使得计算机或处理器执行图4-图6中的地址访问方法。
其中,本申请提供的计算机存储介质、计算机程序产品均用于执行上文所述的地址访问方法,因此,其所能达到的有益效果可参考上文所提供的实施方式中的有益效果,此处不再赘述。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (19)

1.一种电子设备,其特征在于,所述电子设备包括:硬件模块和与所述硬件模块对应的输入输出存储管理单元IOMMU模块,其中,所述IOMMU模块包括过滤寄存器,所述过滤寄存器中存储有至少一个鉴权页标记号,所述至少一个鉴权页标记号用于指示所述硬件模块具有访问操作权限的内存页的页标记号,所述内存页分别对应一段虚拟地址和一段物理地址,其中每个内存页对应一个页标记号;
所述IOMMU模块用于:获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,其中,所述目标虚拟地址为所述硬件模块待访问的所述目标内存页对应的一段虚拟地址中的一个虚拟地址;
所述IOMMU模块还用于:确定所述至少一个鉴权页标记号中是否包括所述目标内存页的页标记号;
所述硬件模块用于:当所述IOMMU模块确定所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,访问所述目标物理地址。
2.根据权利要求1所述的电子设备,其特征在于,所述电子设备还包括驱动程序,所述IOMMU模块还用于从所述驱动程序获取所述目标虚拟地址。
3.根据权利要求1-2任一项所述的电子设备,其特征在于,每个内存页对应一个页描述符,所述页描述符中包括与所述页描述符对应的内存页的起始物理地址和页标记号;
所述IOMMU模块具体用于:
根据所述目标虚拟地址获取所述目标内存页对应的目标页描述符,所述目标页描述符中包括所述目标内存页的起始物理地址和所述目标内存页的页标记号;
根据所述目标虚拟地址和所述目标内存页的起始物理地址得到所述目标物理地址。
4.根据权利要求3所述的电子设备,其特征在于,所述页描述符还包括有效标志,所述有效标志用于指示所述页描述符是否有效,
所述IOMMU模块还用于:获取所述目标页描述符中的有效标志;以及确定所述目标页描述符中的有效标志是否有效;
所述硬件模块用于:当所述IOMMU模块确定所述目标页描述符中的有效标志有效,并且所述IOMMU模块确定所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,访问所述目标物理地址。
5.根据权利要求1-2任一项所述的电子设备,其特征在于,所述过滤寄存器包括读过滤寄存器和写过滤寄存器,所述读过滤寄存器中存储的至少一个鉴权页标记号用于指示所述硬件模块具有读操作权限的内存页的页标记号,所述写过滤寄存器中存储的至少一个鉴权页标记号用于指示所述硬件模块具有写操作权限的内存页的页标记号,
当所述访问操作为读操作,并且所述IOMMU模块确定所述读过滤寄存器的至少一个鉴权页标记号中包括所述目标内存页的页标记号时,所述硬件模块用于读所述目标物理地址;
当所述访问操作为写操作,并且所述IOMMU模块确定所述写过滤寄存器的至少一个鉴权页标记号中包括所述目标内存页的页标记号时,所述硬件模块用于写所述目标物理地址。
6.根据权利要求1-2任一项所述的电子设备,其特征在于,
当所述至少一个鉴权页标记号中不包括所述目标内存页的页标记号时,所述IOMMU模块还用于拒绝所述硬件模块访问操作所述目标内存页,或者,所述硬件模块还用于访问预设物理地址,所述预设物理地址为所述目标内存页对应的一段物理地址之外的物理地址。
7.根据权利要求1-2任一项所述的电子设备,其特征在于,所述电子设备还包括软件IOMMU管理模块,所述软件IOMMU管理模块用于:
建立所述虚拟地址、所述物理地址和所述内存页的页标记号之间的对应关系。
8.根据权利要求7所述的电子设备,其特征在于,所述电子设备还包括驱动程序,所述软件IOMMU管理模块还用于:
根据所述驱动程序所指示的所述硬件模块的访问操作权限,更新对应的IOMMU模块的过滤寄存器中的所述至少一个鉴权页标记号。
9.根据权利要求1-2任一项所述的电子设备,其特征在于,所述电子设备包括:可信执行环境TEE和普通执行环境REE,所述TEE和所述REE具有独立的IOMMU模块。
10.一种地址访问方法,其特征在于,所述方法包括:
获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,所述目标虚拟地址为硬件模块待访问的所述目标内存页对应的一段虚拟地址中的一个虚拟地址;
确定至少一个鉴权页标记号中是否包括所述目标内存页的页标记号,其中,所述至少一个鉴权页标记号存储于与所述硬件模块对应的输入输出存储管理单元IOMMU模块的过滤寄存器中,所述至少一个鉴权页标记号用于指示所述硬件模块具有访问操作权限的内存页的页标记号,所述内存页分别对应一段虚拟地址和一段物理地址,其中每个内存页对应一个页标记号;
当所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,所述硬件模块访问所述目标物理地址。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:从驱动程序获取所述目标虚拟地址。
12.根据权利要求10-11任一项所述的方法,其特征在于,每个内存页对应一个页描述符,所述页描述符中包括与所述页描述符对应的内存页的起始物理地址和页标记号;所述获取目标虚拟地址对应的目标物理地址和目标内存页的页标记号,包括:
根据所述目标虚拟地址获取所述目标内存页对应的目标页描述符,所述目标页描述符中包括所述目标内存页的起始物理地址和所述目标内存页的页标记号;
根据所述目标虚拟地址和所述目标内存页的起始物理地址得到所述目标物理地址。
13.根据权利要求12所述的方法,其特征在于,所述页描述符还包括有效标志,所述有效标志用于指示所述页描述符是否有效,所述方法还包括:
获取所述目标页描述符中的有效标志;
确定所述目标页描述符中的有效标志是否有效;
所述当所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,访问所述目标物理地址,包括:
当所述目标页描述符中的有效标志有效,并且所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,访问所述目标物理地址。
14.根据权利要求10-11任一项所述的方法,其特征在于,所述过滤寄存器包括读过滤寄存器和写过滤寄存器,所述读过滤寄存器中存储的至少一个鉴权页标记号用于指示所述硬件模块具有读操作权限的内存页的页标记号,所述写过滤寄存器中存储的至少一个鉴权页标记号用于指示所述硬件模块具有写操作权限的内存页的页标记号,所述当所述至少一个鉴权页标记号中包括所述目标内存页的页标记号时,访问所述目标物理地址,包括:
当所述访问操作为读操作,并且所述读过滤寄存器的至少一个鉴权页标记号中包括所述目标内存页的页标记号时,读所述目标物理地址;
当所述访问操作为写操作,并且所述写过滤寄存器的至少一个鉴权页标记号中包括所述目标内存页的页标记号时,写所述目标物理地址。
15.根据权利要求10-11任一项所述的方法,其特征在于,所述方法还包括:
当所述至少一个鉴权页标记号中不包括所述目标内存页的页标记号时,拒绝所述硬件模块访问操作所述目标内存页,或者,所述硬件模块访问预设物理地址,所述预设物理地址为所述目标内存页对应的一段物理地址之外的物理地址。
16.根据权利要求10-11任一项所述的方法,其特征在于,所述方法还包括:
建立所述虚拟地址、所述物理地址和所述内存页的页标记号之间的对应关系。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
根据驱动程序所指示的所述硬件模块的访问操作权限,更新对应的过滤寄存器中的所述至少一个鉴权页标记号。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求10-17任一项所述的地址访问方法。
19.一种包含指令的计算机程序产品,其特征在于,当所述指令在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求10-17任一项所述的地址访问方法。
CN201980077662.XA 2019-01-29 2019-01-29 电子设备和地址访问方法 Active CN113168380B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/073783 WO2020154924A1 (zh) 2019-01-29 2019-01-29 电子设备和地址访问方法

Publications (2)

Publication Number Publication Date
CN113168380A CN113168380A (zh) 2021-07-23
CN113168380B true CN113168380B (zh) 2022-09-09

Family

ID=71841704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980077662.XA Active CN113168380B (zh) 2019-01-29 2019-01-29 电子设备和地址访问方法

Country Status (2)

Country Link
CN (1) CN113168380B (zh)
WO (1) WO2020154924A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723448A (zh) * 2002-11-18 2006-01-18 Arm有限公司 用于保护以防恶意程序的安全存储器
CN104685479A (zh) * 2012-08-29 2015-06-03 超威半导体公司 客户虚拟机内的虚拟输入/输出存储器管理单元
CN107851138A (zh) * 2015-08-07 2018-03-27 高通股份有限公司 用于图形处理单元的硬件强制内容保护

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509736B2 (en) * 2016-07-29 2019-12-17 Advanced Micro Devices, Inc. Controlling access by IO devices to pages in a memory in a computing device
US10198202B2 (en) * 2017-02-24 2019-02-05 Red Hat, Inc. Safe userspace device access for network function virtualization using an IOMMU to map supervisor memory to a reserved range of application virtual addresses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723448A (zh) * 2002-11-18 2006-01-18 Arm有限公司 用于保护以防恶意程序的安全存储器
CN104685479A (zh) * 2012-08-29 2015-06-03 超威半导体公司 客户虚拟机内的虚拟输入/输出存储器管理单元
CN107851138A (zh) * 2015-08-07 2018-03-27 高通股份有限公司 用于图形处理单元的硬件强制内容保护

Also Published As

Publication number Publication date
CN113168380A (zh) 2021-07-23
WO2020154924A1 (zh) 2020-08-06

Similar Documents

Publication Publication Date Title
US11636049B2 (en) Memory protection with hidden inline metadata
US11630920B2 (en) Memory tagging for side-channel defense, memory safety, and sandboxing
EP3491520B1 (en) Controlling access to pages in a memory in a computing device
US10503664B2 (en) Virtual machine manager for address mapping and translation protection
CN108062242B (zh) 在富执行环境中安全地执行安全应用的计算系统
US10169244B2 (en) Controlling access to pages in a memory in a computing device
EP3702924B1 (en) Technology for managing memory tags
CN105373486B (zh) 计算系统中动态存储器地址的重新映射
ES2381428T3 (es) Traducción de dirección dinámica con gestión de trama.
US7068545B1 (en) Data processing apparatus having memory protection unit
US8560806B2 (en) Using a multiple stage memory address translation structure to manage protected micro-contexts
US8549254B2 (en) Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts
US8677457B2 (en) Security for codes running in non-trusted domains in a processor core
CN113168380B (zh) 电子设备和地址访问方法
US12019733B2 (en) Compartment isolation for load store forwarding
CN113614703B (zh) 用于核特定内存映射的装置
CN116249972A (zh) 一种内存保护方法及保护代理控制装置
US11836094B2 (en) Cryptographic data objects page conversion
US10705983B1 (en) Transparent conversion of common virtual storage
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法
CN117827417A (zh) 一种内存管理方法和相关设备

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
GR01 Patent grant
GR01 Patent grant