CN115470532A - 一种缓存侧信道攻击防御方法及装置 - Google Patents
一种缓存侧信道攻击防御方法及装置 Download PDFInfo
- Publication number
- CN115470532A CN115470532A CN202110649043.2A CN202110649043A CN115470532A CN 115470532 A CN115470532 A CN 115470532A CN 202110649043 A CN202110649043 A CN 202110649043A CN 115470532 A CN115470532 A CN 115470532A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- index
- physical address
- keys
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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 by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种缓存侧信道攻击防御方法及装置,涉及信息安全技术领域,可用于在保证缓存利用率和降低缓存性能开销的同时,防御攻击者基于缓存侧行信道攻击获取安全进程的机密信息。其中,所述缓存包括P个缓存线,P为正整数,所述方法包括:接收来自处理核的数据访问请求,所述数据访问请求包括目标物理地址;若所述目标物理地址来自所述安全进程,根据所述P个缓存线对应的密钥确定所述P个缓存线对应的缓存索引;根据所述P个缓存线对应的缓存索引和所述目标物理地址,处理所述数据访问请求。
Description
技术领域
本申请涉及信息安全技术领域,尤其涉及一种缓存侧信道攻击防御方法及装置。
背景技术
侧信道攻击是利用密码算法执行过程中泄漏的与内部运算紧密相关的声光信息、功耗、电磁辐射以及运行时间等多种物理状态信息进行攻击。近年来,侧信道攻击技术已经逐渐地从设备外部深入到设备内部的中央处理器(central processing unit,CPU)、缓存(cache)、分支预测单元等。缓存侧信道攻击是一种新型的侧信道攻击技术,可以跨平台、跨CPU、突破安全边界对目标设备进行攻击,对现有安全防护造成极大的威胁。
其中,缓存侧信道攻击通常包括四个步骤:第一步、获得内存中的物理地址与缓存中的缓存集(cache set)索引之间的映射关系;第二步、通过该映射关系对缓存集进行操作;第三步、触发敏感数据相关的计算操作;第四步、通过访问时间获得第二步中操作过的缓存集的状态,以通过搜集到的状态信息反推出机密信息。现有技术中提供了如下几种缓存侧信道攻击防御方法,具体如下所述。
第一种方法:当安全进程的敏感数据将要被执行计算或者敏感代码将要被执行时,通过预加载的方式(preload)将该敏感数据或者该敏感代码载入到缓存中,该方法的安全性在于阻断第二步中攻击者对安全进程使用的缓存线的占用,这样攻击者难以通过缓存操作预先抢占安全进程使用的缓存线。但是,该方法需要技术人员对敏感数据和敏感代码进行识别、修改和标注,工作量大且不支持二进制代码,同时将敏感数据和敏感代码预加载到缓存后,会导致被占用的缓存空间无法被非安全进程有效利用,从而降低了缓存的利用率。
第二种方法:利用软件指令将缓存设置为随机模式(randomized mode),通过随机方式选取一部分缓存空间用于存储敏感数据,并在进入随机模式时将选取的缓存空间设置为无效,在退出随机模式时也将选取的缓存空间设置为无效,这样能够保证安全进程的敏感数据不会被攻击者预先设置的数据所影响,同时在退出时也不会遗留在缓存空间中。但是,该方法中该缓存需要在随机模式与标准模式之间进行切换,同时需要对选取的缓存空间进行无效操作,从而导致性能开销较大。
第三种方法:对于进入最后一级缓存(last level cache,LLC)的所有数据访问请求中的每个数据访问请求,将该请求中的物理地址所对应的缓存索引进行随机化加密处理,并将处理后得到的数值作为对应的新的缓存索引进行存储,即通过对处理器的所有数据访问请求中的物理地址进行随机化加密处理,并将处理后得到的数值作为新的缓存索引,以阻断攻击者获得内存的物理地址与缓存中的缓存集索引之间的映射关系。但是,该方法中需要对处理器的所有数据访问请求中的物理地址都进行随机化加密处理,即对于安全进程和非安全进程对应的数据访问请求都需要进行处理,从而会降低数据访问请求的处理效率,同时增加性能开销。
综上所述,上述几种不同的缓存侧信道攻击防御方法,都会在不同程度上降低缓存的利用率或者增加缓存的性能开销。
发明内容
本申请提供一种缓存侧信道攻击防御方法及装置,可用于在保证缓存利用率和降低缓存性能开销的同时,防御攻击者基于缓存侧行信道攻击获取安全进程的机密信息,进而保证了安全进程的数据的安全性。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种缓存侧信道攻击防御方法,该缓存包括P个缓存线,P为正整数,该方法包括:接收来自处理核的数据访问请求,该数据访问请求包括目标物理地址;若该目标物理地址来自安全进程,根据该P个缓存线对应的i组密钥确定该P个缓存线对应的缓存索引;根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求。
在本申请实施例中,当接收到来自处理核的数据访问请求时,若该请求中的目标物理地址来自该安全进程,则使用P个缓存线对应的密钥确定该P个缓存线对应的缓存索引,从而根据该P个缓存线对应的缓存索引和该目标物理地址处理该数据访问请求。也即是,本申请中的安全进程可使用该缓存中的P个缓存线,且该P个缓存线对应的缓存索引是加密处理的,非安全进程可使用该缓存中的全部缓存空间,从而与现有技术相比,可以在保证缓存利用率和降低缓存性能开销的同时,防御攻击者基于缓存侧行信道攻击获取安全进程的机密信息,进而保证了安全进程的数据的安全性。
在第一方面的一种可能的实现方式中,该P个缓存线位于i路缓存线中,该密钥包括i组密钥且与该i路缓存线一一对应,该i组密钥中的每组密钥包括旧密钥和新密钥,该i为大于或等于1且小于或等于P的整数,则根据该P个缓存线对应的密钥确定该P个缓存线对应的缓存索引,包括:对于该i组密钥中的第一组密钥,分别解密该第一组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,该第一组密钥为该i组密钥中的任意一组密钥;根据索引指示从该旧缓存索引和该新缓存索引中确定第一缓存索引,该第一缓存索引为该P个缓存线中位于该i路缓存线的第一路缓存线中的缓存线对应的缓存索引,该第一路缓存线与该第一组密钥对应。上述可能的实现方式中,通过对该P个缓存线的缓存索引进行加密且使用旧密钥和新密钥进行加密时,可以有效保证安全进程的数据的安全性,同时提高该P个缓存线对应密钥的安全性。
在第一方面的一种可能的实现方式中,根据索引指示从该旧缓存索引和该新缓存索引中确定第一缓存索引,包括:若该旧缓存索引大于或等于该索引指示,确定该旧缓存索引为该第一缓存索引;若该旧缓存索引小于该索引指示,确定该新缓存索引为该第一缓存索引。上述可能的实现方式中,通过该索引指示与该旧缓存索引和该新缓存索引的大小关系确定第一缓存索引,可以在提高该P个缓存线对应密钥的安全性的同时,保证数据访问时能够获取到正确的密钥。
在第一方面的一种可能的实现方式中,该P个缓存线分散位于该缓存包括的多路缓存线中。上述可能的实现方式中,当该P个缓存线分散位于该缓存包括的多路缓存线中时,可以一次性地查询该P个缓存线在该多路缓存线中的缓存线,从而可以提高查询效率,以进一步提高数据访问请求的处理效率。
在第一方面的一种可能的实现方式中,根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求,包括:根据该P个缓存线对应的缓存索引和该目标物理地址确定是否存在第二缓存线,该第二缓存线中的标签信息与该目标物理地址中的标签信息一致;若存在该第二缓存线,确定该第二缓存线中的第一数据是否来自该安全进程;若该第一数据来自该安全进程,读取该第一数据并发送给该处理核。上述可能的实现方式中,能够在处理安全进程的数据访问请求的过程中,保证缓存中存储的安全进程的数据的安全性。
在第一方面的一种可能的实现方式中,根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求,还包括:若不存在该第二缓存线、或者该第一数据来自非安全进程,根据该目标物理地址从内存中获取第二数据;将该第二数据存储在该P个缓存线中的第三缓存线,该第三缓存线是该P个缓存线中的任意一个缓存线。上述可能的实现方式,将该第二数据存储在该P个缓存线中的第三缓存线中,可以将从内存中读取的安全进程的数据存储在加密的缓存线中,从而可以有效提高安全进程的数据的安全性。
在第一方面的一种可能的实现方式中,该第二缓存线还包括保护域指示信息,该方法还包括:若该保护域指示信息为第一信息,确定该第一数据来自该安全进程;若该保护域指示信息为第二信息,确定该第一数据来自该非安全进程。上述可能的实现方式,当第二缓存线还包括保护域指示信息时,该缓存控制器可以根据该保护域指示信息快速、准确地确定第一数据是来自安全进程还是非安全进程,从而可以提高确定第一数据的来源的效率和准确性。
在第一方面的一种可能的实现方式中,该保护域指示信息占用多个比特。上述可能的实现方式中,当该保护域指示信息占用多个比特时,安全进程可以进一步被划分为多个不同等级的安全域,每个安全域可以有各自使用的缓存区域,通过该保护域指示信息可以指示不同等级的安全域,从而进一步提高不同安全域之间的隔离度和安全性。
在第一方面的一种可能的实现方式中,该方法还包括:当访问次数达到预设访问次数时,更新该P个缓存线对应的密钥。可选的,在该访问次数达到该预设访问次数的过程中,通过多个更新来完成该P个缓存线对应的密钥的更新。上述可能的实现方式中,通过更新该P个缓存线对应的密钥,可以提高该P个缓存线对应的密钥的安全性和有效性,从而可以避免攻击者通过长期的分析尝试获取到该P个缓存线对应的密钥。
在第一方面的一种可能的实现方式中,该P个缓存线对应的密钥包括i组密钥,该i为大于或等于1且小于或等于P的整数,该更新该P个缓存线对应的密钥,包括:对于该i组密钥中的第二组密钥,分别解密该第二组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,该第二组密钥为该i组密钥中的任意一组密钥;生成第一新密钥,将该新缓存索引所指示的缓存线中的数据存储在该第一新缓存索引所指示的缓存线中,该第一新缓存索引是该第一新密钥解密得到的;将该旧缓存索引所指示的缓存线中的数据存储在该新缓存索引所指示的缓存线中,并确定该旧密钥等于该新密钥;将索引指示加一,已完成该索引指示的更新。上述可能的实现方式中,当该i组密钥包括多组密钥时,可以在该访问次数达到预设访问次数的过程中,通过多次更新完成该多组密钥的更新,比如,每次可以只更新该i组密钥中的一组密钥,以避免同时更新该多组密钥而造成性能开销时延较大的问题。
在第一方面的一种可能的实现方式中,该方法还包括:若该目标物理地址来自非安全进程,根据该目标物理地址确定该缓存中是否存在第四缓存线,该第四缓存线中的标签信息与该目标物理地址中的标签信息一致;若存在该第四缓存线且该第四缓存线属于该P个缓存线,确定该第四缓存线中的第三数据是否来自该非安全进程;若存在该第四缓存线且该第四缓存线不属于该P个缓存线,或者该第三数据来自该非安全进程,读取该第三数据并发送给该处理核。上述可能的实现方式中,当该目标物理地址来自非安全进程时,可以直接根据该目标物理地址查询该缓存,即直接根据该目标物理地址确定缓存线的缓存索引,而无需通过密钥加解密缓存索引,从而在一定程度上可以提高数据访问请求的处理效率。
在第一方面的一种可能的实现方式中,该方法还包括:若不存在该第四缓存线、或者该第三数据来自该安全进程,根据该目标物理地址从内存中获取第四数据,并将该第四数据存储在该缓存中。上述可能的实现方式中,可以在不影响安全进程的数据的安全性的情况下,提高非安全进程的数据访问请求的处理效率。
在第一方面的一种可能的实现方式中,该接收来自处理核的数据访问请求之后,该方法还包括:若该目标物理地址位于该安全进程对应的第一物理地址范围,确定该目标物理地址来自该安全进程;若该目标物理地址位于非安全进程对应的第二物理地址范围,确定该目标物理地址来自该非安全进程。上述可能的实现方式中,通过为安全进程配置第一物理地址范围,为非安全进程配置第二物理地址范围,从而在根据该目标物理地址所属的物理地址范围确定来源时,可以提高确定的准确性和速率。
第二方面,提供一种缓存侧信道攻击防御装置,该缓存包括P个缓存线,P为正整数,该装置包括:接收单元,用于接收来自处理核的数据访问请求,该数据访问请求包括目标物理地址;确定单元,用于若该目标物理地址来自安全进程,根据该P个缓存线对应的密钥确定该P个缓存线对应的缓存索引;处理单元,用于根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求。
在第二方面的一种可能的实现方式中,该P个缓存线位于i路缓存线中,该密钥包括i组密钥且与该i路缓存线一一对应,该i组密钥中的每组密钥包括旧密钥和新密钥,该i为大于或等于1且小于或等于P的整数,该确定单元还用于:对于该i组密钥中的第一组密钥,分别解密该第一组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,该第一组密钥为该i组密钥中的任意一组密钥;根据索引指示从该旧缓存索引和该新缓存索引中确定第一缓存索引,该第一缓存索引为该P个缓存线位于该i路缓存线中的第一路缓存线中的缓存线对应的缓存索引,该第一路缓存线与该第一组密钥对应。
在第二方面的一种可能的实现方式中,该确定单元还用于:若该旧缓存索引大于或等于该索引指示,确定该旧缓存索引为该第一缓存索引;若该旧缓存索引小于该索引指示,确定该新缓存索引为该第一缓存索引。
在第二方面的一种可能的实现方式中,该P个缓存线分散位于该缓存包括的多路缓存线中。
在第二方面的一种可能的实现方式中,该确定单元,还用于根据该P个缓存线对应的缓存索引和该目标物理地址确定是否存在第二缓存线,该第二缓存线中的标签信息与该目标物理地址中的标签信息一致;该确定单元,还用于若存在该第二缓存线,确定该第二缓存线中的第一数据是否来自该安全进程;该处理单元,还用于若该第一数据来自该安全进程,读取该第一数据并发送给该处理核。
在第二方面的一种可能的实现方式中,该处理单元还用于:若不存在该第二缓存线、或者该第一数据来自非安全进程,根据该目标物理地址从内存中获取第二数据;将该第二数据存储在该P个缓存线中的第三缓存线,该第三缓存线是该P个缓存线中的任意一个缓存线。
在第二方面的一种可能的实现方式中,该第二缓存线还包括保护域指示信息,该确定单元还用于:若该保护域指示信息为第一信息,确定该第一数据来自该安全进程;若该保护域指示信息为第二信息,确定该第一数据来自该非安全进程。
在第二方面的一种可能的实现方式中,该保护域指示信息占用多个比特。
在第二方面的一种可能的实现方式中,该装置还包括:更新单元,用于当访问次数达到预设访问次数时,更新该P个缓存线对应的密钥。可选的,该更新单元还用于:在该访问次数达到该预设访问次数的过程中,通过多个更新来完成该P个缓存线对应的密钥的更新。
在第二方面的一种可能的实现方式中,该P个缓存线对应的密钥包括i组密钥,该i为大于或等于1且小于或等于P的整数,该更新单元还用于:对于该i组密钥中的第二组密钥,分别解密该第二组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,该第二组密钥为该i组密钥中的任意一组密钥;生成第一新密钥,将该新缓存索引所指示的缓存线中的数据存储在该第一新缓存索引所指示的缓存线中,该第一新缓存索引是该第一新密钥解密得到的;将该旧缓存索引所指示的缓存线中的数据存储在该新缓存索引所指示的缓存线中,并确定该旧密钥等于该新密钥;将该索引指示加一,已完成该索引指示的更新。
在第二方面的一种可能的实现方式中,该确定单元,还用于若该目标物理地址来自非安全进程,根据该目标物理地址确定该缓存中是否存在第四缓存线,该第四缓存线中的标签信息与该目标物理地址中的标签信息一致;该确定单元,还用于若存在该第四缓存线且该第四缓存线属于该P个缓存线,确定该第四缓存线中的第三数据是否来自该非安全进程;该处理单元,还用于若存在该第四缓存线且该第四缓存线不属于该P个缓存线,或者该第三数据来自该非安全进程,读取该第三数据并发送给该处理核。
在第二方面的一种可能的实现方式中,该处理单元还用于:若不存在该第四缓存线、或者该第三数据来自该安全进程,根据该目标物理地址从内存中获取第四数据,并将该第四数据存储在该缓存中。
在第二方面的一种可能的实现方式中,该确定单元还用于:若该目标物理地址位于该安全进程对应的第一物理地址范围,确定该目标物理地址来自该安全进程;若该目标物理地址位于非安全进程对应的第二物理地址范围,确定该目标物理地址来自该非安全进程。
在本申请的另一方面,还提供一种芯片,该芯片包括至少一个处理核、以及与该至少一个处理核耦合的缓存器,该缓存器包括上述第二方面或者第二方面的任一种可能的实现方式所提供的缓存侧信道攻击防御装置。
在本申请的又一方面,提供一种电子设备,该电子设备包括处理器,该处理器包括至少一个处理核、以及与该至少一个处理核耦合的缓存器,该缓存器包括上述第二方面或者第二方面的任一种可能的实现方式所提供的缓存侧信道攻击防御装置。
在本申请的又一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的缓存侧信道攻击防御方法。
在本申请的又一方面,提供一种计算机程序产品,当该计算机程序产品在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的缓存侧信道攻击防御方法。
应当理解的是,上述提供的任一种缓存侧信道攻击防御装置、芯片、电子设备、计算机可读存储介质或者计算机程序产品均用于执行上文所提供的缓存侧信道攻击防御方法,因此,其所能达到的有益效果可参考上文所提供的对应方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种CPU的缓存的结构示意图;
图2为本申请实施例提供的一种缓存侧信道攻击的示意图;
图3为本申请实施例提供的一种处理器的结构示意图;
图4为一种基于缓存的随机模式的防御缓存侧信道攻击的示意图;
图5为一种通过缓存索引随机化来防御缓存侧信道攻击的示意图;
图6为一种防御通过清除攻击来实现缓存侧信道攻击的示意图;
图7为本申请实施例提供的一种缓存侧信道攻击防御方法的流程图;
图8为本申请实施例提供的一种P个缓存线的示意图;
图9为本申请实施例提供的一种查询多路集关联缓存的示意图;
图10为本申请实施例提供的另一种P个缓存线的示意图;
图11为本申请实施例提供的一种查询缓存的流程示意图;
图12为本申请实施例提供的一种缓存线的结构示意图;
图13为本申请实施例提供的另一种缓存侧信道攻击防御方法的流程图;
图14为本申请实施例提供的另一种查询缓存的流程示意图;
图15为本申请实施例提供的一种处理器的结构示意图;
图16为本申请实施例提供的一种缓存侧信道攻击防御装置的结构示意图;
图17为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c或a-b-c,其中a、b和c可以是单个,也可以是多个。另外,在本申请的实施例中,“第一”、“第二”等字样并不对数量和次序进行限定。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在介绍本申请实施例之前,首先对本申请涉及的技术名词和背景技术进行介绍说明。
缓存(cache):缓存是一种读写速率比内存(main memory)更快的存储单元。缓存也可以称为高速缓存储存器。缓存通常可以包括两种缓存,即数据缓存和完整性树节点缓存。数据缓存通常可以包括一级缓存(L1 cache)、二级缓存(L2 cache)和三级缓存(L3cache)。
缓存线(cacheline):处理器对缓存的读写以一个缓存线为单位,缓存线大小通常为512比特(bits)。缓存线在cache中以缓存集(cache set)的形式进行组合,一个缓存集中可以包括多个缓存线。
N路集关联(n-way set associative):是处理器访问缓存的一种方式,具体访问时先通过地址计算对应缓存集索引,再在缓存集中对缓存线进行查询,N-way表示缓存集中包括n个缓存线。全关联(fully associative):是处理器访问缓存的另一种方式,具体访问时能够对缓存中的所有缓存线进行查询。
侧信道攻击:是利用密码算法执行过程中泄漏的与内部运算紧密相关的声光信息、功耗、电磁辐射以及运行时间等多种物理状态信息进行攻击。缓存侧信道攻击是一种新型的侧信道攻击技术,是指基于缓存的侧行信道攻击,缓存侧信道攻击可以跨平台、跨处理器、突破安全边界对目标设备进行攻击。
可信执行环境:是一个处理器中的安全区域,以确保在可信执行环境中的敏感数据的存储、处理和保护。
目前,计算架构安全是未来可信计算的基石,为云计算、边缘计算和人工智能(artificial intelligence,AI)为代表的大数据计算中的数据安全提供重要的保障。而中央处理器(central processing unit,CPU)作为计算架构安全中的可信根,若CPU安全性受到质疑,便会使得数据的机密性或完整性遭到破坏。
缓存(cache)作为CPU中的关键部件,其访问时间接近CPU处理频率,利用CPU对数据访问的时间局部性与空间局部性将部分内存中数据存储在CPU的缓存中,使得CPU对数据的重复访问时间大大降低,从而提升整体访问效率。图1为一种CPU的缓存的结构示意图,该缓存包括一级缓存(L1 cache)、二级缓存(L2 cache)和三级缓存(L3 cache),通常L1缓存与L2缓存是由CPU核(core)独享,L3缓存由多个CPU核共享,图1中以四个核为例进行说明且分别表示为核1至核4。具体的,当CPU尝试读取内存(main memory)中数据时,CPU会查询L1缓存以确定该数据是否在L1缓存中;如果在L1缓存中,则直接从L1缓存中读取该数据,如果不在L1缓存中,则查询L2缓存,以此类推;如果不在L3缓存,CPU会向内存(即内部存储器)发出读写请求,内存向CPU返回所请求的数据。同时,内存返回的数据会根据一定的规则存储在相应的L1缓存、L2缓存或L3缓存中,方便响应未来的CPU内存读写请求。由此可见,CPU对于缓存数据(cached data)与未缓存数据(uncached data)的访问时间之间存在差异,而数据是否存在于缓存中将影响CPU计算数据时的执行时间,即CPU对数据的运算时间与数据产生相关性,这种相关性使得基于时间信息的侧信道攻击成为了可能。
侧信道攻击是利用密码算法执行过程中泄漏的与内部运算紧密相关的声光信息、功耗、电磁辐射以及运行时间等多种物理状态信息进行攻击。随着以ARM TEE与Intel SGX为代表的可信执行环境的提出,在新的安全环境下,侧信道攻击的严重性更加的凸显出来。可信执行环境试图将安全进程与非安全进程隔离开来,从而使得潜在的恶意应用难以窃取安全进程中的敏感数据或者非安全进程中的漏洞无法被攻击者利用来获取高安全进程的机密信息。然而缓存侧信道攻击使得恶意应用能绕过隔离机制窃取敏感信息,打破可信执行环境的安全假设,破坏业务的机密性。
如图2所示,缓存侧信道攻击通常包括四个步骤:第一步、攻击者获得内存中的物理地址与缓存中的缓存集(cache set)索引之间的映射关系,这样攻击者也会获得受害者(比如,安全进程)对应的物理地址空间所映射的缓存集;第二步、攻击者通过该映射关系对缓存集进行操作,比如,攻击者可以对受害者所使用缓存集进行操作;第三步、攻击者触发敏感数据相关的计算操作,后续如果受害者对攻击者在第二步操作的缓存集进行操作会使得攻击者对应的访问时间变长;第四步、攻击者通过访问时间获得第二步中操作过的缓存集的状态,以通过搜集到的状态信息反推出机密信息。
在防御缓存侧信道攻击时,可以通过作用于上述四个步骤的一个或者多个步骤来实现,比如,通过单独作用于上述四个步骤中的第一步、第二步或者第四步,且具体通过加入噪音或隔离的方式来实现缓存侧信道攻击防御。不同的防御方法均可以采用非安全环境与安全环境隔离开的处理器结构,该非安全环境也可以称为非可信执行环境(untrustedexecution environment)、非可信域(untrusted domain)或者普通域,该安全环境也可以称为可信执行环境(trusted execution environment)或者可信域(trusted domain)。
示例性的,图3为本申请实施例提供的一种处理器的结构示意图,图3中的(a)为该处理器的硬件结构示意图,图3中的(b)为该处理器的软件结构示意图。其中,该处理器可以为CPU、图像处理器(graphics processing unit,GPU)或者人工智能(artificialintelligent,AI)的张量处理器(tensor processing unit,TPU)等,本申请实施例对此不作具体限制。
具体的,如图3中的(a)所示,该处理器可以包括处理核101、缓存102、缓存控制器(cache controller)103和内存104,缓存102位于处理核101与内存104之间,缓存控制器103用于计算缓存102中缓存集的缓存索引,查询缓存102中是否存在请求的数据、以及替换或更新缓存102中存储的数据等。其中,处理核101对于缓存102的访问速度远远高于处理核101对于内存104的访问速度,缓存102利用数据使用过程中的空间局部性,对数据(比如,64字节)进行存储,极大地减小了处理核101对内存104的访问频率,提升系统整体性能。
如图3中的(b)所示,该处理器上运行有位于非安全环境110的非安全进程111、以及位于安全环境120的安全进程121,该非安全环境110中还可以包括用于运行非安全进程111的非安全操作系统(operating system,OS)112,该安全环境120中还可以包括用于运行安全进程121的安全内核122,该非安全环境110与安全环境120可以通过监控器130来进行切换。
下面基于图3所示的处理器的结构,介绍几种不同的缓存侧信道攻击防御方法,具体如下所述。
第一种方法:当安全进程的敏感数据将要被执行计算或者敏感代码将要被执行时,通过预加载的方式(preload)将该敏感数据或者该敏感代码载入到缓存中。具体实现时通过在图3所示的安全环境中设置一个记录板,用于记录缓存中的敏感数据的保存状态,若敏感数据已保存于缓存中则预加载时无需从内存中读取缓存,若敏感数据未保存于缓存中则通过预加载的方式载入缓存中。该方法的安全性在于阻断第二步中攻击者对安全进程使用的缓存线的占用,这样攻击者难以通过缓存操作预先抢占安全进程使用的缓存线。但是,该方法需要技术人员对敏感数据和敏感代码进行识别、修改和标注,工作量大且不支持二进制代码,同时将敏感数据和敏感代码预加载到缓存后,会导致被占用的缓存空间无法被非安全进程有效利用,从而降低了缓存的利用率。
第二种方法,如图4所示,该方法包括以下步骤:S201、利用软件指令将缓存设置为随机模式(randomized mode),通过随机方式选取一部分缓存空间用于存储敏感数据;S202、在进入随机模式时将选取的缓存空间设置为无效;S203、在退出随机模式时也将选取的缓存空间设置为无效。这样在进入随机模式时通过将选取的缓存空间设置为无效能够保证安全进程的敏感数据不会被攻击者预先设置的数据所影响,同时在退出随机模式时将选取的缓存空间设置为无效可以保证该敏感数据不会遗留在缓存空间中。但是,该方法中该缓存需要在随机模式与标准模式之间进行切换,同时需要对选取的缓存空间进行无效操作,从而导致性能开销较大。
第三种方法:如图5中的(a)所示,对于进入最后一级缓存(last level cache,LLC)的所有数据访问请求中的每个数据访问请求,将该请求中的物理地址所对应的缓存索引进行随机化加密处理,并将处理后得到的数值作为对应的新的缓存索引进行存储,即通过对处理器的所有数据访问请求中的物理地址进行随机化加密处理,并将处理后得到的数值作为新的缓存索引,以阻断攻击者获得内存的物理地址与缓存中的缓存集索引之间的映射关系。当需要对缓存线中的数据进行驱逐时,将该数值进行解密,获取缓存线的物理地址再进行写回。但是,该方法中需要对处理器的所有数据访问请求中的物理地址都进行随机化加密处理,即对于安全进程和非安全进程对应的数据访问请求都需要进行处理,从而会降低数据访问请求的处理效率,同时增加性能开销。
进一步的,若一个物理地址在缓存中的缓存索引不变,攻击者仍然有可能通过多次尝试确定该物理地址的实际的缓存索引,为防止此类攻击,还可以在对缓存索引随机化的基础上,周期性的变化单一物理地址的缓存索引,比如,周期性的变更加密密钥,在更新密钥是同时对缓存中的数据也进行更新。示例性的,如图5中的(b)所示,在t0至t1时刻,LLC中缓存集索引可以为ID0,对应的加密密钥可以为K0;在t1至t2时刻,LLC中缓存集索引可以为ID1,对应的加密密钥可以为K1。此外,对于多路缓存(N-way cache),还可以将缓存分成多部分,每一部分使用独立的加密密钥,即同一物理地址在不同部分的缓存集索引并不相同。如图5中的(c)所示,对于16-way(表示为W0至W15)缓存,可以将W0至W15分为两部分,即W0至W7、以及W8至W15,对于物理地址Add-X,Add-X在W0至W7时的缓存索引对应的加密密钥可以为L-K,Add-X在W8至W15时的缓存索引对应的加密密钥可以为R-K。在具体访问时,对于进入缓存的访问请求,各部分使用各自的密钥进行查询,若命中则直接返回数据,若缺失则需要随机在多个部分中选取一个部分用来存储从内存中读取的数据。
第四种方法:主要用于防御侧信道攻击中的清除攻击(flush attack),清除攻击的实施有两个条件,一是有一段由攻击者(比如,恶意应用)与安全进程所共享的共享内存,二是共享内存的使用直接或间接与机密数据相关。清除攻击是指攻击者利用清除(flush)指令将攻击者与安全进程的共享内存对应的缓存进行驱逐,再触发安全进程的数据计算或代码执行,最后通过共享内存观察安全进程的执行情况。具体防御清除攻击方法是通过在每一条缓存线中增加一个僵尸位(zombie bit,Z),具体执行清除指令时配合缓存线中原有的有效位(valid bit,V)来表示该缓存线是否被符合清除攻击的访问模式访问。示例性的,如图6所示,假设t1时刻安全进程访问共享缓存中的某一缓存线时,将该缓存线中的有效位置为1(即V=1)、僵尸位置为0(即T=0),在t2时刻当攻击者通过flush指令清除该缓存线时将该有效位置为0(即V=0)、僵尸位置为1(即T=1),在t3时刻当安全进程访问该缓存线时将该有效位置为0(即V=1)且此时T=1,在t4时刻当攻击者访问该缓存线时确定该缓存线的访问模式符合清除攻击的访问模式,从而延迟响应攻击者的访问,以阻断攻击者通过度量访问时间来获取机密信息的过程。图6中的T-X表示缓存线中的标签位(tag,T),D-X表示缓存线中的数据位(data,D)。
图7为本申请实施例提供的一种缓存侧信道攻击防御方法的流程图,该方法可应用于上述图3所示的处理器中,具体可以由处理器中的缓存控制器来执行,该方法包括以下几个步骤。
S301:接收来自处理核的数据访问请求,该数据访问请求包括目标物理地址。
其中,该处理器中的缓存可以包括M行N路缓存线,即该缓存也可以称为N路(N-way)缓存,该缓存包括M个缓存集,每个缓存集中包括N个缓存线,该M行N路缓存线用于存储非安全进程的数据,该M行N路缓存线中的P个缓存线用于存储非安全进程的数据,M、N和P为正整数。
可选的,该P个缓存线位于该N路缓存线中的i路缓存线中,i为大于或等于1且小于或等于P的整数。在一种可能的实施例中,该P个缓存线可以占用该i路缓存线中的所有缓存线。在另一种可能的实现方式中,该P个缓存线可以占用该i路缓存线中的部分缓存线,比如,该P个缓存线可以占用该N路缓存线且分散位于该N路缓存线中。
示例性的,假设该M行N路缓存线为8行4路缓存线,该8行分别表示为S0至S7,该4路分别表示为W0至W3。若该P个缓存线占用该i路缓存线中的所有缓存线,如图8中的(a)所示,该P个缓存线为8个缓存线且位于最后一路缓存线W3中,即该8个缓存线包括S0至S7中的W3。若该P个缓存线占用该N路缓存线且分散位于该N路缓存线中,如图8中的(b)所示,该P个缓存线为8个缓存线,且第0-第1个缓存线分别位于S0和S1中的W0、第2-第3个缓存线分别位于S2和S3中的W1、第4-第5个缓存线分别位于S4和S5中的W2、第6-第7个缓存线分别位于S6和S7中的W3。
具体的,该数据访问请求用于请求访问内存中的数据,该数据在内存中的物理地址为该数据访问请求包括的目标物理地址。该数据访问请求可以为读请求或者写请求,该读请求可用于读取数据,该写请求可用于写数据。当处理器中的处理核需要访问内存中的数据时,该处理核可以发送数据访问请求,并将该数据的目标物理地址携带在该数据访问请求中,从而使得该处理器中的缓存控制器可以接收到该数据访问请求。
S302:若该目标物理地址来自安全进程,根据P个缓存线对应的密钥确定该P个缓存线对应的缓存索引。
其中,该P个缓存线位于该N路缓存线中的i路缓存线中,该P个缓存线对应的密钥具体可以包括i组密钥。该i组密钥与该i路缓存线一一对应,也即是,该i路缓存线中的每路缓存线对应该i组密钥中的一组密钥。该i组密钥中的每组密钥可以包括一个旧密钥和一个新密钥,该旧密钥可以是更新前的密钥,该新密钥可以是更新后的密钥。
另外,该P个缓存线对应的缓存索引可以包括i个缓存索引,该i个缓存索引可以与该i组密钥一一对应,也即是,该i组密钥中的每组密钥可用于确定该i个缓存索引中的一个缓存索引。该缓存索引也可以称为缓存集索引,该P个缓存线对应的缓存索引也可以称为该P个缓存线所在的缓存集的索引。
可选的,当该目标物理地址来自安全进程时,对于该i组密钥中的每组密钥,该缓存控制器均可以按照下述方法确定该组密钥对应的缓存索引,下面以该i组密钥中的第一组密钥为例进行说明,第一组密钥为该i组密钥的任意一种密钥。
具体的,当该目标物理地址来自安全进程时,对于该i组密钥中的第一组密钥,该缓存控制器可以分别解密第一组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引;根据索引指示从该旧缓存索引和该新缓存索引中确定第一缓存索引,第一缓存索引为该P个缓存线位于该i路缓存线中的第一路缓存线中的缓存线对应的缓存索引,第一路缓存线与第一组密钥对应。进一步的,根据索引指示从该旧缓存索引和该新缓存索引中确定第一缓存索引具体可以包括:若该旧缓存索引大于或等于该索引指示,确定该旧缓存索引为该第一缓存索引;若该旧缓存索引小于该索引指示,确定该新缓存索引为第一缓存索引。
需要说明的是,该i组密钥和该索引指示可以分别存储在不同的寄存器中,当该缓存控制器需要使用时可以从对应的寄存器中的获取。
进一步的,可选的,该缓存控制器在接收到该数据访问请求之后,还可以先判断该数据访问请求包括的目标物理地址是否来自安全进程,并在确定该目标物理地址来自安全进程时执行上述步骤S302。也即是,在S301之后、以及S302之前,该方法还可以包括S300:判断该目标物理地址是否来自安全进程。
其中,该处理器上运行的安全进程和非安全进程可以对应不同的物理地址范围。可选的,预先对内存对应的物理地址范围进行划分,比如,将内存对应的物理地址范围划分为安全进程使用的第一物理地址范围、以及非安全进程使用的第二物理地址范围,也即是,安全进程对应第一物理地址范围,非安全进程对应第二物理地址范围。
具体的,该缓存控制器在接收到该数据访问请求之后,可以先判断该数据访问请求包括的目标物理地址是否来自安全进程。若该安全进程对应第一物理地址范围,该非安全进程对应第二物理地址范围,则当该目标物理地址位于该安全进程对应的第一物理地址范围时,确定该目标物理地址来自该安全进程,当该目标物理地址位于该非安全进程对应的第二物理地址范围,确定该目标物理地址来自该非安全进程。
S303:根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求。
其中,该缓存中用于存储数据的缓存线可以包括有效(valid,V)位、标签(tag,T)字段和数据(data)字段。该有效位用于表示该缓存线中的数据是否有效。该标签字段用于承载标签信息,该标签信息可用于判断该缓存线中的数据是否为处理核将要读取的物理地址中对应的数据。该数据字段用于存储从内存中获取的数据。
另外,该目标物理地址可以包括标签(tag,T)字段和缓存索引段,该标签字段用于承载标签信息,该缓存索引段用于标识该缓存中所需要检索的缓存线的行号(也可以称为缓存集索引)。可选的,该目标物理地址还可以包括其他字段,比如,该其他字段可以包括块偏置(block offset)字段,本申请实施例对此不作具体限制。
此外,对于多路集关联缓存,该缓存控制器通常可以通过以下方式查询该缓存,以处理数据访问请求。示例性的,如图9所示,以2-way associative cache为例,具体查询过程可以包括:在根据目标物理地址中的缓存索引段(即图9中的S2)选定缓存线所处的行号之后,取出该行号对应的两路缓存线(分别表示为W0和W1)中的标签信息(即取出W0中的T0、W1中的T1);再利用比较器(11,12)比较读出的标签信息(即T0和T1)与目标物理地址中的标签信息(T2)是否相同;通过与门(21,22)将比较结果与两路缓存线的有效位(即W0中的V0、W1中的V1)进行计算;最后,通过或门31将两个与门的输出结果进行计算,最终得到的计算结果表示目标物理地址对应的数据是否存在缓存中。若结果为真(1),则数据存在于缓存中,认为命中(hit)。若结果为假(0),则数据不存在于缓存中,认为缺失(miss)。若命中,则与门(21,22)的输出结果通过编码器41转换为缓存线所在路的编号,将该编号输入多路复用器51以选择对应路缓存线中的数据返回给处理核。若缺失,则该缓存控制器向内存发出读请求,内存返回数据后,该缓存控制器通过一定规则将该数据存储在缓存中。
在本申请实施例中,该缓存控制器在根据该P个缓存线对应的缓存索引和该目标物理地址处理该数据访问请求时,可以将该P个缓存线对应的缓存索引所指示的缓存线作为i路隔离(isolated way)缓存线,按照上述图9类似的方式,根据该目标物理地址查询该i路隔离缓存线,以确定该目标物理地址对应的数据是否在该i路隔离缓存线中,若在该i路隔离缓存线中(即处理核所访问的数据在缓存中),则可以读取该数据并返回给处理核,若未在该i路隔离缓存线中(处理核所访问的数据不在缓存中),则可以从内存中读取对应的数据并写入缓存中。
其中,该i路隔离缓存线可以是事先设置或划分的,也即是,可以事先将该P个缓存线设置或划分为该i路隔离缓存线,该i路隔离缓存线可以包括一路或者多路隔离缓存线,每路隔离缓存线可以包括N个缓存线。当该P个缓存线占用该N个缓存线中的i路缓存线中的所有缓存线时,该i路缓存线即为该i路隔离缓存线,该缓存控制器可以逐缓存线查询每一路隔离缓存线中的每个缓存线。当该P个缓存线占用该N路缓存线且分散位于该N路缓存线中时,该i路隔离缓存线包括不同路缓存线中的部分缓存线,该缓存控制器可以同时查询同一路隔离缓存线中的多个缓存线。
示例性的,假设该缓存为16路缓存(16-way cache)且包括8个缓存集,该P个缓存线包括32个缓存线且被划分为四路隔离缓存线,16-way分别表示为W0至W15,8个缓存集分别表示为S0至S7。如图10中的(a)所示,若该P个缓存线占用16路中的W3、W7、W11和W15,则该四路隔离缓存线即为W3、W7、W11和W15。如图10中的(b)所示,若该P个缓存线占用16路且分散位于该16路缓存线中,则该四路隔离缓存线中的第一路隔离缓存线可以包括S0和S1中的W0、S2和S3中的W1、S4和S5中的W2、S6和S7中的W3;第二路隔离缓存线可以包括S0和S1中的W4、S2和S3中的W5、S4和S5中的W6、S6和S7中的W7;第三路隔离缓存线可以包括S0和S1中的W8、S2和S3中的W9、S4和S5中的W10、S6和S7中的W11;第四路隔离缓存线可以包括S0和S1中的W12、S2和S3中的W13、S4和S5中的W14、S6和S7中的W15。
进一步的,如图11所示,该缓存控制器通过上述方式,根据该P个缓存线对应的缓存索引和该目标物理地址,处理该数据访问请求的过程可以包括:S01.根据该P个缓存线对应的缓存索引和该目标物理地址确定是否存在第二缓存线,第二缓存线中的标签信息与该目标物理地址中的标签信息一致;S02A.若不存在第二缓存线,根据该目标物理地址从内存中获取第二数据,并将第二数据存储在该P个缓存线中的第三缓存线,第三缓存线是该P个缓存线中的任意一个缓存线;S02B.若存在第二缓存线,确定第二缓存线中的第一数据是否来自该安全进程;S03A.若第一数据来自该安全进程,则读取第一数据并发送给该处理核;S03B.若第一数据来自该非安全进程,根据该目标物理地址从内存中获取第二数据,并将第二数据存储在该P个缓存线中的第三缓存线,第三缓存线是该P个缓存线中的任意一个缓存线。
其中,该缓存控制器确定第二缓存线中的第一数据是否来自该安全进程可以包括以下两种方式。第一种方式、解密第二缓存线所在路缓存线对应的组密钥,并根据上述索引指示从解密得到的新缓存索引和旧缓存索引中确定第二缓存线的缓存索引;根据第二缓存线的缓存索引和第二缓存线中的标签信息确定第一数据对应的物理地址;若该物理地址属于上述第一物理地址范围,则确定第一数据来自该安全进程,若该物理地址属于上述第二物理地址范围,则确定第一数据来自该非安全进程。
第二种方式,第二缓存线除了包括上述有效(V)位、标签(T)字段和数据字段,还包括保护域指示信息。具体的,若该保护域指示信息为第一信息,确定第一数据来自该安全进程;若该保护域指示信息为第二信息,确定第一数据来自该非安全进程。示例性的,如图12所示,第二种方式中为该缓存中每个缓存线设置一个保护域字段(P),该保护域字段中存储的指示信息用于指示对应缓存线中存储的数据的保护域。可选的,该保护域字段可以占用一个或者多个比特(bits)。
示例性的,该保护域字段为1bit。若该保护域字段中的值为0,可以表示缓存线中的数据来自该非安全进程;若该保护域字段中的值为1,可以表示缓存线中的数据来自该安全进程。或者,该保护域字段为3bits,若该保护域字段中的值为0,可以表示缓存线中的数据来自该非安全进程;若该保护域字段中的值为1至7,可以表示缓存线中的数据来自不同安全域。也即是,安全进程可以进一步被划分为多个不同等级的安全域,每个安全域可以有各自使用的缓存区域,从而进一步提高不同安全域之间的隔离度和安全性。在本申请实施例中,该缓存控制器可以在每次向缓存线中载入数据时,更新或设置该缓存线的保护域字段的具体数值。
另外,该缓存控制器可以采用随机策略确定第三缓存线,即确定用于存储第二数据的第三缓存线。具体的,该缓存控制器可以通过内置的随机数生成器产生一个随机数R,根据R的具体数值选择一路缓存线,确定该路缓存线所在的编号之后,在通过该路缓存线所对应的密钥组和索引指示确定所要移除的缓存线的缓存索引,即确定第三缓存线的缓存索引,之后可以驱逐出第三缓存线的原有的数据,并将第二数据存储在第三缓存线中。
进一步的,该方法还可以包括:当访问次数达到预设访问次数时,更新该P个缓存线对应的密钥。
其中,当该处理器包括一个处理核时,该访问次数可以为该处理核的访问次数;当该处理器包括多个处理核时,该访问次数可以为该多个处理核的访问次数之和。该预设访问次数可以是事先设置的,具体可以根据实际需求进行设置,本申请实施例对此不作具体限制。
另外,当该i组密钥包括多组密钥时,该缓存控制器可以在该访问次数达到预设访问次数的过程中,通过多次更新完成该多组密钥的更新,比如,每次可以只更新该i组密钥中的一组密钥,以避免该缓存控制器同时更新该多组密钥而造成性能开销时延较大的问题。
对于该i组密钥中的任意一组密钥,该缓存控制器均可以按照下述方法对该组密钥进行更新,下面以该i组密钥中的第二组密钥为例进行说明,第二组密钥为该i组密钥中的任意一组密钥。具体的,该缓存控制器更新第二组密钥的过程可以包括:分别解密第二组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引;生成第一新密钥,将该新缓存索引所指示的缓存线中的数据存储在第一新缓存索引所指示的缓存线中,第一新缓存索引是第一新密钥解密得到的;将该旧缓存索引所指示的缓存线中的数据存储在该新缓存索引所指示的缓存线中,并确定该旧密钥等于该新密钥;将该索引指示加一,已完成该索引指示的更新。
进一步的,如图13所示,在该缓存控制器通过S300判断该目标物理地址是否来自安全进程之后,该方法还可以包括S304。
S304:若该目标物理地址来自该非安全进程,根据该目标物理地址处理该数据访问请求。
具体的,若该目标物理地址来自该非安全进程,比如,该目标物理地址位于该非安全进程对应的第二物理地址范围,则该缓存控制器可以根据该目标物理地址查询该缓存包括的M行N路缓存线,以确定该目标物理地址对应的数据是否在该M行N路缓存线中;若查询到匹配的第四缓存线(即处理核所访问的数据在缓存中),且第四缓存线不属于该P个缓存线或者第四缓存线中的数据来自非安全进程,则可以读取该数据并返回给处理核;若未查询到匹配的缓存线(即处理核所访问的数据不在缓存中),或者查询到上述第四缓存线属于该P个缓存线且第四缓存线中的数据来自安全进程,则可以从内存中读取对应的数据并写入缓存中。
在一种可能的实施例中,如图14所示,该缓存控制器根据该目标物理地址处理该数据访问请求的过程可以包括:S11.根据该目标物理地址确定是否存在第四缓存线,第四缓存线中的标签信息与该目标物理地址中的标签信息一致;S12A.若不存在第四缓存线(即否),根据该目标物理地址从内存中获取相应数据,并将该数据存储在该缓存中;S12B.若存在第四缓存线(即是),确定第四缓存线是否属于该P个缓存线;S13A.若第四缓存线不属于该P个缓存线(即否),读取第四缓存线中的数据并发送给该处理核;S13B.若第四缓存线属于该P个缓存线(即是),确定第四缓存线中的第三数据是否来自该非安全进程;S14A.若第三数据来自该非安全进程(即是),读取第一数据并发送给该处理核;S14B.若第三数据来自该安全进程(即否),根据该目标物理地址从内存中获取相应数据,并将该数据存储在该缓存中,比如,采用最久未使用(least recently used,LRU)算法该数据将要存储的缓存线,并对该缓存线中的数据进行替换。
需要说明的是,该缓存控制器根据该目标物理地址查询该M行N路缓存线时,可以按照上述图9类似的方式进行查询。此外,该缓存控制器在上述S13B中,确定第四缓存线中的第三数据是否来自该非安全进程的具体过程与上述图11中的S02B中确定第二缓存线中的第一数据是否来自该安全进程的过程类似,具体可以参见上文中的相关描述,本申请实施例在此不再赘述。
为便于理解,下面以图15所示的处理器的结构为例,对本申请实施例提供的方法进行举例说明。如图15所示,该处理器可以包括四个处理核(主频可以为2GHz)且分别表示为核1至核4,该缓存可以为三级缓存,L1缓存可以为4-way缓存且包括32KB的L1I和32KB的L1D,L2缓存可以为8-way缓存且包括256KB,L3缓存可以为16-way缓存且包括8MB。
在本申请实施例中,如图10中的(b)所示,可以将L3缓存中的16路(16-way)缓存线在逻辑上划分出4路(4isolated way)隔离缓存线,该4路隔离缓存线中的每一路隔离缓存线可以平均分布在4路缓存线中。在该处理器启动时,缓存控制器可以将索引指示设置为0,同时维护32个专用寄存器,用来存储该16路缓存线中每一路缓存线所对应的组密钥。其中,该缓存控制器可以设置预设访问次数为1600,即L3缓存被访问1600次后更新一次密钥,比如,每访问100次可以更新一组密钥,访问1600次后每一组密钥至少更新一次。
具体的,当该缓存控制器接收到数据访问请求时,该缓存控制器可以按照上述图7、图11、图12或者图13所描述的方法处理该数据访问请求。其中,在上述图11中,对于步骤S02A和S03B,该缓存控制器可以采用随机策略确定第三缓存线,比如,该缓存控制器可以通过内置的随机数生成器产生一个随机数R,根据R对16取余(R mod 16)的结果选择一路缓存线,确定该路缓存线所在的编号之后,在通过该路缓存线所对应的密钥组和索引指示确定所要移除的缓存线的缓存索引,即确定了第三缓存线的缓存索引,之后可以驱逐出第三缓存线的原有的数据,并将第二数据存储在第三缓存线中。另外,在上述图14中,对于步骤S12A和S14B,该缓存控制器可以采用LRU算法确定从内存中读取的数据将要存储的缓存线,并对该缓存线中的数据进行替换。
本申请实施例在CPU2006测试集上进行测试,缓存配置如图15所示,通过修改GEM5模拟器进行仿真模拟。在测试过程中,从CPU2006测试集中选取四个测试程序将仿真系统的每时钟指令数(instruction per clock,IPC)作为技术评测指标;测试基线选定为将4个测试程序都作为非安全程序时的整体IPC;测试本申请性能损失时将一个测试程序选定为安全程序,另外三个作为非安全程序时的整体IPC。下述表1列举了不同测试下的性能开销(overhead)。
表1
其中,第一列中示出了从CPU2006测试集中选取的4个测试程序,第二列示出了4个测试程序中选取的作为安全进程的测试,第三列表示的是第二列中的程序作为安全进程时相较于测试基线的IPC性能开销。当该性能开销为正时,则表示性能下降;当该性能开销为负时,则表示性能上升。性能开销中,若具体数值越高则表示性能下降越大。最后一行示出了IPC性能开销的计算平均值为0.394%。
在本申请实施例中,该缓存包括的M行N路缓存线均可用于存储非安全进程的数据,该M行N路缓存线中的P个缓存线还用于存储安全进程的数据。当接收到来自处理核的数据访问请求时,若该请求中的目标物理地址来自该安全进程,则使用P个缓存线对应的密钥确定该P个缓存线对应的缓存索引,从而根据该P个缓存线对应的缓存索引和该目标物理地址处理该数据访问请求;若该目标物理地址来自该非安全进程,则可以直接根据该目标物理地址处理该数据访问请求。也即是,本申请中的安全进程使用该缓存中的P个缓存线,且该P个缓存线对应的缓存索引是加密处理的,非安全进程可使用该缓存中的全部缓存空间,该非安全进程所使用的M行N路缓存线的缓存索引无需加密,从而与现有技术相比,可以在保证缓存利用率和降低缓存性能开销的同时,防御攻击者基于缓存侧行信道攻击获取安全进程的机密信息,进而保证了安全进程的数据的安全性。
上述主要从处理器中缓存控制器的角度对本申请实施例提供的方案进行了介绍。可以理解的是,该缓存控制器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的网元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对缓存控制器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图16示出了上述实施例中所涉及的缓存侧信道攻击防御装置的一种可能的结构示意图,该装置可以为缓存控制器,该装置包括:接收单元401、确定单元402和处理单元403。其中,接收单元401用于支持该装置执行上述方法实施例中的S301;确定单元402用于支持该装置执行上述方法实施例中的S300或S302中的一个或者多个;处理单元403用于支持该装置执行上述方法实施例中的S303或S304中的一个或者多个。在一种可能的实施例中,确定单元402还用于支持该装置执行上述方法实施例中的S01或S02B中的一个或者多个;处理单元403还用于支持该装置执行上述方法实施例中的S03A或S03B中的一个或者多个。在另一种可能的实施例中,确定单元402还用于支持该装置执行上述方法实施例中的S11、S12B或S13B中的一个或者多个;处理单元403还用于支持该装置执行上述方法实施例中的S12A、S13A、S14A、S14B中的一个或者多个。进一步的,该装置还可以包括更新单元404;更新单元404用于支持该装置执行上述方法实施例中的更新上述P个缓存线对应的密钥的步骤。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在本申请的另一实施例中,还提供一种芯片,该芯片可以为处理器,该处理器的结构可以如图3中的(a)所示,即该处理器可以包括处理核101、缓存102、缓存控制器103和内存104,缓存102可以包括M行N路缓存线,该M行N路缓存线用于存储非安全进程的数据,该M行N路缓存线中的P个缓存线用于存储非安全进程的数据,M、N和P为正整数。在本申请实施例中,处理核101可用于发送包括目标物理地址的数据访问请求;缓存控制器103用于执行上文所所提供的缓存侧信道攻击防御方法相关的实施例中的步骤。
在本申请的另一实施例中,还提供一种电子设备。如图17所示,该电子设备可以包括处理器502、存储器501、通信接口503和总线504,处理器502、存储器501和通信接口503通过总线504耦合。处理器502用于对该电子设备的动作进行控制管理,例如,处理器502为上文所提供的处理器,该处理器中的缓存控制器可用于支持该装置执行上述方法实施例中的S301至S304、S01至S03B、以及S11至S14B中的一个或者多个步骤,和/或用于本文所描述的技术的其他过程。此外,通信接口503可用于支持该电子设备进行通信,比如,支持该电子设备与其他电子设备进行通信;存储器501可用于存储该电子设备的程序代码和数据。
其中,处理器502可以是中央处理器单元,通用处理器,基带处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件,晶体管逻辑器件,硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等。总线504可以是(peripheral componentinterconnect,PCI)总线或(extended industry standard architecture,EISA)总线等。总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图17中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请的又一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在设备上运行时,使得该设备执行上述方法实施例所提供的缓存侧信道攻击防御方法。
在本申请的又一方面,提供一种计算机程序产品,当该计算机程序产品在设备上运行时,使得该设备执行上述方法实施例所提供的缓存侧信道攻击防御方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种缓存侧信道攻击防御方法,其特征在于,所述缓存包括P个缓存线,所述P为正整数,所述方法包括:
接收来自处理核的数据访问请求,所述数据访问请求包括目标物理地址;
若所述目标物理地址来自安全进程,根据所述P个缓存线对应的密钥确定所述P个缓存线对应的缓存索引;
根据所述P个缓存线对应的缓存索引和所述目标物理地址,处理所述数据访问请求。
2.根据权利要求1所述的方法,其特征在于,所述P个缓存线位于i路缓存线中,所述密钥包括i组密钥且与所述i路缓存线一一对应,所述i组密钥中的每组密钥包括旧密钥和新密钥,所述i为大于或等于1且小于或等于P的整数,所述根据所述P个缓存线对应的密钥确定所述P个缓存线对应的缓存索引,包括:
对于所述i组密钥中的第一组密钥,分别解密所述第一组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,所述第一组密钥为所述i组密钥中的任意一组密钥;
根据索引指示从所述旧缓存索引和所述新缓存索引中确定第一缓存索引,所述第一缓存索引为所述P个缓存线中位于所述i路缓存线的第一路缓存线中的缓存线对应的缓存索引,所述第一路缓存线与所述第一组密钥对应。
3.根据权利要求2所述的方法,其特征在于,所述根据索引指示从所述旧缓存索引和所述新缓存索引中确定第一缓存索引,包括:
若所述旧缓存索引大于或等于所述索引指示,确定所述旧缓存索引为所述第一缓存索引;
若所述旧缓存索引小于所述索引指示,确定所述新缓存索引为所述第一缓存索引。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述P个缓存线分散位于所述缓存包括的多路缓存线中。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述P个缓存线对应的缓存索引和所述目标物理地址,处理所述数据访问请求,包括:
根据所述P个缓存线对应的缓存索引和所述目标物理地址确定是否存在第二缓存线,所述第二缓存线中的标签信息与所述目标物理地址中的标签信息一致;
若存在所述第二缓存线,确定所述第二缓存线中的第一数据是否来自所述安全进程;
若所述第一数据来自所述安全进程,读取所述第一数据并发送给所述处理核。
6.根据权利要求5所述的方法,其特征在于,所述根据所述P个缓存线对应的缓存索引和所述目标物理地址,处理所述数据访问请求,还包括:
若不存在所述第二缓存线、或者所述第一数据来自非安全进程,根据所述目标物理地址从内存中获取第二数据;
将所述第二数据存储在所述P个缓存线中的第三缓存线,所述第三缓存线是所述P个缓存线中的任意一个缓存线。
7.根据权利要求6所述的方法,其特征在于,所述第二缓存线还包括保护域指示信息,所述确定所述第二缓存线中的第一数据是否来自所述安全进程,包括:
若所述保护域指示信息为第一信息,确定所述第一数据来自所述安全进程;
若所述保护域指示信息为第二信息,确定所述第一数据来自所述非安全进程。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
当访问次数达到预设访问次数时,更新所述P个缓存线对应的密钥。
9.根据权利要求8所述的方法,其特征在于,所述密钥包括i组密钥,所述i为大于或等于1且小于或等于P的整数,所述更新所述P个缓存线对应的密钥,包括:
对于所述i组密钥中的第二组密钥,分别解密所述第二组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,所述第二组密钥为所述i组密钥中的任意一组密钥;
生成第一新密钥,将所述新缓存索引所指示的缓存线中的数据存储在所述第一新缓存索引所指示的缓存线中,所述第一新缓存索引是所述第一新密钥解密得到的;
将所述旧缓存索引所指示的缓存线中的数据存储在所述新缓存索引所指示的缓存线中,并确定所述旧密钥等于所述新密钥;
将索引指示加一,已完成所述索引指示的更新。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标物理地址来自非安全进程,根据所述目标物理地址确定所述缓存中是否存在第四缓存线,所述第四缓存线中的标签信息与所述目标物理地址中的标签信息一致;
若存在所述第四缓存线且所述第四缓存线属于所述P个缓存线,确定所述第四缓存线中的第三数据是否来自所述非安全进程;
若存在所述第四缓存线且所述第四缓存线不属于所述P个缓存线,或者所述第三数据来自所述非安全进程,读取所述第三数据并发送给所述处理核。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若不存在所述第四缓存线、或者所述第三数据来自所述安全进程,根据所述目标物理地址从内存中获取第四数据,并将所述第四数据存储在所述缓存中。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述接收来自处理核的数据访问请求之后,所述方法还包括:
若所述目标物理地址位于所述安全进程对应的第一物理地址范围,确定所述目标物理地址来自所述安全进程;
若所述目标物理地址位于非安全进程对应的第二物理地址范围,确定所述目标物理地址来自所述非安全进程。
13.一种缓存侧信道攻击防御装置,其特征在于,所述缓存包括P个缓存线,所述P为正整数,所述装置包括:
接收单元,用于接收来自处理核的数据访问请求,所述数据访问请求包括目标物理地址;
确定单元,用于若所述目标物理地址来自所述安全进程,根据所述P个缓存线对应的密钥确定所述P个缓存线对应的缓存索引;
处理单元,用于根据所述P个缓存线对应的缓存索引和所述目标物理地址,处理所述数据访问请求。
14.根据权利要求13所述的装置,其特征在于,所述P个缓存线位于i路缓存线中,所述密钥包括i组密钥且与所述i路缓存线一一对应,所述i组密钥中的每组密钥包括旧密钥和新密钥,所述i为大于或等于1且小于或等于P的整数,所述确定单元还用于:
对于所述i组密钥中的第一组密钥,分别解密所述第一组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,所述第一组密钥为所述i组密钥中的任意一组密钥;
根据索引指示从所述旧缓存索引和所述新缓存索引中确定第一缓存索引,所述第一缓存索引为所述P个缓存线位于所述i路缓存线中的第一路缓存线中的缓存线对应的缓存索引,所述第一路缓存线与所述第一组密钥对应。
15.根据权利要求14所述的装置,其特征在于,所述确定单元还用于:
若所述旧缓存索引大于或等于所述索引指示,确定所述旧缓存索引为所述第一缓存索引;
若所述旧缓存索引小于所述索引指示,确定所述新缓存索引为所述第一缓存索引。
16.根据权利要求13-15任一项所述的装置,其特征在于,所述P个缓存线分散位于所述缓存包括的多路缓存线中。
17.根据权利要求13-16任一项所述的装置,其特征在于:
所述确定单元,还用于根据所述P个缓存线对应的缓存索引和所述目标物理地址确定是否存在第二缓存线,所述第二缓存线中的标签信息与所述目标物理地址中的标签信息一致;
所述确定单元,还用于若存在所述第二缓存线,确定所述第二缓存线中的第一数据是否来自所述安全进程;
所述处理单元,还用于若所述第一数据来自所述安全进程,读取所述第一数据并发送给所述处理核。
18.根据权利要求17所述的装置,其特征在于,所述处理单元还用于:
若不存在所述第二缓存线、或者所述第一数据来自非安全进程,根据所述目标物理地址从内存中获取第二数据;
将所述第二数据存储在所述P个缓存线中的第三缓存线,所述第三缓存线是所述P个缓存线中的任意一个缓存线。
19.根据权利要求18所述的装置,其特征在于,所述第二缓存线还包括保护域指示信息,所述确定单元还用于:
若所述保护域指示信息为第一信息,确定所述第一数据来自所述安全进程;
若所述保护域指示信息为第二信息,确定所述第一数据来自所述非安全进程。
20.根据权利要求13-19任一项所述的装置,其特征在于,所述装置还包括:
更新单元,用于当访问次数达到预设访问次数时,更新所述P个缓存线对应的密钥。
21.根据权利要求20所述的装置,其特征在于,所述密钥包括i组密钥,所述i为大于或等于1且小于或等于P的整数,所述更新单元还用于:
对于所述i组密钥中的第二组密钥,分别解密所述第二组密钥中的旧密钥和新密钥,对应得到旧缓存索引和新缓存索引,所述第二组密钥为所述i组密钥中的任意一组密钥;
生成第一新密钥,将所述新缓存索引所指示的缓存线中的数据存储在所述第一新缓存索引所指示的缓存线中,所述第一新缓存索引是所述第一新密钥解密得到的;
将所述旧缓存索引所指示的缓存线中的数据存储在所述新缓存索引所指示的缓存线中,并确定所述旧密钥等于所述新密钥;
将所述索引指示加一,已完成所述索引指示的更新。
22.根据权利要求13所述的装置,其特征在于:
所述确定单元,还用于若所述目标物理地址来自非安全进程,根据所述目标物理地址确定所述缓存中是否存在第四缓存线,所述第四缓存线中的标签信息与所述目标物理地址中的标签信息一致;
所述确定单元,还用于若存在所述第四缓存线且所述第四缓存线属于所述P个缓存线,确定所述第四缓存线中的第三数据是否来自所述非安全进程;
所述处理单元,还用于若存在所述第四缓存线且所述第四缓存线不属于所述P个缓存线,或者所述第三数据来自所述非安全进程,读取所述第三数据并发送给所述处理核。
23.根据权利要求22所述的装置,其特征在于,所述处理单元还用于:
若不存在所述第四缓存线、或者所述第三数据来自所述安全进程,根据所述目标物理地址从内存中获取第四数据,并将所述第四数据存储在所述缓存中。
24.根据权利要求13-23任一项所述的装置,其特征在于,所述确定单元还用于:
若所述目标物理地址位于所述安全进程对应的第一物理地址范围,确定所述目标物理地址来自所述安全进程;
若所述目标物理地址位于非安全进程对应的第二物理地址范围,确定所述目标物理地址来自所述非安全进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649043.2A CN115470532A (zh) | 2021-06-10 | 2021-06-10 | 一种缓存侧信道攻击防御方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649043.2A CN115470532A (zh) | 2021-06-10 | 2021-06-10 | 一种缓存侧信道攻击防御方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115470532A true CN115470532A (zh) | 2022-12-13 |
Family
ID=84364369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110649043.2A Pending CN115470532A (zh) | 2021-06-10 | 2021-06-10 | 一种缓存侧信道攻击防御方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115470532A (zh) |
-
2021
- 2021-06-10 CN CN202110649043.2A patent/CN115470532A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11126714B2 (en) | Encoding of input to storage circuitry | |
Tan et al. | PhantomCache: Obfuscating Cache Conflicts with Localized Randomization. | |
Lipp et al. | {ARMageddon}: Cache attacks on mobile devices | |
US8341356B2 (en) | Protected cache architecture and secure programming paradigm to protect applications | |
US7549022B2 (en) | Avoiding cache line sharing in virtual machines | |
US8549325B2 (en) | Reducing information leakage between processes sharing a cache | |
Thoma et al. | {ClepsydraCache}--Preventing Cache Attacks with {Time-Based} Evictions | |
Yuan et al. | Adaptive security support for heterogeneous memory on gpus | |
Ramkrishnan et al. | First time miss: Low overhead mitigation for shared memory cache side channels | |
Jaamoum et al. | Scramble cache: An efficient cache architecture for randomized set permutation | |
Saileshwar et al. | Lookout for zombies: Mitigating flush+ reload attack on shared caches by monitoring invalidated lines | |
Bao et al. | Reducing timing side-channel information leakage using 3D integration | |
Liu et al. | H-oram: A cacheable oram interface for efficient i/o accesses | |
Stolz et al. | Risky translations: Securing tlbs against timing side channels | |
Wang | Information leakage due to cache and processor architectures | |
CN115470532A (zh) | 一种缓存侧信道攻击防御方法及装置 | |
US11791978B2 (en) | Systems and methods for preventing side-channel attacks | |
Shimizu et al. | EA-PLRU: Enclave-aware cache replacement | |
Lipp | Cache attacks on arm | |
Wang et al. | Self-reinforcing memoization for cryptography calculations in secure memory systems | |
Ramkrishnan et al. | New attacks and defenses for randomized caches | |
Peters et al. | On The Effect of Replacement Policies on The Security of Randomized Cache Architectures | |
Liu et al. | Mitigating Cache Contention-Based Attacks by Logical Associativity | |
Jaamoum | Strategies for securing cache memories against software side-channel attacks | |
CN117807588A (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 |