CN112948863B - 敏感数据的读取方法、装置、电子设备及存储介质 - Google Patents

敏感数据的读取方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112948863B
CN112948863B CN202110277764.5A CN202110277764A CN112948863B CN 112948863 B CN112948863 B CN 112948863B CN 202110277764 A CN202110277764 A CN 202110277764A CN 112948863 B CN112948863 B CN 112948863B
Authority
CN
China
Prior art keywords
memory
read
permission
sensitive data
page
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
CN202110277764.5A
Other languages
English (en)
Other versions
CN112948863A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202110277764.5A priority Critical patent/CN112948863B/zh
Publication of CN112948863A publication Critical patent/CN112948863A/zh
Priority to EP21931205.5A priority patent/EP4310711A1/en
Priority to PCT/CN2021/123331 priority patent/WO2022193630A1/zh
Application granted granted Critical
Publication of CN112948863B publication Critical patent/CN112948863B/zh
Priority to US18/465,430 priority patent/US20230418768A1/en
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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • 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/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供的敏感数据的读取方法、装置、电子设备及存储介质,通过发起对存储在内存页或内存区域中的敏感数据的读取请求;响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据;即本发明实施例通过验证存储敏感数据的内存页或内存区域的只读权限,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。

Description

敏感数据的读取方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术,尤其涉及一种敏感数据的读取方法、装置、电子设备及存储介质。
背景技术
计算机软件一直以来面临着严重的安全威胁,其中内存破坏漏洞是一种最为广泛存在的安全威胁,这些漏洞常被攻击者利用,用于破坏敏感操作所使用的敏感数据,进而劫持或者破坏敏感操作。
现有技术中,针对上述威胁,最根本性的防御方案是确保敏感数据的完整性,一种常见的机制就是基于块密码算法实现对敏感数据的完整性验证,但是这种方式性能开销较大。
发明内容
针对上述问题,本发明提供了一种敏感数据的读取方法、装置、电子设备及存储介质。
第一方面,本发明提供了一种敏感数据的读取方法,包括:发起对存储在内存页或内存区域中的敏感数据的读取请求;响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
在其他可选的实施方式中,所述确定只读权限结果,包括:基于快表、页表或其他内存管理机制所提供的寄存器确定所述只读权限结果,其中,所述快表、页表或其他内存管理机制所提供的寄存器中存储有各内存页或内存区域的各类权限结果。
在其他可选的实施方式中,所述方法还包括:若所述只读权限结果表征所述内存页或内存区域不具备只读权限,则不读取所述敏感数据。
在其他可选的实施方式中,所述方法还包括:确定其他权限结果,其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他内存页或内存区域权限是否合法;若所述其他权限结果表征其他内存页或内存区域权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
在其他可选的实施方式中,所述方法还包括:若所述其他权限结果表征其他内存页或内存区域权限不合法,则输出第一错误信号;若所述其他权限结果表征其他内存页或内存区域权限合法,但所述只读权限结果表征所述内存页或内存区域不具备只读权限,则输出第二错误信号。
在其他可选的实施方式中,所述确定只读权限结果、确定其他权限结果、读取敏感数据通过指令集实现。
第二方面,本发明提供一种敏感数据的读取装置,包括:请求模块,用于发起对存储在内存页或内存区域中的敏感数据的读取请求;确定模块,用于响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;读取模块,用于若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
第三方面,本发明提供一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的方法。
第四方面,本发明提供一种可读存储介质,所述可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的方法。
第五方面,本发明提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的方法。
本发明提供的敏感数据的读取方法、装置、电子设备及存储介质,发起对存储在内存页或内存区域中的敏感数据的读取请求;响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据;即本发明实施例通过验证存储敏感数据的内存页或内存区域的只读权限,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。
附图说明
图1是现有技术的敏感数据被破坏的示意图;
图2是现有技术中验证敏感数据完整性的三种机制的示意图;
图3为本发明提供的一种敏感数据的读取方法的流程示意图;
图4为本发明提供的另一种敏感数据的读取方法的流程示意图;
图5为本发明提供的一种敏感数据的读取方法的示意图;
图6为本发明提供的一种敏感数据的读取装置的结构示意图;
图7为本发明提供的一种电子设备的结构示意图。
具体实施方式
为使本发明示例的目的、技术方案和优点更加清楚,下面将结合本发明示例中的附图,对本发明示例中的技术方案进行清楚、完整地描述。
计算机软件一直以来面临着严重的安全威胁,其中内存破坏漏洞是一种最为广泛存在的安全威胁。这些漏洞常被攻击者利用,用于破坏敏感操作的操作数(即敏感数据),进而劫持或者破坏敏感操作。
其中,敏感操作包括但不限于:程序控制流跳转(程序计数器更新)、敏感API调用(如system()函数、SQL查询等)、安全检查(各种白名单检查等)、关键业务操作(如转账、密码解密等)。而敏感操作的操作数,即敏感数据,包括但不限于:程序控制流跳转的操作数(函数返回地址、函数指针等)、敏感API调用的参数(system()函数执行的命令、SQL查询的语句参数)、安全检查使用的白名单配置、关键业务操作的操作数(如转账操作的收款地址、解密操作的密文输入)等等。
敏感数据被破坏后,攻击者即可发动各种各样的攻击。图1是现有技术的敏感数据被破坏的示意图,如图1所示,当敏感数据,例如可能值1被攻击者破坏后变为恶意值,恶意值就被使用在敏感信息使用点。例如,攻击者可以破坏函数指针或函数返回地址来劫持程序控制流,或者破坏system()或execve()等敏感API函数的参数来执行危险操作(如命令注入攻击、SQL注入攻击),这些是当前最流行且危害最大的攻击类型。攻击者同样可以破坏安全检查中使用的白名单配置,例如用户标识符(uid)、条件标志或其他元数据(如配置信息、策略信息、或影子内存)等,来绕过已部署的安全防护措施或发起面向数据的攻击。攻击者还可以破坏关键业务操作的操作数,劫持转账操作的收款地址、解密目标密文等等。
针对敏感数据被破坏进而导致敏感操作被劫持这一威胁,最根本性的防御方案需要确保数据流完整性(Data-Flow Integrity,DFI),即确保软件的数据流图(定义点与使用点之间的关系)在运行时不被违反,保障敏感信息使用点不被破坏。数据有其定义点和使用点,根据防御部署阶段不同,数据流完整性机制可以分为三类:一是在定义点阻止恶意内存读写操作的机制;二是将敏感数据流与普通数据流相互隔离的机制;三是在使用点验证数据完整性并检测攻击的机制。图2是现有技术中验证敏感数据完整性的三种机制的示意图。
第一类机制通过在数据定义点(内存写操作)进行安全检查,确保不会出现非法的内存写。SoftBound、AddressSanitizer等方案在软件层面实现了边界检查或者时序检查,提供了较强的数据流完整性保护,但是其性能开销高。MPX(Memory ProtectionEXtension,内存保护扩展)是Intel的一个硬件扩展,其被设计用来高效地进行边界检查,从而阻止越界类型的内存破坏攻击,提供空间上的内存安全保护。ARM提出的MTE(MemoryTagging Extension,内存标签扩展)硬件机制将每个内存字与相应的标签关联,可以被用来实现空间上的和时间上的内存安全保护。这两种方案性能开销较高,相关特性目前从硬件中已移除或者尚未实现。
第二类机制通过隔离代码指针等敏感数据,阻断存在潜在危害的内存写操作破坏敏感数据,来提供数据流完整性保护。HDFI(Hardware-Assisted Data-flow Isolation,硬件辅助的数据流隔离)方案将每个内存字或每若干个内存字与一个1位的内存标签关联,而IMIX(In-Process Memory Isolation Extension,进程内内存隔离扩展)方案将每个内存页与一个1位的内存标签关联,从而提供较强的数据流隔离和安全保证。Intel MPK(MemoryProtection Keys,内存保护键)与ARM DACR(Domain Access Control Register,域访问控制寄存器)将内存页分为若干键(keys)或域(domains),并为用户提供控制寄存器调整内存页的权限来实现数据流隔离。Intel SMAP(Supervisor Mode Access Prevention,特权态访问阻止)、Intel SMEP(Supervisor Mode Execution Prevention,特权态执行阻止)、ARMPAN(Privileged Access Never,特权访问阻止)、RISC-V SUM(Supervisor User Memory,特权态用户内存访问)等硬件特性提供了内核态与用户态的隔离。这些方案的防御强度通常不够高。
第三类机制通过在使用点验证数据完整性,确保敏感操作所使用的操作数未被篡改,保护敏感操作。ARM PA(Pointer Authentication,指针验证)机制基于块密码算法实现了对敏感数据的完整性验证,在苹果手机等产品中得到初步应用,取得了较好的防护效果,但是其性能开销较大。StackGuard等方案通过在栈上放置Canary/Cookie,并在函数返回之前验证Canary/Cookie是否被破坏,来验证返回地址的完整性,但是其防御强度较低。
针对上述问题,本发明的技术构思在于:当读取敏感数据时,验证存储敏感数据的内存页或内存区域是否只读,若只读,说明敏感数据是完整的,没有被破坏,可以成功读取,而且这种通过验证存储敏感数据的内存页或内存区域的只读属性,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。
第一方面,本发明示例提供了一种敏感数据的读取方法,图3为本发明提供的一种敏感数据的读取方法的流程示意图。
如图3所示,该敏感数据的读取方法包括:
步骤101、发起对存储在内存页或内存区域中的敏感数据的读取请求。
具体来说,当电子设备的处理器在运行编译好的可执行文件时,当需要读取敏感数据时,所述可执行文件会通过内存读指令发起对敏感数据的读取请求。其中,内存页这一特性广泛存在于在带有分页机制(即带有内存管理单元MMU)的计算机系统(如RISC-V、ARM、MIPS或x86等)上,内存区域则广泛存在于带有物理内存保护的计算机系统(如RISC-V的物理内存保护PMP或ARM的内存保护单元MPU)上。
步骤102、响应于所述读取请求,确定只读权限结果。
其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限。
具体来说,当需要读取内存页或内存区域的敏感数据时,所述处理器会检查该内存页或内存区域是否只读。
需要说明的是,实现步骤S101、S102的可以为一条特殊的内存读指令,即在软件运行到所述特殊内存读指令时,可以在请求读取敏感数据的同时进行内存页或内存区域的只读权限检查;或者,实现步骤S101的为一条普通的内存读指令,本发明还提供一条特殊指令,该特殊指令用于对内存页或内存区域的只读权限检查,也就是说,普通的内存读指令与特殊指令相结合,实现了在请求读取敏感数据的同时,进行内存页或内存区域的只读权限检查。
作为可选的实施例,所述确定只读权限结果,包括:基于快表、页表或其他内存管理机制所提供的寄存器确定所述只读权限结果,其中,所述快表、页表或其他内存管理机制所提供的寄存器中存储有各内存页或内存区域的各类权限结果。
具体来说,处理器内部的内存管理单元的其中一个功能就是内存页的权限控制,比如快表(Translation Lookaside Buffer,简称TLB)或者页表(Page Table)存储了各内存页的各类权限结果,处理器可以从快表或者页表中查看所访问的内存页是否具备只读权限;或者,针对于其他内存管理机制的寄存器中也存储有各内存区域的各类权限,处理器可以从对应的寄存器中确定所访问的内存区域是否具备只读权限。
步骤103、若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
具体来说,所述内存页或内存区域的权限结果包括具备只读权限和不具备只读权限,当具备只读权限时,说明敏感数据存储在只读内存页或只读内存区域中,没有被攻击者更改,此时可以读取到数据,使得软件继续运行;若内存页或内存区域不具备只读权限时,说明敏感数据不是存储在只读内存页或只读内存区域中的,有可能已经被攻击者更改成恶意值,此时可以不读取敏感数据,并停止运行软件,也就是说,所述方法还包括:若所述只读权限结果表征所述内存页或内存区域不具备只读权限,则不读取所述敏感数据。
另外,需要说明的是,在步骤S101之前,首先在软件的编译阶段,需要将所使用的敏感数据设置在软件源代码的编译产物的只读节中,以使编译好的可执行文件在装载运行时,将敏感数据存储在只读内存页或只读内存区域中,并将敏感数据与内存读指令相关联。再执行本实施例,这样可以避免由于敏感数据原本不存储在只读内存页或只读内存区域的误验证。
本发明实施例提供的敏感数据的读取方法,通过发起对存储在内存页或内存区域中的敏感数据的读取请求;响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据;即本发明实施例通过验证存储敏感数据的内存页或内存区域的只读属性,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。
结合前述的各实现方式,图4为本发明提供的另一种敏感数据的读取方法的流程示意图,如图4所示,该敏感数据的读取方法包括:
步骤201、发起对存储在内存页或内存区域中的敏感数据的读取请求。
步骤202、响应于所述读取请求,确定只读权限结果。
其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限。
步骤203、确定其他权限结果。
其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他内存页或内存区域权限是否合法。
步骤204、若所述其他权限结果表征其他权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
本实施方式中的步骤201和步骤202分别与前述实施方式中的步骤101、和步骤102的实现方式类似,在此不进行赘述。
与前述实施方式不同的是,还需要考虑到内存页或内存区域的其他常规权限是否合法,其他常规权限包括可读权限等,在本实施方式中,确定其他权限结果,其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他内存页或内存区域权限是否合法;若所述其他权限结果表征其他内存页或内存区域权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
具体来说,处理器内部的内存管理单元或其他内存管理机制可以进行内存页或内存区域权限的控制,比如,将处理器状态、内存操作以及各类内存页或内存区域的权限作为输入,输出为该内存操作是否合法,若内存操作非法,处理器会产生一个页错误或其他异常。而在本实施例中,除了验证内存页或内存区域的其他权限是否合法以外,还会验证该内存页或内存区域的只读权限,当所述其他权限结果表征其他内存页或内存区域权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
作为可选的实施例,所述确定只读权限结果、确定其他权限结果、读取敏感数据通过指令集实现。
具体来说,内存页或内存区域的其他权限可以基于传统的内存页或内存区域权限检查,即基于指令集实现,例如,RISC-V指令集。为了实现对内存的只读权限检查,可以基于RISC-V指令集进行扩展实现,即对RISC-V指令集进行少量修改,并将其集成至RISC-V处理器核。
其中,所述RISC-V指令集进行少量修改包括如下步骤:
(1)在指令集中加入硬件指令的助记符。这包括将ld、lwu、lhu、lbu、lw、lh以及lb扩展为ld.ro、lwu.ro、lhu.ro、lbu.ro、lw.ro、lh.ro以及lb.ro,并加入指令集。其中,由于大量敏感操作的操作数为指针等全字长的数据,ld指令较为常用。因此,本实施方式还对ld.ro指令进行优化,对于64位上加载64位字的情况,能够减少程序大小。具体而言,本实施方式还扩展了RISC-V的压缩指令集,并实现了ld.ro对应的压缩编码版本c.ld.ro,亦即c.ld对应的本发明提供的硬件指令。
(2)根据加入的硬件指令的助记符选取指令格式。指令的格式应当按照如下方式选择:1)从空闲可用的指令编码槽中选取,如自定义指令槽或保留指令槽;2)指令译码时仅引入少量额外电路。本实施方式为上述指令(即ld.ro等指令)选择与现存的ld等指令相似的编码方式。具体而言,ld.ro等指令的编码方式与ld等指令相同,但其第三个(从零记)最低有效位由0变为1。c.ld.ro的指令编码也与c.ld类似,但其最高三个有效位由011变为100。
(3)根据选取的指令格式对处理器核的指令译码器进行扩展。指令译码器是处理器核中最复杂的组件之一。选取指令格式后,本实施方式对Rocket Chip Generator(Rocket Core的生成器)的Instructions、IDecode以及RVCDecoder类进行修改,使其能够生成(2)选取的指令格式的译码器。当这些指令被译码后,其会产生一类新的内存操作。本实施方式还将该类新的内存操作加入MemoryOpConstants,其在后续TLB类进行内存页权限检查时会被使用。
需要说明的是,本发明的硬件指令并不局限于RISC-V指令集,其对任何具有分页机制或物理内存保护机制的计算机系统均适用。
作为可选的实施例,所述方法还包括:若所述其他权限结果表征其他内存页或内存区域权限不合法,则输出第一错误信号;若所述其他权限结果表征其他内存页或内存区域权限合法,但所述只读权限结果表征所述内存页或内存区域不具备只读权限,则输出第二错误信号。
具体来说,可以修改Linux内核RISC-V指令集支持中的页错误处理程序(arch/riscv/mm/fault.c)。其首先区分,是只读权限不合法造成的页错误,还是常规权限的页错误;若其他常规权限不合法,则发出第一错误信号,例如常规的页错误信号;若其他权限合法,则该页错误是由只读权限不合法而触发的,修改后的Linux内核会向出错进程发送第二错误信号,例如段错误信号(SIGSEGV)来向该进程发出警告或终止该进程。可选的,第一错误信号与第二错误信号可以为同样的信号。
图5为本发明提供的一种敏感数据的读取方法的示意图,如图5所示,对于上层应用(即软件)中的敏感数据设置在只读节中,执行本实施例的操作系统内核,例如Linux操作系统内核;以及RISC-V处理器核,即对于内存管理单元的内存页权限控制部分的RISC-V指令进行修改,对其添加一些轻量级的逻辑,用以检查被访问的内存页或内存区域是否只读(即通过快表、页表或者其他内存管理机制的寄存器中所存储的各内存页或内存区域的各类权限确定),若只读,表示合法,检查通过;否则不合法,检查不通过;若上述检查通过,本发明的指令与普通内存读指令行为相同;否则,处理器会产生一个页错误;只读权限的输出结果最终会和内存页或内存区域其他权限的输出结果进行与(and)操作。也就是说,传统的内存页或内存区域其他权限检查与只读权限检查并行完成,互不干扰。
本实施例提供的敏感数据的读取方法,通过确定其他权限结果,其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他内存页或内存区域权限是否合法;若所述其他权限结果表征其他内存页或内存区域权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据;即本发明实施例在验证内存页或内存区域其他权限合法的基础上,通过验证存储敏感数据的内存页或内存区域的只读属性,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。
第二方面,本发明示例提供了一种敏感数据的读取装置,图6为本发明提供的一种敏感数据的读取装置的结构示意图,如图6所示,该敏感数据的读取装置包括:
请求模块10,发起对存储在内存页或内存区域中的敏感数据的读取请求;确定模块20,用于响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;读取模块30,用于若所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
在其他可选的实施方式中,所述确定模块20,具体用于:基于快表、页表或其他内存管理机制所提供的寄存器确定所述只读权限结果,其中,所述快表、页表或其他内存管理机制所提供的寄存器中存储有各内存页或内存区域的各类权限结果。
在其他可选的实施方式中,所述读取模块30还用于:若所述只读权限结果表征所述内存页或内存区域不具备只读权限,则不读取所述敏感数据。
在其他可选的实施方式中,所述确定模块20还用于:确定其他权限结果,其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他内存页或内存区域权限是否合法;所述读取模块30,用于若所述其他权限结果表征其他权限合法,且所述只读权限结果表征所述内存页或内存区域具备只读权限,则读取所述敏感数据。
在其他可选的实施方式中,所述读取模块30还用于:若所述其他权限结果表征其他内存页或内存区域权限不合法,则输出第一错误信号;若所述其他权限结果表征其他内存页或内存区域权限合法,但所述只读权限结果表征所述内存页或内存区域不具备只读权限,则输出第二错误信号。
在其他可选的实施方式中,所述确定只读权限结果、确定其他权限结果、读取敏感数据通过指令集实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的敏感数据的读取装置的具体工作过程以及相应的有益效果,可以参考前述方法示例中的对应过程,在此不再赘述。
本发明提供的敏感数据的读取装置,通过请求模块,用于发起对存储在内存页或内存区域中的敏感数据的读取请求;确定模块,用于响应于所述读取请求,确定只读权限结果,其中,所述只读权限结果表征所述内存页或内存区域是否具备只读权限;读取模块,用于若所述只读权限结果表征所述内存页或内存区域具备只读权限且其他权限合法,则读取所述敏感数据;即本发明实施例通过验证存储敏感数据的内存页或内存区域的只读属性,实现了对敏感数据完整性进行快速轻量级验证,进而保证了敏感操作不被劫持。
第三方面,本发明示例提供了一种电子设备,图7为本发明提供的一种电子设备的硬件结构示意图,如图7所示,包括:
至少一个处理器701和存储器702。
在具体实现过程中,至少一个处理器701执行所述存储器702存储的计算机执行指令,使得至少一个处理器701执行如上的敏感数据的读取方法,其中,处理器701、存储器702通过总线703连接。
处理器701的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图7所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,简称:ISA)总线、外部设备互连(Peripheral Component Interconnect,简称:PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称:EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
第四方面,本发明还提供了一种可读存储介质,所述可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上敏感数据的读取方法。
上述的可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器、磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。即,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (7)

1.一种敏感数据的读取方法,其特征在于,所述敏感数据在目标可执行文件装载时被存储在具备只读权限的内存页或内存区域中,所述目标可执行文件的只读节中设置有所述敏感数据,所述敏感数据为敏感操作的操作数;所述方法包括:
发起对存储在所述内存页或所述内存区域中的敏感数据的读取请求;
响应于所述读取请求,判断所述内存页或内存区域是否具备只读权限;
确定其他权限结果;其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他权限是否合法;
若所述内存页或内存区域具备只读权限,且其他权限结果表征其他权限合法,则读取所述敏感数据;
若所述内存页或内存区域不具备只读权限,则不读取所述敏感数据。
2.根据权利要求1所述的方法,其特征在于,所述判断所述内存页或内存区域是否具备只读权限,包括:
基于快表、页表或其他内存管理机制所提供的寄存器判断所述内存页或内存区域是否具备只读权限,其中,所述快表、页表或其他内存管理机制所提供的寄存器中存储有各内存页或内存区域的各类权限结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述其他权限结果表征其他内存页或内存区域权限不合法,则输出第一错误信号;
若所述其他权限结果表征其他内存页或内存区域权限合法,但所述只读权限结果表征所述内存页或内存区域不具备只读权限,则输出第二错误信号。
4.根据权利要求1所述的方法,其特征在于,所述判断所述内存页或内存区域是否具备只读权限、确定其他权限结果、读取敏感数据通过指令集实现。
5.一种敏感数据的读取装置,其特征在于,所述敏感数据在目标可执行文件装载时被存储在具备只读权限的内存页或内存区域中,所述目标可执行文件的只读节中设置有所述敏感数据,所述敏感数据为敏感操作的操作数;所述装置包括:
请求模块,用于发起对存储在内存页或内存区域中的敏感数据的读取请求;
确定模块,用于响应于所述读取请求,判断所述内存页或所述内存区域的是否具备只读权限;
所述确定模块,还用于确定其他权限结果;其中,所述其他权限结果用于表征所述内存页或内存区域除只读权限结果以外的其他权限是否合法;
读取模块,用于若所述内存页或内存区域具备只读权限,且其他权限结果表征其他权限合法,则读取所述敏感数据;若所述内存页或内存区域不具备只读权限,则不读取所述敏感数据。
6.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至4任一项所述的方法。
7.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至4任一项所述的方法。
CN202110277764.5A 2021-03-15 2021-03-15 敏感数据的读取方法、装置、电子设备及存储介质 Active CN112948863B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110277764.5A CN112948863B (zh) 2021-03-15 2021-03-15 敏感数据的读取方法、装置、电子设备及存储介质
EP21931205.5A EP4310711A1 (en) 2021-03-15 2021-10-12 Sensitive data reading method and apparatus, electronic device, and storage medium
PCT/CN2021/123331 WO2022193630A1 (zh) 2021-03-15 2021-10-12 敏感数据的读取方法、装置、电子设备及存储介质
US18/465,430 US20230418768A1 (en) 2021-03-15 2023-09-12 Sensitive data reading method and apparatus, electronic device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110277764.5A CN112948863B (zh) 2021-03-15 2021-03-15 敏感数据的读取方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112948863A CN112948863A (zh) 2021-06-11
CN112948863B true CN112948863B (zh) 2022-07-29

Family

ID=76229962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110277764.5A Active CN112948863B (zh) 2021-03-15 2021-03-15 敏感数据的读取方法、装置、电子设备及存储介质

Country Status (4)

Country Link
US (1) US20230418768A1 (zh)
EP (1) EP4310711A1 (zh)
CN (1) CN112948863B (zh)
WO (1) WO2022193630A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948863B (zh) * 2021-03-15 2022-07-29 清华大学 敏感数据的读取方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102420017A (zh) * 2011-09-28 2012-04-18 上海宏力半导体制造有限公司 检测存储器记忆能力的方法
CN106168920A (zh) * 2015-05-21 2016-11-30 联想企业解决方案(新加坡)有限公司 控制包括只读闪速数据存储设备的独立磁盘冗余阵列(raid)
CN112115521A (zh) * 2019-06-19 2020-12-22 华为技术有限公司 数据访问方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001243434A (ja) * 2000-02-29 2001-09-07 Fyuutorekku:Kk カード状記録媒体、その製造方法、romの検査方法およびカード状記録媒体読み取り装置
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
GB2378005A (en) * 2001-07-27 2003-01-29 Chien-Tzu Hou Method for Controlling Paged Memory Access Attributes
US8769185B2 (en) * 2007-10-23 2014-07-01 Keicy Chung Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
CN102831069B (zh) * 2012-06-30 2016-03-30 华为技术有限公司 内存处理方法、内存管理设备
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
CN109670312A (zh) * 2017-10-13 2019-04-23 华为技术有限公司 安全控制方法及计算机系统
CN108154032B (zh) * 2017-11-16 2021-07-30 中国科学院软件研究所 具有内存完整性保障功能的计算机系统信任根构建方法
CN108090366B (zh) * 2017-12-05 2020-02-04 深圳云天励飞技术有限公司 数据保护方法及装置、计算机装置及可读存储介质
CN112948863B (zh) * 2021-03-15 2022-07-29 清华大学 敏感数据的读取方法、装置、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102420017A (zh) * 2011-09-28 2012-04-18 上海宏力半导体制造有限公司 检测存储器记忆能力的方法
CN106168920A (zh) * 2015-05-21 2016-11-30 联想企业解决方案(新加坡)有限公司 控制包括只读闪速数据存储设备的独立磁盘冗余阵列(raid)
CN112115521A (zh) * 2019-06-19 2020-12-22 华为技术有限公司 数据访问方法及装置

Also Published As

Publication number Publication date
EP4310711A1 (en) 2024-01-24
CN112948863A (zh) 2021-06-11
US20230418768A1 (en) 2023-12-28
WO2022193630A1 (zh) 2022-09-22

Similar Documents

Publication Publication Date Title
CN111052115B (zh) 取决于调用路径的认证的数据处理装置和方法
US9275225B2 (en) Linear address mapping protection
US7603704B2 (en) Secure execution of a computer program using a code cache
US7594111B2 (en) Secure execution of a computer program
CN107003936B (zh) 具有非可读页的存储器保护
US9514305B2 (en) Code pointer authentication for hardware flow control
US7401234B2 (en) Autonomous memory checker for runtime security assurance and method therefore
US9141800B2 (en) Method and apparatus for detecting intrusions in a computer system
US20080133858A1 (en) Secure Bit
KR20080031998A (ko) 보안키 보호 방법, 보안키 보호 방법에 사용되는 실행 전용 루틴을 구비한 컴퓨터 판독가능 저장 매체 및 보안 단말기
US8205262B2 (en) Hardware support for computer speciation
US20190370439A1 (en) Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same
US20230418768A1 (en) Sensitive data reading method and apparatus, electronic device, and storage medium
CN114902178A (zh) 域转换禁用配置参数
Piromsopa et al. Survey of protections from buffer-overflow attacks
US20240004967A1 (en) Software protection method and apparatus, electronic device, and storage medium
EP3454216B1 (en) Method for protecting unauthorized data access from a memory
Moon et al. Architectural supports to protect OS kernels from code-injection attacks and their applications
Wang et al. A Fine-Grained Hardware Security Approach for Runtime Code Integrity in Embedded Systems.
Novković A Taxonomy of Defenses against Memory Corruption Attacks
LI et al. A technique preventing code reuse attacks based on RISC processor
TW202418067A (zh) 堆疊指標切換有效性檢查
GB2623800A (en) Stack pointer switch validity checking
CN114902180A (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