CN114117506B - 一种适用于tee混淆计算的oram访问方法 - Google Patents

一种适用于tee混淆计算的oram访问方法 Download PDF

Info

Publication number
CN114117506B
CN114117506B CN202010875525.5A CN202010875525A CN114117506B CN 114117506 B CN114117506 B CN 114117506B CN 202010875525 A CN202010875525 A CN 202010875525A CN 114117506 B CN114117506 B CN 114117506B
Authority
CN
China
Prior art keywords
oram
data block
data
controller
node
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
CN202010875525.5A
Other languages
English (en)
Other versions
CN114117506A (zh
Inventor
王庆豪
史闻博
鲁宁
韩旭军
徐欣
黄儒霄
刘明曦
张永欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University Qinhuangdao Branch
Original Assignee
Northeastern University Qinhuangdao Branch
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 Northeastern University Qinhuangdao Branch filed Critical Northeastern University Qinhuangdao Branch
Priority to CN202010875525.5A priority Critical patent/CN114117506B/zh
Publication of CN114117506A publication Critical patent/CN114117506A/zh
Application granted granted Critical
Publication of CN114117506B publication Critical patent/CN114117506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种适用于TEE混淆计算的ORAM访问方法,属于信息安全技术领域。该方法包括五个阶段:向ORAM Tree中填充数据块、根据源程序请求从ORAM Tree中读取目标数据块、源程序执行被取出的数据块、对数据块写回路径进行两次元数据扫描、向ORAM Tree写回数据块;该方法充分利用了TEE的安全特性,减少了不必要的访存开销;该方法通过额外的混淆数据访问操作来保护ORAM中敏感数据结构的访问模式,进而抵御TEE中存在的侧信道攻击。

Description

一种适用于TEE混淆计算的ORAM访问方法
技术领域
本发明涉及信息安全技术领域,特别涉及一种适用于TEE混淆计算的ORAM访问方法。
背景技术
随着云计算的高速发展,越来越多的计算任务被交由云服务器处理,受到云平台的控制,这严重影响了用户的隐私安全。同态加密技术能够实现数据在密文状态下的运算,为用户的隐私提供一定的安全保障。然而,对数据的加密运算只能保证输入/输出数据的隐私,用户对数据、代码的访问模式(即,用户程序在执行过程中对代码、数据地址的一系列访问序列)依然暴露在云服务器的视野中,这会导致大量用户隐私信息的泄露。因此,需要一种有效的技术,来隐藏程序执行过程中的访问模式,实现对计算的混淆。
茫然随机访问机(Oblivious Random Access Machine,ORAM)是一种有效的访问模式保护技术,它通过访问多个存储位置来混淆访问目标,从而实现存储的安全访问。在文献“Nayak Kartik,et al.HOP:Hardware makes Obfuscation Practical.Network&Distributed System Security Symposium 2017.”中,Nayak Kartik等人利用现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)设计了一种基于ORAM的安全处理器HoP。该处理器能够保护程序执行过程中代码与数据的访问模式,实现计算的混淆。然而,该方法需要专用硬件的支持,不具有通用性。
可信执行环境(Trusted Execution Environment,TEE)技术能够在计算机中建立的安全的计算区域,并为内部代码和数据提供硬件级的安全隔离和保护。在商用硬件的TEE中实现基于ORAM的混淆计算方案,能够有效提高方案的通用性。然而,现有的ORAM方案(如,Path ORAM、Circuit ORAM)不依赖于TEE提供的安全保护。因此,将这些方案直接应用于TEE中来实现混淆计算无法有效的利用TEE提供的安全保障,导致不必要的计算开销。此外,现有的商用TEE技术(如,ARM TrustZone、Intel SGX)存在侧信道攻击问题,攻击者可以利用这些侧信道攻击获取TEE中某些数据的访问模式从而推测出用户的隐私信息。虽然,ORAM可以隐藏用户数据的访问模式,但是它包含的一些敏感数据结构的访问模式仍需要额外的保护,例如,Hop中利用专用硬件提供了足够大小的寄存器(现有的商品硬件无法提供足够大小的寄存器)来存储这些数据,从而保证相关的敏感信息不会泄露访问模式。因此,在TEE中实现基于ORAM的混淆计算方案,需要额外为ORAM中的敏感数据结构提供有效的保护方案。
发明内容
为了解决上述问题,本发明提供了一种适用于TEE混淆计算的ORAM访问方法,该方法基于TEE提供的安全环境,有效的隐藏了程序执行时代码和数据的访问模式;利用TEE的安全特性,有效的减少了不必要的访问开销。同时,使用了混淆数据操作保护ORAM的敏感数据结构,隐藏了敏感数据的访问模式。
为了行文方便,本文定义如下术语:
ORAM Tree(ORAM存储模块):该存储模块以完全二叉树的形式存储用户的数据块。设该完全二叉树的结点数为N,则树的深度为LogN(底数为2)。树的结点又称为桶,每个桶包含Z个大小相同的数据块。其中,真实数据块的数量不能超过1/2*(N+1)*Z,其余为虚拟数据块;
Address Translation Table(地址转换表):用于记录程序访问的数据块的虚拟地址和物理地址的对应关系。地址转换表的表项数量与真实数据块的数量相同,通常不大于1/2*(N+1)*Z。
Position Map(位置表):用于存放数据块与ORAM Tree中叶子结点的对应关系。该对应关系在ORAM Tree数据块填充阶段随机分配,其中该叶子结点代表的路径必须包含该数据块所在的结点。位置表的表项数量与真实数据块的数量相同,通常不大于1/2*(N+1)*Z。
PM Update Queue(Position Map更新队列):用于暂时记录ORAM Tree中数据块的位置变化信息,以供Position Map未来的更新。更新队列的队列数量由用户设置,通常为常数。
Deepest Metadata(深度元数据):记录某条路径中,每个结点的数据块可以存放至该路径的最深位置(路径自根结点向叶子结点,越靠近叶子结点则越深)。为了便于理解,首先对数据块可以存放至的路径最深位置进行定义:设ORAM Tree中一条路径为Path1,则Path1上的数据块B能够放置在Path1中的最深位置为B在Position Map中对应的路径PathB与路径Path1的第一个共同结点(自叶子结点向根结点)。深度元数据是一个大小为LogN的数组。设Deepest[i]为路径Path1的深度元数据,i∈[1,LogN],则Deepest[i]=L表示路径Path1中第i层的数据块最深可以被放置到L层上的结点中。其中,Deepest[1]对应路径的根结点,Deepest[LogN]对应路径的叶子结点。
ORAM Controller(ORAM控制器):用于实现ORAM的相关操作,包括ORAM Tree的填充、数据块的读取与写回、元数据扫描、Position Map的查询与更新等。
Pad(执行板块):Pad是一个位置固定的内存区域,与一个数据块的大小相等,用于存放从ORAM Tree中读取出来的数据块。被取至Pad上的数据块,将被源程序调用。
数据混淆操作:数据混淆操作能够用来隐藏关键数据的访问模式。本发明使用X86架构下的无条件分支指令CMOV实现了数据混淆操作。具体来说,CMOV指令的输入参数包括条件、源操作数、目标操作数,如果条件为真,指令则将源操作数复制到目标操作数的地址中,反之则不赋值。由于该指令执行时,源操作数和目标操作数都将被取出并存在寄存器中,因此无论是否赋值成功,攻击者看到的都是相同的访问模式。下列代码显示了使用CMOV指令实现的混淆数据赋值操作。
本发明的原理是,对于源程序的访问请求,首先查询Address Translation Table将目标虚拟地址转化为数据地址,然后检索Position Map获取相应的leaf标签。之后,无需将leaf标签对应的整条路径读出,而是直接检索该路径,并将目标数据块取至位置固定的Pad供源程序使用。在写回数据时,为数据块随机新的leaf标签,并对Pad与原路径的数据块进行深度元数据扫描。最终,根据扫描出的深度元数据将Pad中的数据块写回原路径,并调整原路径上数据块的位置。尤其针对Address Translation Table、Position Map以及ORAMTree等数据的查询与更新使用了混淆数据操作,有效的隐藏了敏感数据的访问模式。
本发明提供的方法包含五个阶段,分别为ORAM Tree数据块填充阶段、ORAM Tree数据块请求阶段、ORAM Tree数据块执行阶段、元数据扫描阶段、ORAM Tree数据块写回阶段。具体包含如下步骤:
A.在ORAM Tree数据块填充阶段,ORAM Controller负责将数据块填充进ORAMTree,并使用混淆数据操作更新Address Translation Table和Position Map中与数据块对应的表项;该阶段只在ORAM Tree初始化的过程中执行一次;具体执行步骤如下:
A1.对于一个需要被填充进ORAM Tree的数据块,ORAM Controller首先为其随机一个叶子结点leaf;
A2.ORAM Controller将数据块填充到leaf对应路径的结点中;以叶子结点至根结点的顺序,寻找结点中的空位,并存放数据块;
A3.根据数据块被存放的位置,ORAM Controller将数据块虚拟地址与物理地址的对应关系更新至Address Translation Table;使用混淆数据操作对Address TranslationTable进行更新,隐藏表项与数据块的对应关系;
A4.根据数据块被存放的位置与随机的叶子结点leaf,ORAM Controller将数据块与叶子结点的关系更新至Position Map;使用混淆数据操作对Position Map进行更新,隐藏表项与数据块的对应关系;
A5.重复执行A1-A4的操作,直至完成对所有数据块的填充;
B.在ORAM Tree数据块读取阶段,ORAM Controller通过查询AddressTranslation Table和Position Map将源程序请求的数据块地址转换为数据块对应的叶子结点标签,通过访问与该叶子结点对应的路径获取目标数据块;具体执行如下操作:
B1.源程序向ORAM Controller发送数据块请求Q1=(operation,address,type);其中,operation表示该请求需要进行的操作,address表示目标数据块的虚拟地址,type表示数据块的类型;
B2.ORAM Controller对Q1请求进行权限检查;其中,type值为data时,可以执行读操作与写操作,type为代码块的请求只能进行读操作;
B3.ORAM Controller使用混淆数据操作访问Address Translation Table,获取Q1中的虚拟地址对应的物理地址;
B4.ORAM Controller使用混淆数据操作查询Position Map,根据目标数据块的物理地址获取对应的leaf标签;
B5.ORAM Controller使用混淆数据操作查询获取到的leaf标签对应的ORAM Tree路径Path1,并取出目标数据块,存于Pad中;
C.在ORAM Tree数据块执行阶段,源程序对Pad中数据块执行数据处理操作;完成操作后,向ORAM Controller发起下一次数据块请求;具体执行如下操作:
C1.源程序对Pad中的数据块执行数据处理操作;由于Pad在内存中的位置固定,源程序的数据访问模式将一直显示为固定位置,有效隐藏数据块的访问模式;
C2.完成当前数据操作后,源程序向ORAM Controller发送下一个数据块请求Q2=(operation,address,type);
D.在元数据扫描阶段,ORAM Controller收到Q2后,ORAM Controller进行两次元数据扫描,将当前Pad中的数据块写回ORAM Tree;具体执行如下操作:
D1.ORAM Controller为该数据块随机一个新的叶子结点标签;
D2.ORAM Controller将Pad与Path1路径上的数据块结合为一条新的路径Path2,将Pad中的数据块置于根结点之上作为新的根结点,路径Path2自上至下为Pad数据块结点至叶子结点,对Path2进行第一次元数据扫描操作;第一次元数据扫描操作步骤为:
D2.1创建一个临时数组Temp[i],i∈[1,LogN],用于记录第一次扫描得到的结果;
D2.2自根结点向叶子结点扫描Path2中每个结点Nj中的数据块,j∈[0,LogN],其中N0为Pad数据块代表的结点;其中,每扫描一个结点Nj,基于Path2计算Nj中数据块能够放置的最深层级Lj
D2.3当扫描至结点Nj中数据块放置在最深层级Li时,则在该层对应的Temp数组中记录Nj的层级Lj,即令Temp[i]=Lj,第一次元数据扫描完成;
D3.ORAM Controller对路径Path2进行第二次元数据扫描;
E.在ORAM Tree数据块写回阶段,ORAM Controller将Pad中的数据块写回路径Path1,并更新数据块对应的Position Map表项中的信息;具体执行如下操作:
E1.ORAM Controller对路径Path2自根结点向叶子结点执行数据块写回操作。
E2.ORAM Controller基于PM Update Queue完成对Position Map的更新。
E3.ORAM Tree数据块写回阶段结束,ORAM Controller将根据请求Q2进行下一轮的数据读取操作。
进一步的,所述步骤B3中ORAM Controller使用混淆数据操作,其具体操作为:ORAM Controller比较Q1中的数据块虚拟地址与Address Translation Table中的每一表项的虚拟地址,通过比较的结果,来决定是否执行真实的取值操作来获取对应的物理地址;当ORAM Controller完成对所有表项的混淆数据操作后,只有与Q1中虚拟地址相同的表项中的值才被真实的取出,在外部只能观察到ORAM Controller对每一表项执行了相同的访问操作。
进一步的,所述步骤D3中ORAM Controller对路径Path2进行第二次元数据扫描,具体为:自叶子结点向根结点扫描Path2中每个结点Nj,j∈[0,LogN],其中:N0为Pad数据块代表的结点;基于D2中得出的元数据数组Temp[i]计算每个结点中的数据能够放至的最深的层级,并将结果记录至元数据数组Deepest[i]中;Deepest[i]=Lj表示结点Ni中的数据块最深能放至Lj层,以完成第二次数据扫描。
进一步的,所述步骤E1在写回过程的具体操作为:
E1.1 ORAM Controller取出根结点中的数据块B,并基于元数据扫描结果Deepest[i]自根结点向叶子结点检索。
E1.2当检索到B能够放置的最深层级时,将数据块B放至该层的结点中。或者,在检索到具有更深放置位置的数据块B1时,将B放置该层,并将B1取出。
E1.3如未出现上述两种情况,ORAM Controller仍然会执行虚假的数据放置操作,以隐藏数据的访问模式。
E1.4数据块被放置后,ORAM Controller将在PM Update Queue中记录该数据块需要在Position Map中更新的内容,为Position Map的最终更新做准备。
E1.5 ORAM Controller重复上述操作,直至整条路径检索完毕,数据块的写回操作完成。
E1.6对于路径Path2的数据写回操作与PM Update Queue的记录操作使用数据混淆操作来隐藏数据块的访问模式。
本发明的有益效果是:
本发明提供一种适用于TEE混淆计算的ORAM访问方法,该方法能够隐藏TEE中程序执行的访问模式,实现程序的混淆计算;该方法实现于TEE中,并利用TEE提供的安全保障,优化ORAM访存操作,减少了计算开销。同时,本方法使用混淆数据操作保护ORAM访问过程中的敏感数据结构,从而有效的隐藏敏感数据的访问模式。具体地,本发明具有如下优点:
(一)本发明提供的适用于TEE混淆计算的ORAM访问方法,将ORAM访问方法和TEE结合,消除对专用硬件的依赖,具有通用性;
(二)本发明提供的适用于TEE混淆计算的ORAM访问方法,利用TEE提供的安全保障来优化ORAM访存操作,减少计算开销;
(三)本发明提供的适用于TEE混淆计算的ORAM访问方法,通过对ORAM中的敏感数据结构执行混淆数据操作来保护数据的访问模式,进而抵御TEE存在的侧信道攻击。
附图说明
图1是本发明提供的一种适用于TEE混淆计算的ORAM访问方法的流程框图。
图2是本发明提供的一种适用于TEE混淆计算的ORAM访问方法中ORAM Tree数据块填充的流程框图。
图3是本发明提供的一种适用于TEE混淆计算的ORAM访问方法中数据块请求的流程框图。
图4是本发明提供的一种适用于TEE混淆计算的ORAM访问方法中数据块执行的流程框图。
图5是本发明提供的一种适用于TEE混淆计算的ORAM访问方法中数据块写回的流程框图。
注:图1-图5中灰色部分为基于数据混淆操作实现的相关执行过程,因此灰色部分的执行不会泄露数据的访问模式。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
本发明提供一种适用于TEE混淆计算的ORAM访问方法,是一种新型的ORAM访问方法,该方法能够隐藏TEE中程序执行的访问模式,实现程序的混淆计算。该方法利用TEE提供的安全保障优化了ORAM访存操作,并使用混淆数据操作隐藏ORAM访问过程中的敏感数据结构,从而有效隐藏其访问模式。
本发明提供的方法包含五个阶段,分别为ORAM Tree数据块填充阶段、ORAM Tree数据块请求阶段、ORAM Tree数据块执行阶段、元数据扫描阶段、ORAM Tree数据块写回阶段。具体包含如下步骤:
A.ORAM Tree数据块填充阶段只在ORAM Tree初始化的过程中执行一次。在该阶段,ORAM Controller负责将数据块填充进ORAM Tree,并使用混淆数据操作更新AddressTranslation Table和Position Map中与数据块对应的表项。具体执行步骤如下:
A1.对于一个需要被填充进ORAM Tree的数据块,ORAM Controller首先为其随机一个叶子结点leaf;
A2.ORAM Controller将数据块填充到leaf对应路径的结点中,以叶子结点至根结点的顺序,寻找结点中的空位,并存放数据块。
A3.根据数据块被存放的位置,ORAM Controller将数据块虚拟地址与物理地址的对应关系更新至Address Translation Table。为了隐藏表项与数据块的对应关系,Address Translation Table更新基于混淆数据操作。具体为:ORAM Controller对AddressTranslation Table中的每一表项进行赋值操作,并通过控制混淆数据操作中条件的值,来决定操作是否为真实的赋值操作。在每一次Address Translation Table更新中,ORAMController需要完成对所有表项的混淆赋值操作,其中只有一次赋值是真实的。外部只能观察到ORAM Controller对每一表项执行了相同的访问操作,但无法确定对哪一个表项执行了真实的赋值操作。
A4.根据数据块被存放的位置与随机的叶子结点leaf,ORAM Controller将数据块与的叶子结点的关系更新至Position Map。该操作同样基于混淆数据操作,其具体操作与A3中类似。
A5.重复执行A1-A4的操作,直至完成对所有数据块的填充。
B.在ORAM Tree数据块读取阶段,ORAM Controller通过查询AddressTranslation Table和Position Map将源程序请求的数据块地址转换为数据块对应的叶子结点标签,并通过访问与该叶子结点对应的路径获取目标数据块。具体执行如下操作:
B1.源程序向ORAM Controller发送数据块请求Q1=(operation,address,type)。其中,operation表示该请求需要进行的操作(如,读操作或写操作),address表示目标数据块的虚拟地址,type表示数据块的类型(如,代码块或数据块);
B2.ORAM Controller首先对Q1请求进行权限检查。其中,type值为data时,可以执行读操作与写操作,type为代码块的请求只能进行读操作,即operation=write,且type=code时,拒绝请求。
B3.ORAM Controller使用混淆数据操作访问Address Translation Table,获取Q1中的虚拟地址对应的物理地址。具体来说,ORAM Controller比较Q1中的数据块虚拟地址与Address Translation Table中的每一表项的虚拟地址,通过比较的结果,来决定是否执行真实的取值操作来获取对应的物理地址。当ORAM Controller完成对所有表项的混淆数据操作后,只有与Q1中虚拟地址相同的表项中的值才被真实的取出,而外部只能观察到ORAM Controller对每一表项执行了相同的访问操作,无法确定ORAM Controller对哪一个表项执行了真实的取值操作。
B4.ORAM Controller使用混淆数据操作查询Position Map,其具体操作与B3中类似,根据目标数据块的物理地址获取对应的leaf标签。
B5.ORAM Controller使用混淆数据操作查询获取到的leaf标签对应的ORAM Tree路径Path1,并取出目标数据块,存于Pad中。其具体操作与B3中类似。
C.在ORAM Tree数据块执行阶段,源程序首先对Pad中数据块执行数据处理操作。完成操作后,向ORAM Controller发起下一次数据块请求。具体执行如下操作:
C1.源程序对Pad中的数据块执行数据处理操作。由于Pad在内存中的位置固定,源程序的数据访问模式将一直显示为固定位置,因此可以有效的隐藏数据的访问模式;
C2.源程序完成当前数据操作后,ORAM Controller向发送下一个数据块请求Q2=(operation,address,type);
D.在元数据扫描阶段,ORAM Controller收到Q2后,首先需要将当前Pad中的数据块写回ORAM Tree。为了将Pad中的数据块顺利写回ORAM Tree,ORAM Controller进行两次元数据扫描,具体执行如下操作:
D1.ORAM Controller首先为该数据块随机一个新的叶子结点标签;
D2.ORAM Controller将Pad与Path1路径上的数据块结合为一条新的路径Path2,其中:将Pad中的数据块置于根结点之上作为新的根结点,即路径Path2自上至下为Pad数据块结点至叶子结点,并对Path2进行第一次元数据扫描操作。第一次元数据扫描操作步骤为:
D2.1创建一个临时数组Temp[i],i∈[1,LogN],用于记录第一次扫描得到的结果;
D2.2自根结点向叶子结点扫描Path2中每个结点Nj(j∈[0,LogN],其中N0为Pad数据块代表的结点)中的数据块,并记录该数据块能放至该路径最深的层级Li。为了便于理解,这里假设扫描中的结点中只包含一个数据块,即Z=1。进一步地,当Z>1时,只需记录该结点中数据块能放至最深的层级即可。
D2.3当扫描至结点Nj中数据块能放置的最深层级Li时,则在该层对应的Temp数组中记录Nj的层级Lj,即令Temp[i]=Lj;此时,第一次元数据扫描完成。
D3.ORAM Controller对路径Path2进行第二次元数据扫描。其步骤为:
自叶子结点向根结点扫描Path2中每个结点Nj,j∈[0,LogN],其中N0为Pad数据块代表的结点。基于D2中得出的元数据数组Temp[i]计算每个结点中的数据能够放至的最深的层级,并将结果记录至元数据数组Deepest[i]中。Deepest[i]=Lj表示结点Ni中的数据块最深能放至Lj层,第二次数据扫描完成。
E.在ORAM Tree数据块写回阶段,ORAM Controller将Pad中的数据块写回路径Path1,并更新数据块对应的Position Map表项中的信息。具体执行如下操作:
E1.ORAM Controller对路径Path2自根结点向叶子结点执行数据块写回操作。
在写回过程中的具体操作为:
E1.1ORAM Controller首先取出根结点中的数据块B(即,Pad中的数据块),并基于元数据扫描结果Deepest[i]自根结点向叶子结点检索。
E1.2当检索到B能够放置的最深层级时,将数据块B放至该层的结点中。或者,在检索到具有更深放置位置的数据块B1时,将B放置该层,并将B1取出。如果未出现上述两种情况,ORAM Controller仍然会执行虚假的数据放置操作(基于数据混淆操作实现),以隐藏数据的访问模式。
E1.3数据块被放置后,ORAM Controller将在PM Update Queue中记录该数据块需要在Position Map中更新的内容(如,数据块的新物理地址等信息),为Position Map的最终更新做准备。
E1.4 ORAM Controller重复上述操作,直至整条路径检索完毕,数据块的写回操作完成。
需要注意的是,对于路径Path2的数据写回操作与PM Update Queue的记录操作也使用数据混淆操作来隐藏数据块的访问模式,因此不会泄露敏感信息。
E2.ORAM Controller基于PM Update Queue完成对Position Map的更新。使用Position Map更新队列是为了将Position Map的更新操作延后到数据写回操作之后,减少使用数据混淆操作更新Position Map的次数,从而提高了效率。
E3.此时,ORAM Tree数据块写回阶段结束,ORAM Controller将根据请求Q2进行下一轮的数据读取操作。
下面通过实例对本发明做进一步说明:
对于一个ORAM Tree,假设其结点数为15,每个结点中包含1个数据块,且真实数据块数为8(分别为B1,B2,…,B8),则ORAM Tree的深度为4,Address Translation Table与Position Map的数组大小都为8(分别表示为ATT[n],PM[m],其中n∈[1,8],m∈[1,8])。更为具体地,ATT[n]=(v-add,p-add),其中v-add表示数据块的虚拟地址,p-add表示数据块对应的物理地址。PM[m]=(p-add,leaf),其中leaf表示数据块对应在ORAM Tree上的路径。假设PM Update Queue的队列大小固定为3,且现有一个来自源程序的数据请求Q=(write,v-add,data)。本发明的工作包括五个阶段,如图1所示,分别为ORAM Tree数据块填充阶段、ORAM Tree数据块请求阶段、ORAM Tree数据块执行阶段、元数据扫描阶段、ORAM Tree数据块写回阶段。
图2是ORAM Tree数据块填充的流程图。根据图2所示流程,ORAM Controller接受新的数据块B1,并为其随机一个叶子结点leaf B1作为填充路径。进行填充时,ORAMController从leaf B1开始向根结点执行检查,遇到空结点则将B1放置其中。之后,ORAMController根据B1当前的物理地址和路径信息,更新ATT[n]与PM[m]中内容。此时,ATT[n]与PM[m]为两个空的数组,但是为了保证安全性更新过程需要基于数据混淆操作遍历上述数组的所有元素,并各随机选择一个空的元素填充B1的地址和路径信息。B2,…,B8的填充操作与B1相同。
图3是ORAM Tree数据块请求的流程图。根据图3所示流程,ORAM Controller首先接收到源程序发送的数据块请求Q=(write,v-add,data),并对该请求进行检查(如,对代码块的写操作将会被拒绝)。通过检查后,ORAM Controller首先访问ATT[n],将Q中的add与ATT[n]中元素的v-add进行对比,将成功匹配的元素中的p-add提取出来。这里对ATT[n]的访问操作也是基于数据混淆操作实现的,因此外部并不知晓ATT[n]的那个元素被读取了。然后,ORAM Controller访问PM[m],将提取出来的p-add与PM[m]中元素的p-add进行对比,将成功匹配的元素中的leaf提取出来。同样,该过程也使用数据混淆操作实现。上述过程实现了数据块的虚拟地址到ORAM Tree中路径的转换。获取到leaf后,ORAM Controller使用混淆数据操作检索leaf路径上的所有结点,从而获取目标数据块。最后,ORAM Controller将数据块提取至Pad中。
图4是数据块执行的流程图。ORAM Controller将数据块提取至Pad后,将会给源程序反馈。获得反馈后,源程序将对Pad中的数据块执行相应的写操作。之后,源程序将向ORAMController发送下一个数据块请求。
图5是ORAM Tree数据块写回的流程图。根据图5所示流程,在进行下一次数据块访问之前,ORAM Controller需要完成对现存Pad中数据块的写回操作。首先,ORAMController为Pad中的数据块随机一个叶子结点作为其新路径。之后,ORAM Controller需要完成对源路径的两次元数据扫描。ORAM Controller将Pad的数据块作为leaf路径上新的根结点,即位于原根结点之上。第一次元数据扫描,将自根结点向叶子结点扫描该路径上的每个结点Nx(x∈[0,4])中的数据块,计算该数据块能放至该路径最深的层级,并记录在一个临时数组Temp[t](t∈[0,4])中。第二次元数据扫描,将自叶子结点向根结点扫描路径中每个结点Nx,并基于Temp[t]计算每个结点中的数据能够放至的最深的层级,并将结果记录至元数据数组Deepest[y](y∈[1,4])。此时,Deepest[y]=L表示结点Ny中的数据块最深能放至L层。完成两次元数据扫描后,ORAM Controller将完成最终的写回过程。ORAMController将Pad中的数据块B取出,并自路径的根结点向叶子结点进行检索。当检索到B能够放置的最深层级时,将数据块B放至该层的结点中。或者,当前结点中存在数据块具有比B更深的放置位置时,将B放至该结点,并将该结点的数据块取出。需要注意的是,即使未出现上述两种情况,ORAM Controller仍然会执行虚假的数据放置操作(基于数据混淆操作实现),以隐藏数据的访问模式。数据块被放置后,ORAM Controller将在PM Update Queue中记录该数据块需要在Position Map中更新的内容(如,数据块的新物理地址等信息),为Position Map的最终更新做准备。之后,ORAM Controller重复上述操作,直至整条路径检索完毕。最终,ORAM Controller基于PM Update Queue完成对Position Map的更新。完成上述写回操作后,ORAM Controller将继续执行下一轮的数据请求。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改,等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (4)

