增强OpenStack Swift云存储系统安全功能的方法

第51卷第1期2021年1月
吉林大学学报(工学版)
Journal of Jilin University (Engineering and T e c h n o l o g y Edition)
Vol. 51 No. 1
Jan. 2021增强O p e n S t a c k S w i f t云存储系统
安全功能的方法
宋元1’2,周丹媛U2,石文昌
(1.中国人民大学信息学院,北京100872; 2.中国人民大学数据工程与知识工程教育部重点实验室,北京
100872)
摘要:针对OpenStack Swift云存储系统直接且完整地存储用户文件带来的安全风险,为防 止攻击者从Swift系统窃取完整的用户文件,本文采用数据分割技术将用户文件分割成若干
块,分散存储至不同节点;为防止攻击者利用文件块内容之间的逻辑关系,恢复完整的用户文 件,本文采用数据加密技术将分割后的文件以密文形式存储;为防止攻击者窃取密钥恢复用户 文件,本文采用用户口令与秘密共享相结合的方式,以用户口令为基础分层级加密存储密钥
实验结果表明,本文方法加大了攻击者获取用户文件的难度,提高了 OpenStack Swift云存储 系统的安全性,性能开销属于可接受范围。
关键词:计算机应用技术;云计算;云存储安全;数据分割;数据加密;密钥管理热顶结晶器
中图分类号:TP309 文献标志码:A 文章编号:1671-5497(2021)01-0314-09
液晶大屏拼接墙
DOI : 10. 13229/j. cnki. jdxbgxb20200657
Method to enhance security function of OpenStack Swift cloud
storage system
SONG Yuan12,ZHOU Dan-yuan12,SHI Wen-chang12
(1. School of Information, Renmin University of China .Beijing 100872, C A m a;2. Key Laboratory o
f Data Engineering and Knowledge Engineering {Renmin University of China) of M inistry of E ducation, Beijing 100872, China)
Abstract:To solve the security problem caused by OpenStack Swift cloud storage system directly and completely storing user files, this paper proposes a method to enhance its security function. First of all, the user files are divided into several fragments by using data dispersal technology, which makes it difficult for attackers to obtain complete user files;Second, the segmented files are stored in ciphertext form through data encryption technology to prevent attackers from using the logical relationship between segmented file contents to recover complete user files;In addition, this paper presents a hierarchical management approach to protect various keys in different layers, and combines user password with secret sharing to prevent cryptographic materials leakage. The experimental results indicate that it will increase the difficulty for attackers to obtain user files after using this method, so as to ensure the security of data storage in
收稿日期:2020-05-26.
基金项目:国家自然科学基金项目(61472429,U1836209).
作者简介:宋兀(1990-),男,博士研究生.研究方向:系统安全,可信计算.E-mail:**************
通信作者:石文昌(1964-),男,教授,博士生导师.研究方向:系统安全,可信计算.E-m a i l:w e n c h a n g@ruc.edu
第1期宋元,等:增强O penStack S w ift云存储系统安全功能的方法•315•
OpenStack Swift system,and the performance cost is acceptable to users.
Key words:computer application technology;cloud computing;cloud storage security;data dispersal;data encryption;key management
〇引言
在当今云计算领域,亚马逊提供的云服务已经成为行业公认的事实标准。遵循此标准的OpenStack云操作系统,以开源方式提供类似于亚马逊的云服务,为企业和云服务商提供云计算的基础设施。Swift作为OpenStack的核心组件,已经成为广受欢迎的云存储系统之一[1'2]。然而,在云存储服务推广应用过程中,云数据安全问题一直是最大障碍,云中数据隐私保护问题尤为突出。云安全联盟2018年发布的云计算顶级威胁案例分析报告131指出,三分之二的案例将引发用户数据泄露的问题。OpenStack Swift云存储系统在提供便利服务的同时,也面临着许多现实安全威胁经分析,()penStack Swift系统出于性能和运行效率的考虑,将用户上传文件直接存储,缺少对文件内容的安
全防护,使得攻击者能够从云端节点窃取用户文件内容。此外,攻击者可以根据数据对象名称等参数,计算数据实际存储路径,导致元数据信息的泄露。OpenStack漏洞管理团队V M T发布的安全报告17:表明,Swift系统存在因安全漏洞导致的用户数据泄露问题18's]。
针对上述安全薄弱环节,本文提出一种增强OpenStack Swift云存储系统安全功能的方法,加大攻击者窃取数据的难度,保障用户数据存储的安全性。
1相关工作
文献[10]在Apache Spark框架下提出了一种面向云环境的数据安全存储机制,通过数据加密、数据分割和秘密共享技术,提升Apache Spark框架的安全性,防止数据泄露。文献[11-14]采用不同加密方案,以密文形式存储用户数据,保证云端存储数据的安全性,避免机器学习过程中的信息泄漏。即使数据丢失,由于攻击者不具备密钥,不会造成用户信息泄露。尽管如此,上述研究需要安全的密钥管理机制来防止密码信息暴露l l5a6]。
文献[17]在Hadoop基础上构建了一种云环境下安全分布式存储系统,通过分割和密文存储的方法,保障云端数据机密性。当Hadoop服务需
要读取数据文件时,先通过位于云端的密钥缓存
服务器获取密钥,执行数据解密与组装任务,得到
完整数据。该方法要求密钥缓存服务器中所有密
钥仅存储于内存中,防止密钥被盗。文献[18,19]
采用独立的第三方管理密钥。但是,这种方法需
假定第三方总是可信的,然而在真实的云存储环
境下,该假设并不总是成立[2°]。
文献[21]提出了一种基于边缘计算和差分
存储的云系统和传感器的数据隐私保护方案。该
方案将用户数据分成若干部分,分别存储在本地、
边缘层和云端系统层。但该方案依赖于无线传感
器网络数据的特点,要求管理边缘服务器的用户
需要具备一定的管理经验。为了提高效率及减少
flag标签抗体冗余,文献[22]提供了一个云重复数据消除方
案,用于检测和删除云中相同的用户数据。但是,
为了防止意外故障导致数据丢失,有必要将数据
以多副本方式存储于不同的物理区域。
2 S w i f t系统与安全威胁分析
2.1系统基本架构
如图1所示,从系统组成层次看,OpenStack Swift存储系统主要分为3个部分:客户端、代理
服务节点和存储节点。
客户端公共网络
代理服务节点内部网络存储节点
图1OpenStack Swift系统架构
Fig. 1OpenStack Swift system architecture
(1) 客户端:部署在服务使用者的本地机器上,执行用户对文件上传、下载等数据请求。
(2) 代理服务节点:是Swift系统对外的服务窗口,运行代理服务程序,主要负责接收数据请
求,查定位数据,分布存储于各个存储节点上
.316.吉林大学学报(工学版)第51卷
同时对失败、故障等情况做出相应的处理。
(3)存储节点:实际存储用户数据,通过守护
进程保障数据在系统中的可靠性和可用性。
2.2数据资源组织形式
Swift系统引人了account(租户)、container
(容器)、〇bject(对象)三个概念。租户对应Open-
Stack系统的项目,每个租户下包含若干个容器。
容器类似于文件系统的文件夹,但不允许嵌套。
每个容器下包含若干个对象,对象是存储在云上的用户数据。Swift系统使用SQLite轻量级数据库管理
租户、容器、对象三者之间的关系,数据库采用“文件名.db”命名的单一文件,其中的租户表、容器表分别记录了各自包含容器、对象的元数据信息,如图2所示。
对象1对象2 对象3
图2 Swift系统数据组织形式
Fig. 2 Data organization in Swift system
Swift系统实际存储资源时,使用region(区)和zone(域)的概念对集、节点和存储设备进行管理。区一般按照地理位置边界定义,一个集至少包含一个区,一个区可以划分为一个或多个域。为防止设备故障或自然灾害等导致的数据使用问题,同一数据的不同副本需存至不同的域中。域是同一数据多副本间的失败边界。SW1ft依据集规模,按照存储设备、机架和数据中心划分域,将多副本以“最远距离”的原则进行冗余备份,实现系统的可用性与容错性。
2.3存储映射原理
SW1ft采用改进的一致性哈希算法,维护数据对象与存储设备之间的映射关系。改进的一致性哈希算法提出了虚节点的概念和环(Ring)的管理方式,先将数据对象映射至虚节点,再从虚节点映射至存储设备,实现数据与设备之间的存储关系。在Swift系统中,数据对象上传到云存储的过程如图3所示。
虚节点到设备的映射
图3 Swift系统存储原理
Fig. 3 Swift system storage principle
(1) 数据对象与虚节点之间的映射
虚节点是个逻辑概念,虚节点的数量由云系统规划人员根据系统规模设定。使用MD5散列算法,对租户、容器、文件的名称组成的字符串“Account/Container/Object” 计算求得散列值(Name_Hash),对Name_Hash进行移位操作,可以得到该数据对象对应的虚节点编号。
(2) 虚节点与存储设备之间的映射
如图3所示,Swift使用环(Ring)文件记录存储对象到物理设备之间的映射关系,针对Ac_ count、Container和 Object各有一个 Ring,在 Linux 系统中的文件名分别是account,ring,gz、contain­er,ring,gz和object,ring,gz,其中包含虚节点号、设备号、域、区、IP地址等信息。考虑到数据的可用性,Swift采用冗余备份的方式,将同一个数据映射到多个不同域的设备上。Swift系统通过上传文件的参数,计算该文件在设备中的存储路径。例如,用户上传文件名为“getfilecontxt”的数据对象。根据计算,该数据对象的存储路径为:/srv/node/sdbl/objects/356/d31/59376b34b 3ae4d8fa6912145ce2a3d
31/1460524504.69899. data。
表1给出该示例的有关说明。
经分析,用户文件在确定存储设备后,最终存储的存储目录构成为:设备挂载点/存储设备名/ objects/虚节点编号/Name_H ash的后三位/ Name_Hash值/文件名时间戳.文件扩展名。其中,虚节点编号(356)是由Name_Hash的前4•个字节(59376b34H)右移 Partition Shift Value(22)位计算生成。Name_Hash是租户名/容器名/对象名(userl/texts/getfilecontxt)的 MD5 散列值。Partition Shift Value是Swift系统创建环的时候设定的参数
第1期宋元,等:增强OpenStack S w if t云存储系统安全功能的方法•317.
表1Swift系统数据存储示例
Table 1Data storage example in Swift system
示例项目名称备注
userl Account租户名
texts Container容器名
getfilecontxt Object对象名
/srv/node Path设备挂载点
/sdbl Device存储设备名
59376b34b3ae4d8fa69
Name Hash Account/Container/
12145ce2a3d31
采光天窗Partition Shift O bject的散列值
解子征22
Value
虚节点右移位值
356Partitions虚节点号
d31Suffix _path Name_Hash 的后 3 位1460524504.69899Timestamp文件名时间戳
.data Extension文件扩展名
2.4存储安全威胁
综上所述,Swift系统存储用户文件,需先由代理服务节点借助一致性哈希算法和Ring环文件,建立并维护用户文件与存储设备之间的映射关系,记录用户文件的元数据信息。随后,由选定存储节点的Linux文件系统负责将用户文件存储于该节点的磁盘中。然而,本文分析发现Swift云存储系统底层直接以Linux系统文件的方式,将用户上传的文件完整地存储至Swift节点,对用户文件缺少保护。这使
得攻击者只要具备在Swift 节点的Linux文件系统中读取文件的能力,便能窃取完整的用户文件,导致云端用户数据泄露。
在Swift代理服务节点中存储着用户文件的元数据信息,包含记录于SQLite数据库文件的用户文件名称信息、记录于Ring环文件的用户文件存储位置信息。攻击者一旦具备在代理服务节点的Linux文件系统中读取文件的能力,根据Swift 系统命名规律和文件类型限定,便可能获取所需的SQLite数据库文件和Ring环文件。由于SQLite数据库文件易于通过解析工具掌握其存储结构和存储内容,使得攻击者有能力掌握该代理服务节点负责管理的用户文件名称信息。同时,攻击者借助Swift系统命令读取Ring环文件内容,掌握用户文件的实际存储位置信息,包括存储区域、存储设备编号、存储节点网络地址等。攻击者通过整合用户文件名称信息与存储位置信息,便能掌握用户文件的实际存储位置,为获取用户文件内容明确了的具体的攻击目标。
在存储节点中,Swift系统直接以Linux系统文件的方式存储用户文件,并未对用户文件内容
进行保护,使得存储节点中存储着完整的用户文
件的数据内容。如果攻击者有能力在存储节点的Linux文件系统中读取文件的能力,那么攻击者
便可利用Swift系统在数据存储路径方面存在的
规律,确定用户文件路径名称,搜索并读取用户文
件的数据内容,使得用户存储于云端的数据文件
泄露。
在以下场景下,攻击者具有在Swift系统节点
中读取文件的能力,用户文件可能被泄露:①Swift系统节点的磁盘丢弃,维修前未做磁盘清
除,此时攻击者得到磁盘;②通过存储节点漏洞,
恶意攻击者远程访问磁盘,窃取磁盘数据;③通过
摘取、克隆磁盘等行为,恶意的云系统工作人员获
取Swift系统节点的磁盘数据。
3安全功能增强方法提出
3.1 方法概述
为防止攻击者从云存储系统窃取用户文件内
容,本文提出一种增强OpenStack Swift安全功能
的方法。该方法的核心思想是在用户文件存储至Swift系统之前,从两方面增加攻击者窃取用户文
件内容的难度。
一方面,本方法采用数据分割技术,将用户文
件分割成若干个部分,每个部分称为一个碎片。
利用Sw ift自身存储系统,用户文件以碎片形式分
散存储于不同存储节点上。相比于原有Swift存
储系统,采用本方法后,攻击者很难获取完整的用
户文件。另一方面,虽然用户文件是以碎片形式
存储,但攻击者仍有可能根据内容之间的逻辑关
系,将碎片恢复完整的用户文件。为此,本方法采
用数据加密的方式,使得Swift系统以密文碎片形
式存储用户文件,进一步加大攻击者窃取数据的
难度。
如图4所示,安全功能增强后的OpenStack Swift系统仍采用原系统的三层基本架构:用户
层、代理层和存储层。新增的相关安全功能主要
在代理层的代理服务节点上实施,包括数据加密
与解密、数据分割、密钥管理与保护。
(1) 加密/解密:加密用户上传的数据与解密用户下载的数据。
(2) 数据分割:将密文数据根据数据分割模型,切分为若干小块数据。
•318•吉林大学学报(工学版)第51卷
用户层
代理层
存储层
图4增强后Swift系统架构
Fig. 4 Enhanced Swift system architecture
(3)密钥管理:生成与维护加密解密所需密钥,同时使用密钥分层管理方法保护密钥。
车辆排队长度3.2安全功能增强方式1:数据分割
本方法采用数据分割技术,将用户文件分割成若干碎片,以碎片形式将用户数据提交至Swift 系统。由于Swift系统存储数据位置的不确定性,攻击者很难定位所有数据碎片,恢复用户文件。为了减少系统开销,本文选择只分割不编码的DDS—Strippmg(l,》,《)[23^据分割模型。
但是,由于用户使用文件时,系统仍需将各个碎片恢复成用户文件,本方法需保留用户文件和碎片之间的组成关系记录。而攻击者可以通过窃取该记录,获取完整的用户文件。此外,存储在代理服务节
点的代码可能被恶意人员查看或篡改,系统内重要的敏感信息可能在系统运行过程中被恶意窥探或窃取。
针对上述云端环境可能存在的安全威胁,本文认为可以通过可信计算技术(如可信执行环境和远程证明技术等)加以应对。可信执行环境主要应对两方面问题,一方面是防止代理服务节点的代码被篡改,这部分通常需结合使用完整性度量与远程证明技术,由外部验证实体对代码度量结果的可信性进行判定。另一方面,尽量保证新增的安全功能代码在不受干扰的环境下运行。本方法是以代理服务节点上安全功能的可信执行为前提的,代理服务节点需具有防代码篡改的检测机制和程序可信执行的监控机制,对篡改代码等恶意行为加以监控。目前过国内外已有不少可借鉴的成果[24’25],本文正是以安全功能的可信支撑为基础开展研究的。
3.3安全功能增强方式2:数据加密
加密是最常见的保护数据安全的方法。为了节省时间开销,本文选择128 bit的AES对称加密算法,在代理层中设计一个密钥生成器,随机生成对称密钥,对用户文件进行加密与解密操作。
由于引人加密方式保护数据,本方法需设计密钥的安全管理方法。如图5所示,本方法采用密钥分层管理的方式,对各层密钥加密存储,逐级保护下层密钥。为保证用户数据的机密性,本方法为每个用户数据均生成对应的对称密钥,称为数据密钥,用于数据加密。这样,所有用户数据的机密性问题转
化为大量数据密钥的机密性问题。
Fig. 5 Enhanced security function
为此,本方法为每一个容器创建一个数据密钥盒子,其中存储容器中所有文件的数据密钥。然后,为每个容器生成一个容器密钥,对数据密钥盒子内的所有数据密钥进行加密并分布存储于云端。这样,大量数据密钥的机密性问题转化为少量容器密钥的机密性问题。
为保证容器密钥的机密性,本文将一个用户的所有容器密钥,整合形成一个容器密钥盒子,使用秘密共享算法[25]将容器密钥盒子分割成门限值为(7«,«)的》块秘密共享块。采用关键字层次派生算法™生成秘密共享块的索弓丨,建立索引树,把用户口令(User_key)作为索引树的根节点,形成以User_key为根的二叉树。由于用户口令被认为是只有用户才掌握的机密,使得攻击者很难在没有用户口令的情况下获取容器密钥,从而保障了容器密钥的机密性。此外,本方案暂未考虑用户口令的修改带来索引树的更新问题,待下一步工作完善

本文发布于:2024-09-21 05:30:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/179127.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   用户   文件   密钥   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议