CN111381884A - 用于目标地址加密的设备、系统和方法 - Google Patents

用于目标地址加密的设备、系统和方法 Download PDF

Info

Publication number
CN111381884A
CN111381884A CN201911351027.4A CN201911351027A CN111381884A CN 111381884 A CN111381884 A CN 111381884A CN 201911351027 A CN201911351027 A CN 201911351027A CN 111381884 A CN111381884 A CN 111381884A
Authority
CN
China
Prior art keywords
target address
instruction
address
key value
context
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
CN201911351027.4A
Other languages
English (en)
Inventor
莫妮卡·特卡兹克
布莱恩·C·格雷森
穆罕默德·巴森·巴拉卡特
艾立克·C·奎纳尔
布拉德利·G·柏吉斯
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111381884A publication Critical patent/CN111381884A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

根据一个一般方面,提供一种用于目标地址加密的设备、系统和方法。设备可包含上下文特定的加密密钥电路,上下文特定的加密密钥电路被配置成生成密钥值,其中密钥值特定于指令集的上下文。设备可包含目标地址预测电路,目标地址预测电路被配置成为指令集中的下一指令提供目标地址。设备可包含目标地址存储器,目标地址存储器被配置成存储目标地址的加密版本,其中至少部分地使用密钥值来加密目标地址。设备可进一步包含指令提取电路,指令提取电路被配置成至少部分地使用密钥值来解密目标地址,且取回目标地址。

Description

