CN109144894B - 基于数据冗余的内存访问模式保护方法 - Google Patents
基于数据冗余的内存访问模式保护方法 Download PDFInfo
- Publication number
- CN109144894B CN109144894B CN201810864259.9A CN201810864259A CN109144894B CN 109144894 B CN109144894 B CN 109144894B CN 201810864259 A CN201810864259 A CN 201810864259A CN 109144894 B CN109144894 B CN 109144894B
- Authority
- CN
- China
- Prior art keywords
- memory
- address
- data block
- data
- memory access
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于数据冗余的内存访问模式保护方法,可以高效且安全地混淆内存访问模式,混淆后的内存访问序列难以被攻击者进行关联,从而达到了安全的目的。本发明采取数据冗余技术,对每个请求地址都进行动态转化,并对每一个数据块进行加密。同时,结合位置映射图优化技术,本发明使得优化后的位置映射图比传统的位置映射图小几百倍,进而只需几兆字节的片上缓存即可高效保护4GB内存。本发明具有安全性高,速度快,硬件兼容等现有方法所不具备的优点,有助于在实际中进行推广。
Description
技术领域
本发明涉及内存安全领域,具体涉及一种基于数据冗余的内存访问模式保护方法。
背景技术
长期以来,内存访问模式(memory access pattern)一直被用于旁道攻击(Side-channel attack,又称侧信道攻击、边信道攻击)。具体而言,内存访问模式指的是程序执行期间访问的地址序列。一旦这种模式被攻击者观测获取,攻击者就有可能构建程序的控制流程图(CFG)。广泛的测量研究证明了CFG的独特性。例如,研究者发现(HIDE:aninfrastructure for efficiently protecting information leakage on the addressbus,ASPLOS,2004年),在Alpha编译器的标准C库的1,334个程序之中,只有0.05%的CFG会是相互匹配的。因此,攻击者可以监视程序的内存访问模式,构造相应的CFG,然后识别出究竟哪个程序正在运行。如果CFG显示某种特定的加密算法在运行,攻击者甚至可以窃取密钥。例如,Diffie-Hellman和RSA涉及一个条件分支循环使用每个位的值条件检查的密钥。一个为1的位(bit)使得程序执行IF分支代码段,而一个为0的位使得程序执行ELSE分支代码段。使用窥探得来的CFG,攻击者可以很容易地推断出两个可能的秘密密钥:一个是秘密密钥本身,另一个是它的补。
然而,在已有的文献当中,尚未有对不可信内存访存模式进行混淆的实用方案被提出。众所公认,对不可信内存访存模式的混淆十分具有挑战性(Secure DIMM:MovingORAM Primitives Closer to Memory,HPCA,2018年)。不同于能够进行加密计算新兴可信存储器,广泛部署的传统不可信内存无法执行加解密的计算任务。因此,我们必须以明文的方式发送想要访问的内存地址。如前所述,攻击者可以轻松得到内存访问模式并利用它们进行旁道攻击。此类攻击可能会泄露重用的代码甚至是AES加密的密钥。在已有的文献当中,有的研究提出了内存模式混淆的方法,这些方法主要分为两类:一类是基于茫然随机存储(Oblivious RAM)的方法,例如由Stefanov等(Path ORAM:an extremely simpleoblivious RAM protocol,CCS,2013年)以及Goldreich等(Software protection andsimulation on oblivious RAMs,J.ACM,1996年)提出的;另一类方法像Nakano等(Memoryaccess pattern protection for resource-constrained devices,InternationalConference on Smart Card Research and Advanced Applications,2012年)和Zhuang等(HIDE:an infrastructure for efficiently protecting information leakage on theaddress bus,ASPLOS,2004年)等所提出的,采用硬件改动的方法。
第一种方法被称为基于茫然随机存储(Oblivious RAM)的方法,它通过产生大量的冗余访问以隐藏真实想访问的地址。显然,ORAM对内存带宽产生了巨大的开销。因此,ORAM不适用于实现CPU/内存场景中的访问模式混淆。随着近来云计算的兴起,网络带宽可能更少地成为桎梏安全策略选择的要素,从而,ORAM逐渐被应用于在远程服务器上的场景下的数据访问混淆。学者提出了许多改进在客户机/服务器上的方案。ORAM的相关跟进工作主要是设计优化对内存模型的抽象建模。例如,ORAM使用层次化结构实现O(polylog n)开销,而Path ORAM使用树结构来实现O(log^3n)开销。最先进的Floram使用双重存储器芯片实现O(logn)开销(Scaling ORAM for Secure Computation,CCS,2017年)。然而,基于ORAM的解决方案都需要产生足够多的虚假访问来隐藏内存访问模式。所以,ORAM解决方案更适用于服务器-客户端场景(server-client environment),如云数据的远程访问,而不是CPU-内存通信场景。更为糟糕的是,Path ORAM,作为许多ORAM解决方案的基础,需要存储许多垃圾内存块(dummy block)以减小系统发生死锁的概率。即便我们浪费50%的内存容量来存储虚拟块(即100%的内存开销),系统死锁仍然可能发生。
第二种方法是基于硬件改动的方法,它是专门在CPU/内存场景下设计的。然而,这种方法及其变式仍有较明显的缺陷。我们研究认为,这类方法的尝试往往具有高的开销,有的方法甚至会降低安全性。例如,著名的HIDE方法(HIDE:an infrastructure forefficiently protecting information leakage on the address bus,ASPLOS,2004年)缓存从内存中提取的所有块。每当我们需要把块从缓冲区中移除(evict)或写回(writeback),HIDE方法需要1)读取同一段(chunk)中的所有块(block)(通常包含一个或多个连续页面)到CPU芯片上,2)将所有块的位置进行错排打乱,3)记录新的块地址映射,4)写回所有错排的块到内存中。否则,如果像往常一样,一个块被读入缓冲区然后移除,随后再次使用这个块将会让我们访问相同的内存位置,从而泄漏访问模式。HIDE方法必须通过将混淆范围为局限于一个很小范围的内存空间之内,从而不至于产生过大的开销。通过把读操作与错排操作混合在一起,可以提高HIDE方法的工作效率(Hardware assisted control flowobfuscation for embedded processors,CASES,2004年)。该改进的主要思想是,经过一个读访问后,缓冲块可以写回到所读块的位置中。该改进算法无需太多开销就可以实现块的错排。然而,这种改进方法需要足够大的缓冲区大小来保证内存访问模式的安全性。考虑以下这个极端情况,假设我们有大小为1的一个缓冲区,所执行的程序轮流访问两个存储器位置l1和l2。那么,访问内存的顺序将是(l1,l2,l2,l2......)。这使攻击者可以推断出两个可能的访问模式-(l1,l2,l2,l2......)和(l1,l2,l1,l2......)。其中,后者与真正的访问模式完全匹配,即,内存访问模式被泄露了。为了去除错排操作产生的开销,一些学者提出,可以扩大缓冲区,使得缓冲区足以容纳足够多的块。我们设计移出策略使得任意对同一缓冲块的两次连续访问都具有足够长的时间间隔。这个策略使得攻击者很难有效关联起来访问操作。同样,这需要在缓冲区大小和安全级别之间做出一个权衡,尤其是所运行的程序包含有长循环。
发明内容
本发明提供了一种基于数据冗余的内存访问模式保护方法,可以在O(1)的通信开销下混淆不信任存储中内存访问模式,不仅能避免内存访问模式的泄漏,也能大幅度减小时间开销。
一种基于数据冗余的内存访问模式保护方法,包括以下步骤:
(1)构建由CPU、存储器控制器和内存组成的系统,所述的存储器控制器包括位置映射图模块和存储器控制器缓存区;
(2)初始化阶段,存储器控制器将目标数据块制作成若干个不同的数据块副本并加密,预加载到外部存储器中的随机位置,并建立目标数据块的位置映射图;
(3)在执行阶段,对于CPU端的访存请求,判断存储器控制器缓存区是否有目标数据块,若存在,执行步骤(4),若不存在,执行步骤(5);
(4)对于读的操作,返回存储器控制器缓存区中的目标数据块,对于写的操作,更新存储器控制器缓存区中的目标数据块;
(5)判断访存请求的种类,若为写请求,跳到步骤(6),反之,则为读请求,跳到步骤(9);
(6)消除位置映射图中过时备份的记录,位置映射图给出新的映射地址,用于写入新的数据块,并对新的数据块进行加密;
(7)由写缓冲区异步写入到内存中;
(8)结束处理,返回;
(9)位置映射图模块调用副本选择算法,给出其中一个副本的真实地址,以及所需的解密密钥;
(10)访问外部存储器,根据步骤(9)中获得的一个副本的真实地址,获得加密副本的内容;
(11)根据步骤(9)中获得的解密密钥,对加密副本进行解密;
(12)响应二级缓存的处理请求,并对位置映射图进行状态更新。
本发明利用数据冗余性,可以让CPU访问不同的位置,但是能得到相同的数据块,不仅能避免内存访问模式的泄漏,也能把通信开销大幅度降低至O(1)。
本发明需在程序初始化阶段(装载进入内存阶段)为程序制作不同加密版本的数据块副本,在执行阶段随机选择副本进行读取。在初始化阶段(Initialization phase),存储器控制器将通过与磁盘交互的I/O操作,把一定数量的副本预加载到不可信外部存储器中的随机位置,这些副本将以不同方式进行加密。在执行阶段(Execution phase),存储器控制器通过随机选择目标块的一个副本并发出读取请求,在程序执行期间服务于每个读取访问。直观地说,虽然内存控制器在访问数据块的不同副本时实际上检索到相同的值,但攻击者会看到内存中的不同位置被访问。为了在存储器控制器上实现算法,在其与二级缓存(L2Cache)之间增设了一层功能类似缓存的存储器控制器缓存区(Stash in the memorycontroller)。
本发明在存储器控制器上增添了两个关键模块:位置映射图模块和存储器控制器缓存区。位置映射图模块将请求的物理地址映射到存有不同的加密副本数据块多个物理地址。该模块将记录地址转换所需要的所有关键信息,地址映射对应关系,加解密,以及哪些块之间使用了数据聚合技术。除了位置映射图,我们还需要一个存储器控制器缓存区来临时存储一些已读取的数据块。接下来,将对上文所述的位置映射图模块和存储器控制器缓存区两个关键模块的工作方法进行详细的介绍。
上述两个模块在算法中的工作方法与作用如下:如果可以在存储器控制器缓存区中找到请求的数据块,这个数据块可以直接被传输回CPU。假如存储器控制器缓存区中没找到请求的数据块,存储器控制器首先通过查找位置图来确定要访问的物理地址。这个过程会涉及到部署与使用地址计算单元(Address Calculation Unit)和哈希单元(Hash Unit)进行一些轻量级计算。为了保证数据的一致性,我们在访问外部存储之前使用计算出的物理地址先搜索写缓冲区(Write Buffer)。一旦一个块被从写缓冲区或外部存储中读取,我们将其送由加密/解密单元(encryption/decryption unit)进行解密。然后将纯文本数据块发送到存储器控制器缓存区以及CPU。因为访问相同的内存位置以获取相同的数据将会泄漏访问模式,我们需要重新错排数据放置的位置,以避免这种重复访问。我们将新加密的副本补充到经过选择的内存位置中。位置图也应相应更新,以便后续请求可以找到正确的数据。
步骤(2)中,所述的数据块副本可通过AES计数器模式进行加密。
作为优选,步骤(2)中,所述的若干个不同的加密数据块副本之间通过数据聚合技术进行聚合。考虑到外存储的空间开销,本发明结合数据聚合技术,使得内存利用率提高。
我们使用基于XOR的数据聚合技术以节省内存空间而不减少副本数量。我们以如下这个例子对其工作机理进行说明:对于数据块a和数据块b。最初,这会占用四个块大小的内存分配,两个用于块a,另外两个用于块b。运用异或操作,我们只使用三个块a,b和a⊕b来表示四个数据块的信息。获取块a并缓存后,CPU可以通过访问b或a⊕b来获取块b。这样的数据聚合技术实际上不仅仅提升了内存效率。该技术允许CPU从不同位置获取相同的数据并从相同位置的获取不同的数据。这阻止了攻击者推断访问模式。
作为优选,步骤(2)中,还包括对所述目标数据块的位置映射图进行优化。考虑到CPU片上存储空间的开销,本发明结合位置映射图优化技术,使得优化后的位置映射图比传统的位置映射图小几百倍,进而使得我们只需几兆字节的片上缓存即可高效保护4GB内存。
所述位置映射图的优化方法包括:基于计算的地址映射(Computation-basedaddress mapping)、基于地址值的解密密钥生成(Address-derived decryption keys)、基于回卷的页面粒度地址映射(Circular-based page-level address mapping)以及基于数据聚合技术的哈希冲突处理(Data aggregation to leverage hash collisions)。
和以前的内存访问模式混淆解决方案一样,本发明的逻辑只驻留在存储器控制器之中。本发明所面临的关键挑战是如何优化减小位置映射图的大小,使得它能够被包含在CPU片上。针对这个挑战,我们提出了四个位置映射图优化子技术。
我们首先分析传统的位置映射图的结构和开销,随后将介绍本发明提出的一系列压缩技术。位置映射图中的每个条目(entry)应至少包含一个映射前的物理地址,一个映射后的物理地址(映射后的物理地址指的是加密副本数据块的实际地址),以及用于解密加密的密钥。我们用laddr和lkey表示物理地址的位长度和一把钥匙。每个条目的大小是2laddr+lkey。假如我们运用条目索引(entryindex)表示源地址,则每个条目的大小缩小到laddr +lkey。鉴于数字条目是上限由内存可以容纳的块数n限制,位置表的大小近似(l addr+lkey)n位。至保证安全,l键应足够大。启发通过[2],我们可以为所有条目使用全局私钥,并使用更短的密钥每个条目的计数器。使用私钥和计数器用于解密加密块。但每个条目只需要跟踪其相应的计数器。考虑一个实际的例子64位物理地址,64位计数器[2],64字节数据块,和4GB内存。内存支持的块数是n=4GB/64B=226。然后相应的位置图采用a大小为(64+64)×226位=1GB。这是不切实际的内存控制器缓存或缓冲。它占用了太量内存,占示例中整个内存的25%。
接下来介绍本发明提出的四个位置映射图优化子技术。第一个位置映射图优化子技术是基于计算的地址映射。我们使用轻量级计算将源地址映射到目的地址,如此我们可以将多个位置映射图条目合并为一个并从位置图中删除目标地址。在本发明的设计中,我们采用哈希(Hash)计算目标地址。为了优化实现哈希函数的成本,本发明不需要实现完全不同的哈希函数。在本发明中,我们只简单地实现有限数量甚至一个哈希函数,我们用不同的种子数值(seed)去初始化每个哈希实例(instance)。设h表示哈希函数/实例的数量,c表示每个数据块的平均值副本数量。我们可以结合,对应于原始位置图中的相同数据块的c个条目合并为一个条目,合并后的条目包含c个字段(field)。每个字段都包含一个索引,指向用于计算目标地址的哈希函数和用于加解密的密钥。那么每个条目的大小(lhash+lkey)c,其中有lhash=log(h)作为哈希索引的位长度(bitlength)。经过该子技术压缩后的位置映射图的大小变为(lhash+lkey)c×n/c=(lhash+lkey)n=(log(h)+lkey)n。
第二个位置映射图优化子技术是基于地址值的解密密钥生成。利用目的地址的唯一性(uniqueness),本发明使用目的地址动态获得每个加密副本的加解密密钥。该子优化技术使得我们可以从位置映射图中移除密钥,从而压缩位置映射图的大小。现在位置图中的每个条目都包含c个散列函数的索引,大小为c log(h)。当c log(h)>h时,我们可以用长度为h的位图(bitmap)替换这c个字段。如果是由第i个哈希函数计算出目的地址的,我们将位图中的第i位设置为1。否则设置为0。该子技术使得压缩后的位置映射图的大小近似min{c log(h),h}×n/c=min{n log(h),nh/c}。
第三个位置映射图优化子技术是基于回卷的页面粒度地址映射。本发明使用基于页面粒度的地址构建位置映射图,而不是前面的基于块的粒度。对于一个请求中的源地址,我们只将其页索引值(page index)提供给所选的哈希,用于计算映射页的目标地址。然而,如果我们简单地令目标地址的块偏移量等于源地址的,攻击者将有可能关联两个内存访问并推断访问模式。对于页内地址,我们使用基于回卷的方式来进行计算。假设lpage和lblock表示页面的大小和块的大小。那么一个页面中的块的数目是lpage/lblock。我们用s来表示所选的用于计算映射页面索引的散列函数的种子值(seed)。基于回卷的页内地址计算是指按照如下方式计算页内地址:bdst=(bsrc+s)mod lpage/lblock,其中bsrc表示在源地址中的块偏移量。这样,相同的块偏移可能在不同的页面中被映射到的页内地址,从而让攻击者难以关联内存访问。为了减少更新页粒度映射的代价,本发明为每个条目引入一个向量v,用于记录一个页面内每个block的使用情况。该向量包含lpage/lblock个项(item)。项v[i]对应于页面中的第i个块,长度为log(c)比特。项v[i]旨在跟踪第i个块已经使用了多少个副本(小于等于c个)。更严格地说,v[i]=k表示我们已访问第i个块的由前k个散列函数计算得出的k个副本的地址。对于一个块,已经被使用过的哈希函数在未来将来不会再次被使用。对于第i个块的下一个请求,存储器控制器将使用第(k+1)个散列函数进行地址映射。相比而言,在原始的块级位置映射图中,每个块需要c个哈希函数索引值。而在本设计中,每个块只保留一个logc位的字段,用作计数器。我们现在分析使用位置映射图优化子技术的位置映射图的大小。每个条目现在保存c个哈希函数索引以及一个包含lpage-/lblock个项的向量。它的大小是c log(h)+lpage/lblocklog(c)。鉴于我们将每个块映射出c个副本,那么外部存储中可以容纳n/c个原始块。原始页面的数量,即位置映射图中的条目数,是因此(n/c)/(lpage/lblock)个。综上所述,采用该子技术后,位置映射图的大小近似为:(c log(h)+lpage/lblock log(c)*(n/c)/(lpage/lblock))=(lblock/lpage log(h)+log(c)/c)n。现在让我们对比采用一系列优化技术前后的效果。假设我们在64位物理地址,64位计数器的情况下映射,数据块大小为64字节,页面大小为4KB和内存大小为4GB。一个页面中的块数是lpage/lblock=64。未优化时,位置映射图在这种上述设定下需要1GB。然后传统位置映射图的大小与其压缩后的大小的比例是128/(log(h)/64+(log c)/c)。进一步假设h=1024和c=16,那么比例为128/(log(h)64+(log c)/C)=128/(log(1024)/64+(log 16)/16)=315。换言之,压缩后的位置映射图的尺寸是原来的三百分之一;位置映射图的大小由1GB变为((log1024)/64+(log 16)/16)×226=3.25MB。
第四个位置映射图优化子技术是基于数据聚合技术的哈希冲突处理。哈希函数本身就有存在哈希冲突的特性,从而存在两个不同的源地址映射到同一目的地址的可能性。这通常需要引入更多的散列函数,以保证每个地址都有足够的选择。但是,散列函数会导致更高的开销。此外,更多的散列函数与更大的h相关联,因此会有更大的log(h)。我们通过结合前文所述的数据聚合技术来解决这个问题。对于两个被哈希到相同目的地址的不同源地址的数据块,我们可以将它们异或成一个聚合块,然后将聚合块存储到该地址中。除了位置图,我们使用一个独立的聚合位置图(aggregation map)来记录聚合块的相关信息。存储器控制器可以根据基于聚合块其中的一个数据块是否缓存于存储器控制器缓存区中来决定何时访问聚合块。
正如我们在前文中讨论的那样,如果两个块被散列到在相同的目的地址,我们可以将它们异或成一个聚合块(XORed block),然后将聚合块存储到该地址中。这种数据聚合技术的利用不仅可以节省内存空间,还可以增强安全性。我们不仅支持从不同的位置访问相同的数据,数据聚合技术使得我们可以从同一个位置中获得不同的数据。这种混淆使得攻击者失去了关联内存访问的线索。
本发明的步骤(3)中,采用封装抽象的方法对CPU端的访存请求进行地址的转译。CPU不需要注意本发明所生成的地址变化,CPU、各级缓存,与外部存储器只需要遵循旧的工作方式。
本发明具有以下有益效果:
1、本发明使用O(1)通信开销,来混淆内存访问模式。本发明提出的数据冗余技术和数据聚合技术可以消除内存访问操作之间的关联性。在本发明的保护机制中,CPU能够从不同的位置访问相同的数据,也可以从同一个位置中获得不同的数据。
2、本发明将传统的位置映射图压缩为原来的几百分之一。这意味着本发明的高速缓存或缓冲区等部件,能够被直接部署在CPU片上。
附图说明
图1为本发明一种基于数据冗余的内存访问模式保护方法的流程示意图。
具体实施方式
本发明课模拟运行在gem5模拟器环境中。该模拟器提供了全真仿真环境,可以仿真包括CPU和内存模块在内的内存访问,而正恰是本发明旨在保护的操作。需要注意的是,下文当中的数学符号,在“发明内容”一节中已有约定,此处不再说明。
如图1所示,一种基于数据冗余的内存访问模式保护方法,具体包括如下步骤:
S01、首先构建由CPU,一级Cache,二级Cache,存储器控制器(部分继承原生Cache类)和内存组成的系统。其中存储器控制器在二级Cache和内存之间截取二级Cache的请求。同时预设好h个哈希函数。
S02、在初始化的过程中,首先监听内存端发的writeFunctional包,这些包是进行内存初始化的,包含一个block的物理地址以及这个block的数据。对于每lpage/lblock个block,我们将其合为一个page。对于每一个page,我们通过c个哈希函数算出c个目标地址,以及每个地址对应的bdst,并根据每个目标地址计算出的加密秘钥,对block的data进行加密,写到每个目标地址的位置,最后建立一个条目到位置映射图。
S03、初始化结束后,开始程序执行。当监听到CPU端发来的一个包时,无论读写,首先将包发给继承的原生Cache类部分,这个部分相当于上面所描述的Stash,并且包含写缓冲区(Write Buffer)。如果包需要操作的block在Stash中,则该操作会执行,并返回对应的response包;如果不在,则进入S04。
S04、根据这个包的物理地址phy_addr计算出其位置映射图的条目索引,获取对应条目。然后我们根据phy_addr和lpage与lblock计算出这在这个page中是第几个block,然后获取对应的v[i],即这个block的多少个副本已被访问。然后我们获取第v[i]+1个log(h),并调用第log(h)个哈希函数,通过phy_addr计算出真实的页物理地址;再用v[i]+1获取其真实偏移值,得到这个block的真实地址。
S05、根据上一个步骤获得的真实地址,我们首先从内存中读取这个block到stash中,使用phy_addr计算出加密key,对block进行解密,再重新执行这个包,完成读或写的操作。
当我们有一个block需要从Write Buffer中写入内存时,首先根据S04进行一个地址转换。但与S04不同的是,我们获取从v[i]+1到log(c)个副本对应的物理地址,然后全部写入这个block最新的数据。
作为一个具体的测试实例,本发明在15寸MacBook Pro上做了实际测试。测试中,我们将内存大小设置为4G,并选择整个程序执行的tick数作为我们方法效率的体现。
测试在模拟的计算机中运行了一套业界公认的标准检查程序(bench mark)。首先,对于这套标准检查程序中的每一格程序,我们分别记录了无本发明保护时的内存访问序列以及有本发明保护时的内存访问序列,用美国国家标准技术研究所统计测试软件(NIST Statistical Test Suite)进行序列随机性检测。结果显示,无本发明保护时的内存访问序列几乎不能通过随机性测试,而有本发明保护时的内存访问序列通过了大部分的随机性测试。这种结果说明本发明具有混淆内存访问模式的作用。另外,对运行时间的统计显示,在存储器控制器中按照本发明提出的方法进行修改之后,标准检查程序运行的时间开销只增加了4%,验证了本发明具有较低的时间开销的特性。
以上的测试表明,本发明不仅是可行的,而且同时具备了安全性、可靠性和实用性,让实际问题得以解决。
Claims (6)
1.一种基于数据冗余的内存访问模式保护方法,其特征在于,包括以下步骤:
(1)构建由CPU、存储器控制器和内存组成的系统,所述的存储器控制器包括位置映射图模块和存储器控制器缓存区;
其中,位置映射图模块将请求的物理地址映射到存有不同加密副本数据块的多个物理地址;
(2)初始化阶段,存储器控制器将目标数据块制作成若干个不同的数据块副本并加密,预加载到外部存储器中的随机位置,并建立目标数据块的位置映射图;
(3)在执行阶段,对于CPU端的访存请求,判断存储器控制器缓存区是否有目标数据块,若存在,执行步骤(4),若不存在,执行步骤(5);
(4)对于读的操作,返回存储器控制器缓存区中的目标数据块,对于写的操作,更新存储器控制器缓存区中的目标数据块;
(5)判断访存请求的种类,若为写请求,跳到步骤(6),反之,则为读请求,跳到步骤(9);
(6)消除位置映射图中过时副本的记录,位置映射图给出新的映射地址,用于写入新的数据块,并对新的数据块进行加密;
(7)由写缓冲区异步写入到内存中;
(8)结束处理,返回;
(9)位置映射图模块调用随机选择算法,给出其中一个副本的真实地址,以及所需的解密密钥;
(10)访问外部存储器,根据步骤(9)中获得的一个副本的真实地址,获得加密副本的内容;
(11)根据步骤(9)中获得的解密密钥,对加密副本进行解密;
(12)响应二级缓存的处理请求,并对位置映射图进行状态更新。
2.根据权利要求1所述的基于数据冗余的内存访问模式保护方法,其特征在于,步骤(2)中,所述的数据块副本通过AES计数器模式进行加密。
3.根据权利要求1所述的基于数据冗余的内存访问模式保护方法,其特征在于,步骤(2)中,所述的若干个不同的加密数据块副本之间通过基于XOR的数据聚合技术进行聚合,用于节省内存空间而不减少副本数量;其中,基于XOR的数据聚合技术允许CPU从不同位置获取相同的数据并从相同位置的获取不同的数据。
4.根据权利要求1所述的基于数据冗余的内存访问模式保护方法,其特征在于,步骤(2)中,还包括对所述目标数据块的位置映射图进行优化。
5.根据权利要求4所述的基于数据冗余的内存访问模式保护方法,其特征在于,所述位置映射图的优化方法包括:基于计算的地址映射、基于地址值的解密密钥生成、基于回卷的页面粒度地址映射以及基于数据聚合技术的哈希冲突处理。
6.根据权利要求1所述的基于数据冗余的内存访问模式保护方法,其特征在于,步骤(3)中,采用封装抽象的方法对CPU端的访存请求进行地址的转译。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810864259.9A CN109144894B (zh) | 2018-08-01 | 2018-08-01 | 基于数据冗余的内存访问模式保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810864259.9A CN109144894B (zh) | 2018-08-01 | 2018-08-01 | 基于数据冗余的内存访问模式保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144894A CN109144894A (zh) | 2019-01-04 |
CN109144894B true CN109144894B (zh) | 2023-04-07 |
Family
ID=64798623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810864259.9A Active CN109144894B (zh) | 2018-08-01 | 2018-08-01 | 基于数据冗余的内存访问模式保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144894B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110830561B (zh) * | 2019-10-25 | 2020-11-17 | 华中科技大学 | 一种异步网络环境下的多用户oram访问系统及方法 |
CN111404986B (zh) * | 2019-12-11 | 2023-07-21 | 杭州海康威视系统技术有限公司 | 数据传输处理方法、设备和存储介质 |
CN112181864B (zh) * | 2020-10-23 | 2023-07-25 | 中山大学 | 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 |
CN113987589B (zh) * | 2021-12-27 | 2022-03-18 | 飞天诚信科技股份有限公司 | 一种处理数据的方法、装置、计算机可读存储介质及装置 |
CN116132029B (zh) * | 2022-12-22 | 2023-09-26 | 泉城省实验室 | 基于三选一茫然传输协议的通配符模式匹配方法及系统 |
CN115887999B (zh) * | 2022-12-26 | 2024-02-27 | 青鸟消防股份有限公司 | 消防控制系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
CN102117262A (zh) * | 2010-12-21 | 2011-07-06 | 清华大学 | 用于多核处理器的Cache的主动复制方法及系统 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
US8909967B1 (en) * | 2012-12-31 | 2014-12-09 | Emc Corporation | Technique for secure computation |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN105589814A (zh) * | 2015-12-17 | 2016-05-18 | 北京大学 | 针对Path ORAM的叉型访问方法 |
CN105893274A (zh) * | 2016-05-11 | 2016-08-24 | 华中科技大学 | 一种面向异构内存系统建立检查点的装置 |
CN107329692A (zh) * | 2017-06-07 | 2017-11-07 | 杭州宏杉科技股份有限公司 | 一种数据重删的方法及存储设备 |
CN107430671A (zh) * | 2015-03-31 | 2017-12-01 | 西门子公司 | 用于在缓存中保护对安全重要的数据的方法 |
CN107995299A (zh) * | 2017-12-08 | 2018-05-04 | 东北大学 | 一种云环境下抗访问模式泄露的盲存储方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3005949C (en) * | 2015-12-15 | 2022-08-02 | Jan Jaeger | Protection key management and prefixing in virtual address space legacy emulation system |
KR20180041898A (ko) * | 2016-10-17 | 2018-04-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2018
- 2018-08-01 CN CN201810864259.9A patent/CN109144894B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
CN102117262A (zh) * | 2010-12-21 | 2011-07-06 | 清华大学 | 用于多核处理器的Cache的主动复制方法及系统 |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
US8909967B1 (en) * | 2012-12-31 | 2014-12-09 | Emc Corporation | Technique for secure computation |
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN107430671A (zh) * | 2015-03-31 | 2017-12-01 | 西门子公司 | 用于在缓存中保护对安全重要的数据的方法 |
CN105589814A (zh) * | 2015-12-17 | 2016-05-18 | 北京大学 | 针对Path ORAM的叉型访问方法 |
CN105893274A (zh) * | 2016-05-11 | 2016-08-24 | 华中科技大学 | 一种面向异构内存系统建立检查点的装置 |
CN107329692A (zh) * | 2017-06-07 | 2017-11-07 | 杭州宏杉科技股份有限公司 | 一种数据重删的方法及存储设备 |
CN107995299A (zh) * | 2017-12-08 | 2018-05-04 | 东北大学 | 一种云环境下抗访问模式泄露的盲存储方法 |
Non-Patent Citations (2)
Title |
---|
Free Recursion and Integrity Verification for Position-based Oblivious RAM;Christopher W. Fletchery等;《ASPLOS"15》;20150331;全文 * |
基于二叉树存储的多用户ORAM方案;孙晓妮等;《软件学报》;20160122;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109144894A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144894B (zh) | 基于数据冗余的内存访问模式保护方法 | |
US11010310B2 (en) | Convolutional memory integrity | |
Ren et al. | Design space exploration and optimization of path oblivious ram in secure processors | |
Awad et al. | Obfusmem: A low-overhead access obfuscation for trusted memories | |
Ren et al. | Constants count: Practical improvements to oblivious {RAM} | |
KR101880075B1 (ko) | 중복 제거 기반 데이터 보안 | |
EP3758287B1 (en) | Deterministic encryption key rotation | |
Peterson | Cryptkeeper: Improving security with encrypted RAM | |
Elbaz et al. | Hardware mechanisms for memory authentication: A survey of existing techniques and engines | |
Ren et al. | Integrity verification for path oblivious-ram | |
US11775177B2 (en) | Integrity tree for memory integrity checking | |
JP2014523020A (ja) | 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 | |
WO2013095473A1 (en) | Systems and methods for protecting symmetric encryption keys | |
CN110945509A (zh) | 用于存储器安全的计数器完整性树 | |
Elbaz et al. | A parallelized way to provide data encryption and integrity checking on a processor-memory bus | |
Na et al. | Common counters: Compressed encryption counters for secure GPU memory | |
CN112906015A (zh) | 一种基于硬件标签的内存敏感数据加密保护系统 | |
US20230259660A1 (en) | Integrity tree for memory security | |
Yuan et al. | Adaptive security support for heterogeneous memory on gpus | |
Liang et al. | Memcloak: Practical access obfuscation for untrusted memory | |
Bao et al. | Exploring timing side-channel attacks on path-ORAMs | |
KR102365263B1 (ko) | 하드웨어 기반의 gpu 메모리 보호를 위한 효율적인 암호화 방법 및 장치 | |
Umar et al. | Softvn: Efficient memory protection via software-provided version numbers | |
Wang et al. | Self-reinforcing memoization for cryptography calculations in secure memory systems | |
Guo et al. | Performance-enhanced integrity verification for large memories |
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 |