基于SGX的密钥安全管理系统及方法与流程

文档序号:16511616发布日期:2019-01-05 09:22阅读:1533来源:国知局
基于SGX的密钥安全管理系统及方法与流程

本发明涉及一种基于sgx的密钥安全管理系统及方法,属于信息安全技术领域。



背景技术:

随着移动互联网技术的快速发展,网络给人们的生活带来了极大的便利,为提高用户体验,同时保证数据安全性,数据安全一直是研究重点与热点。各种加密算法被应用于分布式系统以实现数据加密,各种密钥管理方案广泛应用于银行、o2o和b2c互联网电商等领域实现密钥管理。目前,如何有效管理密钥并保证其安全性成为各种分布式系统应用中普遍面临的问题。

传统的密钥管理方案一般分为两种,一种是利用软件加密算法对密钥进行加解密,并对密钥进行存储及管理,软件加密灵活性强,安全性相对较低,系统被攻破时,易受软件攻击,白盒加密的安全性较强,但是通常会损失系统性能;另一种是基于硬件安全模块对密钥进行加解密,并对密钥进行存储及管理,硬件加密安全性很强,但需要配置专门的硬件安全模块,成本高昂。



技术实现要素:

鉴于上述原因,本发明的目的在于提供一种基于sgx的密钥安全管理系统及方法,在保证客户端与服务器二者身份可信的情况下,密钥管理相关处理均在enclave内存区中进行,既可保证密钥的数据安全性,又可保证密钥的集中有效管理。

为实现上述目的,本发明采用以下技术方案:

一种基于sgx的密钥安全管理系统,包括客户端与密钥管理服务器,

客户端包括enclave内存区、可信平台模块,

密钥管理服务器包括enclave内存区、密钥数据库,

客户端与密钥管理服务器在验证双方身份可信的情况下,客户端提供一级密钥,并由密钥管理服务器密封存储于该密封数据库中,客户端提供二级密钥,并由密钥管理服务器利用该一级密钥对该二级密钥加密处理后,保存于该密封数据库中,且一级密钥与二级密钥的处理均在enclave内存区中进行。

可选的,所述客户端与密钥管理服务器通过验证双方的enclave度量值进行双方身份的验证,该enclave度量值是于enclave内存区构建过程中,对所有活动日志数据进行数字签名生成的数字签名值。

可选的,所述客户端与密钥管理服务器验证双方身份可信后,通过协商密钥生成会话密钥。

可选的,所述客户端基于所述可信平台模块生成一级密钥,于其enclave内存区中,利用所述会话密钥对该一级密钥进行加密后,将密文一级密钥发送至所述密钥管理服务器,所述密钥管理服务器于其enclave内存区中,利用所述会话密钥对该密文一级密钥进行解密处理,将生成的一级密钥进行密封处理,将生成的密封一级密钥保存于所述密钥数据库。

可选的,所述客户端基于所述可信平台模块生成二级密钥,于其enclave内存区中,利用所述会话密钥对该二级密钥进行加密后,将密文二级密钥发送至所述密钥管理服务器,所述密钥管理服务器于其enclave内存区中,利用所述会话密钥对该密文二级密钥进行解密处理,生成二级密钥,读取所述密封一级密钥,经解密封处理后生成一级密钥,利用该一级密钥对该二级密钥进行加密处理,将生成的第二密文二级密钥保存于所述密钥数据库。

可选的,所述客户端与密钥管理服务器在验证双方身份可信的情况下,通过协商密钥生成会话密钥;所述客户端向所述密钥管理服务器发送密钥请求,所述密钥管理服务器根据该密钥请求,从所述密钥数据库中读取该客户端对应的密钥一级密钥及第二密文二级密钥,将该密封一级密钥及第二密文二级密钥读入enclave内存区中,对该密封一级密钥进行解密封处理,生成一级密钥,利用该一级密钥对第二密文二级密钥进行解密处理,生成二级密钥;所述密钥管理服务器于其enclave内存区,利用该会话密钥对该二级密钥进行加密处理,生成第三密文二级密钥,将该第三密文二级密钥发送至所述客户端;所述客户端接收该第三密文二级密钥,将该第三密文二级密钥读入其enclave内存区,于enclave内存区,利用该会话密钥对该第三密文二级密钥进行解密处理,生成该二级密钥。