用于目标地址加密的设备、系统和方法
相关申请的交叉引用
本申请案要求2018年12月28日提交的标题为“具有上下文特定的学习指令目标地址加密的安全分支预测器(SECURE BRANCH PREDICTOR WITH CONTEXT-SPECIFIC LEARNEDINSTRUCTION TARGET ADDRESS ENCRYPTION)”的临时专利申请案第62/786,327号的优先权。这一先前提交的申请案的主题以引用的方式并入本文中。
技术领域
本说明书涉及计算机安全,且更具体地说,涉及一种具有上下文特定的学习指令目标地址加密的安全分支预测器。
背景技术
在2018年,一类被称为幽灵(Spectre)的安全漏洞被公之于众。具体地说,幽灵漏洞攻击分支预测器目标。这类攻击随后扩张,使用各种形式的侧通道或定时攻击将敏感数据泄漏给没有特权访问所述数据的攻击进程。
最初,攻击集中于分支预测器的推测行为上,其中分支预测器可在实际程序执行之前运行且开始拉入其认为将很快被访问的高速缓存线。当处理器的执行部分赶上时,声明推测路径为错误预测,且刷新推测状态。虽然软件可能无法查看未在程序中执行的推测的结果,但硬件仍保留某一状态,例如以推测方式引入的高速缓存线。这种推测状态可能通过假目标注入而被迫沿路径前进,且随后由攻击者程序利用,在特权存储器空间中使用“定时攻击”且基于命中时延推断以推测方式访问哪条线。
由分支预测器暴露的所述类中的其它安全漏洞为攻击者程序训练预测器目标,且在共享处理器中返回调用以使用共享软件资源或库跳转到违法目标,随后将程序切换到受害者线程,其使用公共资源以推测性地跳转到有毒目标。
最终,在公共CPU上使用推测和共享资源暴露分支预测器中的主要安全漏洞,使得外部程序通过注入不良目标来推断以推测方式发现的秘密,或训练以跳转到非所需位置。
发明内容
根据一个一般方面,一种设备可包含上下文特定的加密密钥电路,上下文特定的加密密钥电路被配置成生成密钥值,其中密钥值特定于指令集的上下文。设备可包含目标地址预测电路,目标地址预测电路被配置成为指令集中的下一指令提供目标地址。设备可包含目标地址存储器,目标地址存储器被配置成存储目标地址的加密版本,其中至少部分地使用密钥值来加密目标地址。设备可进一步包含指令提取电路,指令提取电路被配置成至少部分地使用密钥值来解密目标地址,且取回目标地址。
根据另一一般方面,一种系统可包含执行单元电路,其用以处理与第一程序相关联的指令。系统可包含指令提取电路,其被配置成经由分支预测取回与第一程序相关联的目标地址处的指令,且将所述指令提供到执行单元,其中所述指令提取电路进一步被配置成加密目标地址使得恶意第二程序不能够读取目标地址的正确解密版本。
根据另一一般方面,一种方法可包含:响应于开始提取第一指令流,生成对于第一指令流基本上为唯一的且与所述第一指令流相关联的上下文特定的加密密钥值。方法可包含确定与第一指令流相关的指令地址。方法可包含将指令地址的加密版本存储在目标地址存储器内,其中至少部分地使用上下文特定的加密密钥值来加密指令地址,且因此与上下文特定的加密密钥值不相关联的第二指令流并不能够读取未加密的指令地址。
以下随附附图和描述中阐述一个或多个实施方案的细节。其它特征将从描述和附图且从权利要求书显而易见。
一种用于计算机安全且更具体地说用于具有上下文特定的学习指令目标地址加密的安全分支预测器的系统和/或方法,基本上如附图中的至少一个中所描绘的和/或结合所述附图中的至少一个所描述的,如权利要求书中更完整地阐述的。
附图说明
图1为根据所公开主题的系统的示例实施例的框图。
图2为根据所公开主题的系统的示例实施例的框图。
图3为根据所公开主题的电路的示例实施例的框图。
图4为可包含根据所公开主题的原理形成的装置的信息处理系统的示意性框图。
各个图中的相似附图标号指示相似元件。
附图标号说明
100、200:系统;
101:指令高速缓存存储器;
102:指令获取单元电路;
103:分支预测电路或系统;
104:指令解码单元;
106:执行单元;
108:分支预测器电路;
110:程序计数器;
112:分支目标缓冲器;
114:返回地址栈;
118:选择器;
122、222:加密电路;
124、224:解密电路;
182:第一程序/程序/软件块/指令集;
184:第二程序;
202:目标地址存储器;
203、205:异或门;
204:上下文特定的加密密钥;
212:新目标地址;
213:加密地址;
214:明文目标地址;
300:电路/系统;
301:密钥产生器;
302:逻辑或电路;
304:上下文密钥;
306:选择器电路;
308:熵扩展电路;
400:信息处理系统;
405:系统总线;
410:处理器;
415:组合逻辑块;
420:易失性存储器;
430:非易失性存储器;
440:网络接口;
450:用户接口单元;
460:硬件组件;
470:软件组件。
具体实施方式
将在下文中参考随附附图更全面地描述各种示例实施例,随附附图中描绘了一些示例实施例。然而,本发明所公开主题可以用许多不同形式实施,并且不应被解释为限于本文中所阐述的示例实施例。确切地说,提供这些示例实施例以使得本公开将是透彻及全面的,且将向本领域的技术人员充分地传达本发明所公开主题的范围。在附图中,为了清楚起见可能夸大层及区域的大小及相对大小。
应理解,当一个元件或层被称作“在”另一元件或层“上”、“连接到”另一元件或层或“耦合到”另一元件或层时,所述元件或层可直接在另一元件或层上、直接连接到另一元件或层或耦合到另一元件或层,或可能存在中间元件或层。相比之下,当一个元件被称作“直接”在另一元件或层“上”、“直接连接到”另一元件或层或“直接耦合到”另一元件或层时,不存在中间元件或层。相似标号始终指代相似元件。如本文中所使用,术语“和/或”包含相关联的所列项中的一个或多个的任何及所有组合。
将理解,虽然本文中可使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或区段,但是这些元件、组件、区域、层和/或区段不应受到这些术语的限制。这些术语仅用于区分一个元件、组件、区域、层或区段与另一区域、层或区段。因此,在不脱离本发明所公开主题的教示的情况下,下文中所论述的第一元件、组件、区域、层或区段可称为第二元件、组件、区域、层或区段。
为易于描述,可在本文中使用如“在...下方”、“下方”、“下部”、“上方”、“上部”和类似术语的空间相对术语来描述如图中所示的一个元件或特征与另一元件或特征的关系。应理解,除图中所描绘的定向以外,空间相对术语意欲涵盖装置在使用或操作中的不同定向。举例来说,如果图中的装置倒过来,那么描述为其它元件或特征“下方”或“在”其它元件或特征“下方”的元件将定向为其它元件或特征“上方”。因此,示范性术语“下方”可涵盖上方和下方两个定向。装置可以其它方式定向(旋转90度或处于其它定向),且本文中所使用的空间相对描述词相应地进行解释。
同样地,为易于描述,可在本文中使用例如“高”、“低”、“上拉”、“下拉”、“1”、“0”和类似术语的电学术语来描述相对于如图中所示出的另一元件或特征的其它电压电平或电流的电压电平或电流。应理解,除图中所描绘的电压或电流外,电学相对术语意欲涵盖装置在使用或操作中的不同参考电压。举例来说,如果图中的装置或信号反向或使用其它参考电压、电流或电荷,那么被描述为“高”或“上拉”的元件与新参考电压或电流相比将为“低”或“下拉”。因此,示范性术语“高”可涵盖相对较低或较高的电压或电流。装置可以其它方式基于不同的电气参考框架,并且本文中所使用的电学相对描述词相应地进行解释。
本文中所使用的术语仅出于描述特定示例实施例的目的,且并不意欲限制本发明所公开主题。如本文中所使用,除非上下文另外明确指示,否则单数形式“一(a、an)”和“所述”意欲还包含复数形式。应进一步理解,术语“包括(comprises和/或comprising)”在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
本文中参考作为理想化示例实施例(以及中间结构)的示意性图解的横截面图解来描述示例实施例。如此,将预期到作为例如制造技术和/或公差的结果而与图解的形状的差异。因此,示例实施例不应解释为限于本文中所示出的区域的特定形状,而是应包含例如由制造引起的形状的偏差。举例来说,示出为矩形的植入区域通常将具有圆形特征或弯曲特征和/或植入物浓度在其边缘上的梯度,而不是从植入区域到非植入区域的二元变化。同样地,通过植入形成的埋入区域可在埋入区域与发生植入的表面之间的区域中产生一些植入。因此,图中所示出的区域本质上是示意性的,并且其形状并不意欲示出装置的区域的实际形状且并不意欲限制本发明所公开主题的范围。
除非另外定义,否则本文中所使用的所有术语(包含技术和科学术语)具有与本公开主题所属的领域的普通技术人员通常所理解的相同的意义。应进一步理解,例如常用词典中所定义的术语的术语应解释为具有与其相关技术的上下文中的含义一致的含义,且将不在理想化或过度正式意义上进行解释,除非明确地如此界定。
在下文中,将参考随附附图详细地解释示例实施例。
图1为根据所公开主题的系统100的示例实施例的框图。在各种实施例中,系统100可以是处理器(例如中央处理单元、图形处理单元(graphical processing unit,GPU)、片上系统(system-on-a-chip,SoC)、专用控制器处理器等)或任何流水线架构的一部分。在各种实施例中,系统100可包含在计算装置中,所述计算装置例如膝上型计算机、桌上型计算机、工作站、个人数字助理、智能手机、平板计算机以及其它适当计算机或其虚拟机或虚拟计算装置。
在各种实施例中,系统100可示出流水线架构(例如传统的五级精简指令集计算机(reduced instruction set computer,RISC)架构)的开始部分。应理解,上述仅是并未限制所公开主题的一个说明性示例。
在这类实施例中,可由系统100执行程序、软件块或指令集182。程序182可包含各种指令。所述指令中的一些可依序流动。快速的其它指令可在程序中的点之间跳转(例如子程序调用/返回,如果/那么(if/then)决策等)。
在所示出的实施例中,系统100可包含指令高速缓存存储器(I-CACHE)101。I-CACHE 101可存储指令以供系统100处理。
在各种实施例中,系统100可包含指令获取单元电路(instruction fetch unitcircuit,IFU)102。IFU 102可被配置成取回(与目标地址相关联的)指令且开始提供包含到执行单元106以供处理的进程。在所示出的实施例中,IFU 102可取回由程序计数器110指向(例如按目标地址)的指令。
IFU 102可随后将这类指令传递到指令解码单元(instruction decode unit,IDU)或电路104。IDU 104可被配置成解码指令且将其路由到适当的执行单元106。在这类实施例中,多个执行单元106可存在且以多种方式处理指令。举例来说,执行单元106可包含加载/存储单元、浮点运算单元、整数运算单元等。
如上文所描述,程序182可包含非依序跳变,且系统100可采用推测执行以提高效率(相较于在解析跳转指令时保持空闲)。为做到这一点,系统100可包含分支预测电路或系统103。在各种实施例中,分支预测系统103可被包含为IFU 102的一部分。分支预测电路或系统103可被配置成预测下一(预测)指令的下一目标存储器地址将是什么。
在所示出的实施例中,分支预测电路103可包含实际上进行预测的分支预测器电路108。分支预测电路103可包含分支目标缓冲器(branch target buffer,BTB)112。BTB112可以是内容可寻址存储器,其存储预测目标地址或先前遇到的目标地址,且以源地址作索引。分支预测电路103可包含返回地址栈(return address stack,RAS)114。RAS 114可被配置成将目标地址存储到程序182中的点,其中对所述点进行子程序调用或预期子程序返回到所述点。
在所示出的实施例中,分支预测器电路108可查询BTB 112和RAS 114或其自身的内部逻辑和电路,以产生预测目标地址。选择器118(例如多路复用器(multiplexer,MUX))可随后选择正在使用哪个预测源,且将目标地址提供到程序计数器110或IFU 102。在各种实施例中,在实际上由执行单元106解析跳转指令时,可将预测的正确性反馈到分支预测器电路108中。应理解,上述仅是并未限制所公开主题的一个说明性示例。
如上文所描述,一些安全漏洞(例如幽灵类漏洞)利用分支预测电路103中的弱点。在简化描述中,这些恶意程序(例如第二程序184)尝试访问BTB 112和RAS 114以获得与其它程序(例如第一程序182)相关联的目标地址。这可使得恶意程序访问其不应访问的数据。一般来说,系统100应仅允许程序182和程序184访问其分别相关联的目标地址。出于安全原因,程序182与程序184之间应存在一定程度的区隔化(compartmentalization)。如上文所描述,一些安全漏洞(例如幽灵类漏洞)违反所述区隔化。
在所示出的实施例中,为防止对目标地址的未授权的访问,系统100可加密目标地址。具体地说,系统100可在将目标地址存储在一个或多个存储器中时加密所述目标地址,所述一个或多个存储器(即,目标地址存储器)存储目标地址且由BTB 112和RAS 114表示。
在这类实施例中,加密电路122可在目标地址存储在BTB 112和RAS 114中之前执行加密。同样地,解密电路124可对从BTB 112和RAS 114取回的任何目标地址执行解密。在各种实施例中,其它加密电路122和解密电路124可与其它目标地址存储器一起使用。在各种实施例中,加密电路122和解密电路124可整合到BTB 112、RAS 114或其它存储器中。
在各种实施例中,可使用上下文特定的加密密钥(图2和图3中所描绘的)来加密目标地址。每一上下文特定的密钥或散列可与程序182相关联且对于程序182基本上为唯一的,程序182是与目标地址相关联的。
在这类实施例中,如果恶意程序184尝试从BTB 112中读取未经授权的目标地址(例如与第一程序182相关联的目标地址),那么解密电路124将使用恶意程序的上下文特定的密钥。由于密钥(恶意程序的密钥)将为错误的,因此解密的值将不是所述目标地址。恶意程序将仅从BTB 112/解密电路124获得无意义的垃圾,从而抵御漏洞。
图2为根据所公开主题的系统200的示例实施例的框图。在各种实施例中,系统200可强调在对目标地址存储器202的存储器访问(读取和写入)期间采用的加密的方面。
在所示出的实施例中,系统200可包含目标地址存储器202(例如BTB、RAS等)。系统200可包含上下文特定的加密密钥204。上下文特定的加密密钥204可包含寄存器、表或数据结构,其中表或其它数据结构可存储各自与不同程序、指令集或指令流相关联的多个密钥204。
在各种实施例中,上下文特定的加密密钥204可基于与程序相关联的常量、熵值或随机值和/或上下文值(contextual value)。在一些实施例中,上下文值可包含但不限于如进程标识符(identifier,ID)、内核ID、安全状态、管理程序ID等的项目。在各种实施例中,熵值或随机值可由软件提供,或可以是(基本上)随机数产生电路的结果。在各种实施例中,常量值可由硬件组件(例如系列编号、计时器等)提供,且可基于上下文(例如程序首次启动的时间)或安全模式来提供。应理解,上述仅是并未限制所公开主题的一些说明性示例。
在所示出的实施例中,可以流密码的方式使用密钥204。在这类实施例中,加密可能是相对较轻权重的且可能对总体系统200的处理时间和功率消耗具有极小影响。在另一实施例中,加密系统可能参与得更多且权重更重,需要更多资源和时间。应理解,上述仅是并未限制所公开主题的一些说明性示例。
在所示出的实施例中,当从目标地址存储器202读取/写入到所述目标地址存储器时,简单异或(XOR)(门203和门205)和/或偏移可确保目标地址安全。这可避免将多次周期安全循环添加到分支预测器的关键时延。
在所示出的实施例中,系统200可包含异或门203和异或门205。加密电路222和解密电路224可包含移位或替换逻辑;但应理解,上述仅是并未限制所公开主题的一个说明性示例。
在所示出的实施例中,当待存储新目标地址212时,地址212可利用密钥204进行异或运算。异或门203的输出可随后由加密电路222移位、(部分地)替换或掩蔽。在各种实施例中,这可涉及使用密钥204。
同样地,当取回目标地址时,加密地址213可由解密电路222不移位、(部分地)替换或掩蔽。在各种实施例中,这可涉及使用密钥204。地址可利用密钥204进行异或运算。异或门205的输出可未加密或为明文(plaintext)目标地址214(在相同地址于示例中既写入又读取的情况下,其可与地址212相同)。
在这类实施例中,系统200可包含用于常见流密码攻击的势垒,例如用于每一进程或指令流的新密钥204计算,使用非显而易见的或非预期的常量来加扰明文攻击,和/或密钥204上的熵扩展器。
在一个实施例中,通过加扰或加密存储的目标地址,推测执行和共享资源攻击(从交叉训练到受保护地址)的两种情况可受阻,这是因为仅经创建或与目标地址相关联的进程将具有正确密钥204来还原目标地址。注入假目标地址或训练程序跳转到非所需位置的任何攻击者程序将不正确地解码或解密目标地址且将处理器发送到未知位置。
在这类实施例中,任何分支预测器训练(例如共享库训练)可仅通过在新上下文中错误预测及重新学习目标地址一次来对不正确地解密的目标地址作出反应。在各种实施例中,分支预测器偏置、历程和/或训练在上下文切换中可能不会丢失,这是因为其可以是未加密的内部值或与目标地址相关联的元数据。在这类实施例中,目标地址的加密可具有几乎可忽略的性能损失,而进行攻击明显代价更大。
图3为根据所公开主题的电路300的示例实施例的框图。在各种实施例中,系统300可示出创建上下文特定的散列或密钥304的一个实施例。应理解,上述仅是并未限制所公开主题的一个说明性示例。
在所示出的实施例中,系统300可包含上下文密钥304,如上文所描述。系统300还可包含逻辑或电路302以创建上下文密钥304的初始版本。在这类实施例中,可从密钥产生器301复制初始版本,密钥产生器301可包含存储ID(例如虚拟机ID、进程ID等)或硬件特定值(例如系列编号、计时器)的寄存器。系统300还可包含熵扩展电路308和选择器电路306(例如多路复用器)。应理解,上述仅是并未限制所公开主题的一些说明性示例。
在这类实施例中,可根据一个或多个输入或熵源(密钥产生器301)(利用电路302)计算初始上下文密钥304。这些输入或熵源包含但不限于硬件或软件定义的熵源、进程ID、虚拟机ID、权限级别等。
在所示出的实施例中,上下文散列304可经历熵扩展(例如熵扩展器电路308)的一次或多次迭代循环。在具体实施例中,这可包含基于固定输入集合的位与平均每位随机性的确定性非线性移位及异或运算。一般来说,处理器上下文变化对于存储和迁移机器状态为相对未优化且繁重的,因此多个级别的恒定异或散列或加密以及迭代熵扩展可具有低性能影响。
如上文所描述,当上下文密钥304已经选择且经历足够多的熵扩展迭代时,密钥304可使用成极类似于流密码与目标地址进行异或,目标地址(例如间接分支或返回目标)存储在BTB或RAS中。在各种实施例中,简单替换密码或位偏移可用于进一步混淆实际存储地址。当分支预测器经训练且备用于从这些结构预测跳转目标时,对于转换出正确预测目标来说,程序的上下文密钥304可为合适的且可逆的。
图4为信息处理系统400的示意性框图,所述信息处理系统可包含根据所公开主题的原理形成的半导体装置。
参考图4,信息处理系统400可包含根据所公开主题的原理构建的装置中的一个或多个。在另一实施例中,信息处理系统400可采用或执行根据所公开主题的原理的一种或多种技术。
在各种实施例中,信息处理系统400可包含计算装置,例如膝上型计算机、桌上型计算机、工作站、服务器、刀片服务器、个人数字助理、智能手机、平板计算机以及其它适当计算机或其虚拟机或虚拟计算装置。在各种实施例中,信息处理系统400可由用户(未示出)使用。
根据所公开主题的信息处理系统400可进一步包含中央处理单元(centralprocessing unit,CPU)、逻辑或处理器410。在一些实施例中,处理器410可包含一个或多个功能单元块(functional unit block;FUB)或组合逻辑块(combinational logic block;CLB)415。在这类实施例中,组合逻辑块可包含各种布尔逻辑操作(Boolean logicoperation)(例如与非(NAND)、或非(NOR)、非(NOT)、异或(XOR))、稳定逻辑装置(例如触发器、锁存)、其它逻辑装置或其组合。这些组合逻辑操作可以简单或复杂方式被配置成处理输入信号以实现所需结果。应理解,在描述同步组合逻辑操作的几个说明性示例时,所公开主题不受如此限制且可包含异步操作或其混合。在一个实施例中,组合逻辑操作可包括多个互补金属氧化物半导体(complementary metal oxide semiconductor;CMOS)晶体管。在各种实施例中,这些CMOS晶体管可布置到执行逻辑操作的门中;但应理解,可使用其它技术且所述其它技术在所公开主题的范围内。
根据所公开主题的信息处理系统400可进一步包含易失性存储器420(例如随机存取存储器(Random Access Memory,RAM))。根据所公开主题的信息处理系统400可进一步包含非易失性存储器430(例如硬盘驱动器、光存储器、与非(NAND)或快闪存储器)。在一些实施例中,易失性存储器420、非易失性存储器430或其组合或部分可被称作“存储介质”。在各种实施例中,易失性存储器420和/或非易失性存储器430可被配置成以半永久或基本上永久形式存储数据。
在各种实施例中,信息处理系统400可包含一个或多个网络接口440,其被配置成允许信息处理系统400为通信网络的部分且经由通信网络通信。Wi-Fi协议的示例可包含但不限于电气和电子工程师学会(Institute of Electrical and Electronics Engineer;IEEE)802.11g,IEEE 802.11n。蜂窝协议(cellular protocol)的示例可包含但不限于:IEEE 802.16m(又名无线城域网(Wireless-Metropolitan Area Network;Wireless-MAN)高级)、长期演进(Long Term Evolution;LTE)高级、增强型数据速率全球移动通信系统(Global System for Mobile Communications;GSM)演进(Enhanced Data rates for GSMEvolution;EDGE)、演进高速分组接入(Evolved High-Speed Packet Access;HSPA+)。有线协议的示例可包含但不限于IEEE 802.3(又名以太网(Ethernet))、光纤通道(FibreChannel)、电力线通信(Power Line communication)(例如HomePlug、IEEE 1901)。应理解,上述仅是并未限制所公开主题的一些说明性示例。
根据所公开主题的信息处理系统400可进一步包含用户接口单元450(例如显示适配器、触觉接口、人机接口装置)。在各种实施例中,这一用户接口单元450可被配置成从用户接收输入和/或将输出提供到用户。其它种类的装置同样可以用于提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感觉反馈(例如视觉反馈、听觉反馈或触觉反馈);并且来自用户的输入可以按任何形式接收,包含声音、语音或触觉输入。
在各种实施例中,信息处理系统400可包含一个或多个其它装置或硬件组件460(例如显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器)。应理解,上述仅是并未限制所公开主题的一些说明性示例。
根据所公开主题的信息处理系统400可进一步包含一个或多个系统总线405。在这类实施例中,系统总线405可被配置成通信地耦合处理器410、易失性存储器420、非易失性存储器430、网络接口440、用户接口单元450以及一个或多个硬件组件460。由处理器410处理的数据或从非易失性存储器430外部输入的数据可存储在非易失性存储器430或易失性存储器420中。
在各种实施例中,信息处理系统400可包含或执行一个或多个软件组件470。在一些实施例中,软件组件470可包含操作系统(operating system;OS)和/或应用程序。在一些实施例中,OS可被配置成向应用程序提供一个或多个服务或在信息处理系统400的应用程序与各种硬件组件(例如处理器410、网络接口440)之间管理或充当中介。在这类实施例中,信息处理系统400可包含一个或多个原生应用程序,所述程序可本地(例如在非易失性存储器430内)安装且被配置成由处理器410直接执行且与OS直接交互。在这类实施例中,原生应用程序可包含预编译机器可执行码。在一些实施例中,原生应用程序可包含被配置成将源代码或目标代码转译成随后由处理器410执行的可执行码的脚本解译器(例如C shell(csh)、苹果脚本(AppleScript)、热键脚本(AutoHotkey))或虚拟执行机(virtualexecution machine,VM)(例如Java虚拟机(Java Virtual Machine)、微软公共语言运行时(Microsoft Common Language Runtime))。
上文所描述的半导体装置可使用各种封装技术来包封。举例来说,根据所公开主题的原理构建的半导体装置可使用以下技术中的任一种来包封:层叠封装(package onpackage,POP)技术、球栅阵列(ball grid array,BGA)技术、芯片尺寸封装(chip scalepackage,CSP)技术、塑料引线芯片载体(plastic leaded chip carrier,PLCC)技术、塑料双列直插式封装(plastic dual in-line package,PDIP)技术、华夫包装式裸片(die inwaffle pack)技术、晶片式裸片(die in wafer form)技术、板上芯片(chip on board,COB)技术、陶瓷双列直插封装(ceramic dual in-line package,CERDIP)技术、塑料公制四方扁平封装(plastic metric quad flat package,PMQFP)技术、塑料四方扁平封装(plastic quad flat package,PQFP)技术、小外形集成电路封装(small outlineintegrated circuit package,SOIC)技术、紧缩小外形封装(shrink small outlinepackage,SSOP)技术、薄型小外形封装(thin small outline package,TSOP)技术、薄型四方扁平封装(thin quad flat package,TQFP)技术、系统级封装(system in package,SIP)技术、多芯片封装(multi-chip package,MCP)技术、晶片级构造封装(wafer-levelfabricated package,WFP)技术、晶片级处理堆叠封装(wafer-level processed stackpackage,WSP)技术或如本领域的技术人员将已知的其它技术。
方法步骤可由执行计算机程序的一个或多个可编程处理器来执行,从而通过对输入数据进行操作并产生输出来执行功能。方法步骤也可由例如现场可编程门阵列(fieldprogrammable gate array,FPGA)或专用集成电路(application-specific integratedcircuit,ASIC)的专用逻辑电路来执行,并且设备可实施为专用逻辑电路。
在各种实施例中,计算机可读介质可包含在执行时使得装置执行方法步骤的至少一部分的指令。在一些实施例中,计算机可读介质可包含在磁性介质、光学介质、其它介质或其组合中(例如CD-ROM、硬盘驱动器、只读存储器、快闪驱动器)。在这类实施例中,计算机可读介质可以是有形且非暂时性实施的制品。
在已参考示例实施例描述所公开主题的原理时,本领域的技术人员将显而易见的是可在不脱离这些公开概念的精神和范围的情况下对其作出各种改变和修改。因此,应理解,上述实施例并非限制性的,而仅是说明性的。因此,所公开概念的范围将通过所附权利要求书和其等效物所最广泛容许的解释来确定,且不应受前文描述的约束或限制。因此,应理解,所附权利要求书旨在涵盖如属于实施例的范围内的所有这类修改和改变。

