基于内容加密的安全去重算法研究
2020-09-15梁三来
梁三来
(南京视觉艺术职业学院 国际学院,江苏 南京 211215)
随着云存储的不断发展,云端系统的数据量急剧增加。数据去重作为一种系统级无损压缩方法,可以有效地减少冗余数据,提高系统的利用率和性能。然而由于不同用户之间、不同文件之间数据共享,在数据去重的同时,云存储系统面临着许多方面的安全问题。本研究对现有的数据去重加密及密钥管理算法进行分析,并给出了改进方案。
1 基于内容加密的安全去重算法
数据去重云存储系统面临诸多安全问题,如数据窃取、篡改等,为了保证数据的机密性,不同用户采用不同的加密算法,使同一数据有不同的密文,云服务系统无法在此情况下检测并删除重复数据,这样不但增加了用户的计算和开销,而且给云服务提供商带来了使用方面的问题。因此,在云环境下,既保证用户数据安全,又使云服务提供商提供安全的数据去重服务,是当前需要解决的关键且具有挑战性的问题。下面将分析3种典型的基于内容的加密安全去重算法。
1.1 消息锁加密算法
为了解决传统随机数据加密算法无法检测和删除重复数据的问题,2002 年Douceur等[1]提出了一种对称加密算法,也称收敛加密(CE),密钥由原文经过哈希方法计算得到,使相同的数据能得到相同的密钥,可实现云数据密文安全去重。2013 年,Bellare等[2]基于收敛加密提出了一种新的消息锁加密(MLE)算法,并指出收敛加密是消息锁加密的一种特殊形式,并论证了其合理性和实用性。
消息锁加密是一种密钥来自数据哈希值的确定化对称加密算法。数据的加密密钥与数据本身内容相关,加密密钥K由明文M和系统参数共同计算得到,然后利用加密密钥K对数据明文M进行对称加密,生成数据密文C,用户再通过哈希函数对数据密文C计算数据指纹T,并使用数据指纹T检验消息数据是否相同,实现密文数据的重复查询。由于对称加密,所以在恢复数据时可直接利用密钥K对相应的密文C进行解密,从而获得数据明文M,具体过程如图1所示。
图1 消息锁加密算法的加密和解密过程 Fig.1 Message lock encryption algorithm encryption and decryption process
消息锁加密机制使得安全去重成为可能,但是数据的加密密钥由明文本身计算得来,因而知道密文的恶意攻击者,就很容易对可预测消息空间进行暴力破解攻击,从而破解数据明文。
1.2 基于服务器协助的加密算法
消息锁加密机制将数据指纹T作为数据去重的检验依据,容易遭到暴力破解攻击,使其只能在特定的条件下提供有限的安全保障。Keelveedhi等[3]提出了一种基于服务器协助的加密算法,是对收敛加密算法的改进,其中加密、解密和指纹生成算法不变。在该算法中,使用不经意伪随机协议(OPRF)来抵抗恶意攻击者的暴力破解攻击,引入第三方服务器与用户进行交互,并由第三方服务器利用随机信息产生随机的安全密钥,从而避免了收敛加密算法密钥的生成与数据明文内容相关。由于用户无法知晓可信第三方服务器在OPRF协议下所使用的随机密钥信息,所以该算法能够有效地对抗暴力破解攻击。
该算法安全去重的前提,一是相同数据明文产生的数据密文与加密密钥相同,二是要求密钥服务器必须是完全可信的。该方案过于依赖可信第三方服务器,容易产生单点失效的问题。然而密钥服务器在生成密钥时,每次都需要进行几次幂指数运算,计算开销比较大,容易导致密钥服务器过载。
1.3 基于口令认证的密钥交换加密算法
基于口令认证的密钥交换加密算法不需要服务器协助,是一种与传统去重模式相同的两方安全去重架构,可实现不同用户之间的数据密钥交换。用户上传数据的加密密钥,云存储端查询其是否存在,若已存在,表明文件重复,云端返回首次上传数据的用户信息,用户与上传用户连接,通过口令认证的密钥交换方法获得数据的加密密钥,若密钥不存在,则用户为上传者。所有加密密钥都由首次上传密钥的用户生成。该算法要求数据上传用户一直保持实时在线状态,并需要完成多次连接才能共享加密密钥。因此,该算法严重降低了系统性能。
为了保证用户数据的机密性,必须要先对云存储数据进行加密处理,所以不可避免地带来了密钥管理问题。基于内容加密的安全去重算法都是基于数据本身产生的密钥,每个数据块都会产生单独的密钥,为了解密,每个用户都要各自保存密钥,故密钥安全性与管理开销成了新的问题。
2 数据安全去重密钥管理分析
现有的数据去重密钥管理算法可分为3类:单密钥服务器算法,主密钥管理算法和秘密共享的密钥管理算法。
(1)单密钥服务器算法,就是将所有的密钥发送到第三方服务器进行存储与管理,且相同的密钥只保存一份,通过构建密钥与文件之间的映射关系进行管理,这大大增加了密钥服务器的压力,容易形成单点故障问题。
(2)主密钥管理算法,即每个用户使用自身主密钥来加密所有的块级密钥,并将所有加密的密钥发送到云端进行存储。当用户需要恢复数据时,需要同时下载数据块密文和密钥的密文并按序解密。该算法在一定程度上减少了密钥服务器的压力,但随着数据量的增加和重复率的上升,对同一数据,不同的用户上传不同的主密钥,本身就是一种重复,仍然会降低系统性能、增加管理开销。
(3)在收敛密钥管理的研究中,Li等[4]结合密钥交互机制,提出了基于秘密共享的密钥管理算法。每个用户通过收敛加密产生数据块的密钥K,用K(t,n)将块级密钥进行代数分割,分成n个密钥分片,分别传到不同的密钥服务器上,其中只要不少于t个密钥分片就能恢复块级密钥。然而,此算法的安全性取决于密钥分片传输信道,要求云存储服务器与用户间建立安全的信道。另外,随着密钥分片数量的增长,密钥管理开销也逐渐加大。
3 基于内容加密的安全去重算法改进方案
企业调查结果和相关文献均有类似的研究[5],用户间的重复文件占据了 77% 以上的冗余数据,再加上用户内的重复数据块,总共占据 90% 以上的冗余数据。这一结果表明用户与用户之间的冗余数据主要是重复文件,而用户个人文件间的冗余数据主要是重复数据块。为了解决云系统数据去重加密方法存在的暴力破解攻击和时间开销大的问题,可以结合用户间基于文件级和用户内基于数据块级的去重方法。
3.1 改进去重策略的体系结构
图2 基本框架和体系结构Fig.2 Basic framework and architecture
本研究提出的基于内容加密的安全去重改进策略,能够有效避免用户的计算复杂与开销过大问题,以及第三方服务器单点失效问题等。图2显示了改进策略中的体系结构。
3.2 多级密钥管理
针对现有数据去重密钥管理算法存在的管理开销大和系统性能低等问题,可以采用多级密钥管理算法。密钥分成3个层次:文件级、数据块级和分片级。
文件级密钥:对于文件F,用户利用消息锁加密算法产生文件级密钥KF。
数据块级密钥:不重复文件F用户将文件切成数据块Bi,根据数据块密钥生成函数产生密钥Ki,块级密钥用文件级密钥来加密,存到云存储磁盘里。分片级密钥:对于文件级密钥KF,使用秘密共享方案将KF分成n个分片级密钥,存到多个不同的密钥服务器中。
多级密钥管理算法对密钥进行动态更新管理,重复文件只保存一份密钥,这样可有效减少密钥存储空间。秘密共享的密钥把文件级密钥切成n个分片存储到不同的密钥服务器中,既增强了密钥的可靠性,又避免了密钥服务器单点故障问题[6]。所有块级密钥的密文都上传到云端服务器,防止本地数据丢失。因此,多级密钥管理分别利用密钥去重和秘密共享来减少密钥冗余,保证了密钥的安全性,最终实现了密钥管理开销与可靠性的平衡。
3.3 数据上传过程
结合用户间文件级和用户内数据块级安全去重策略,对现有的数据去重加密算法进行改进。用户先利用哈希收敛加密计算文件级密钥,再通过哈希函数对密文进行计算得到文件指纹并发送到云端,由云端利用文件指纹索引来查询是否相同。若文件存在,则需要更新文件元数据;若不存在此文件,则利用分块算法将文件分成若干数据块。用户再利用块级收敛加密计算数据块的密钥和指纹,以同样的方法查询是否为重复数据块,并对非重复数据块进行元数据的存储。数据上传流程见图3。
3.4 数据下载过程
用户向云存储服务器发送身份验证和下载请求,身份验证通过后,则从云存储服务器获得文件谱和数据块。用户连接多个密钥服务器,并从密钥服务器中获得既定个数的分片密钥,用来恢复文件级密钥。用户利用文件级密钥来解密数据块密钥,再通过数据块密钥解密对应的数据块,最后按文件谱序列恢复文件。数据下载流程见图4。
图3 数据上传流程Fig.3 Data upload flow chart
图4 数据下载流程Fig.4 Data download flow chart
4 去重率和安全性分析
4.1 数据去重率分析
基于文件级的数据去重,就是在云存储系统中检查是否存在相同的文件。若发现相同的文件,仅保留一份,其他文件都以指针的方式指向该文件。用户打开文件时,不需要解压或数据重组,不影响数据的读取,但去重的粒度比较大且去重率较低。而数据块去重在这方面有更大的优势,去重率要高得多,特别是在不同文件间存在大量相同数据时。基于数据块的去重算法是将一个文件分成小块,利用哈希算法对所有数据块生成指纹信息,再与数据库中的信息进行对比,如果找到相同指纹,表明数据块已存在,则不再存储,只要改变元数据信息即可,相反则存入数据块。
4.2 数据机密性分析
针对攻击者对云存储服务器端的数据进行线下暴力破解攻击,改进的去重策略能够保证数据的机密性。在所有用户上传数据过程中,块级密钥是由用户协助的收敛加密产生的,破解和窃取有相当的难度。
4.3 密钥安全性分析
数据块的密钥是由文件级密钥通过对称加密生成的。攻击者首先要获得文件级密钥,才有可能获得数据块密钥。文件级密钥通过秘密共享切成n个分片,分布在多个不同的密钥服务器中,攻击者只有收集足够多的密钥分片才有可能恢复文件级密钥,这是非常困难的。
5 结语
随着通信技术的发展和大数据时代的到来,数据量急剧增长,云服务提供商面临着大量的冗余数据。在实现安全去重的同时,如何保证用户数据机密性成为一个新的研究方向。本研究首先介绍了3种典型的基于内容数据的去重加密方法,然后对相应的密钥管理算法进行分析,最后提出了基于内容数据去重加密算法的改进和多级密钥管理算法。