1.一种适用于TEE混淆计算的ORAM访问方法,其特征在于:该方法包含五个阶段,分别为:ORAM Tree数据块填充阶段、ORAM Tree数据块请求阶段、ORAM Tree数据块执行阶段、元数据扫描阶段、ORAM Tree数据块写回阶段,具体包含如下步骤:
A. 在ORAM Tree数据块填充阶段,ORAM Controller负责将数据块填充进ORAM Tree,并使用混淆数据操作更新Address Translation Table和Position Map中与数据块对应的表项;该阶段只在ORAM Tree初始化的过程中执行一次;具体执行步骤如下:
A1. 对于一个需要被填充进ORAM Tree的数据块,ORAM Controller首先为其随机一个叶子结点leaf;
A2. ORAM Controller将数据块填充到leaf对应路径的结点中;以叶子结点至根结点的顺序,寻找结点中的空位,并存放数据块;
A3. 根据数据块被存放的位置,ORAM Controller将数据块虚拟地址与物理地址的对应关系更新至Address Translation Table;使用混淆数据操作对Address TranslationTable进行更新,隐藏表项与数据块的对应关系;
A4. 根据数据块被存放的位置与随机的叶子结点leaf,ORAM Controller将数据块与叶子结点的关系更新至Position Map;使用混淆数据操作对Position Map进行更新,隐藏表项与数据块的对应关系;
A5. 重复执行A1-A4的操作,直至完成对所有数据块的填充;
B. 在ORAM Tree数据块读取阶段,ORAM Controller通过查询Address TranslationTable和Position Map将源程序请求的数据块地址转换为数据块对应的叶子结点标签,通过访问与该叶子结点对应的路径获取目标数据块;具体执行如下操作:
B1. 源程序向ORAM Controller发送数据块请求Q1=(operation,address,type);其中,operation表示该请求需要进行的操作,address表示目标数据块的虚拟地址,type表示数据块的类型;
B2. ORAM Controller对Q1请求进行权限检查;其中,type值为data时,可以执行读操作与写操作,type为代码块的请求只能进行读操作;
B3. ORAM Controller使用混淆数据操作访问Address Translation Table,获取Q1中的虚拟地址对应的物理地址;
B4. ORAM Controller使用混淆数据操作查询Position Map,根据目标数据块的物理地址获取对应的leaf标签;
B5. ORAM Controller使用混淆数据操作查询获取到的leaf标签对应的ORAM Tree路径Path1,并取出目标数据块,存于Pad中;
C. 在ORAM Tree数据块执行阶段,源程序对Pad中数据块执行数据处理操作;完成操作后,向ORAM Controller发起下一次数据块请求;具体执行如下操作:
C1. 源程序对Pad中的数据块执行数据处理操作;由于Pad在内存中的位置固定,源程序的数据访问模式将一直显示为固定位置,有效隐藏数据块的访问模式;
C2. 完成当前数据操作后,源程序向ORAM Controller发送下一个数据块请求Q2=(operation,address,type);
D. 在元数据扫描阶段,ORAM Controller收到Q2后,ORAM Controller进行两次元数据扫描,将当前Pad中的数据块写回ORAM Tree;具体执行如下操作:
D1. ORAM Controller为该数据块随机一个新的叶子结点标签;
D2. ORAM Controller将Pad与Path1路径上的数据块结合为一条新的路径Path2,将Pad中的数据块置于根结点之上作为新的根结点,路径Path2自上至下为Pad数据块结点至叶子结点,对Path2进行第一次元数据扫描操作; 第一次元数据扫描操作步骤为:
D2.1创建一个临时数组Temp[i],i∈[1,LogN],用于记录第一次扫描得到的结果;
D2.2自根结点向叶子结点扫描Path2中每个结点Nj中的数据块, j∈[0, LogN],其中N为Pad数据块代表的结点;其中,每扫描一个结点Nj,基于Path2计算Nj中数据块能够放置的最深层级Lj
D2.3在扫描过程中,当扫描至已扫描结点Nj对应的最深层级Lj时,则在该层对应的Temp数组中记录Nj的最深层级Lj,即令Temp[i]= Lj,第一次元数据扫描完成;
D3. ORAM Controller 对路径Path2进行第二次元数据扫描;
E. 在ORAM Tree数据块写回阶段,ORAM Controller将Pad中的数据块写回路径Path1,并更新数据块对应的Position Map表项中的信息;具体执行如下操作:
E1. ORAM Controller对路径Path2自根结点向叶子结点执行数据块写回操作;
E2. ORAM Controller基于PM Update Queue完成对Position Map的更新;
E3. ORAM Tree数据块写回阶段结束,ORAM Controller将根据请求Q2进行下一轮的数据读取操作。
2.根据权利要求1所述的一种适用于TEE混淆计算的ORAM访问方法,其特征在于:所述步骤B3中ORAM Controller使用混淆数据操作,其具体操作为:ORAM Controller比较Q1中的数据块虚拟地址与Address Translation Table中的每一表项的虚拟地址,通过比较的结果,来决定是否执行真实的取值操作来获取对应的物理地址;当ORAM Controller完成对所有表项的混淆数据操作后,只有与Q1中虚拟地址相同的表项中的值才被真实的取出,在外部只能观察到ORAM Controller对每一表项执行了相同的访问操作。
3.根据权利要求1所述的一种适用于TEE混淆计算的ORAM访问方法,其特征在于:所述步骤D3中ORAM Controller 对路径Path2进行第二次元数据扫描,具体为:自叶子结点向根结点扫描Path2中每个结点Nj,j∈[0, LogN],其中:N为Pad数据块代表的结点;基于D2中得出的元数据数组Temp[i]计算每个结点中的数据能够放至的最深的层级,并将结果记录至元数据数组Deepest[i]中;Deepest[i]=Lj表示结点Ni中的数据块最深能放至Lj层,以完成第二次数据扫描。
4.根据权利要求1所述的一种适用于TEE混淆计算的ORAM访问方法,其特征在于:所述步骤E1在写回过程的具体操作为:
E1.1 ORAM Controller取出根结点中的数据块B,并基于元数据扫描结果Deepest[i]自根结点向叶子结点检索;
E1.2当检索到B能够放置的最深层级时,将数据块B放至该层的结点中;或者,在检索到具有更深放置位置的数据块B1时,将B放置该层,并将B1取出;
E1.3 数据块被放置后,ORAM Controller将在PM Update Queue中记录该数据块需要在Position Map中更新的内容,为Position Map的最终更新做准备;
E1.4 ORAM Controller重复上述操作,直至整条路径检索完毕,数据块的写回操作完成;
E1.6 对于路径Path2的数据写回操作与PM Update Queue的记录操作使用数据混淆操作来隐藏数据块的访问模式。
CN202010875525.5A 2020-08-27 2020-08-27 一种适用于tee混淆计算的oram访问方法 Active CN114117506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010875525.5A CN114117506B (zh) 2020-08-27 2020-08-27 一种适用于tee混淆计算的oram访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010875525.5A CN114117506B (zh) 2020-08-27 2020-08-27 一种适用于tee混淆计算的oram访问方法