Claims (20)

1.一种用于目标地址加密的设备,包括:
上下文特定的加密密钥电路,被配置成生成密钥值,其中所述密钥值特定于指令集的上下文;
目标地址预测电路,被配置成为所述指令集中的下一指令提供目标地址;
目标地址存储器,被配置成存储所述目标地址的加密版本,其中至少部分地使用所述密钥值来加密所述目标地址;以及
指令提取电路,被配置成至少部分地使用所述密钥值来解密所述目标地址,且取回所述目标地址。
2.根据权利要求1所述的设备,其中所述目标地址存储器包含分支目标缓冲器。
3.根据权利要求1所述的设备,其中所述上下文特定的加密密钥电路包括:
随机数产生器电路,用以生成随机数;以及
熵扩展电路,被配置成使所述随机数与相关联于所述指令集的标识符组合以创建所述密钥值。
4.根据权利要求3所述的设备,其中所述标识符包含选自集合的值,所述集合包含:进程标识符、虚拟机标识符、特权级别、内核标识符以及安全状态值。
5.根据权利要求3所述的设备,其中所述熵扩展电路被配置成执行组合的多次迭代以创建所述密钥值,其中所述迭代中的每一个将先前迭代的输出包含作为当前迭代的输入。
6.根据权利要求1所述的设备,其中所述目标地址预测电路被配置成:
至少部分地使用流密码和所述密钥值来加密所述目标地址,以及
将所述目标地址的所述加密版本存储在所述目标地址存储器内。
7.根据权利要求1所述的设备,其中所述目标地址经加密以使得在采用错误密钥值来试图解密加密的目标地址的情况下恢复假目标地址。
8.根据权利要求1所述的设备,其中所述目标地址预测电路被配置成生成与所述目标地址相关联的分支偏置信息,且其中并不加密所述分支偏置信息。
9.一种用于目标地址加密的系统,包括:
执行单元电路,用以处理与第一程序相关联的指令;以及
指令提取电路,被配置成经由分支预测取回与所述第一程序相关联的目标地址处的所述指令,且将所述指令提供到所述执行单元电路,其中所述指令提取电路还被配置成加密所述目标地址使得恶意第二程序不能够读取所述目标地址的正确解密版本。
10.根据权利要求9所述的系统,其中指令提取电路被配置成在所述第二程序试图利用幽灵类推测执行缺陷的情况下防止所述第二程序正确地读取所述目标地址。
11.根据权利要求9所述的系统,其中所述指令提取电路包括:
上下文特定的加密密钥电路,被配置成生成密钥值,其中所述密钥值特定于指令集的上下文,以及
目标地址存储器,被配置成存储所述目标地址的加密版本,其中至少部分地使用所述密钥值来加密所述目标地址;以及
其中所述指令提取电路被配置成至少部分地使用所述密钥值来解密所述目标地址。
12.根据权利要求11所述的系统,其中所述目标地址存储器包含返回地址栈。
13.根据权利要求11所述的系统,其中所述上下文特定的加密密钥电路包括:
随机数产生器电路,用以生成随机数;以及
熵扩展电路,被配置成使所述随机数与相关联于所述指令集的标识符组合以创建所述密钥值。
14.根据权利要求13所述的系统,其中所述标识符包含选自集合的值,所述集合包含:进程标识符、虚拟机标识符、特权级别、内核标识符以及安全状态值。
15.根据权利要求13所述的系统,其中所述熵扩展电路被配置成执行组合的多次迭代以创建所述密钥值,其中所述迭代中的每一个将先前迭代的输出包含作为当前迭代的输入。
16.根据权利要求11所述的系统,其中所述指令提取电路包括目标地址预测电路,所述目标地址预测电路被配置成:
至少部分地使用流密码和所述密钥值来加密所述目标地址,以及
将所述目标地址的所述加密版本存储在所述目标地址存储器内。
17.一种用于目标地址加密的方法,包括:
响应于开始提取第一指令流,生成对于所述第一指令流基本上为唯一的且与所述第一指令流相关联的上下文特定的加密密钥值;
确定与所述第一指令流相关的指令地址;以及
将所述指令地址的加密版本存储在目标地址存储器内,其中至少部分地使用所述上下文特定的加密密钥值来加密所述指令地址,且因此与所述上下文特定的加密密钥值不相关联的第二指令流不能够读取未加密的指令地址。
18.根据权利要求17所述的方法,还包括:
读取所述目标地址存储器内的所述指令地址,其中读取包括至少部分地使用所述上下文特定的加密密钥值来解密所述指令地址的所述加密版本。
19.根据权利要求17所述的方法,其中所述第二指令流被配置成利用幽灵类推测执行缺陷。
20.根据权利要求17所述的方法,其中生成上下文特定的加密密钥值包含利用与所述第一指令流相关联的标识符,其中所述标识符包含选自集合的值,所述集合包含:进程标识符、虚拟机标识符、特权级别、内核标识符以及安全状态值。
CN201911351027.4A 2018-12-28 2019-12-24 用于目标地址加密的设备、系统和方法 Pending CN111381884A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862786327P 2018-12-28 2018-12-28
US62/786,327 2018-12-28
US16/283,725 US20200210626A1 (en) 2018-12-28 2019-02-22 Secure branch predictor with context-specific learned instruction target address encryption
US16/283,725 2019-02-22

Publications (1)

Publication Number Publication Date
CN111381884A true CN111381884A (zh) 2020-07-07

Family

ID=71123267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911351027.4A Pending CN111381884A (zh) 2018-12-28 2019-12-24 用于目标地址加密的设备、系统和方法

Country Status (3)

Country Link
US (1) US20200210626A1 (zh)
KR (1) KR20200083230A (zh)
CN (1) CN111381884A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765615A (zh) * 2020-12-07 2021-05-07 北京百度网讯科技有限公司 数据存储方法、装置以及电子设备
CN116521576B (zh) * 2023-05-11 2024-03-08 上海合见工业软件集团有限公司 Eda软件数据处理系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8368517B2 (en) * 2008-08-22 2013-02-05 Hong Kong R&D Centre for Logistics and Supply Chain Management Enabling Technologies Limited RFID privacy-preserving authentication system and method
US8370935B1 (en) * 2009-08-17 2013-02-05 Fatskunk, Inc. Auditing a device
US20150163060A1 (en) * 2010-04-22 2015-06-11 Martin Tomlinson Methods, systems and apparatus for public key encryption using error correcting codes
US9129062B1 (en) * 2010-05-20 2015-09-08 Vmware, Inc. Intercepting subroutine return in unmodified binaries
US20120002803A1 (en) * 2010-07-02 2012-01-05 Wael Adi Self reconfiguring vlsi architectures for unknown secret physical functions based crypto security systems
US9213551B2 (en) * 2011-03-11 2015-12-15 Oracle International Corporation Return address prediction in multithreaded processors
US9304776B2 (en) * 2012-01-31 2016-04-05 Oracle International Corporation System and method for mitigating the impact of branch misprediction when exiting spin loops
US9390264B2 (en) * 2014-04-18 2016-07-12 Qualcomm Incorporated Hardware-based stack control information protection
EP3238367B1 (en) * 2014-12-23 2019-05-22 Telefonaktiebolaget LM Ericsson (publ) Technique for generating a password
US10867031B2 (en) * 2015-07-23 2020-12-15 Apple Inc. Marking valid return targets
US10203959B1 (en) * 2016-01-12 2019-02-12 Apple Inc. Subroutine power optimiztion
US10133655B1 (en) * 2017-06-12 2018-11-20 Sony Interactive Entertainment Inc. Emulation of target system using JIT compiler and bypassing translation of selected target code blocks
US10331447B2 (en) * 2017-08-30 2019-06-25 Qualcomm Incorporated Providing efficient recursion handling using compressed return address stacks (CRASs) in processor-based systems
US10819736B2 (en) * 2017-11-29 2020-10-27 Arm Limited Encoding of input to branch prediction circuitry
US10831491B2 (en) * 2018-06-29 2020-11-10 Intel Corporation Selective access to partitioned branch transfer buffer (BTB) content
US11119784B2 (en) * 2018-06-29 2021-09-14 Intel Corporation Efficient mitigation of side-channel based attacks against speculative execution processing architectures
US10929535B2 (en) * 2018-06-29 2021-02-23 Intel Corporation Controlled introduction of uncertainty in system operating parameters
US10740104B2 (en) * 2018-08-16 2020-08-11 International Business Machines Corporation Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch
US11099851B2 (en) * 2018-10-26 2021-08-24 International Business Machines Corporation Branch prediction for indirect branch instructions
US11635965B2 (en) * 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation

Also Published As

Publication number Publication date
KR20200083230A (ko) 2020-07-08
TW202030632A (zh) 2020-08-16
US20200210626A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
EP3682362B1 (en) Call path dependent authentication
US11625337B2 (en) Encoded pointer based data encryption
Zhuang et al. Hardware assisted control flow obfuscation for embedded processors
CN110659071A (zh) 针对推测性执行处理架构的基于边信道的攻击的有效缓解
US10095636B2 (en) Secure computing
US9280490B2 (en) Secure computing
US11580035B2 (en) Fine-grained stack protection using cryptographic computing
US11372967B2 (en) Detection method of control flow attacks based on return address signatures
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
De et al. Hardware assisted buffer protection mechanisms for embedded RISC-V
TW201918923A (zh) 安全邏輯系統及操作安全邏輯系統的方法
CN111381884A (zh) 用于目标地址加密的设备、系统和方法
CN113673002A (zh) 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法
Li et al. A control flow integrity checking technique based on hardware support
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
TWI842789B (zh) 用於目標位址加密的設備、系統及方法
Arias et al. SaeCAS: secure authenticated execution using CAM-based vector storage
US11442738B2 (en) Method for executing a machine code of a secure function
Alhubaiti et al. Impact of spectre/meltdown kernel patches on crypto-algorithms on windows platforms
Yavarzadeh et al. Pathfinder: High-Resolution Control-Flow Attacks Exploiting the Conditional Branch Predictor
EP4202700A1 (en) Transient side-channel aware architecture for cryptographic computing
US20230195907A1 (en) Apparatus And Method For Defending Against Control Flow Attack, And Processor
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
Wichelmann et al. Obelix: Mitigating Side-Channels through Dynamic Obfuscation
KR20230145167A (ko) 보안 칩-와이드 통신

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