CN112182615A - 一种基于sgx与oram技术的云计算密钥保护系统 - Google Patents

一种基于sgx与oram技术的云计算密钥保护系统 Download PDF

Info

Publication number
CN112182615A
CN112182615A CN202011051988.6A CN202011051988A CN112182615A CN 112182615 A CN112182615 A CN 112182615A CN 202011051988 A CN202011051988 A CN 202011051988A CN 112182615 A CN112182615 A CN 112182615A
Authority
CN
China
Prior art keywords
data
enclave
oram
control node
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.)
Pending
Application number
CN202011051988.6A
Other languages
English (en)
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.)
BEIJING ELECTRONIC SCIENCE AND TECHNOLOGY INSTITUTE
Xidian University
Original Assignee
BEIJING ELECTRONIC SCIENCE AND TECHNOLOGY INSTITUTE
Xidian University
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 BEIJING ELECTRONIC SCIENCE AND TECHNOLOGY INSTITUTE, Xidian University filed Critical BEIJING ELECTRONIC SCIENCE AND TECHNOLOGY INSTITUTE
Priority to CN202011051988.6A priority Critical patent/CN112182615A/zh
Publication of CN112182615A publication Critical patent/CN112182615A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于SGX与ORAM技术的云计算密钥保护系统,包括用户终端和服务器,两者之间通讯连接;用户终端上设置有用户节点Enclave,用户节点Enclave包括私钥保存和加密区;服务器上设置有控制节点Enclave和数据节点Enclave;控制节点Enclave包括代码执行区、ORAM控制器和数据存放区,代码执行区用于执行代码,ORAM控制器包括ORAM数据映射表和缓存区,用于收到执行代码执行区中的数据请求后,从数据节点Enclave中提取数据;数据存放区用于临时存放从缓存区中取回的代码所需要的数据;数据节点Enclave用于存储用户数据,包括ORAM树和数据读取器;数据节点Enclave与控制节点之间相互密钥协商进行加密,并相互安全认证。本发明所提供的技术方案能够提高云计算密钥保存的安全性。

Description

