基于SGX的Hadoop秘钥管理服务安全加强方法转让专利
申请号 : CN201910137462.0
文献号 : CN109981579B
文献日 : 2021-07-02
发明人 : 王冠 , 梁世豪 , 周珺
申请人 : 北京工业大学
摘要 :
权利要求 :
1.基于SGX的Hadoop 秘钥管理服务安全加强方法,其特征在于,包括以下步骤:步骤1:HDFS客户端向KMS发起SGX远程认证请求并完成对KMS的认证;
步骤2:KMS接收HDFS客户端通过安全通道发送通信秘钥SK、SK‑id用以加密服务端返回的私密数据并调用SGX密封机制加密SK保存为加密客户端通信秘钥SSK;
步骤3:HDFS客户端向KMS发起创建加密区秘钥EZK请求;
步骤4:KMS处理创建秘钥请求;
步骤4.1:KMS进入SGX安全区;
步骤4.2:根据客户端指定的秘钥生成算法生成秘钥EZK,KMS调用SGX密封机制提供的加密算法加密EZK得到密封加密区秘钥SEZK;
步骤4.3:KMS通过OCALL调用保存SEZK至秘钥数据库;
步骤4.4:KMS根据客户端权限决定返回EZK秘钥的数据,若客户端拥有获取秘钥权限则KMS用步骤2中的通信秘钥SK加密步骤4.2中的秘钥EZK,得到要返回给客户端的加密加密区秘钥EEZK和EZK元数据,若客户端没有获取秘钥权限,则只返回EZK元数据;
步骤4.5:KMS离开SGX安全区;
步骤4.6:KMS将步骤4.4中的秘钥数据返回给HDFS客户端;
步骤5:HDFS客户端用SK解密收到的秘钥EEZK,得到EZK;
步骤6:HDFS服务端向KMS发起创建EDEK请求;
步骤7:KMS处理创建EDEK请求;
步骤7.1:KMS通过HDFS服务端发送的EZK‑id从秘钥库中取出加密的SEZK;
步骤7.2:KMS进入SGX安全区;
步骤7.3:调用SGX密封解密算法解密SEZK得到EZK;
步骤7.4:KMS在SGX安全区生成数据加密秘钥DEK,并用EZK加密DEK生成EDEK;
步骤7.5:KMS离开SGX安全区;
步骤8:KMS将EDEK发送至HDFS服务端;
步骤9:KMS处理DEK解密请求;
步骤9.1:HDFS客户端将EDEK和客户端通信秘钥SK‑id发送至KMS;
步骤9.2:KMS根据EDEK取出对应的SEZK,根据SK‑id取出对应的SSK;
步骤9.3:KMS进入SGX安全区;
步骤9.4:通过SGX密封机制解密SEZK、SSK,得到EZK、SK;
步骤9.5:用EZK解密EDEK得到DEK;
步骤9.6:用SK加密DEK得到SDEK;
步骤9.7:KMS离开SGX安全区;
步骤10:KMS将SDEK发送至HDFS客户端;
步骤11:HDFS客户端用SK解密SDEK,得到用来实现Hadoop透明加解密的DEK。
说明书 :
基于SGX的Hadoop秘钥管理服务安全加强方法
技术领域
背景技术
据的保护更是一个关键问题。Apache开源项目Hadoop作为流行的大数据分析平台,为了提
高对隐私数据的保护能力,在其平台架构中不断增添更加健壮的安全机制。为了解决数据
存储和数据传输中的安全问题,HDFS(Hadoop Distributed File System)增加了透明加解
密功能,提供对HDFS中存储数据的加密保护。为了支撑HDFS的透明加解密功能,Hadoop引入
了秘钥管理服务(Key Management Service,KMS),它是一种用于管理加密秘钥的集群新服
务。目前HDFS静态数据加密混合使用将加密秘钥与文件元数据组合和依赖外部的秘钥服务
器管理秘钥,基于软件的加密方式虽然易于拓展但其容易受到系统软件攻击,将秘钥存储
在硬件安全模块(Hardware Security Module,HSM)中又价格高昂且不易于拓展。Intel
SGX(Software Guard Extensions)作为新的处理器可信计算技术被提出,用于增强软件的
安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作
封装在一个安全区中,保护其不受恶意软件的攻击,安全区中的代码只能通过SGX提供的
ECALL指令访问,安全区访问外部的代码通过OCALL指令,特权或者非特权的软件都无法访
问安全区,也就是说,一旦软件和数据位于安全区中,即便操作系统或者虚拟机也无法影响
安全区里面的代码和数据,安全区的安全边界只包含CPU和它自身。
发明内容
(Transparent Data Encryption,TDE)提供三种可信的秘钥服务功能:一,为系统生成加密
区秘钥(Encryption Zone Key,EZK)和数据加密秘钥(Data Encryption Key,DEK);二,提
供对EZK的创建、更新、销毁等生命周期管理;三,提供对DEK的加解密服务。本发明通过建立
SGX远程认证的方式安全传递客户端通信秘钥(Session Key,SK),用来在安全区中加密服
务端要传输给客户端的秘钥信息。将EZK、DEK秘钥的生成,加解密等模块转移到受保护的
SGX安全区中,以加强秘钥的安全。
(Sealed Session Key,SSK)。
区秘钥(Encrypted Encryption Zone Key,EEZK)和EZK元数据,客户端没有获取秘钥权限,
则只返回EZK元数据。
附图说明
具体实施方式
在的代码段。为了实现上述目标,在可信区中添加了客户端通信秘钥SK,Hadoop KMS其余秘
钥管理操作如秘钥删除,秘钥id获取等不需要划分为可信区。
义SK‑id和SK发送至KMS,KMS调用SGX密封机制加密SK保存为SSK,此后KMS返回给客户端的
隐私数据将由秘钥SK加密。
create()函数写新文件,NameNode请求KMS使用给定的EZK‑id/版本创建一个EDEK,KMS在
安全区中生成一个新的DEK,KMS从秘钥库获取SEZK,在安全区中解密,得到EZK,KMS从秘钥
库获取SSK,在安全区中解密,得到SK,KMS在安全区中用EZK对DEK进行加密,形成EDEK。然后
KMS将EDEK提交给NameNode,NameNode将EDEK保存为文件元数据的拓展属性。NameNode将
EDEK提交给HDFS客户端,HDFS客户端将EDEK,SK‑id提交到KMS。KMS从秘钥库获取SEZK。KMS
在安全区中用EZK对EDEK进行解密,形成DEK,并用SK对DEK加密得到SDEK。KMS将SDEK提交给
HDFS客户端。HDFS客户端用SK解密SDEK,得到DEK。最后HDFS客户端用DEK加密文件后将密文
提交到DataNodes。
HDFS客户端将EDEK和SK‑id提交到KMS。KMS在安全区中解密根据EDEK中的EZK‑id/版本获取
的SEZK,得到EZK。KMS在安全区中解密根据SK‑id获取的SSK,得到SK。KMS在安全区中用EZK
对EDEK进行解密,形成DEK,并用SK加密DEK,得到SDEK。KMS将SDEK提交给HDFS客户端。HDFS
客户端用SK解密SDEK,得到DEK。最后HDFS客户端读取加密数据块,并用DEK对其解密。