基于SGX的Hadoop秘钥管理服务安全加强方法转让专利

申请号 : CN201910137462.0

文献号 : CN109981579B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王冠梁世豪周珺

申请人 : 北京工业大学

摘要 :

本发明提出了一种基于SGX的Hadoop秘钥管理服务安全加强方法,描述了系统模型和本方法加强Hadoop秘钥管理服务安全性的具体流程。将Hadoop秘钥管理服务中加密区秘钥、数据加密秘钥、加密数据加密秘钥的创建过程和秘钥的加解密模块转移到SGX安全区中;秘钥管理服务客户端通过SGX远程认证的方式建立安全会话,用来传递在秘钥管理服务的安全区中加密发送给客户端的秘钥信息的会话秘钥。本发明提出的方法为Hadoop秘钥管理服务提供了硬件级别的保护。

权利要求 :

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秘钥管理服务安全加强方法

技术领域

[0001] 本专利属于信息安全技术领域,提出了一种基于SGX的Hadoop秘钥管理服务安全加强方法,旨在提高Hadoop秘钥管理服务的安全性。

背景技术

[0002] 随着信息技术的迅速发展,数据越来越决定着企业的未来,与此同时,数据安全性成为大数据平台的重要问题,尤其是在管理医疗信息和财务记录等敏感数据的企业中,数
据的保护更是一个关键问题。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和它自身。

发明内容

[0003] 本发明提供了通过新的处理器可信计算技术Intel SGX技术构建一个基于处理器可信的Hadoop秘钥管理服务安全加强方法。秘钥管理服务主要对HDFS的透明数据加密
(Transparent Data Encryption,TDE)提供三种可信的秘钥服务功能:一,为系统生成加密
区秘钥(Encryption Zone Key,EZK)和数据加密秘钥(Data Encryption Key,DEK);二,提
供对EZK的创建、更新、销毁等生命周期管理;三,提供对DEK的加解密服务。本发明通过建立
SGX远程认证的方式安全传递客户端通信秘钥(Session Key,SK),用来在安全区中加密服
务端要传输给客户端的秘钥信息。将EZK、DEK秘钥的生成,加解密等模块转移到受保护的
SGX安全区中,以加强秘钥的安全。
[0004] 为了实现上述的模型,本发明采用的技术方案是:
[0005] 基于SGX的Hadoop秘钥管理服务安全加强方法,包括以下步骤:
[0006] 步骤1:HDFS客户端向KMS发起SGX远程认证请求并完成对KMS的认证。
[0007] 步骤2:KMS接收HDFS客户端通过步骤1中建立的安全通道发送的通信秘钥SK、SK‑id用以加密服务端返回的私密数据并调用SGX密封机制加密SK保存为加密客户端通信秘钥
(Sealed Session Key,SSK)。
[0008] 步骤3:HDFS客户端向KMS发起创建加密区秘钥EZK请求。
[0009] 步骤4:KMS处理创建秘钥请求。
[0010] 步骤4.1:KMS进入SGX安全区。
[0011] 步骤4.2:根据客户端指定的秘钥生成算法生成秘钥EZK;KMS调用SGX密封机制提供的加密算法加密EZK得到密封加密区秘钥(Sealed Encryption Zone Key,SEZK)。
[0012] 步骤4.3:KMS通过OCALL调用保存SEZK至秘钥数据库。
[0013] 步骤4.4:KMS根据客户端权限决定返回EZK秘钥的数据,客户端拥有获取秘钥权限则KMS用步骤2中的通信秘钥SK加密步骤4.2中的秘钥EZK,得到要返回给客户端的加密加密
区秘钥(Encrypted Encryption Zone Key,EEZK)和EZK元数据,客户端没有获取秘钥权限,
则只返回EZK元数据。
[0014] 步骤4.5:KMS离开SGX安全区。
[0015] 步骤4.6:KMS将步骤4.4中的秘钥EEZK返回给HDFS客户端。
[0016] 步骤5:HDFS客户端用SK解密收到的秘钥EEZK,得到EZK。
[0017] 步骤6:HDFS服务端向KMS发起创建EDEK请求。
[0018] 步骤7:KMS处理创建EDEK请求。
[0019] 步骤7.1:KMS通过HDFS服务端发送的EZK‑id从秘钥库中取出加密的SEZK。
[0020] 步骤7.2:KMS进入SGX安全区。
[0021] 步骤7.3:调用SGX密封解密算法解密SEZK得到EZK。
[0022] 步骤7.4:KMS在SGX安全区生成数据加密秘钥DEK,并用EZK加密DEK生成EDEK。
[0023] 步骤7.5:KMS离开SGX安全区。
[0024] 步骤8:KMS将EDEK发送至HDFS服务端。
[0025] 步骤9:KMS处理DEK解密请求。
[0026] 步骤9.1:HDFS客户端将EDEK和客户端通信秘钥SK‑id发送至KMS。
[0027] 步骤9.2:KMS根据EDEK取出对应的SEZK,根据SK‑id取出对应的SSK。
[0028] 步骤9.3:KMS进入SGX安全区。
[0029] 步骤9.4:通过SGX密封机制解密SEZK、SSK,得到EZK、SK。
[0030] 步骤9.5:用EZK解密EDEK得到DEK。
[0031] 步骤9.6:用SK加密DEK得到SDEK。
[0032] 步骤9.7:KMS离开SGX安全区。
[0033] 步骤10:KMS将SDEK发送至HDFS客户端。
[0034] 步骤11:HDFS客户端用SK解密SDEK,得到用来实现Hadoop透明加解密的DEK。

附图说明

[0035] 图1为本发明设计的基于SGX的Hadoop秘钥管理服务安全加强方法的总体概念图。
[0036] 图2为本发明设计的客户端通信秘钥创建流程图。
[0037] 图3为本发明设计的通信秘钥创建后Hadoop静态加密中创建加密文件流程图。
[0038] 图4为本发明设计的通信秘钥创建后Hadoop静态加密中读取加密文件流程图。

具体实施方式

[0039] 下面结合附图和具体实施例对本发明进行详细说明。
[0040] 如图1所示,基于SGX的Hadoop秘钥管理服务的主要实现原理是通过将原有KMS代码和数据划分为可信区和不可信区,在Hadoop KMS中的可信区即EZK,DEK在内存中明文存
在的代码段。为了实现上述目标,在可信区中添加了客户端通信秘钥SK,Hadoop KMS其余秘
钥管理操作如秘钥删除,秘钥id获取等不需要划分为可信区。
[0041] KMS安全获取客户端会话秘钥SK的流程如图2所示,HDFS客户端向KMS发起SGX远程认证请求根据并完成对KMS的认证,HDFS客户端通过秘钥生成算法生成通信秘钥SK,将自定
义SK‑id和SK发送至KMS,KMS调用SGX密封机制加密SK保存为SSK,此后KMS返回给客户端的
隐私数据将由秘钥SK加密。
[0042] Hadoop KMS主要为HDFS的静态加密读写文件提供秘钥服务。HDFS客户端使用基于SGX的Hadoop秘钥管理服务安全加强方法写入新文件的流程如图3所示。HDFS客户端调用
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。
[0043] HDFS客户端使用基于SGX的Hadoop秘钥管理服务安全加强方法读取加密文件的流程如图4所示。HDFS客户端调用open()函数读文件。NameNode将EDEK提交给HDFS客户端。
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对其解密。