一种基于SGX与ORAM技术的云计算密钥保护系统
技术领域
本发明属于云计算密钥保护技术领域,具体涉及一种基于SGX与ORAM技术的云计算密钥保护系统。
背景技术
随着云计算的快速发展,拥有高可靠性和可扩展性的云服务给人们带来了许多便利,一般用户在将隐私数据上传至云服务器之前都会对数据内容进行加密,这样即使非授权者窃取了加密数据,也无法得到数据的真实信息。
在云外包计算环境中,参与者的本地计算能力非常有限,而云计算服务提供商以低廉的价格提供计算资源,云服务提供商提供加密服务和密钥管理服务,用户仅需保存用于验证自己身份的私钥即可。在这种场景下,如用户需要在云虚拟用户终端查看数据,则必须将自己的私钥发送至云虚拟机,并且在验证身份以及解密密钥时需要映射至内存中。
SGX作为一种可信计算,既能和TPM等技术保护用户数据的机密性和完整性,又能实现严格的访问控制,保护运行时用户应用程序的安全。SGX将每一个Enclave的可信计算基(Trust Computing Base,TCB)减少为CPU和它自身,任何未授权的访问者,包括操作系统和特权用户,甚至内核,都无法访问这个特殊的区域。
在抵抗内存攻击上,SGX为代码和数据提供了机密性和完整性的保障,然而利用一些特殊的代码注入攻击或者侧信道攻击还是能够间接的推断出用户在Enclave运行的代码和关键的数据。在应对这些攻击方面目前有以下防护方法:
Jaebaek提出的方案是一种增强安全性的SGX-shield,在利用细粒度随机化方法解决了限制的内存空间,设置一个单独结构来严格授予每一个内存界面的读、写和执行权限,采取了粗粒度软件故障隔离来保护一些不可重定位的数据结构,在SGX中实现了ASLR技术。程序运行于SGX-shield中,由于每一次运行程序时其中的堆、栈等结构都会重定位,隐藏了其关键的代码和数据的位置,因此能够抵抗代码注入攻击以及一些SGX侧信道攻击。然而,在程序运行过程中,通过对其访问模式的研究,攻击者还是可以推断出其关键数据的位置。
Ahmad等人提出了一种OBFUSCURO系统,率先使用了一种SGX+ORAM技术的软硬件结合的抗访问模式泄漏的解决方案。代码和数据在Enclave运行之前就通过LLVM编译器将代码和数据编译成细粒度的代码块和数据块,一个代码块的数据访问次数被严格控制为一次。OBFUSCURO在Enclave建立时初始化以下结构:两个ORAM树C-Tree和D-Tree,对应的两个ORAM控制器,用于缓存代码即将使用数据的D-PAD和代码运行空间C-PAD。
代码的读取由C-Tree的控制器控制,每一个代码块的执行时间都是固定的,代码块的数据访问都由D-Tree的控制器读取至D-PAD中,以保证数据的读取在固定的位置。为了完全隐藏代码和数据的访问模式,方案中还添加了一些假数据访问和假代码执行来保证每一个程序的运行时间相同。然而据论文中所说,在该系统中程序运行所消耗的时间平均情况下比原程序消耗多51倍,其次上述系统在建立Enclave之前,需要将应用所需要的代码和数据全部准备好并且经过一定处理,如此便可能导致云计算密钥以明文形式暴露在存储中,使其安全性降低。
发明内容
本发明的目的是提供一种基于SGX与ORAM技术的云计算密钥保护系统,以解决现有技术中云计算密钥安全性差的问题。
为实现上述目的,本发明采用如下技术方案:
一种基于SGX与ORAM技术的云计算密钥保护系统,包括用户终端和服务器,两者之间通讯连接;所述用户终端上设置有用户节点Enclave,用户节点Enclave包括私钥保存和加密区;所述服务器上设置有控制节点Enclave和数据节点Enclave;所述控制节点Enclave包括代码执行区、ORAM控制器和数据存放区,代码执行区用于执行代码,ORAM控制器包括ORAM数据映射表和缓存区,用于收到执行代码执行区中的数据请求后,从数据节点Enclave中提取数据;所述数据存放区用于临时存放从缓存区中取回的代码所需要的数据;所述数据节点Enclave用于存储用户数据,包括ORAM树和数据读取器;所述数据节点Enclave与控制节点之间相互密钥协商进行加密,并相互安全认证。
进一步的,所述ORAM树为二叉树,每一个节点包含一个数据桶,每个数据桶包括设定数量的数据块,每一个数据块对应一个节点,且位置根据数据桶以及数据桶中的偏移量确定。
进一步的,所述服务器内控制节点Enclave与数据节点Enclave之间通过密钥协商进行对称加密,加密的方法包括如下步骤:
(1)控制节点Enclave使用RDRAND指令生成一个随机素数p以及素数p的原生根q,再生产私有值XA,通过计算公式计算出YA
YA=q^XBmod p
其中mod p为p的模运算,^为32比特与运算;
(2)控制节点Enclave使用EREPORT指令生成控制节点报告,控制节点报告中包括用于密钥协商的参数p、q和YA值;
(3)控制节点Enclave将生成的控制节点报告发送给数据节点Enclave;
(4)数据节点Enclave接收到控制节Enclave点报告后,使用EGETKEY指令对其中的消息认证码进行验证,如果验证通过,则使用RDRAND指令生成私有参数XB,并通过计算公式计算YB
YB=q^XBmod p
(5)数据节点Enclave调用EREPORT指令生成数据节点报告,数据节点报告包括YB值以及数据节点的MRENCLAVE值;
(6)采用计算公式计算出最终的加密密钥K
K=YA^XB mod p。
进一步的,所述控制节点Enclave与数据节点Enclave之间相互认证安全性,认证过程包括对控制节点Enclave的认证和对数字节点Enclave的认证;
控制节点Enclave的认证:控制节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至数据节点Enclave;数据节点Enclave通过EGETKEY指令获取该认证报告中的钥匙,对该认证报告中的消息认证码进行验证,如果验证通过则判断为控制节点Enclave处于同一平台,此时通过控制节点Enclave的TCB硬件可信度的检查报告得到其TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查其TCB软件组件的安全性;如果控制节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则判断为控制节点Enclave符合SGX的安全模型;
数据节点Enclave的认证:数据节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至控制节点Enclave;控制节点Enclave通过EGETKEY指令获取该认证报告中的钥匙,对该认证报告中的消息认证码进行验证,如果验证通过,则判断为数据节点Enclave处于同一平台,此时通过数据节点Enclave的TCB硬件可信度的检查报告得到其TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查其TCB软件组件的安全性;如果数据节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则判断为数字节点Enclave符合SGX的安全模型。
进一步的,所述服务器接收到用户所发生过来的私钥后,控制节点Enclave进行私钥处理:
在控制节点Enclave中,私钥经解密后分为设定大小的数据块,并将数据块存放在缓存区中;
将各数据块记录在ORAM控制器的数据存储位置表中;
在ORAM树初始化的预热步骤中,进行任意数据的读取和数据块的刷新、驱逐时,写回至数据节点中,隐藏其访问模式。
进一步的,数字签字的步骤包括:
(1)采用SM3杂凑算法求出用户的杂凑值ZC;将a值、b值、xG、yG、xC、yC、IDC和ENTLC的值都转化为比特串,经过填充、迭代压缩和生成杂凑值等过程求出用户的杂凑值
ZC=SM3(ENTLC||IDC||a||b||xG||yG||xC||yC)
其中a为加密椭圆曲线中的一次项参数,b为加密椭圆曲线中的常数项参数,M为待签名的消息,E(Fq)为Fq上椭圆曲线E的所有有理点组成的集合,包含q个元素的有限域;dC为云计算密钥,(xC,yC)公钥PC=[dC]G=(xC,yC),(xG,yG)为加密椭圆曲线E(Fq)上的基点的坐标值,IDC为用户的身份标识,ENTLC为由整数entlenC转换而成的两个字节,entlenC为用户标识转化为二进制数的长度,SM3为SM3杂凑算法函数;
(2)用随机数发生器在[1,n-1]之间生成一个随机数k,从ORAM树中取出加密椭圆曲线参数,并且计算加密椭圆曲线上的点(x1,y1)=[k]G,将x1的数据类型转化为整数;
(3)计算r的值:
r=(e+x1)mod n
e=Hv(ZC||M)
其中M为待签名的消息,Hv()为消息摘要长度为v的密码杂凑算法;
如果r=0或r+k=n,则返回上述步骤(2),否则执行步骤(5);
(5)将所有的中间值都先保存在ORAM树中;
如果s不为0,则计算
s=((1+dC)-1*(k-r*dC))mod n;
如果s=0则重新执行步骤(5);
否则将r和s转化为字节串,则用户的最终签名为(r,s)。
进一步的,执行解密数字信封包括如下步骤:
(1)设密文比特串C=C1||C3||C2,即将密文比特串C分为C1、C3、C2三段,取出C1,将其转换成加密椭圆曲线上的点,并将密文比特串C存回ORAM树;
(2)对C1进行验证:
计算加密椭圆曲线点S
S=[h]C1
其中h为曲线参数的辅助因子,如果S为无穷远点,则判断验证失败;
(3)计算
(x2,y2)=[dB]C1
删除C1;
其中dB为用户B的私钥;
(4)计算
t=KDF(x2||y2,klen),
其中KDF是密钥派生函数,klen为密钥派生函数获得的密钥长度;
如果t是全0比特串,则判断为出错;
如果t不是全0比特串,则将t值存储于ORAM树;
(5)从ORAM树中取出C=C1||C3||C2以及t值,从其中取出C2,将C存回ORAM树,计算M’=C2⊕t,⊕为32比特异或运算;
(6)计算
u=Hash(x2||M’||y2)
Hash()为密码杂凑值算法;
从ORAM树中取出C值中的C3,比较u是否与C3相等;
如果不相等则判断为出错;
如果相等则M’就是所需要的明文值。
本发明的有益效果:本发明所提供的技术方案,通过SGX技术构建Enclave保护用户数据,利用SGX的远程认证和平台内认证构建Enclave之间的安全通信通路,提升云计算密钥在传输过程中的安全性;利用SGX的内存加密技术提升云计算密钥在存储过程中的安全性,利用ORAM混淆技术提升云计算密钥运行的安全性。本发明所提供的技术方案能够提高云计算密钥保存的安全性。
附图说明
图1是本发明实施例中基于SGX与ORAM技术的云计算密钥保护系统的结构示意图;
图2是本发明实施例中用户节点Enclave的结构示意图;
图3是本发明实施例中控制节点Enclave的结构示意图;
图4是本发明实施例中数据节点Enclave的结构示意图。
具体实施方式
本实施例提供一种基于SGX与ORAM技术的云计算密钥保护系统,通过SGX技术构建Enclave保护用户数据,利用SGX的远程认证和平台内认证构建Enclave之间的安全通信通路,提升云计算密钥在传输过程中的安全性;利用SGX的内存加密技术提升云计算密钥在存储过程中的安全性,利用ORAM混淆技术提升云计算密钥运行的安全性。
本实施例所提供的基于SGX与ORAM技术的云计算密钥保护系统,其硬件结构如图1所示,包括用户终端和服务器,两者之间通讯连接,其中用户终端上设置有用户节点Enclave,服务器上设置有控制节点Enclave和数据节点Enclave。
用户节点Enclave的结构如图2所示,包括一个私钥保存和加密区,用户的私钥保存在其中;本实施例中要求云计算密钥从U-钥匙中传送至Enclave的过程是安全的。
控制节点Enclave如图3所示,其结构包括代码执行区、ORAM控制器和数据存放区。代码执行区用于执行代码;ORAM控制器包括两部分,分别是数据存储位置表和数据缓存区,用于在收到执行代码执行区中的数据请求后,从数据节点Enclave中提取数据;数据存放区用于临时存放从数据缓存区中取回代码所需要用到的数据。
数据节点Enclave是存储用户数据的主要结构,在ORAM模型中相当于服务器端,以树状模型结构安全存储所有的数据。数据节点Enclave内部结构如图4所示,结构包括ORAM树和数据读取器,其中ORAM树为二叉树结构,每一个数据块对应一个ORAM树根节点。ORAM树中每一个节点包含一个数据桶,每个数据桶中容纳M个数据块,每一个数据块的位置可以根据数据桶以及数据桶中的偏移量确定,每一个数据块大小为4KB。
对数据节点Enclave初始化的过程包括:
在数据节点Enclave中创建ORAM树;
将ORAM数据映射表中的数据按照ORAM树节点和偏移量映射到对应的位置:
设数据块总数为N,每一个数据桶中的真实数据块最大数量为2,则ORAM树的层数为
Figure BDA0002709842790000091
利用直接定址方法构造哈希函数
H(data)=a*data+b mod(N/2)
其中data为数据块转化为整数的值,使用哈希冲突解决方法选择线性探测再散列,将各数据块散列至ORAM树中,并且记录在数据映射表中。
本实施例中,服务器内认证控制节点Enclave和数据节点Enclave的安全通信路径包括密钥协商和相互认证两部分。
密钥协商是控制节点Enclave和数据节点Enclave之间协商,是对称加密密钥的过程,本实施例中的密钥协商采用的是Diffie-Hellman密钥交换机制,该交换机制包括如下步骤:
(1)控制节点Enclave使用RDRAND指令生成一个随机素数p以及p的一个原生根q,q为整数,再生成不大于p的私有值XA,通过计算公式计算出
YA=q^XAmod p
其中mod p为p的模运算,^为32比特与运算;
(2)控制节点Enclave使用EREPORT指令生成控制节点报告,控制节点的报告中包括用于密钥协商的公共参数p和q,以及生成的用于计算对称的YA值;
(3)控制节点Enclave将生成的控制节点报告发送给数据节点Enclave;
(4)数据节点Enclave接收到控制节点的报告后,使用EGETKEY指令对其中的消息认证码进行验证;如果验证通过,则使用RDRAND指令生成私有参数XB,并通过公式计算出YB
YB=q^XBmod p
(5)数据节点Enclave调用EREPORT指令生成数据节点报告,数据节点报告包括YB以及数据节点的MRENCLAVE值,最后通过计算公式计算出最终的加密密钥K:
K=YA^XB mod p。
经过上述的密钥协商后,对控制节点Enclave和数据节点Enclave进行身份认证以判断其是否符合SGX安全模型。控制节点Enclave与数据节点Enclave采用相互认证的方式进行认证,相互认证包括如下步骤:
对控制节点Enclave安全性的认证:控制节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至数据节点Enclave;数据节点Enclave通过EGET钥匙指令获取认证报告中的钥匙,对认证报告中的消息认证码进行验证,如果验证通过,则判断为控制节点Enclave处于同一平台;当控制节点Enclave处于同一平台时,通过TCB硬件可信度的检查报告得到TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查TCB软件组件的安全性;如果控制节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则可以确定控制节点Enclave符合SGX的安全模型;
对数据节点Enclave安全性的认证:数据节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至控制节点Enclave;控制节点Enclave通过EGET钥匙指令获取认证报告中的钥匙,对认证报告中的消息认证码进行验证,如果验证通过,则判断为数据节点Enclave是同一平台上的;当数据节点Enclave处于同一平台时,通过TCB硬件可信度的检查报告得到TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查TCB软件组件的安全性;如果数据节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则可以确定数字节点Enclave符合SGX的安全模型。
当控制节点Enclave与数字节点Enclave之间进行密钥协商和安全认证后,用户终端将用户节点Enclave中的云计算密钥以及利用私钥与SGX中加密技术加密后的文件发送给服务器的控制节点Enclave。
用户终端将云计算密钥发送给服务器,云计算密钥为数字签名或需要执行解密的数字信封;服务器接收到云计算密钥后先对其进行预处理:
将数字签名或者需要执行解密的数字信封的数据全部分为大小为4KB的数据块;
创建ORAM数据映射表,ORAM数据映射表包括ORAM树;然后通过数据库的数量以及哈希函数确定所有的数据库在ORAM树中的位置。
控制节点Enclave接收到用户终端发送过来的数据后,对其进行私钥处理,处理方法为:
在控制节点Enclave中,将私钥经解密后分成大小为4KB的数据块,将数据块存放在缓存区中;
将分解后的各数据块记录在ORAM控制器的数据存储位置表中;
在ORAM树初始化的预热步骤中,进行任意数据的读取和数据块的刷新、驱逐时,写回至数据节点Enclave中,隐藏其访问模式。
服务器对云计算密钥的处理包括两种,分别是执行数字签名和解密数字信封,下面对数字签名和解密数字信封的方法进行介绍。
使用私钥执行数字签名的方法包括如下步骤:
(1)采用SM3杂凑算法求出用户的杂凑值ZC;将a值、b值、xG、yG、xC、yC、IDC和ENTLC的值都转化为比特串,经过填充、迭代压缩和生成杂凑值等过程求出用户的杂凑值
ZC=SM3(ENTLC||IDC||a||b||xG||yG||xC||yC)
设椭圆曲线为:
y2=x3+ax+b
其中a为加密椭圆曲线中的一次项参数,b为加密椭圆曲线中的常数项参数,M为待签名的消息,E(Fq)为Fq上椭圆曲线E的所有有理点组成的集合,包含q个元素的有限域;dC为云计算密钥,(xC,yC)公钥PC=[dC]G=(xC,yC),(xG,yG)为加密椭圆曲线E(Fq)上的基点的坐标值,IDC为用户的身份标识,ENTLC为由整数entlenC转换而成的两个字节,entlenC为用户标识转化为二进制数的长度;
(2)用随机数发生器生成一个随机数k∈[1,n-1],从ORAM树中取出加密椭圆曲线参数,并且计算加密椭圆曲线上的点(x1,y1)=[k]G,将x1的数据类型转化为整数;
(3)计算r的值,
r=(e+x1)mod n
e=Hv(ZC||M)
其中M为待签名的消息,Hv()为消息摘要长度为v的密码杂凑算法;
如果r=0或r+k=n,则返回上述步骤(2),否则执行步骤(5);
(5)将所有的中间值都先保存在ORAM树中;
如果s不为0,则计算
s=((1+dC)-1*(k-r*dC))mod n;
如果s=0则重新执行步骤(5);
否则将r和s转化为字节串,则用户的最终签名为(r,s)。
使用私钥执行解密数字信封的方法包括如下步骤:
(1)设密文比特串C=C1||C3||C2,即将密文比特串C分为C1、C3、C2三段,取出C1,将其转换成加密椭圆曲线上的点,并将密文比特串C存回ORAM树;
(2)对C1进行验证:
计算加密椭圆曲线点S
S=[h]C1
其中h为曲线参数的辅助因子,如果S为无穷远点,则判断验证失败;
(3)计算
(x2,y2)=[dB]C1
删除C1;
其中dB为用户B的私钥;
(4)计算
t=KDF(x2||y2,klen),
其中KDF是密钥派生函数,klen为密钥派生函数获得的密钥长度;
如果t是全0比特串,则判断为出错;
如果t不是全0比特串,则将t值存储于ORAM树;
(5)从ORAM树中取出C=C1||C3||C2以及t值,从其中取出C2,将C存回ORAM树,计算M’=C2⊕t,⊕为32比特异或运算;
(6)计算
u=Hash(x2||M’||y2)
Hash()为密码杂凑值算法;
从ORAM树中取出C值中的C3,比较u是否与C3相等;
如果不相等则判断为出错;
如果相等则M’就是所需要的明文值。
上述过程所有的数据读取按照以下ORAM协议执行,以隐藏数据的访问模式。存储区ORAM的访问协议中,每次访问由查找数据存储位置表的访问路径、读取路径并且回写用户终端、刷新数据桶写回和驱逐路径。
查找数据存储位置表得到访问路径:如果位置图中查找得到的位置在stash中,则直接从stash中取出数据。如果查找得到的位置在ORAM树中,则向ORAM树发出读请求,请求序列为该叶子节点对应的路径中所有的数据桶中的某一数据块。与Ring ORAM不同,我们在用户终端执行路径上确定每一个数据块,而不是从服务器端根据元数据计算或者查找路径上每一个数据桶中的数据块的位置。所以任一次的数据块读取序列为{P(l,i1,j1),P(l,i2,j2),...,P(l,iL,jL)},读取序列中的非所需数据桶中数据块的偏移量在用户终端中用伪随机算法计算,以保证数据的安全性。其中P(1,i,j)是数据桶P(1,i)中的第j个槽位,P(1,i)为路径l上从根节点开始的第i个数据桶。
读取路径并且写回用户终端:根据用户终端所给出的请求序列由ORAM树的根节点开始依次找到路径中的每一个数据桶,根据请求序列中的数据块的偏移量将对应的数据块取回。由于数据块都是随机排列的,因此攻击者只能看到每一个数据桶中的随机数据块被读取,但是无法证明其是真实数据块还是假的数据块。
刷新数据桶写回:当服务器端数据桶的读取次数达到一定值后,为了满足数据桶的混淆能力同时写回存储区中的数据块,需要对该数据桶执行刷新操作。具体步骤为将该数据桶取回用户终端,再从用户终端的缓存区中选择一个数据桶写回ORAM树的该数据桶的位置,取回的真实数据块重新加密,并用哈希函数选取缓存区中的一个假数据块位置,将该数据块放入。
驱逐路径:驱逐路径指当缓存区中的真实数据块饱和时,按照Ring ORAM基于逆字典序的驱逐策略选择服务器端的一条路径,并且将缓存区中的数据全部写回至服务器端该路径上,并且将原路径上的数据块全部取回至用户终端,缓存区中由假数据块填充,取回的真实数据块重新加密,并用哈希函数散列并覆盖缓存区中的一个假数据块位置。
以下是对各个步骤的详细说明。
确认访问序列,生成获取所需数据块的访问序列。
首先在数据存储位置表中确定目标数据块的叶子节点以及路径l,数据桶的位置i,和桶中的偏移量j,并且将其加入访问序列List中。其次在用户终端确定对目标数据块的访问序列,除了已知的目标数据块所在数据桶的节点,从叶子节点到根节点,依次为路径上的每一个节点计算一个偏移量j,j由随机数算法给出。将路径上每一个节点的访问位置添加到List中,形成不经意的访问序列。
读取ORAM路径与数据桶刷新写回,按照访问序列读取ORAM路径以及数据块写回。
根据访问序列,从ORAM树的叶子节点数据桶一直到根节点,按照访问序列读取每个数据桶中的特定数据块,用虚假数据块填充读取后空的数据槽,最后将所有的数据块提取至存储区中。除了目标数据块,其它数据块全部都是随机选取的,可能是真的,可能是假的。由于我们在每一个数据桶中仅仅取了一个数据块,因此我们不需要将其写回,而是将其中的真实数据块保存在存储区中。
数据桶刷新写回是将存储在存储区中的数据块写回的主要方式。在读取ORAM路径后,每一个数据桶中的计数值count都加1,如果某一个数据桶的计数值达到S,则对该数据桶执行一次刷新。首先从服务器端ORAM树中取回该数据桶,记录该数据桶的位置。然后按照层次结构,从上至下,从左至由选择存储区中的一个数据桶,为存储区数据桶中的所有真实数据块依次分配一个合理的随机叶节点,在数据存储位置表中记录后,将该数据桶写回到ORAM树的计数值达到S的数据桶的位置。最后将取回的数据桶中的真实数据随机写入存储区中,存储区中的写回数据桶全部由假数据块填充,为了保证写回操作和读取操作的数据块数目相同,我们需要设置数据桶中的数据块数量和ORAM树的深度相同,来满足读写操作的一致性。
路径驱逐,当满足一定条件后,刷新数据桶,来实现混淆。
存储区驱逐操作按照逆字典序选取一条路径l,将路径l上的数据桶全部取回。从存储区的最后一个节点开始,依次为其中的真实数据块随机分配一个叶子节点。分配方法如下,因为叶子结点只能分配给自己,从叶子结点之上开始,其分配的合理的叶子节点数量以指数次数量增加,依次用伪随机算法计算一个随机数,根据该数将数据块分配给一个特定的叶子节点,直到为整个存储区区中的真实数据块都分配叶子节点,最后将大小为logN的存储区写回驱逐的路径,其中存储区最后一个节点对应ORAM树上的叶子节点。写回后,存储区中所有的位置由假数据块填充,将取回路径中的剩下的真实数据块重新加密后按照哈希函数散列并覆盖存储区的一个假数据块。
以上公开的本发明的实施例只是用于帮助阐明本发明的技术方案,并没有尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,包括用户终端和服务器,两者之间通讯连接;所述用户终端上设置有用户节点Enclave,用户节点Enclave包括私钥保存和加密区;所述服务器上设置有控制节点Enclave和数据节点Enclave;所述控制节点Enclave包括代码执行区、ORAM控制器和数据存放区,代码执行区用于执行代码,ORAM控制器包括ORAM数据映射表和缓存区,用于收到执行代码执行区中的数据请求后,从数据节点Enclave中提取数据;所述数据存放区用于临时存放从缓存区中取回的代码所需要的数据;所述数据节点Enclave用于存储用户数据,包括ORAM树和数据读取器;所述数据节点Enclave与控制节点之间相互密钥协商进行加密,并相互安全认证。
2.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,所述ORAM树为二叉树,每一个节点包含一个数据桶,每个数据桶包括设定数量的数据块,每一个数据块对应一个节点,且位置根据数据桶以及数据桶中的偏移量确定。
3.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,所述服务器内控制节点Enclave与数据节点Enclave之间通过密钥协商进行对称加密,加密的方法包括如下步骤:
(1)控制节点Enclave使用RDRAND指令生成一个随机素数p以及素数p的原生根q,再生产私有值XA,通过计算公式计算出YA
YA=q^XBmod p
其中mod p为p的模运算,^为32比特与运算;
(2)控制节点Enclave使用EREPORT指令生成控制节点报告,控制节点报告中包括用于密钥协商的参数p、q和YA值;
(3)控制节点Enclave将生成的控制节点报告发送给数据节点Enclave;
(4)数据节点Enclave接收到控制节Enclave点报告后,使用EGETKEY指令对其中的消息认证码进行验证,如果验证通过,则使用RDRAND指令生成私有参数XB,并通过计算公式计算YB
YB=q^XBmod p
(5)数据节点Enclave调用EREPORT指令生成数据节点报告,数据节点报告包括YB值以及数据节点的MRENCLAVE值;
(6)采用计算公式计算出最终的加密密钥K
K=YA^XBmod p。
4.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,所述控制节点Enclave与数据节点Enclave之间相互认证安全性,认证过程包括对控制节点Enclave的认证和对数字节点Enclave的认证;
控制节点Enclave的认证:控制节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至数据节点Enclave;数据节点Enclave通过EGETKEY指令获取该认证报告中的钥匙,对该认证报告中的消息认证码进行验证,如果验证通过则判断为控制节点Enclave处于同一平台,此时通过控制节点Enclave的TCB硬件可信度的检查报告得到其TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查其TCB软件组件的安全性;如果控制节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则判断为控制节点Enclave符合SGX的安全模型;
数据节点Enclave的认证:数据节点Enclave生成包含MRENCLAVE的认证报告,并将其发送至控制节点Enclave;控制节点Enclave通过EGETKEY指令获取该认证报告中的钥匙,对该认证报告中的消息认证码进行验证,如果验证通过,则判断为数据节点Enclave处于同一平台,此时通过数据节点Enclave的TCB硬件可信度的检查报告得到其TCB硬件组件的安全性,通过标识MRENCLAVE和MRSIGNED检查其TCB软件组件的安全性;如果数据节点Enclave的硬件安全性和软件安全性均通过相应的安全性测试,则判断为数字节点Enclave符合SGX的安全模型。
5.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,所述服务器接收到用户所发生过来的私钥后,控制节点Enclave进行私钥处理:
在控制节点Enclave中,私钥经解密后分为设定大小的数据块,并将数据块存放在缓存区中;
将各数据块记录在ORAM控制器的数据存储位置表中;
在ORAM树初始化的预热步骤中,进行任意数据的读取和数据块的刷新、驱逐时,写回至ORAM树的数据节点中,隐藏其访问模式。
6.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,数字签字的步骤包括:
(1)采用SM3杂凑算法求出用户的杂凑值ZC;将a值、b值、xG、yG、xC、yC、IDC和ENTLC的值都转化为比特串,经过填充、迭代压缩和生成杂凑值等过程求出用户的杂凑值
ZC=SM3(ENTLC||IDC||a||b||xG||yG||xC||yC)
其中a为加密椭圆曲线中的一次项参数,b为加密椭圆曲线中的常数项参数,M为待签名的消息,E(Fq)为Fq上椭圆曲线E的所有有理点组成的集合,包含q个元素的有限域;dC为云计算密钥,(xC,yC)公钥PC=[dC]G=(xC,yC),(xG,yG)为加密椭圆曲线E(Fq)上的基点的坐标值,IDC为用户的身份标识,ENTLC为由整数entlenC转换而成的两个字节,entlenC为用户标识转化为二进制数的长度,SM3为SM3杂凑算法函数;
(2)用随机数发生器在[1,n-1]之间生成一个随机数k,从ORAM树中取出加密椭圆曲线参数,并且计算加密椭圆曲线上的点(x1,y1)=[k]G,将x1的数据类型转化为整数;
(3)计算r的值:
r=(e+x1)mod n
e=Hv(ZC||M)
其中M为待签名的消息,Hv()为消息摘要长度为v的密码杂凑算法;
如果r=0或r+k=n,则返回上述步骤(2),否则执行步骤(5);
(5)将所有的中间值都先保存在ORAM树中;
如果s不为0,则计算
s=((1+dC)-1*(k-r*dC))mod n;
如果s=0则重新执行步骤(5);
否则将r和s转化为字节串,则用户的最终签名为(r,s)。
7.根据权利要求1所述的基于SGX与ORAM技术的云计算密钥保护系统,其特征在于,执行解密数字信封包括如下步骤:
(1)设密文比特串C=C1||C3||C2,即将密文比特串C分为C1、C3、C2三段,取出C1,将其转换成加密椭圆曲线上的点,并将密文比特串C存回ORAM树;
(2)对C1进行验证:
计算加密椭圆曲线点S
S=[h]C1
其中h为曲线参数的辅助因子,如果S为无穷远点,则判断验证失败;
(3)计算
(x2,y2)=[dB]C1
删除C1;
其中dB为用户B的私钥;
(4)计算
t=KDF(x2||y2,klen),
其中KDF是密钥派生函数,klen为密钥派生函数获得的密钥长度;
如果t是全0比特串,则判断为出错;
如果t不是全0比特串,则将t值存储于ORAM树;
(5)从ORAM树中取出C=C1||C3||C2以及t值,从其中取出C2,将C存回ORAM树,计算M’=C2⊕t,⊕为32比特异或运算;
(6)计算
u=Hash(x2||M’||y2)
Hash()为密码杂凑值算法;
从ORAM树中取出C值中的C3,比较u是否与C3相等;
如果不相等则判断为出错;
如果相等则M’就是所需要的明文值。
CN202011051988.6A 2020-09-29 2020-09-29 一种基于sgx与oram技术的云计算密钥保护系统 Pending CN112182615A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011051988.6A CN112182615A (zh) 2020-09-29 2020-09-29 一种基于sgx与oram技术的云计算密钥保护系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011051988.6A CN112182615A (zh) 2020-09-29 2020-09-29 一种基于sgx与oram技术的云计算密钥保护系统