可选的,所述客户端向所述密钥管理服务器发送允许访问所述二级密钥的客户端enclave度量值列表,所述密钥管理服务器根据该客户端enclave度量值列表判断所述客户端是否可获取相应的二级密钥。

本发明还提供一种基于所述密钥安全管理系统实现的密钥安全管理方法,包括:

客户端与密钥管理服务器进行双方身份验证;

双方身份验证通过,双方协商会话密钥;

客户端提供一级密钥,并由密钥管理服务器进行密封处理后存储密封一级密钥,客户端提供二级密钥,并由密钥管理服务器利用该一级密钥对该二级密钥加密处理后存储密文二级密钥,

该一级密钥与二级密钥的处理均在双方的enclave内存区中进行。

可选的,所述密钥安全管理方法,包括:

所述客户端与密钥管理服务器进行双方身份验证;

双方身份验证通过,双方协商会话密钥;

所述客户端向密钥管理服务器发送密钥请求,所述密钥管理服务器根据该密钥请求,查找获取相应的密封一级密钥与密文二级密钥,对密钥一级密钥进行解密封处理后,利用生成的一级密钥对密文二级密钥进行解密,将生成的二级密钥发送至客户端;

该密封一级密钥及密文二级密钥的处理均在双方的enclave内存区中进行。

可选的,配置访问所述二级密钥的客户端enclave度量值列表,根据该客户端enclave度量值列表判断是否可获取相应的二级密钥。

本发明的优点是:

1、本发明的系统及方法,基于sgx技术进行客户端与密钥管理服务器的双向身份验证,确保双方在运行环境及数据安全可信的条件下进行密钥管理;

2、本发明的系统及方法,在客户端与密钥管理服务器双方身份可信的条件下,密钥的存储、管理、加解密处理过程等均在enclave内存区中进行,能够有效抵御内存攻击,保证密钥的数据安全性,无需额外配置专门的硬件,成本较低;

3.本发明的系统及方法,对密钥进行分级管理,且可配置密钥管理策略,进一步提高密钥安全性,密钥管理灵活有效。

附图说明

图1是本发明的系统组成框图。

图2是本发明的生成及存储密钥的数据流向示意图。

图3是本发明的获取密钥的数据流向示意图。

具体实施方式

以下结合附图和实施例对本发明作进一步详细的描述。

如图1所示,本发明公开的基于sgx的密钥安全管理系统,包括客户端、密钥管理服务器。客户端配置有sgx模块,普通内存区与enclave内存区,可信平台模块(tpm:trustedplatformmodule)。密钥管理服务器用于对密钥进行管理,并保证密钥安全性,密钥管理服务器配置有sgx模块,普通内存区与enclave内存区,密钥数据库。

基于上述密钥安全管理系统实现的密钥安全管理方法,客户端与密钥管理服务器通过验证双方的enclave度量值进行双方身份验证,在确认双方身份可信的情况下,密钥的存储、管理、加解密等相关处理过程均在enclave内存区中进行,可以有效防止密钥泄露,抵御内存攻击,保证密钥的安全性;同时,通过密钥管理服务器对密钥的集中管理,能够实现密钥的灵活、有效管理。具体的说:

如图2所示,利用本发明的系统及方法,生成、存储密钥的方法具体包括:

s10:客户端与密钥管理服务器进行双向身份验证;

客户端与密钥管理服务器通过验证双方的enclave度量值进行双方身份验证,具体包括:

1)客户端与密钥管理服务器生成各自的enclave度量值;

构建enclave内存区过程中,利用sgxsdk提供的sgx_sign函数接口对所有活动日志数据进行数字签名,生成enclave度量值。若enclave内存区中数据发生改变,enclave度量值也会发生变化。活动日志数据包括:enclave内存区中所有页的数据(代码、数据、堆、栈等);各个页之间的相对位置;各个页的安全属性。

利用sgxsdk提供的sgx_get_quote函数接口获取enclave内存区的引用信息,该引用信息包括enclave度量值、enclave安全版本号,enclave产品id等信息。

enclave内存区构建完成后,利用sgxsdk的签名工具生成签名结构体信息,该签名结构体信息包括enclave度量值、enclave安全版本号,enclave产品id、cpu版本号等信息。部署系统时,客户端与密钥管理服务器分别将各自的签名结构体信息发送至对方,由对方密封保存,用于后续身份验证使用。

