Openstack令牌访问保护机制的实现方法及系统转让专利

申请号 : CN201610959011.1

文献号 : CN106533694B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王津航陈建海王备何钦铭侯文龙程雨夏黄步添

申请人 : 浙江大学

摘要 :

本发明公开了一种Openstack令牌访问保护机制的实现方法及系统,其中方法为:按照memcache的存储模式将Openstack的token表存储于memcache中,再利用软件防护扩展指令的保护机制对token表进行加密。通过SGX机制由计算机硬件对token信息进行加密,对其访问权限进行控制,使得只能在指定的物理资源(服务器等)上对token信息进行读取和修改,从而保证了token信息的安全性。

权利要求 :

1.一种Openstack令牌访问保护机制的实现方法,其特征在于,按照memcache的存储模式将Openstack的token表存储于memcache中,再利用软件防护扩展指令的保护机制对token表进行加密,包括以下步骤:(1)将token表存储于memcache中,通过软件防护扩展指令为memcache分配可信空间,并生成用以验证可信空间访问权限的密钥,具体包括:(1-1)数据上载:生成memecache的证书,将memecache和其证书上载到处理空间中;

(1-2)SGX驱动器准备:通过SGX驱动器对上载的memecache和其证书进行参数测量,为可信空间分配地址空间和内存页,同时获取memecache的证书信息并传递给SGX硬件处理器;

(1-3)可信空间的建立:SGX驱动器根据测量的参数创建可信空间,并将memecache上的数据信息复制到可信空间中,之后删除处理空间中的数据;

(1-4)密钥的生成:SGX硬件处理器根据memecache的证书信息和SGX硬件处理器自身的特征数据生成可信空间的访问密钥,并通过密钥对可信空间进行加密(2)每次更新token表时,memcache更新数据后,向SGX驱动器发起数据更新请求,通过密钥的验证后,将更新数据备份到可信空间中。

2.根据权利要求1所述的Openstack令牌访问保护机制的实现方法,其特征在于,将token表存储于memcache中,包括以下步骤:(a)编辑/etc/keystone/keystone.conf的token字段:driver=keystone.token.backends.memcache.Token,将token字段的驱动修改为memecache;

(b)重启keystone,并启动memcache,通过memcache对分布式存储的token表进行管理。

3.根据权利要求1所述的Openstack令牌访问保护机制的实现方法,其特征在于,memecache应用的证书信息包括memecache应用证书的哈希值和私钥。

4.一种Openstack令牌访问保护机制的系统,其特征在于,包括:

memcache存储模块,将以openstack的存储方式进行存储的token表进行分布式存储并以memcache作为驱动;

SGX加密模块,基于软件防护扩展指令生成可信空间,用以存储、操作memcache存储模块中的token数据,并生成用以验证可信空间访问权限的密钥;

所述的系统通过权利要求1~3任一项所述的实现方法实现Openstack令牌访问保护机制。

说明书 :

Openstack令牌访问保护机制的实现方法及系统

技术领域

[0001] 本发明涉及云计算运行和存储过程中的安全技术领域,尤其涉及一种Openstack令牌访问保护机制的实现方法及系统。

背景技术

[0002] Openstack是一个开源的云计算管理平台项目,允许企业或服务提供者创建、运行自己的云计算和存储设施,具体包含五个重要构成部分:Nova(计算服务),Swift(存储服务),Glance(镜像服务),Keystone(认证服务)和Horizon(UI服务)。其中,Keystone为所有的Openstack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权,通过对动作消息来源者请求的合法性进行鉴定。
[0003] Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(token)。因为用户名,密码以及tenant名更为直观,所以对于终端用户来说,很少会直接用Token进行操作,但对于自动化测试等操作来说,需要直接调用Openstack的各项api(应用程序编程接口),大量命令都依赖相关用户的token来完成,因此,获得用户的token意味着获得Openstack各项api的授权。
[0004] 然而,每次管理Openstack的过程中都会产生一个新的token进行验证,使得Keystone库的token表可以增长至几十甚至上百GB,对于之后的数据库备份造成不便。为了更好地管理token表,常用的解决方案之一是将token存储于memecached中。
[0005] Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。这是一套开放源代码软件,以BSD license授权协议发布。
[0006] 然而Memcache在自身实现中缺乏足够的安全机制,使得数据可能被未授权的用户访问或截获,因此当其应用于token存储过程中可能导致数据泄露。
[0007] 软件防护扩展指令(Software Guard Extensions,SGX)是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,将安全应用依赖的可信计算基TCB减小到仅包含CPU和安全应用本身,将不可信的复杂操作系统OS和虚拟机监控器VMM排除在安全边界之外,从而保障用户关键代码和数据的机密性和完整性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave(可信空间)中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。

发明内容