Publications (1)

Publication Number Publication Date
CN112182615A true CN112182615A (zh) 2021-01-05

Family

ID=73945998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011051988.6A Pending CN112182615A (zh) 2020-09-29 2020-09-29 一种基于sgx与oram技术的云计算密钥保护系统

Country Status (1)

Country Link
CN (1) CN112182615A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810382A (zh) * 2021-08-24 2021-12-17 东北大学秦皇岛分校 一种用于抵御sgx侧信道攻击的密文加载方法
CN114547226A (zh) * 2022-02-28 2022-05-27 深圳市裕熙科技有限公司 基于可信云计算的信息安全大数据管理系统
CN117094037A (zh) * 2023-10-16 2023-11-21 湘江实验室 基于Path+ORAM的多路径缓存写回方法、装置及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200042442A1 (en) * 2018-08-03 2020-02-06 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Practical oram delegation for untrusted memory on cloud servers
CN110889696A (zh) * 2019-11-27 2020-03-17 杭州趣链科技有限公司 一种基于sgx技术的联盟区块链秘钥存储方法、装置、设备及介质
CN111709745A (zh) * 2020-06-09 2020-09-25 浙江大学 一种基于sgx的区块链交易安全保护系统及其方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200042442A1 (en) * 2018-08-03 2020-02-06 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Practical oram delegation for untrusted memory on cloud servers
CN110889696A (zh) * 2019-11-27 2020-03-17 杭州趣链科技有限公司 一种基于sgx技术的联盟区块链秘钥存储方法、装置、设备及介质
CN111709745A (zh) * 2020-06-09 2020-09-25 浙江大学 一种基于sgx的区块链交易安全保护系统及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王鹃;樊成阳;程越强;赵波;韦韬;严飞;张焕国;马婧;: "SGX技术的分析和研究", 软件学报, no. 09 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810382A (zh) * 2021-08-24 2021-12-17 东北大学秦皇岛分校 一种用于抵御sgx侧信道攻击的密文加载方法
CN114547226A (zh) * 2022-02-28 2022-05-27 深圳市裕熙科技有限公司 基于可信云计算的信息安全大数据管理系统
CN117094037A (zh) * 2023-10-16 2023-11-21 湘江实验室 基于Path+ORAM的多路径缓存写回方法、装置及相关设备
CN117094037B (zh) * 2023-10-16 2024-01-05 湘江实验室 基于Path+ORAM的多路径缓存写回方法、装置及相关设备