Publications (2)

Publication Number Publication Date
CN114117506A CN114117506A (zh) 2022-03-01
CN114117506B true CN114117506B (zh) 2024-04-05

Family

ID=80374301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010875525.5A Active CN114117506B (zh) 2020-08-27 2020-08-27 一种适用于tee混淆计算的oram访问方法

Country Status (1)

Country Link
CN (1) CN114117506B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116167092B (zh) * 2023-04-21 2023-07-18 支付宝(杭州)信息技术有限公司 一种密态数据查询方法、装置、存储介质以及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110245515A (zh) * 2019-05-08 2019-09-17 北京大学 一种面向hdfs访问模式的保护方法和系统
CN110287262A (zh) * 2019-06-28 2019-09-27 中国科学技术大学 有效保护用户隐私的比特币交易查询方法
WO2019185710A1 (en) * 2018-03-29 2019-10-03 NEC Laboratories Europe GmbH Method and system of preserving privacy for usage of lightweight blockchain clients

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789369B2 (en) * 2018-06-12 2020-09-29 Fujitsu Limited Oblivious array shuffling in trusted execution environments
US11243881B2 (en) * 2018-08-03 2022-02-08 University of Pittsburgh—of the Commonwealth System of Higher Education Practical ORAM delegation for untrusted memory on cloud servers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019185710A1 (en) * 2018-03-29 2019-10-03 NEC Laboratories Europe GmbH Method and system of preserving privacy for usage of lightweight blockchain clients
CN110245515A (zh) * 2019-05-08 2019-09-17 北京大学 一种面向hdfs访问模式的保护方法和系统
CN110287262A (zh) * 2019-06-28 2019-09-27 中国科学技术大学 有效保护用户隐私的比特币交易查询方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SGX技术的分析和研究;王鹃;樊成阳;程越强;赵波;韦韬;严飞;张焕国;马婧;;软件学报;20180915(第09期);238-258 *

