CN107430671B - 用于在缓存中保护对安全重要的数据的方法 - Google Patents

用于在缓存中保护对安全重要的数据的方法 Download PDF

Info

Publication number
CN107430671B
CN107430671B CN201680019838.2A CN201680019838A CN107430671B CN 107430671 B CN107430671 B CN 107430671B CN 201680019838 A CN201680019838 A CN 201680019838A CN 107430671 B CN107430671 B CN 107430671B
Authority
CN
China
Prior art keywords
cache
address
data
code obfuscation
security
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
CN201680019838.2A
Other languages
English (en)
Other versions
CN107430671A (zh
Inventor
H.阿绍尔
M.海因特尔
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of CN107430671A publication Critical patent/CN107430671A/zh
Application granted granted Critical
Publication of CN107430671B publication Critical patent/CN107430671B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/75Protecting 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
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/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/75Protecting 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
    • G06F21/755Protecting 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 with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

本发明涉及一种用于在缓存中保护对安全重要的数据的方法(200),其中通用存储器的对安全重要的数据的拷贝被保存在缓存中,所述方法具有以下方法步骤:确定(210)代码混淆参数;从通用存储器的以下存储器地址求取(220)第一缓存组地址,对安全重要的数据保存在所述存储器地址处;利用生成函数在使用代码混淆参数和第一缓存组地址的情况下产生(230)第一缓存组的修改的第一缓存组地址;并且在使用修改的第一缓存组地址的情况下将对安全重要的数据的拷贝存储(240)在第一缓存组的第一缓存行(131)中。

Description

用于在缓存中保护对安全重要的数据的方法
背景技术
在现代的在计算机系统中使用的微处理器中,为了加速存储器存取而使用缓存,以便缓冲工作存储器的经常使用的地址区域内的数据。存储器存取的所述加速通过以下方式实现,即处理器对缓存的存取时间明显比对工作存储器中的数据的存取时间更快。然而,从工作存储器的哪些部分刚刚加载到缓存中的信息可以获得关于恰好实施的过程的信息。这例如是表格的经常使用的记录。
特别是在密码应用中,这是关键的侧通道,该侧通道在合适的分析的情况下例如可以导致机密秘钥泄露给攻击方。攻击方从以下受益,即工作存储器中的地址到处理器缓存中的位置的分配具有少的变化性并且因此可以进行统计分析。一般尝试通过待分析的进程、例如加密算法来获得关于缓存内容改变的信息。
常见的策略是清除和尝试方法。分析过程首先利用自身的数据来填满缓存并且紧接着测量存储器存取时间。在这种情况下例如可以测量缓存命中(英文:Cache Hits)或缓存未命中(英文:Cache Miss)。如果该分析在较长的时间段上执行,则可以推断出加密方法的对安全重要的数据、例如AES方法的密码秘钥,并且攻击方例如能够重构所述对安全重要的数据。
发明内容
本发明的任务是在缓存中保护对安全重要的数据。
该任务通过在独立权利要求中描述的措施来解决。在从属权利要求中示出本发明的有利的改进方案。
根据第一方面,本发明涉及一种用于在缓存中保护对安全重要的数据的方法,其中通用存储器的对安全重要的数据的拷贝保存在缓存中。根据该方法确定代码混淆参数。从通用存储器的存储器地址求取第一缓存组地址,对安全重要的数据保存在该存储器地址。第一缓存组的修改的第一缓存组地址在使用代码混淆参数和第一缓存组地址的情况下利用生成函数来产生。对安全重要的数据的拷贝在使用修改的第一缓存组地址的情况下存储在第一缓存组的第一缓存行中。
修改的缓存组地址的使用加难了缓存数据的分析,以便获得关于对安全重要的数据、诸如所使用的加密算法和加密算法的密码数据的信息。由此可以有效地保护密码数据以免无权人员的存取。通过根据本发明的方法,数据在缓存中被分块并且在缓存中分散在多个缓存组上。
在该方法的第一实施方式中,从存储器地址求取块地址,其中第一标识符由该块地址构成,并且其中生成函数附加地使用块地址或第一标识符来产生修改的第一缓存组地址。
在生成修改的第一缓存组地址时附加地使用第一标识符或块地址还进一步提高了该方法的安全性。
在方法的另外的实施方式中,借助第一标识符、第一缓存组地址和生成函数来在缓存中进行对安全重要的数据的存取,其中生成函数使用代码混淆参数、第一缓存组地址和第一标识符来产生修改的第一缓存组地址。
为了存取缓存数据,例如必需的是,例如能够执行修改的第一缓存组地址到第一缓存组地址的分配。这例如可以通过以下方式实现,即在存储对安全重要的数据时使用表格,该表格包含对于该分配必要的信息。如果在存储对安全重要的数据时产生修改的缓存组地址、例如修改的第一缓存组地址,则将修改的缓存组地址和(未修改的)缓存组地址存储到缓存中的表格中。因为该表格一方面可能蕴含安全风险并且附加地占用缓存中的存储器空间,所以在存取时修改的缓存组的直接计算一方面提高了安全性并且另一方面该方法是节省存储器空间的。
在方法的另外的实施方式中,按照预先给定的规则进行代码混淆参数的改变,其中通过改变代码混淆参数来执行缓存的重新组织。
通过改变代码混淆参数和重新组织缓存,对于攻击方来说分析缓存更加困难并且因此进一步提高该方法的安全性。
在方法的另外的实施方式中,在重新组织时将第一缓存组的第一缓存行映射到第二缓存组的第二缓存行,其中第一缓存组的其他缓存行的其他数据完全或部分地映射到其他缓存组的另外的缓存行。
通过将第一缓存组的一个缓存行映射到第二缓存组并且将第一缓存组的其他缓存行完全或部分地映射到其他缓存组的另外的缓存行,在重新组织缓存之后通过攻击方或无权第三方的分析还进一步加难。因此,借此实现对安全重要的数据的附加保护。
在方法的另外的实施方式中,生成函数是以下函数,该函数在使用代码混淆参数和第一标识符的情况下通过第一缓存组地址的置换来产生修改的第一缓存组地址。
在缓存中存取数据应该理想地尽可能快地进行。置换运算、诸如在使用代码混淆参数和第一标识符的情况下逐位对第一缓存组地址进行的异或运算可以以简单并且高效的方式计算。这具有以下优点,即在缓存或缓存管理装置中不必集成复杂的或附加的硬件。
在方法的另外的实施方式中,代码混淆参数在预先定义数量的对缓存的成功存取之后改变。
对缓存成功存取的数量可以很轻易地计算,由此在缓存或缓存管理装置中不必集成复杂的或附加的硬件。
在方法的另外的实施方式中,通过中断请求改变代码混淆参数。
在高安全性系统中使用的运行系统提供多个安全功能,以便防止攻击方对对安全重要的数据的存取。这样的运行系统可以在识别攻击方时执行多种措施,以便将高安全性系统置于安全状态。也属于此的是,重新组织或代码混淆参数的改变可以主动由运行系统侧借助中断请求引起。运行系统在此或者自身确定新的代码混淆参数或者针对代码混淆参数使用生成装置,以便确定新的代码混淆参数。
在方法的另外的实施方式中,代码混淆参数在预先确定的时间段内改变。
通过在预先确定的时间段内改变代码混淆参数保证了,攻击方对于缓存的分析仅具有少的时间。由此,对于攻击方很难在分析时获得足够的信息,以便获得关于对安全重要的数据的信息。
在方法的另外的实施方式中,代码混淆参数包含随机数,该随机数优选地在系统重新启动时重新形成。
随机数的使用加难了攻击方猜对代码混淆参数。由此实现对安全重要的数据的提高的保护。
在方法的另外的实施方式中,代码混淆参数包括明确的硬件识别码。
具有其他数据的硬件识别码用作代码混淆参数允许使用能够固定分配给一个设备的代码混淆参数。这具有以下优点,即当设备更换时,安全系统识别,因为代码混淆参数的一部分不对应于到目前为止的硬件识别码。
根据另一方面,本发明涉及一种用于在缓存中保护对安全重要的数据的系统,其中通用存储器的对安全重要的数据的拷贝保存在缓存中。该系统具有第一求取装置、确定装置、第一产生装置和存储器装置。确定装置被构造用于确定代码混淆参数。第一求取装置被构造用于从通用存储器的存储器地址求取第一缓存组地址,对安全重要的数据保存在该存储器地址。第一产生装置被构造用于在使用代码混淆参数和第一缓存组地址的情况下利用生成装置产生用于第一缓存组的修改的第一缓存组地址。存储器装置被构造用于在使用修改的第一缓存组地址的情况下将对安全重要的数据的拷贝存储在第一缓存组的第一缓存行中。
修改的缓存组地址的使用加难了缓存数据的分析,以便获得关于对安全重要的数据、诸如所使用的加密算法和加密算法的密码数据的信息。由此可以有效地保护密码数据以免无权人员的存取。
在第一实施方式中,系统具有第二求取装置,第二求取装置被构造用于从存储器地址求取块地址,其中第一标识符由该块地址构成,并且其中生成装置附加地使用块地址或第一标识符来产生修改的第一缓存组地址。
在生成修改的第一缓存组地址时附加地使用第一标识符或块地址还进一步提高了该方法的安全性。
在另外的实施方式中,该系统具有存取装置,该存取装置被构造用于借助第一标识符、第一缓存组地址和生成装置来在缓存中存取对安全重要的数据,其中生成装置使用代码混淆参数、第一缓存组地址和第一标识符来产生修改的第一缓存组地址以用于缓存中的存取。
为了存取缓存数据,例如对于存取装置必需的是,例如能够执行修改的第一缓存组地址到第一缓存组地址的分配。这例如可以通过以下方式实现,即在存储数据时由存储器装置使用表格,该表格包含对于该分配必要的信息。如果在存储数据时产生修改的缓存组地址、例如第一缓存组地址,则将修改的缓存组地址和(未修改的)缓存组地址存储到缓存中的表格中。因为该表格一方面可能蕴含安全风险并且附加地占用缓存中的存储器空间,所以在存取时修改的缓存组的直接计算一方面提高了安全性并且另一方面该方法是节省存储器空间的。
在系统的另外的实施方式中,改变装置被构造用于按照预先给定的规则来改变代码混淆参数,其中通过改变代码混淆参数来执行缓存的重新组织。
通过由改变装置来改变代码混淆参数和重新组织缓存,对于攻击方来说分析缓存更加困难并且因此这进一步提高该方法的安全性。
在系统的另外的实施方式中,生成装置是置换装置,该置换装置在使用代码混淆参数和第一标识符的情况下通过第一缓存组地址的置换来产生修改的第一缓存组地址。
在缓存中存取数据应该理想地尽可能快地进行。如置换装置所提供的置换运算例如是异或运算。所述置换运算可以在使用代码混淆参数和第一标识符的情况下逐位地应用于第一缓存组地址并且可以以简单并且高效的方式计算。这具有以下优点,即在缓存或缓存管理装置中不必集成复杂的或附加的硬件。
在系统的另外的实施方式中,第一求取装置和第二求取装置构造为一个整体的求取装置。
附图说明
本发明的上述特性、特征和优点以及其如何实现的方式和方法结合实施例的以下描述变得更清楚和更明白地来理解,所述实施例结合附图来详细解释。在此:
图1示出用于在缓存中存储数据的常规系统的示意图;
图2示出根据本发明的用于在缓存中保护对安全重要的数据的方法的流程图;
图3示出根据本发明的代码混淆模块的示意图;以及
图4示出根据本发明的用于在缓存中存储数据的系统的示意图。
在附图中,只要没有另作说明,功能相同的元件配备有相同的附图标记。
具体实施方式
图1示出常规系统的简化示意图,该系统在缓存中存储数据。缓存是快速的缓冲存储器,其帮助对慢速存储器的重复存取或避免数据的重新计算。对此,一次性加载或产生的数据被暂存在缓存中,使得所述数据在之后存取时能够更快速被调用。附加地,可以将不久以高概率进行存取的数据事先加载到缓存中。
图1示出缓存的针对当今系统的典型的组织,其中k是每个缓存组的缓存行的数量(k≥1)。缓存组的数量n由n=缓存大小/(k*一个缓存行的长度)得出。
数据如何以常规方式存储到缓存中的原理性流程在随后的段中予以解释。附加地,还探讨该常规方法在对安全重要的数据方面的问题。
首先,计算机系统的数据以数据块133、143、153、137、147、157的形式映射到能够通过地址空间160的存储器地址110寻址的存储器。实际上存在虚拟地址空间和物理地址空间,其中这些信息对于阐明该方法不是必需的并且因此也没有进一步关注。
在该示例中,利用一个存储器地址能够分别寻址一个字节。如果一个数据块被保存,则该数据块占用至少一个字节并且能够通过一个存储器地址来进行访问。存储器地址可以分别被分配不同的地址范围,以便例如占用多个字节的数据块通过具有以下存储器地址的地址范围来寻址,该存储器地址称为起始地址。
因此,地址空间160被分成多个地址范围,在所述地址范围内例如保存有第一数据块133、第二数据块143、第三数据块153、第m1数据块137、第m2数据块147和第m3数据块157。在图1中,在第一地址范围161内保存有第一数据块133并且在第二地址范围内保存有第m1数据块。
缓存通常具有多个缓存组130、140、150,以便容纳地址空间160内的数据块的拷贝。在图1中示出第一缓存组130、第二缓存组140和第n缓存组150。具体地,一个缓存组具有多个缓存行、缓存行1至缓存行k,以便在缓存行中存储数据块133、143、153、137、147、157之一。
被映射的第一缓存组130在缓存中保存在第一缓存组地址112处,其中第一缓存组130具有多个缓存行,在所述缓存行中应该保存数据块133和137的拷贝。具体地,在图1中示出第一缓存组130的第一缓存行131和第k缓存行135,其中第k缓存行135对应于第一缓存组130中的最后的缓存行。
如果第一数据块133的拷贝被加载到缓存中,则由数据块133的存储器地址110形成块地址111和第一缓存组地址112。对此,例如在64位系统中,选择存储器地址110的位13至位64用于块地址111并且选择位7至位12用于第一缓存组地址112。未被用于形成块地址111和第一缓存组地址112的位不被用于进一步的计算。
然后,块地址111被用作第一标识符132。如果数据块133还未处于缓存中,则缓存组130中的例如最不经常使用的或具有最远的最后一次存取的缓存行132被选择并且删除。当前的数据块133进入缓存行132的位置处。同样保存第一标识符132,以便之后在缓存存取时能够实现明确的分配。在图1中,首先确定第一缓存组130的第一缓存组地址112并且然后第一数据块133连同第一标识符132保存在第一缓存行131中。
以相同方式,第二存储器范围162的第m1数据块137借助第m1数据块137的第m1存储器地址保存到第一缓存组130的第k缓存行135中。对此,又确定块地址并且由其形成第m1标识符136。同样借助第m1存储器地址求取第一缓存组地址112。
哪个数据块保存到哪个缓存组中的分配取决于数据块的存储器地址。以下地址范围通常映射到相同缓存组中的一个缓存行,所述地址范围的存储器地址差了一个数据块长度的多倍。因此指的是以下存储器地址,所述存储器地址差了每个缓存行的字节数量的多倍。这具有以下效果,即存储器地址110的确定缓存组地址的各个位是相同的。关于上述示例,这适用以下存储器地址,所述存储器地址的位7-12是相同的。因此,在图1中第一地址范围161和第二地址范围162仅差了其最大数据块大小的多倍。
借助与上面解释的相同的方法,第二数据块143借助其第二存储器地址映射到第二缓存组140。在此,同样从第二存储器地址求取块地址、第二标识符142和第二缓存组140的第二缓存组地址。
因为第m2数据块147的第m2存储器地址和第二存储器地址的位7-12是相同的,所以第m2数据块147映射到第二缓存组140的第k缓存行146并且与对应于第m2数据块147的第m2存储器地址的块地址的第m2标识符146一起存储在第二缓存组140中。
按照相同的方法,第三数据块153和第m3数据块157映射到第n缓存组150的缓存行。
然而,缓存的所述组织对于计时攻击形式的缓存侧通道攻击而言是易受影响的并且因此蕴含针对对安全重要的数据的安全风险。该问题例如在Daniel J. Bernstein的2005年的公开物“Cache-timing attacks on AES”中予以详细解释。一般尝试通过待分析的进程、例如加密算法获得关于缓存内容改变的信息。常见的策略是清除和尝试方法。分析过程首先利用自身的数据来填满缓存并且紧接着测量存储器存取时间。在这种情况下例如可以测量缓存命中(英文:Cache Hits)或缓存未命中(英文:Cache Miss)。如果该分析在较长的时间段上执行,则可以推断出加密方法的对安全重要的数据、例如AES方法的密码秘钥,并且在最不利的情况下攻击方能够重构所述对安全重要的数据。
图2示出根据本发明的用于在缓存中保护对安全重要的数据的方法200的流程图。
该方法200能够将以下地址范围在缓存重新组织之后不再映射到相同缓存组中的缓存行,所述地址范围的存储器地址仅差了最大数据块长度的多倍。
为了保护包含对安全重要的数据的数据块的拷贝以免侧通道攻击,在缓存中存储数据时,如果还没有实现,则在方法步骤210中确定代码混淆参数。代码混淆参数在该实施例中是一组随机数。
如果例如包含用于密码方法的秘钥信息形式的对安全重要的数据的数据块应该在缓存中缓冲或保存数据的拷贝,则首先在方法步骤220中由数据块的存储器地址求取缓存组地址。
为了将数据块的拷贝保存在缓存中,还从存储器地址求取块地址并且第一标识符由该块地址构成。借助第一缓存组地址应该能够为计算机系统实现,将数据块的拷贝保存在缓存中并且存取数据块的拷贝。
在方法步骤230中,借助生成函数、代码混淆参数和第一标识符由第一缓存组地址产生修改的第一缓存组地址。在该实施例中,生成函数是异或函数,其利用代码混淆参数和第一标识符逐位地应用于第一缓存组地址。
例如对于具有52位长度的第一标识符,该标识符利用两个前导位0-Bit扩展成54位。所述54位然后分成九个6位字w1至w9。附加地,确定6位代码混淆参数o和由存储器地址的位7-12构成的未修改的6位缓存组地址s。于是,修改的缓存组地址借助以下计算来产生,
Figure DEST_PATH_IMAGE002
公式1
其中“
Figure DEST_PATH_IMAGE004
”表示XOR或异或函数并且A表示修改的缓存组地址。在此,各个6位字、6位代码混淆参数o和未修改的6位缓存组地址s借助异或函数分别逐位地彼此应用。
通过修改的第一缓存组地址来确定,第一缓存组位于缓存中的哪里。第一数据块的拷贝和第一标识符然后在方法步骤240中存储在第一缓存组的第一缓存行中。
修改的第一缓存组地址到第一缓存组地址的分配可以通过表格来实现。在修改的第一缓存组地址由生成函数产生之后,其被记录在该表格中。替代地,也可以完全事先计算该表格。
如果现在应该在缓存中存取第一数据块,则使用第一缓存组地址,以便通过表格确定修改的第一缓存组地址。然后,如果数据块已经保存在缓存中,则借助修改的第一缓存组地址和第一标识符存取缓存中的该数据块。
为了保护数据以免侧通道攻击,代码混淆参数在例如固定的或随机选择数量的500缓存命中(英文:Cache Hits)之后改变并且通过新的随机数来代替。由于所述改变,首先必须重新组织缓存,因为修改的缓存组地址、例如修改的第一缓存组地址和所属的缓存组地址、例如第一缓存组地址的关联不再正确。
通过改变代码混淆参数来实现,在重新组织缓存时到目前为止作为拷贝在第一缓存组的第一缓存行中缓冲的数据在重新存储拷贝时被映射到第二缓存组的第二缓存行。附加地,在此在第一缓存组的其他缓存行中缓冲的其他数据的拷贝现在作为新的拷贝完全或部分地映射到其他缓存组的另外的缓存行。
换句话说,例如在500缓存命中之后强制缓存的重新组织。在缓存的所述重新组织之后,缓存中的数据拷贝或数据组不再能够存取并且发生缓存不命中。现在利用根据本发明的方法重新将位于地址空间的地址范围内的数据的拷贝写到缓存中并且因此重新构建缓存。
优点是,以下地址范围不再映射到相同缓存组中的缓存行,所述地址范围的存储器地址仅差了一个缓存行的长度的多倍。
通过缓存总是又重新组织,不再能够通过监控缓存而推断出在进程中使用的对安全重要的数据。
图3示出根据本发明的代码混淆模块300的示意图。代码混淆模块300是指向系统的专利权利要求的一种可能的实施方式。
代码混淆模块300具有第一求取装置310、第二求取装置320、确定装置330、第一产生装置340和存储器装置350,它们通过数据总线信号连接。
如果一个数据块的拷贝应该存储在缓存中,则第一求取装置330首先由该数据块的存储器地址求取第一缓存组地址。该数据块可以在此包含极不同的数据。这例如可以是公共可访问的数据。但是,例如也可以是个人相关的数据、例如客户数据和对安全重要的数据、例如密码数据,这些数据仅允许由有权访问的人使用。
第二求取装置320被用于由存储器地址求取块地址并且由块地址构成第一标识符。但是,可以将块地址直接用作第一标识符。
如果到目前为止还没有确定代码混淆参数,则借助确定装置330确定代码混淆参数。然后,产生装置340利用生成装置在使用代码混淆参数、第一缓存组地址和第一标识符的情况下产生第一缓存组的修改的第一缓存组地址。然后,存储器装置350在使用修改的第一缓存组地址的情况下将对安全重要的数据与第一标识符一起存储在第一缓存组的第一缓存行中。
图4示出用于在缓存中存储数据的根据本发明的系统400的示意图。根据本发明的系统400使用根据本发明的如在图3中所描述的代码混淆模块300。
该实施例示出缓存的组织,其中k是每个缓存组的缓存行的数量(k≥1)。缓存组的数量n由n=缓存大小/(k*一个缓存行的长度)得出。
首先将计算机系统的数据以数据块的形式映射到能够通过存储器地址110寻址的存储器。
在该实施例中,能够利用一个存储器地址分别寻址一个字节。如果一个数据块被保存,则该数据块占用至少一个字节并且能够通过一个存储器地址来访问。存储器地址可以分别被分配不同的地址范围,以便例如占用多个字节的数据块通过具有以下存储器地址的地址范围来寻址,该存储器地址也称为起始地址。
因此,地址空间被分成多个地址范围,在所述地址范围内例如保存有第一数据块133、第二数据块143、第三数据块153、第m1数据块137、第m2数据块147和第m3数据块157。
缓存通常具有多个缓存组,所述多个缓存组可以容纳地址空间中的数据块的拷贝。在图4中示出具有修改的第一缓存组地址431的第一缓存组430、具有修改的第二缓存组地址441的第二缓存组440和具有修改的第n缓存组地址451的第n缓存组450。具体地,一个缓存组具有多个缓存行、缓存行1至缓存行k,以便在缓存行中存储数据块133、143、153、137、147、157之一。
被映射的第一缓存组430在缓存中保存在修改的第一缓存组地址431处,其中第一缓存组130具有多个缓存行,在所述缓存行中应该保存数据块133和147的拷贝。具体地,在图4中示出第一缓存组430的第一缓存行131和第k缓存行135,其中第k缓存行135对应于第一缓存组430中的最后的缓存行。
如果第一数据块133的拷贝(参见图1)被加载到缓存中,则由数据块133的存储器地址110形成块地址111和第一缓存组地址112。对此,例如在64位系统中,选择存储器地址110的位13至位64用于块地址111并且选择位7至位12用于第一缓存组地址112。未被用于形成块地址111和第一缓存组地址112的位不被用于进一步的计算。
然后,块地址111被用作第一标识符132。被用于在缓存中寻址第一缓存组430并且存储数据块133的拷贝的修改的第一缓存组地址431如下来确定:
如果代码混淆参数还未被确定,则首先通过代码混淆模块300的确定装置330来确定代码混淆参数。然后,借助代码混淆模块300的第一产生装置340在使用生成函数、代码混淆参数和第一标识符132的情况下由第一缓存组地址112产生修改的第一缓存组地址431。
如果数据块133的拷贝还未处于缓存中,则缓存组430中的例如最不经常使用的或具有最远的最后一次存取的缓存行131被选择并且删除。当前的数据块133进入缓存行131的位置处。同样保存第一标识符132,以便之后在缓存存取时能够实现明确的分配。
以相同方式,第m2数据块147借助第m2数据块147的第m2存储器地址保存到第一缓存组130的第k缓存行135中。对此,又确定块地址并且由其形成第m2标识符146。
借助与上面解释的相同的方法,第二数据块143借助其第二存储器地址映射到第二缓存组440。在此,同样从第二存储器地址求取块地址、第二标识符142和第二缓存组440的修改的第二缓存组地址。
按照相同的方法,第三数据块153和第m3数据块157映射到第n缓存组150的缓存行。
因此,通过修改的第一缓存组地址431确定,第一缓存组430位于缓存中的哪里。修改的第一缓存组地址431到第一缓存组地址112的分配可以通过表格来实现。在修改的第一缓存组地址431由生成函数产生之后,其被记录在该表格中。
如果现在应该在缓存中存取第一数据块133,则使用第一缓存组地址112,以便通过表格确定修改的第一缓存组地址431。然后,如果该数据块133已经保存在缓存中,则借助修改的第一缓存组地址431和第一标识符132存取缓存中的该数据块133。
为了保护数据以免侧通道攻击,代码混淆参数在例如500缓存命中(英文:CacheHits)之后改变并且通过新的随机数来代替。由于所述改变,首先必须重新组织缓存,因为修改的缓存组地址、例如修改的第一缓存组地址和所属的缓存组地址、例如第一缓存组地址的关联不再正确。
通过改变代码混淆参数来实现,在重新组织缓存时到目前为止作为拷贝在第一缓存组的第一缓存行中缓冲的数据在重新存储拷贝时被映射到第二缓存组的第二缓存行。附加地,在此在第一缓存组的其他缓存行中缓冲的其他数据的拷贝现在作为新的拷贝完全或部分地映射到其他缓存组的另外的缓存行。
换句话说,例如在500缓存命中之后强制缓存的重新组织。在缓存的所述重新组织之后,缓存中的数据拷贝或数据组不再能够存取并且发生缓存不命中。现在利用根据本发明的方法重新将数据的拷贝写到缓存中并且因此重新构建缓存。
优点是,以下地址范围不再映射到相同缓存组中的缓存行,所述地址范围的存储器地址仅差了一个缓存行的长度的多倍。
通过缓存总是又重新组织,不再能够通过监控缓存而推断出在进程中使用的对安全重要的数据。
在所提及的实施例中,在缓存中缓冲的数据的区别不在于所述数据在此是对安全重要的数据还是非关键的数据。从以下出发,即原则上所有数据是对安全重要的数据。
在所提及的实施例的一种变型中,对于缓存中的数据块的存取,在存取时的修改的第一缓存地址也可以借助生成函数、第一标识符和代码混淆参数直接由第一缓存组地址来形成。在这种情况下省去表格,以便例如节省处理器上的存储器空间。
在所提及的实施例的另一种变型中,代码混淆参数在预先定义数量的对缓存的成功存取之后改变。这可以借助简单的计数器来实现,该计数器能够通过系统接口由管理员来配置,以便考虑不同的安全要求。但是,这样的配置例如也应该能够通过程序更新、例如作为固件更新来执行。
在所提及的实施例的另一种变型中,代码混淆参数通过中断请求来改变。运行系统可以在识别攻击时执行多种措施,以便进入安全状态。也属于此的是,重新组织或代码混淆参数的改变可以主动由运行系统侧借助中断请求来引起。
在所提及的实施例的另一种变型中,代码混淆参数在预先确定的时间段内改变。这例如可以借助简单的内部时钟来实现。在另一种变型中,时钟通过系统接口能够由管理员来配置,以便考虑不同的安全要求。但是,这样的配置例如也应该能够通过程序更新、例如作为固件更新来执行。
尽管本发明细节上通过实施例来详细阐明和描述,但是本发明不限于所公开的示例并且本领域技术人员可以由此导出其他变型,而不脱离本发明的保护范围。

Claims (16)

1.用于在缓存中保护对安全重要的数据的方法(200),其中通用存储器的对安全重要的数据的拷贝被保存在缓存中,所述方法具有:
- 确定(210)代码混淆参数;
- 从通用存储器的以下存储器地址(110)求取(220)第一缓存组地址(112),对安全重要的数据(133)保存在所述存储器地址处;
- 利用生成函数在使用代码混淆参数和第一缓存组地址(112)的情况下产生(230)第一缓存组(430)的修改的第一缓存组地址(431);并且
- 在使用修改的第一缓存组地址(431)的情况下将对安全重要的数据(132)的拷贝存储(240)在第一缓存组(430)的第一缓存行(131)中,
其中所述代码混淆参数通过中断请求来改变。
2.根据权利要求1所述的方法(200),其中从所述存储器地址(110)求取块地址(111),其中第一标识符(132)由所述块地址(111)构成,并且其中所述生成函数附加地使用所述块地址(111)或第一标识符(132)来产生修改的第一缓存组地址(431)。
3.根据权利要求2所述的方法(200),其中在缓存中对对安全重要的数据(133)的存取借助第一标识符(132)、第一缓存组地址(112)和所述生成函数来进行,其中所述生成函数使用所述代码混淆参数、第一缓存组地址和第一标识符(132)来产生修改的第一缓存组地址(431)。
4.根据上述权利要求之一所述的方法(200),其中代码混淆参数的改变按照预先给定的规则进行,并且其中通过改变代码混淆参数来执行缓存的重新组织。
5.根据权利要求4所述的方法(200),其中在重新组织时第一缓存组(430)的第一缓存行(131)的数据被映射到第二缓存组(440)的第二缓存行(141),并且其中第一缓存组(430)的其他缓存行的其他数据完全或部分地被映射到其他缓存组的另外的缓存行。
6.根据权利要求1至3之一所述的方法(200),其中所述生成函数是以下函数,所述函数在使用代码混淆参数和/或第一标识符(132)的情况下通过第一缓存组地址(112)的置换来产生修改的第一缓存组地址。
7.根据权利要求1至3之一所述的方法(200),其中所述代码混淆参数在预先定义数量的对缓存的成功存取之后改变。
8.根据权利要求1至3之一所述的方法(200),其中所述代码混淆参数在预先确定的时间段内改变。
9.根据权利要求1至3之一所述的方法(200),其中所述代码混淆参数包含在系统重新启动时重新形成的随机数。
10.根据权利要求1至3之一所述的方法(200),其中所述代码混淆参数包括明确的硬件识别码。
11.用于在缓存中保护对安全重要的数据的系统(400),其中通用存储器的对安全重要的数据的拷贝被保存在缓存中,所述系统具有:
- 确定装置(330),其被构造用于确定代码混淆参数;
- 第一求取装置(310),其被构造用于从通用存储器的以下存储器地址(110)求取第一缓存组地址(112),对安全重要的数据(133)保存在所述存储器地址处;
- 第一产生装置(340),其被构造用于利用生成装置在使用代码混淆参数和第一缓存组地址(112)的情况下产生第一缓存组(430)的修改的第一缓存组地址(431);和
- 存储器装置(350),其被构造用于在使用修改的第一缓存组地址(431)的情况下将对安全重要的数据(133)的拷贝存储在第一缓存组(430)的第一缓存行(131)中,
其中所述代码混淆参数通过中断请求来改变。
12.根据权利要求11所述的系统(400),其中所述系统具有第二求取装置(320),第二求取装置被构造用于从所述存储器地址(110)求取块地址(111),其中第一标识符(132)由所述块地址(111)构成,并且其中所述生成装置附加地使用所述块地址(111)或第一标识符(132)来产生修改的第一缓存组地址(431)。
13.根据权利要求12所述的系统(400),其中所述系统具有存取装置,所述存取装置被构造用于借助第一标识符(132)、第一缓存组地址(112)和生成装置来在缓存中存取对安全重要的数据(133),其中所述生成装置使用代码混淆参数、第一缓存组地址和第一标识符(132)来产生修改的第一缓存组地址(431)以用于缓存中的存取。
14.根据权利要求11至13之一所述的系统(400),其中一个改变装置被构造用于按照预先给定的规则改变代码混淆参数,并且其中通过改变代码混淆参数来执行缓存的重新组织。
15.根据权利要求11至13之一所述的系统(400),其中所述生成装置是置换装置,所述置换装置在使用代码混淆参数和第一标识符(132)的情况下通过第一缓存组地址(112)的置换来产生修改的第一缓存组地址(431)。
16.根据权利要求12或13所述的系统(400),其中第一求取装置和第二求取装置被构造为整体的求取装置。
CN201680019838.2A 2015-03-31 2016-03-22 用于在缓存中保护对安全重要的数据的方法 Active CN107430671B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102015205827.1 2015-03-31
DE102015205827.1A DE102015205827A1 (de) 2015-03-31 2015-03-31 Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
PCT/EP2016/056188 WO2016156095A1 (de) 2015-03-31 2016-03-22 Verfahren zum schutz sicherheitsrelevanter daten in einem cachespeicher

Publications (2)

Publication Number Publication Date
CN107430671A CN107430671A (zh) 2017-12-01
CN107430671B true CN107430671B (zh) 2021-06-01

Family

ID=55699611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680019838.2A Active CN107430671B (zh) 2015-03-31 2016-03-22 用于在缓存中保护对安全重要的数据的方法

Country Status (7)

Country Link
US (1) US11003594B2 (zh)
EP (1) EP3254227B1 (zh)
KR (1) KR102117838B1 (zh)
CN (1) CN107430671B (zh)
DE (1) DE102015205827A1 (zh)
ES (1) ES2754266T3 (zh)
WO (1) WO2016156095A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013203365A1 (de) * 2013-02-28 2014-08-28 Siemens Aktiengesellschaft Verfahren und Schaltungsanordnung für kontrollierte Zugriffe auf Slave-Einheiten in einem Ein-Chip-System
KR102438784B1 (ko) * 2018-01-05 2022-09-02 삼성전자주식회사 데이터를 난독화 및 복호화 하는 전자 장치 및 그의 제어 방법
CN109144894B (zh) * 2018-08-01 2023-04-07 浙江大学 基于数据冗余的内存访问模式保护方法
CN110266484B (zh) * 2019-06-28 2021-07-06 深圳前海微众银行股份有限公司 一种数据加密方法、装置、设备及介质
US11456855B2 (en) * 2019-10-17 2022-09-27 Arm Limited Obfuscating data at-transit
US11645428B1 (en) * 2020-02-11 2023-05-09 Wells Fargo Bank, N.A. Quantum phenomenon-based obfuscation of memory
KR102327296B1 (ko) 2021-05-17 2021-11-16 김인영 공기질정보를 출력하는 인디케이션 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687790B2 (en) * 1994-08-03 2004-02-03 Intel Corporation Single bank associative cache
CN103810119A (zh) * 2014-02-28 2014-05-21 北京航空航天大学 一种利用三维集成电路片上温差降低stt-ram功耗的缓存设计方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950222A (en) * 1996-03-14 1999-09-07 Sanyo Electric Co., Ltd. Microcomputer using a non-volatile memory
JP2002025188A (ja) * 2000-07-04 2002-01-25 Hitachi Ltd 情報記憶装置、信号処理回路
US20040078544A1 (en) * 2002-10-18 2004-04-22 Silicon Integrated Systems Corporation Memory address remapping method
US8719588B2 (en) * 2008-06-30 2014-05-06 Atmel Corporation Memory address obfuscation
US8549208B2 (en) * 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
US8140758B2 (en) * 2009-04-24 2012-03-20 International Business Machines Corporation Data reorganization in non-uniform cache access caches
US20100287382A1 (en) * 2009-05-07 2010-11-11 John Charles Gyorffy Two-factor graphical password for text password and encryption key generation
EP2290547B1 (en) * 2009-08-26 2012-12-19 Nxp B.V. Method of obfuscating a code
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8667301B2 (en) * 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
CN103348662B (zh) * 2011-04-15 2016-12-07 西门子企业通讯有限责任两合公司 用于在计算机网络中产生地址的方法
US9396118B2 (en) * 2011-12-28 2016-07-19 Intel Corporation Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack
ES2546072T3 (es) * 2012-09-14 2015-09-18 Barcelona Supercomputing Center-Centro Nacional De Supercomputación Dispositivo para controlar el acceso a una estructura de memoria caché
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
CN103049397B (zh) * 2012-12-20 2015-09-16 中国科学院上海微系统与信息技术研究所 一种基于相变存储器的固态硬盘内部缓存管理方法及系统
CN103116555B (zh) 2013-03-05 2014-03-05 中国人民解放军国防科学技术大学 基于多体并行缓存结构的数据访问方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687790B2 (en) * 1994-08-03 2004-02-03 Intel Corporation Single bank associative cache
CN103810119A (zh) * 2014-02-28 2014-05-21 北京航空航天大学 一种利用三维集成电路片上温差降低stt-ram功耗的缓存设计方法

Also Published As

Publication number Publication date
KR20170132300A (ko) 2017-12-01
US11003594B2 (en) 2021-05-11
EP3254227A1 (de) 2017-12-13
ES2754266T3 (es) 2020-04-16
US20180081825A1 (en) 2018-03-22
DE102015205827A1 (de) 2016-10-06
CN107430671A (zh) 2017-12-01
KR102117838B1 (ko) 2020-06-02
EP3254227B1 (de) 2019-08-14
WO2016156095A1 (de) 2016-10-06

Similar Documents

Publication Publication Date Title
CN107430671B (zh) 用于在缓存中保护对安全重要的数据的方法
CN110945509B (zh) 用于控制对受保护存储器区域中数据的访问的设备和方法
US10733313B2 (en) Counter integrity tree for memory security
CN105512055B (zh) 用于减少存储器信息泄漏的系统和方法
EP2998869B1 (en) Dynamic memory address remapping in computing systems
CN101178759B (zh) 可信设备集成电路和对其中的存储器件进行虚拟化的方法
US11775177B2 (en) Integrity tree for memory integrity checking
JP2014523020A (ja) 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
CN111143247B (zh) 存储装置数据完整性保护方法及其控制器、片上系统
CN107563226B (zh) 一种存储器控制器、处理器模块及密钥更新方法
US20240080193A1 (en) Counter integrity tree
EP2920736A1 (en) Method to counter side channel attack on sensitive data
US20220294634A1 (en) Method for executing a computer program by means of an electronic apparatus
US20230113906A1 (en) An apparatus and method of controlling access to data stored in a non-trusted memory
CN115777101A (zh) 使用高速缓存的部分散列值的存储器保护
CN115470532A (zh) 一种缓存侧信道攻击防御方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant