基于Ceph 的私有云平台加密存储方案设计与分析*

2022-11-04 02:22池亚平
北京电子科技学院学报 2022年1期
关键词:密钥组件加密

于 淼 王 雄 池亚平

北京电子科技学院,北京市 100070

0 引言

随着云计算的发展,基于网络虚拟技术、集群技术、分布式技术等实现跨多架构的云存储系统,以其完全数据托管模式不再受容量限制、扩展性差等约束,同时,享受数据备份、迁移等优势。 但是,托管模式下数据的所有权、可控性、机密性等问题成为阻碍云存储快速发展的阻力。当前在政务云环境下支持数据存储的各类组件都或多或少存在着安全问题,特别是在政务办公系统中,后端云存储平台中的数据具有敏感性强的特点,一旦在数据访问过程中或云存储平台中遭受非法窃取或篡改,可能引起比较严重的敏感事件。 保障云平台内部存储数据的绝对安全更是重中之重。 本文在研究国内外加密产品和加密模块应用的基础上,应用Ceph 存储组件,结合云密码服务,设计完成一套基于Ceph 的政务云加密存储方案,可以有效地解决政务云中数据的安全问题。

1 相关工作

国外对云存储的研究和开发起步都非常早,自从Google 公司开始提出云计算[1]的概念以后,大部分的厂家都推出了相关的服务,包括亚马逊简单存储服务、谷歌云存储服务、苹果公司的iCloud 服务[2]。

从上面的几款云存储产品来看,国外对云存储功能的开发以及与实际应用场景的结合己经非常成熟,主要单独的对外提供存储服务,相关的安全性研究局限于数据备份,防止数据因硬件故障或其他客观原因导致的数据丢失,针对黑客攻击等主观因素造成的数据丢失或损坏并不具备足够的安全防护能力。 同时,由于其发展非常迅速,一些新兴的存储后端虽具有一些更加优秀的特性,但缺乏相关研究和实践的支撑。 在众多私有云存储后端中,Ceph 相较于当下使用较多的Swift 来说,具有存储速度快、存储模式多、数据读取效率高的特点。 Ceph 可以提供统一的存储[3]:既可以为Openstack 服务,也可以对外提供对象存储服务[4]。 但是,应用Ceph 作为私有云平台的存储后端且同时提供安全云存储服务的研究成果目前还较少。 现存利用Ceph 进行密文存储的方式主要有,客户端加密:如Linux 内核的Dmcrypt。 加密都在客户端进行,意味着在网络上用户直接上传密文数据。 Ceph 网关加密:在这种模式下,客户端将在每次I/O 操作时将密钥一起传递给Ceph。 客户端需要自己负责管理这些密钥,并且需要记录对象加密时所使用的对应密钥。 上述两种模式下,都需要用户自行管理密钥,存在较大安全隐患。

国内云存储最早出现在阿里云,且发展迅猛。 各企事业单位都积极投入云计算发展,各大IT 企业也在提供多种多样的云存储服务。 比较知名的有:阿里云存储、腾讯云存储、京东云存储。 安全是私有云存储服务发展必须重视的一项指标,也是云存储得以发展的基础。 为保证对象存储中用户数据的安全,针对私有云环境中的各种安全威胁和防护缺陷[5],研究者提出多种数据保护的方案[6]。 这些方案的研究思路主要集中在用户身份认证[7]和数据的加密以及数据的完整性上[8]。 常见的身份认证主要有两种:口令认证和多重身份认证。 口令认证通过用户名和口令实现,简单且快速,但存在口令泄露等缺点[9]。 数据的加密是对数据进行加密处理,在存储端进行密文存储。 数据的完整性指数据存储中的正确性、有效性和一致性[10]。