Similar Documents

Publication Publication Date Title
CN109716375B (zh) 区块链账户的处理方法、装置和存储介质
US5757919A (en) Cryptographically protected paging subsystem
US6708274B2 (en) Cryptographically protected paging subsystem
US9977918B2 (en) Method and system for verifiable searchable symmetric encryption
Ren et al. Constants count: Practical improvements to oblivious {RAM}
Blass et al. Toward robust hidden volumes using write-only oblivious RAM
Ren et al. Design space exploration and optimization of path oblivious ram in secure processors
Tamrakar et al. The circle game: Scalable private membership test using trusted hardware
EP1451664B1 (en) Systems, methods and devices for secure computing
Elbaz et al. Hardware mechanisms for memory authentication: A survey of existing techniques and engines
US7631195B1 (en) System and method for providing security to a portable storage device
CN112182615A (zh) 一种基于sgx与oram技术的云计算密钥保护系统
US11775177B2 (en) Integrity tree for memory integrity checking
JP2014523020A (ja) 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
Elbaz et al. A parallelized way to provide data encryption and integrity checking on a processor-memory bus
CN109144894B (zh) 基于数据冗余的内存访问模式保护方法
CN107908574A (zh) 固态盘数据存储的安全保护方法
CN112433817A (zh) 信息配置方法、直接存储访问方法及相关装置
Bakas et al. Power range: Forward private multi-client symmetric searchable encryption with range queries support
CN107911221B (zh) 固态盘数据安全存储的密钥管理方法
CN110113151B (zh) 一种对elf格式程序的非侵入式实时加解密方法
US20230259660A1 (en) Integrity tree for memory security
Benadjila et al. Secure storage—Confidentiality and authentication
US20240078323A1 (en) Counter tree
Mayberry et al. Multi-client Oblivious RAM secure against malicious servers

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