2)客户端对密钥管理服务器进行身份验证;

具体过程是:

客户端和密钥管理服务器分别于各自的enclave内存区中生成公、私钥对(如,利用椭圆曲线加密算法生成密钥对),并将生成的公钥发送给对方;客户端和密钥管理服务器收到对方的公钥后,分别利用ecdh密钥交换算法计算生成共享密钥。

密钥管理服务器获取自身的enclave度量值,利用共享密钥对该enclave度量值进行加密处理,将生成的密文enclave度量值发送给客户端;客户端收到密文enclave度量值后,对密文enclave度量值进行解密处理,生成enclave度量值;然后对密钥管理服务器的签名结构体信息解密封处理,获取密钥管理服务器的enclave度量值作为预期值,将解密后的enclave度量值与该预期值进行比较,若二者不一致,则密钥管理服务器身份验证未通过,不进行后续密钥存储及管理流程;若二者一致,则密钥管理服务器的enclave度量值验证通过。

密钥管理服务器的enclave度量值验证通过,客户端生成随机数,计算自身的签名结构体信息的数字摘要值idc,计算密钥管理服务器的签名结构体信息的数字摘要值ids,将生成的随机数、idc、ids利用共享密钥进行加密处理后将密文随机数、idc、ids发送给密钥管理服务器。

密钥管理服务器接收密文随机数、idc、ids后,先利用共享密钥对密文随机数、idc、ids进行解密处理,生成随机数、idc、ids;然后计算自身的签名结构体信息的数字摘要值ids`,计算客户端的签名结构体信息的数字摘要值idc`,分别将idc与idc`、ids与ids`进行比较,若idc=idc`,ids=ids`,则密钥管理服务器身份验证通过,否则密钥管理服务器身份验证未通过;之后,将验证结果与随机数再发送给客户端,客户端收到验证结果与随机数,将收到的随机数与生成的随机数进行比较,若一致,则将密钥管理服务器返回的验证结果作为最终的密钥管理服务器身份验证结果。

3)密钥管理服务器对客户端进行身份验证

具体过程是:

客户端获取自身的enclave度量值,利用共享密钥对该enclave度量值进行加密处理,将生成的密文enclave度量值发送给密钥管理服务器。密钥管理服务器接收该密文enclave度量值,将其读入enclave内存区,利用共享密钥对密文enclave度量值进行解密处理,生成enclave度量值,然后对客户端的签名结构体信息解密封处理,获取客户端的enclave度量值作为预期值,将解密后的enclave度量值与该预期值进行比较,若二者不一致,则客户端身份验证未通过;若二者一致,则客户端的enclave度量值验证通过。

若客户端enclave度量值验证通过,密钥管理服务器计算客户端的签名结构体信息的数字摘要值idc,计算自身的签名结构体信息的数字摘要值ids,将idc、ids利用共享密钥进行加密处理后将密文idc、ids发送给客户端;

客户端接收密文idc、ids后,先利用共享密钥对密文idc、ids进行解密处理,生成idc、ids;然后计算自身的签名结构体信息的数字摘要值idc`,计算密钥管理服务器的签名结构体信息的数字摘要值ids`,分别将idc与idc`、ids与ids`进行比较,若idc=idc`,ids=ids`,则客户端身份验证通过,否则客户端身份验证未通过,不进行后续密钥存储及管理流程,同时记录相应的安全日志。

s11:客户端与密钥管理服务器的双向身份验证通过,客户端与密钥管理服务器通过协商密钥生成临时的会话密钥,并将会话密钥保存于各自的enclave内存区中;

客户端与密钥管理服务器的双向身份验证通过后,客户端与密钥管理服务器在各自的enclave内存区中,以共享密钥为输入数据,利用相同的密钥生成函数生成会话密钥。

s12:客户端基于可信平台模块生成一级密钥,并将该一级密钥读入其enclave内存区,于enclave内存区,利用会话密钥对一级密钥进行加密处理,生成密文一级密钥,将密文一级密钥发送给密钥管理服务器;

s13:密钥管理服务器接收密文一级密钥,将密文一级密钥读入其enclave内存区,于enclave内存区,利用会话密钥对密文一级密钥解密,生成一级密钥,并将一级密钥保存于其enclave内存区;

s14:密钥管理服务器于其enclave内存区,对一级密钥进行密封处理,将生成的密封一级密钥保存于密钥数据库;