在已有数据加密方案中,密钥的安全存储是保证数据机密性的关键问题[11],针对云存储环境下的密钥管理,专家和学者提出了多种安全存储方式,如硬件存储,将密钥生成器产生的密钥使用根密钥进行加密,再将根密钥写入硬件设备如Ukey 和密码卡中[12],这需要在机房中部署大量的密码设备,会严重的降低云存储功能的效率,并极大的提高了存储服务的使用成本[13]。另外,一些专家学者提出了多种基于身份认证的安全存储方案,研究者致力于通过有效的身份校验来实现数据的隔离,如Dropbox 公司提出了一种基于哈希加密的密钥存储方法[14],将被验证方的身份信息摘要值进行存储,防止脱库造成的信息泄露[15]。 但针对将攻击目标放在后端数据库的攻击者来说,这种方案依然存在着数据丢失或泄露的风险。 同时,存储时的加密操作势必会降低数据存储的效率,因此需要针对数据存储的性能问题,要进行相关的优化改进。 周林[16]在文献中指出Ceph 组件与传统的私有云存储组件Swift 相比,具有速度性能和存储模式多样的显著优势。 Swift 的架构设计导致在传输速度和延迟时间上都存在不足,主要因为Swift 集群中所有进出的流量都要通过代理服务器,而Ceph 使用更好的算法来处理数据备份,从这点上来说,Ceph 系统允许用户更加灵活地处理大规模所带来的问题[17]。 张晓等[18]指出了Ceph 在存储方面存在的一些不足,如其核心算法CRUSH 的不稳定性,以及结构复杂抽象层次多等问题,并给出了优化数据放置方法、优化IO 逻辑等存储引擎等改进策略。 侯晋成[19]针对云计算特点,提出了多种云环境下的信息安全管理策略,其中针对用户数据安全性,提出了提高云计算数据破解复杂度的信息管理方案。 栾忠祥[20]对已有的云环境下的安全保护技术进行了对比分析,对应用密码学技术的防护方案进行了加密算法分析。针对用户数据加密问题,陈元等[21]人提出了一种基于云存储技术的安全密文区间检索方案,用于提高加密复杂度保障安全性并优化加密性能。李建鹏等[22]人在文献中提出了一种节点优先级算法用于在高并发场景下提高密码服务系统的调度成功率,在云计算海量数据的背景下提升密钥分发效率。 本文借鉴这些优化方案提出并设计了数据存储模块,为高效的加密存储方案提供数据存储支撑。

2 云存储组件选择

针对政务云环境中,对海量小文件读写能力要求较高的特点,本文模拟了政务云的使用场景,对Ceph 和Swift 存储组件进行压力测试,对比了二者在该使用场景下的存储能力。

2.1 Ceph 与Swift 简介

Ceph 是一个分布式存储系统, 具有高扩展性, 高可靠性, 高性能的存储集群, 它目前提供对象存储, 块设备存储, 文件系统存储三种存储应用。 具有高性能、高可用性、高可扩展性。Ceph 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH 算法,强化数据分布均衡性,提高并行度。 同时考虑了容灾域的隔离,实现了各类负载的副本放置规则,例如跨机房、机架感知等。 支持上千个存储节点的规模以及TB 到PB级的数据。 通过去中心化提高了扩展灵活性,使得扩展能力随节点增加而线性增长。

Swift 是OpenStack 开源云计算项目的子项目之一。 Swift 使用普通的服务器来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB 级。 提供高可用分布式对象存储服务,提供了强大的扩展性和持久性,用于永久类型的静态数据的长期存储,应用完全对称的系统架构降低系统运维成本。 具有高可扩展性,数据存储容量与存储性能随存储设备增加线性提升。 Swift的元数据存储是完全均匀随机分布的,没有单点角色,并且在架构和设计上保证无单点业务有效,从而保障了无单点故障的特性。 Swift 被广泛的应用于各类云计算环境中。 表1 对比了两种存储组件的不同点。

表1 Swift 与Ceph 对比

2.2 Ceph 与Swift 性能对比

Ceph 通过C++语言进行开发,在运行速度上要明显优于Swift;Ceph 同时还提供了多种数据存储模式,相较于Swift 专注于对象存储,Ceph还提供了块存储和文件存储功能,在进行政务云环境部署时可以替代其他存储组件,降低部署环境的复杂度;在数据访问方面,Swift 是为云而开发的,云原生的,所以主要的访问方法是通过RESTful API(Application Programming Interface,应用程序接口)。 应用程序可以直接对Swift 寻址(绕过操作系统)并将数据提交给Swift 存储,但也使访问云外的快速存储变得更加复杂。 图1 中给出了Ceph 进行数据访问的体系结构。 相比于Swift,Ceph 更加开放,提供了多种数据访问方式。

图1 Ceph 数据访问体系结构

图1 展示了Ceph 在RADOS(Reliable Autonomic Distributed Objects Store,可靠自主的分布式对象存储)集群的基础上提供了数据抽象和管理层,原生兼容S3 和SwiftAPI 的对象存储服务。 RADOS 网关提供一种使客户端能够利用标准对象存储API 来访问Ceph 集群的服务,Ceph与Swift 在客户端访问对象存储系统方式上存在不同。 在Swift 中,客户端需与Swift 网关通信,这会带来一些潜在的单点故障。 为解决该问题,Swift 环境为Swift 网关实现了高可用性。 而Ceph 使用对象存储设备(OSD),在每个存储节点上运行。 通过OSD 获取存储拓扑的信息,收集二进制对象以访问原始数据。 访问对象存储所需的另一个组件在客户机上运行,因此Ceph对存储的访问没有一个单独的入口点。 这使得它比Swift 更灵活。 但Ceph 在安全性方面存在隐患,云计算节点上的RADOS 客户端直接与RADOS 服务器交互所使用的网络与Ceph 用于未加密复制流量的网络相同。 如果某个Ceph 客户端节点被入侵,攻击者便能得到存储网络的所有流量。

在数据一致性方面,Ceph 采用强一致性设计,即Write-All-Read-One 模式,该模式读取效率较高,而且工程难度较低。 Swift 是基于一致性散列技术,通过计算将对象均匀分布到虚拟空间的虚拟节点上,以此减少移动数据在增加或删除节点时的开销。

因此在使用场景上,由于二者在处理数据一致性上算法的不同,Ceph 在需要高度一致性的虚拟机、数据库和其他数据类型交互的单站点环境中表现良好,比较适合与读多写少的系统。Swift 针对的是读写都比较频繁的场景,更适合处理大量数据的大型环境。

针对本文特定的政务私有云环境,对两种存储组件进行相关性能测试。 集群测试环境如下图所示,控制端发起文件读写请求,用于模拟用户对集群发起的读写请求。

图2 集群测试环境

集群中各结点的资源配置如下表所示。

表2 资源配置

本文在Centos7 操作系统上搭建了Nautilus版Ceph,配置三个OSD(Objects Storage Device,对象存储设备)用于数据存储。 应用COSBench压力测试模块对存储组件进行压力测试。

本次测试的目的在于对比Ceph 和Swift 在相同条件下进行小文件读写的效率。 该测试设置单个客户端,单个客户端线程数为8、设置32个桶、单桶50 个对象(共1600 个对象)、单个对象大小为64KB。 测试中通过LibRados 接口访问Ceph 组件,通过S3(Simple Storage Service,简单存储服务)接口访问Swift,对两种存储组件分别发起小文件存储请求,Ceph 组件测试结果如下表3 所示。 在读写阶段,Ceph 组件读文件速度可以达到36M/S,写文件速度达到9M/S。Swift 测试结果如下表4 所示。 在读写阶段,Swift 组件读文件速度为31.6M/S,写文件速度为7.9M/S。

表3 Ceph 测试结果

表4 Swift 测试结果

根据实验结果,在进行小文件读写测试时,Ceph 读写文件速度明显优于Swift,Ceph 在读写文件速度上相比Swift 要快接近14%。

吞吐量方面,Ceph 相较于Swift 也有着明显优势。

图3 吞吐率对比图

根据实验测试结果,Ceph 在处理小文件的读写能力上,明显优于Swift。 本文的应用场景主要针对政务云等私有云环境,对数据一致性要求较高,对小文件读写能力需求较强,所以Ceph对于此类应用场景具有较大的优势。 但Ceph 在安全性方面仍存在上文所述问题。 针对该安全问题,设计一套安全的数据存储方案。

3 数据加密存储方案设计