Also Published As

Publication number Publication date
CN114117506A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US11734199B2 (en) Enforcing memory operand types using protection keys
US20200293668A1 (en) Cryptographic Memory Ownership Table For Secure Public Cloud
US7690023B2 (en) Software safety execution system
Maas et al. Phantom: Practical oblivious computation in a secure processor
US5230069A (en) Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US7975149B2 (en) Software protection using data structures
CN110119302B (zh) 虚拟机监视器以及虚拟可信执行环境构建方法
JP2013522702A (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
CA2350029A1 (en) Sustainable digital watermarking via tamper-resistant software
US9418220B1 (en) Controlling access to memory using a controller that performs cryptographic functions
CN110442537A (zh) 用于不同等级的调用的单独分支目标缓冲区
US11775177B2 (en) Integrity tree for memory integrity checking
CN105468543B (zh) 一种保护敏感信息的方法及装置
Aga et al. InvisiPage: oblivious demand paging for secure enclaves
JP2023518482A (ja) 複数の物理アドレス空間を使用する装置及び方法
Blass et al. Multi-client oblivious RAM secure against malicious servers
CN114117506B (zh) 一种适用于tee混淆计算的oram访问方法
Costa et al. The pyramid scheme: Oblivious RAM for trusted processors
CN112084519A (zh) 基于访问模式保护的gbdt模型训练方法及装置
Alam et al. Study of the dirty copy on write, a linux kernel memory allocation vulnerability
JP2023526000A (ja) 変換テーブルアドレス記憶回路
CN115238281A (zh) 一种高效的基于混合oram的侧信道防御方法
Sanchez-Artigas Toward efficient data access privacy in the cloud
Mayberry et al. Multi-client Oblivious RAM secure against malicious servers
KR20220158831A (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
GR01 Patent grant
GR01 Patent grant