数据密封基于aes加密算法,可以在enclave内存区内部生成和数据密封处理相关的加密密钥,并且在解封数据时会验证数据的完整性。利用sgxsdk提供的sgx_seal_data()函数接口对一级密钥进行密封处理可以将一级密钥安全的存储于密钥数据库中,保证数据安全性。

密钥管理服务器根据客户端的enclave度量值及存储时间生成客户端唯一标识,并将客户端唯一标识、该客户端对应的密封一级密钥存储于一级密钥数据表中,然后将生成的客户端唯一标识发送给相应的客户端。

s15:客户端基于可信平台模块生成二级密钥key,并将该二级密钥读入其enclave内存区,于enclave内存区,利用会话密钥对二级密钥进行加密处理,生成密文二级密钥,将密文二级密钥发送给密钥管理服务器;

s16:密钥管理服务器接收密文二级密钥,将密文二级密钥读入其enclave内存区,利用会话密钥对密文二级密钥进行解密处理,生成二级密钥,并将二级密钥保存于其enclave内存区;

s17:密钥管理服务器于其enclave内存区,先从一级密钥数据表中读取出密封一级密钥,对密封一级密钥进行解密封处理,利用一级密钥对二级密钥进行加密处理,生成第二密文二级密钥,将第二密文二级密钥保存于密钥数据库中。

密钥管理服务器将相应的客户端唯一标识、该客户端对应的第二密文二级密钥保存于二级密钥数据表中。

如图3所示,利用本发明的系统及方法,客户端获取密钥的方法具体包括:

s20:客户端与密钥管理服务器进行双向身份验证;

s21:客户端与密钥管理服务器双向身份验证通过,客户端与密钥管理服务器通过协商密钥生成临时的会话密钥,并将会话密钥保存于各自的enclave内存区中;

s22:客户端向密钥管理服务器发送包括客户端唯一标识的密钥请求,密钥管理服务器根据密钥请求中的客户端唯一标识,从一级密钥数据表中读取出该客户端对应的密封一级密钥,将该密封一级密钥读入enclave内存区中进行解密封处理,生成一级密钥;

s23:密钥管理服务器根据密钥请求中的客户端唯一标识,从二级密钥数据表中读取出该客户端对应的第二密文二级密钥,将第二密文二级密钥读入enclave内存区,利用一级密钥对第二密文二级密钥进行解密处理,生成二级密钥;

s24:密钥管理服务器于其enclave内存区,利用会话密钥对二级密钥进行加密处理,生成第三密文二级密钥,将第三密文二级密钥发送至客户端;

s25:客户端接收第三密文二级密钥,将第三密文二级密钥读入其enclave内存区,于enclave内存区,利用会话密钥对第三密文二级密钥进行解密处理,生成二级密钥,供后续数据加解密使用。

本发明中,密钥管理服务器对密钥进行分级管理,可以同时为多个客户端提供集中的密钥管理,其中,一级密钥由客户端提供,用于加密对应客户端的二级密钥,二级密钥是客户端进行实际业务逻辑使用的密钥,使用一级密钥可以实现各客户端的二级密钥的相互隔离。

进一步的,为提高密钥管理的灵活性和有效性,可配置密钥访问控制策略,即配置允许访问密钥的客户端enclave度量值列表。客户端向密钥管理服务器存储二级密钥时,同时提供允许访问该二级密钥的客户端enclave度量值列表,密钥管理服务器将客户端enclave度量值列表一并保存于二级密钥数据表中;客户端获取二级密钥时,若该客户端的enclave度量值在该二级密钥对应的客户端enclave度量值列表中,则该客户端可以获取该二级密钥,否则拒绝访问该二级密钥。

本发明提供的基于sgx的密钥安全管理系统及方法,包括客户端与密钥管理服务器,基于sgx技术进行客户端与密钥管理服务器的双向身份验证,确保双方在运行环境及数据安全可信的条件下进行密钥的存储与处理,且密钥的存储、管理、加解密处理等过程均在enclave内存区中进行,可有效抵御内存攻击,保证密钥的安全性;进一步通过配置密钥分级管理策略和密钥访问控制策略,提高对多个客户端进行密钥管理的灵活性和有效性,增强密钥的保护强度。本发明利用sgx技术,可有效保证密钥的安全性和管理有效性。

以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1