在传统的数据加密方案中,根据数据在读写路径中加密阶段不同分为传输加密和存储加密。对于传输加密,为了保证数据的安全性,通常会采用SSL (Secure Sockets Layer,安全套接字协议)协议进行传输。 对于存储加密,即落盘存储的数据,为了保证数据的安全性,通常会采用服务端加密(Server-Side Encryption,SSE)的方法,即在接收到数据之后,先对数据进行加密,再落盘进行存储。 当前政务云环境中,已知方案的密钥生成效率低,分发过程和密钥存储的安全性较差。 因此,本文基于密码机设计密钥管理模块,用于解决数据加密过程中密钥管理的问题。 同时,设计数据加密存储模块,与密钥管理模块进行有效的信息交互实现数据的高效加密存储。

3.1 应用场景需求分析

本文设计的数据加密存储方案,可以应用于一个典型的政务云环境中,如图4 所示。 应用场景主要由用户和政务云平台组成。 用户发起存储或读取数据的请求后,数据加密存储模块向密钥管理模块进行交互,完成密钥的分发和存储,并对数据进行加密存储。 在图4 所示的应用场景中,有着如下几个安全隐患:

图4 应用场景

(1)用户数据发送给服务器阶段可能会遭受窃听等攻击窃取明文数据;

(2)在云平台中,数据密钥传输过程可能遭受恶意攻击窃取数据密钥,从而泄露用户数据;

(3)后端存储介质可能遭受恶意攻击窃取数据。

3.2 方案总体设计

本文提出的基于Ceph 的加密存储方案主要由数据加密存储模块和密钥管理模块组成。 其中,密钥管理模块主要由云服务密码机和后端数据库构成,提供密钥管理服务,具体包括密钥的生成、分发和存储。 数据加密存储模块主要由Ceph 存储组件及后端数据库构成,提供用户数据的加密和存储服务,其中加解密用户数据使用的数据密钥由密钥管理模块负责管理。 当用户发起数据存储请求后,数据加密模块向密钥管理模块发起获取密钥请求,得到密钥管理模块返回的数据密钥后,在Ceph 网关对用户数据进行加密处理,再将密文进行存储。 各模块通过有效的密钥管理、数据加密服务,共同构成一套可靠的加密存储方案,保护用户数据安全性,有效解决政务云平台下的安全问题。

3.3 密钥管理模块设计

本文基于云服务密码机依据国密标准《GM/T 0018-2012 密码设备应用接口规范》而设计的SDF 接口(以C 语言实现提供密码服务的应用接口名称),通过自定义插件的方式将密码机与私有云平台集成起来,作为系统的密钥发生器提供国产密码算法的密钥。 在方案中云服务密码机分为两个工作阶段,分别是初始化阶段和密钥管理阶段。

图5 方案总体设计

在如图6 所示的初始化阶段,调用对应接口函数为Ceph 用户生成SM2 公私钥对,并将私钥传输给Ceph。 该密钥对作为数据加密存储模块的用户公私钥对,用于后续的密钥分发。

图6 初始化阶段

密钥管理阶段如图7 所示,加密时,密钥管理模块收到数据密钥请求后,调用对应接口函数,通过密码设备产生SM4 数据密钥,以及密钥的SM3 摘要值,并使用用户的SM2 加密公钥加密输出,同时将数据密钥的密文、摘要值存储在密钥管理模块的数据库中。 Ceph 端得到用户公钥加密的数据密钥和摘要值,使用用户私钥进行解密后得到明文信息。 再使用数据密钥对用户明文数据进行加密,将密文和上一步中得到的摘要值存储到后端数据库中,并销毁数据密钥。 解密时,Ceph 发送带有摘要值的请求,密钥存储模块通过摘要值比对在数据库中找到对应的数据密钥密文,调用对应接口函数进行解密,得到对应的数据密钥明文,将数据密钥发送给Ceph 端,发送方式同加密步骤一致。 每次进行数据存储都产生唯一的数据密钥,一次一密有效保障了用户数据的机密性。 同时,密钥管理模块内部设计VSM 三层密钥体系用于保护用户应用密钥的安全。

图7 密钥管理阶段