[0008] 针对memcache存储令牌(token)表过程中缺乏安全保障的技术不足,本发明提供了一种基于软件防护扩展指令(Software Guard Extensions,SGX)的Openstack令牌访问保护机制的实现方法及系统,提高以memcache存储的token表的安全性。
[0009] 一种Openstack令牌访问保护机制的实现方法,按照memcache的存储模式将Openstack的token表存储于memcache中,再利用软件防护扩展指令的保护机制对token表进行加密。
[0010] Openstack是一中开源的云计算管理平台项目,允许企业或服务提供者创建、运行自己的云计算和存储设施;memcache是一中高性能的分布式内存对象缓存系统;token指Openstack的令牌。
[0011] 在本发明的方法中,在保护openstack令牌时,通过SGX机制由计算机硬件对token信息进行加密,对其访问权限进行控制,使得只能在指定的物理资源(服务器等)上进行数据的读取和修改,从而保证了token信息的安全性。
[0012] 作为优选,Openstack令牌访问保护机制的实现方法,包括以下步骤:
[0013] (1)将token表存储于memcache中,通过软件防护扩展指令为memcache分配可信空间,并生成用以验证可信空间访问权限的密钥;
[0014] (2)每次更新token表时,memcache更新数据后,向SGX驱动器发起数据更新请求,通过密钥的验证后,将更新数据备份到可信空间中。
[0015] 进一步优选的,将token表存储于memcache中,包括以下步骤:
[0016] (a)编辑/etc/keystone/keystone.conf的token字段:
[0017] driver=keystone.token.backends.memcache.Token,将token字段的驱动修改为memecache;
[0018] (b)重启keystone,并启动memcache,通过memcache对分布式存储的token表进行管理。
[0019] 进一步优选的,步骤(1)中,通过软件防护扩展指令为memcache分配可信空间,并生成用以验证可信空间访问权限的密钥,具体包括:
[0020] (1-1)数据上载:生成memecache的证书,将memecache和其证书上载到处理空间中;
[0021] (1-2)SGX驱动器准备:通过SGX驱动器对上载的memecache和其证书进行参数测量,为可信空间分配地址空间和内存页,同时获取memecache的证书信息并传递给SGX硬件处理器;
[0022] (1-3)可信空间的建立:SGX驱动器根据测量的参数创建可信空间,并将memecache上的数据信息复制到可信空间中,之后删除处理空间中的数据;
[0023] (1-4)密钥的生成:SGX硬件处理器根据memecache的证书信息和SGX硬件处理器自身的特征数据生成可信空间的访问密钥,并通过密钥对可信空间进行加密。
[0024] SGX为软件防护扩展指令的缩写。
[0025] memecache的证书信息包括memecache证书的哈希值和私钥。
[0026] 本发明还提供了一种Openstack令牌访问保护机制的系统,包括:
[0027] memcache存储模块,将以openstack的存储方式进行存储的token表进行分布式存储并以memcache作为驱动;
[0028] SGX加密模块,基于软件防护扩展指令生成可信空间,用以存储、操作memcache存储模块中的token数据,并生成用以验证可信空间访问权限的密钥。
[0029] 所述的SGX加密模块包括用户空间、SGX驱动器和SGX硬件处理器,[0030] 用户空间,包括用于加载memecache和其证书的处理空间以及用于为memecache分配的可信空间;
[0031] SGX驱动器,对memecache进行参数测量并为其分配可信空间,同时获取memecache的证书信息并将其传递给SGX硬件处理器;
[0032] SGX硬件处理器,对memecache的证书和可信空间的完整性进行验证,根据memecache的证书的哈希值和其自身特征数据的哈希值生成可信空间的访问密钥,并通过密钥对可信空间进行加密。
[0033] 所述的SGX驱动器属于操作系统;SGX硬件处理器属于硬件构架。
[0034] 密钥是由客户memecache和物理机硬件信息交叉生成,保证了后续验证步骤的安全性和有效性。
[0035] 与现有技术相比,本发明的有益效果为:
[0036] 通过SGX机制由计算机硬件对token信息进行加密,对其访问权限进行控制,使得只能在指定的物理资源(服务器等)上对token信息进行读取和修改,从而保证了token信息的安全性。

附图说明

[0037] 图1为本发明的Openstack令牌访问保护机制的实现方法的流程控制示意图;
[0038] 图2(a)为数据上载阶段工作原理示意图;
[0039] 图2(b)为软件防护扩展指令驱动器准备阶段工作原理示意图;
[0040] 图2(c)为可信空间建立阶段工作原理示意图;
[0041] 图2(d)为密钥生成阶段工作原理示意图。

具体实施方式

[0042] 下面结合附图和实施例对本发明作进一步详细描述。
[0043] 本发明通过2个软件模块实现:memcache存储模块以及SGX加密模块,其流程控制如图1所示。
[0044] memcache存储模块的作用是将以openstack的存储方式进行存储的token表进行分布式存储,并以memcache作为驱动。具体步骤如下:
[0045] (1)编辑/etc/keystone/keystone.conf的Token字段:
[0046] driver=keystone.token.backends.memcache.Token,将其驱动修改为memecache;
[0047] (2)重启keystone,并启动memcache,通过memcache对分布式存储的token表进行管理。
[0048] SGX加密模块的作用是生成可信空间以存储、操作相应数据,并生成用以验证访问权限的密钥。其工作原理具体如下:
[0049] (1)数据上载阶段:如图2(a)所示,创建memcache并生成其证书,其中,memcache证书信息包括其哈希值和私钥,并将memcache和证书上载到处理空间中;
[0050] (2)SGX驱动器准备阶段:如图2(b)所示,SGX驱动器对上载数据进行参数测量,用以为可信空间分配地址空间和内存页,同时SGX驱动器获取memcache生成的证书信息并将其传递给底层SGX硬件处理器;
[0051] (3)可信空间数据建立阶段:如图2(c)所示,SGX驱动器将根据对memcache进行的参数测量,创建可信空间,并将memcache上数据信息复制到可信空间中,之后删除处理空间中的数据。通过SGX硬件处理器对证书和可信空间的完整性进行验证;
[0052] (4)密钥生成阶段:如图2(d)所示,SGX硬件处理器根据证书中哈希值和SGX硬件处理器自身特征数据的哈希值生成可信空间访问密钥,并通过密钥对可信空间进行加密,之后要访问可信空间中的数据必须获得此密钥,从而使得可信空间中存储的memcache数据得到保护。
[0053] 每次更新token表时,memcache更新数据后,向SGX驱动器发起数据更新请求,通过密钥的验证后,将更新数据备份到可信空间中。