图8 展示了三层密钥体系架构,分别为VSM 主密钥(Device Master Key,DMK)、本地主密钥(Local Master Key,LMK)和用户数据密钥,其中VSM 主密钥为最上层,用于分散生成本地主密钥;本地主密钥为中间层,用于保护存储在VSM 中的各类密钥及敏感信息;用户数据密钥为最底层,用于加密保护海量用户各类应用业务数据。 其中DMK 作为VSM 唯一主密钥,在初始化时由多名管理员导入成分Ukey 到VSM,从而合成产生VSM 主密钥DMK。 将VSM 主密钥读取到硬件密码卡中,密码卡内再分散产生该VSM 的本地主密钥LMK。 通过DMK 对LMK 的分散保护,LMK 对数据密钥的加密保护,从而形成了一套三级密钥保护方案,保证了私有云平台加密存储方案的密钥存储安全。

图8 三层密钥体系

3.4 数据加密存储模块

本文基于Ceph 设计数据加密存储模块,提供用户数据加解密功能,提出对Ceph 组件存储的优化策略,提升系统整体工作效率。

Ceph 存储逻辑如图9 所示,Ceph 网关使用密钥管理模块提供的数据密钥对用户数据进行加密,对得到的密文进行存储。 存储的寻址流程共三步,第一步是File 到Objects 的映射,这次映射将完整的密文数据File 进行切分,映射为多组大小相同的Objects。 每一个切分后产生的Objects 将获得唯一的OID(Objects ID)第二步是Objects 到PG 的映射,PG(Placement Group)是Objects 的逻辑集合,通过计算OID 的哈希值,将OID 映射为一个近似均匀分布的伪随机值,将伪随机值和mask(PG 的总数减1)按位相与,得到PG 序号(PGID)。 第三步是PG 到OSD(Objects storage device,对象存储设备) 的映射,使用CRUSH 算法计算出对象映射到相应的OSDs,这组OSDs 是PG 中的Objects 数据的存储位置。在Ceph 的机制中,一个OSD 平时需要和与其共同承载同一个PG 的其他OSD 交换信息,以确定各自是否工作正常。 由于一个OSD 上承载数百个PG,每个PG 内通常有3 个OSD,一段时间内,一个OSD 需要进行数千次OSD 信息交换,因此提升IO 效率就可以有效提高数据的存储效率。 可以通过设计新的IO 引擎来优化读写速度,比如使用冗余数据技术代替目前使用的三副本技术。 同时寻址过程中使用的CRUSH 算法的结果是可变的,每个存储节点的剩余容量会作为影响因子直接影响到CRUSH 算法结果的分布特性,因此可以对影响因子的选择进行优化和改进,使得到的地址更加随机,提高系统的整体性能。

图9 Ceph 存储逻辑图

3.5 密钥管理模块与Ceph 存储模块的通信设计

本文方案中,密钥管理模块与Ceph 存储模块直接的通信可能成为攻击或窃听的目标,所以一种安全的通信机制必不可少。 上文关于Ceph存储结构的位置提到RADOS 提供了一种利用标准对象存储API 来访问Ceph 集群的服务。它支持 S3 和 Swift API, 可以基于 HTTP(Hypertext Transfer Protocol,超文本传输协议)或HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,超文本传输协议)协议完成数据交换。 设计了如图10 中所示的数据流,以实现安全可靠的数据保护功能。

图10 模块通信数据流

Ceph 存储模块与密钥管理模块的数据交互步骤如下:

(1)Ceph 成功部署后,首先向密钥管理模块发起初始化请求。 发送自己的地址以及用户信息;

(2)密钥管理模块得到请求后,建立对应用户表,同时生成SM2 密钥对,将私钥发送给Ceph,将公钥存入用户表中,初始化阶段完成;

(3)Ceph 对私钥进行存储,在得到用户的数据存储请求后,Ceph 向密钥管理模块发起加密请求。 提供自己的用户信息并进行签名;

(4)密钥管理模块进行验签后,生成SM4 数据密钥及其对应的SM3 摘要值,用Ceph 的用户公钥加密后发送给Ceph;

(5)得到数据密钥后对用户数据进行加密存储,同时将摘要值存入对应用户表中。

Ceph 可以提供SSE 功能,这种方式是指客户端将数据传递到对象网关,网关将数据加密存储到Ceph 集群。 本文采用SSE-C(Server-Side Encryption- Client,用户提供密钥的服务端加密)模式,网关只负责对数据进行加解密处理,不会对Client 所传入的密钥进行管理。 客户端自己为读写加密数据提供密钥,这些密钥都是由客户端自己管理,密钥管理的难度大。 因此,利用密钥管理模块管理密钥,利用SSE 功能对明文数据进行加密保护,再将得到的密文发送给集群进行存储,从而实现了安全可靠的数据存储功能。

4 方案分析

在安全性方面,密钥存储安全基于三级密钥保护机制。 云服务密码机拥有唯一的DMK 由多名管理员导入成分Ukey 合成后存储在密码机内置的密码卡中,从密钥的产生到存储保证了DMK 的绝对安全,同时,密码机利用DMK 分散产生的LMK 对用户私钥进行保护,保证了数据密钥的绝对安全,因此,在数据密钥进行存储时,可以基于上述研究实现多级的密钥保护策略,从而保证了私有云平台加密存储方案的密钥安全性。 数据传输方面,Ceph 与密钥管理模块通过在初始化阶段产生的公私钥对进行密文交互,实现了通信过程的机密性,保障了密钥传输过程的安全性。 数据存储方面,用户数据采用SM4 算法加密进行密文存储,文献[23]中验证了SM4算法具有强抗线性攻击能力,即使遭受针对数据库的恶意攻击,攻击者仅能获得密文数据,难以破解得到明文数据,保证了用户数据的安全性。因此,本方案在密钥安全和数据安全两方面都提供了可靠的安全性保护。 表5 从权责管理、弹性扩展、数据迁移三个方面将本方案与传统私有云数据存储方案进行了对比分析,体现了本方案在安全性和效率方面的创新性。

表5 对比传统私有云存储方案

在可行性方面,经过前期的调查研究,各组件之间可以实现基于HTTP 协议的信息交互。基于密码机强大的海量密钥管理能力,可以实现密钥的有效管理和高效使用,在不降低文件读写速度的情况下,显著提升系统的安全性。 本文通过设计基于云服务密码机的密钥管理模块,来为整个系统提供数据加密的环境。 云服务器密码机是针对云计算环境的特殊场景,设计开发的硬件密码产品,每台虚拟密码机均可实现对主机应用层数据加解密、消息来源正确性验证、密钥管理等能力,最大限度的发挥硬件资源性能,为云环境下的应用系统提供安全的数据加密保护服务。 拥有超大容量密钥库,可安全管理与存储各类应用密钥达八万级。 密码机作为密钥管理模块的核心,提供方案中的密钥管理服务,因此对其海量数据的处理速度进行了相关压力测试。

图11 中3072 表示密码机的并发线程数;0表示测试重复次数;6 表示公私钥加解密在密码机压力测试环境中的功能标识号;4096 表示加解密的分组长度。 在该测试环境下,密码机可以实现每秒处理超过42 万次的公私钥加解密操作,平均每秒处理的数据量达到3Gb 以上。

图11 密码机公私钥加密测试

针对海量文件读写的政务云环境,密钥管理模块提供的海量密钥库可以在SSE-C 模式下降低对用户密钥管理的要求,同时提高密钥的安全性,进而提高数据的安全性、保密性。

5 结语

本文针对云存储数据的加密存储问题进行了研究和分析,通过实验,对比了Ceph 与Swift两种云存储组件在特定使用场景下的性能差异。在此基础上,设计了一套基于Ceph 的私有云平台加密存储方案,用于改进政务云环境下数据存储安全性的问题。 该方案基于云服务密码机设计了密钥管理和数据加密存储功能模块,并通过安全性分析说明了本方案可以有效解决数据存储的安全问题,同时,压力测试验证了面向云环境本方案具备海量密钥管理功能。

猜你喜欢
密钥组件加密
Android系统上移动组件化应用框架设计
幻中邂逅之金色密钥
幻中邂逅之金色密钥
创建Vue组件npm包实战分析
智能机械臂
舰载雷达TR组件冲击计算方法分析
保护数据按需创建多种加密磁盘
谷歌禁止加密货币应用程序
Android密钥库简析
加密与解密