基于同态加密机制的云平台计算安全与完整性保护算法*
2020-09-24王志高严利雄王身丽
王志高,邓 科,严利雄,王身丽,李 挺
(国网湖北省电力公司 检修公司,武汉 430050)
在云计算时代,人们的生产和生活方式发生了深刻的改变,云计算平台具有巨大的存储空间和强大的计算能力[1].在越来越多的数据被迁移到云平台的同时,云平台的安全问题也越发受到关注[2-3].使用云平台存储海量数据主要存在两方面的潜在危险:一是数据采集过程中使用大量的虚拟化基础设备,为数据带来了泄露或丢失的风险;二是数据量呈爆发式增长,结构化和非结构化数据的混合使用也会造成其安全性问题[4].目前,主要通过采用各种加密机制来保护其安全,这些加密机制根据数据类型主要分为动态加密机制和静态加密机制[5-6].静态加密主要包括对称和非对称两种加密算法,对称加密算法使用相同的加密密钥与解密密钥,如RC4、RC5和RC6等;而非对称加密算法对加密与解密使用不同的密钥,如RSA及EIGamal算法等.动态加密机制主要使用同态加密机制,如基于理想格的同态加密算法能够实现所有属性的同态加密[7-8].
在云平台下数据的备份和恢复主要采用异地备份、快照和数据镜像等方式[9-10].而数据的隐私保护主要采用基于匿名化的隐私保护技术、基于完整性验证的隐私保护技术和基于数据变换的隐私保护技术[11],其中,基于匿名化的隐私保护技术和基于数据变换的隐私保护技术容易导致数据丢失;基于完整性验证的隐私保护技术需要较大的计算开销,因此,研究针对不同的数据,根据其实际需求采用不同的隐私保护技术,可以极大地实现隐私保护的目的[12-14].
本文充分考虑云平台下数据计算和存储问题,提出了一种基于同态加密机制的云平台安全保护算法,该算法能系统地保证云平台数据的安全,达到计算信息和数据隐私保护的目的,并且解决了协议进行的数据恢复与完整性验证的问题.
1 云平台计算安全保护算法
1.1 算法描述
本文基于阿里云服务系统,提出了一种基于云端多服务器的计算保护算法.该算法使用多个云服务器存储加密后的数据,由一个代理服务器按照用户的需求对不同的数据生成不同的加密结果,并反馈给用户.该算法不仅能获得更精确、更快捷的计算结果,且还能节省数据使用者的存储空间和存储成本.
计算保护算法的目标是实现数据的完整性、用户响应的正确性和用户信息的隐私性.本文所使用的计算保护算法架构如图1所示,架构使用了4个不同的网络实体,各实体定义如下:1)User(用户),为云平台的使用者,从云平台获取数据存储的结果;2)Data Owner(数据拥有者),云计算平台通常含有多个User,该算法设计了多用户拥有者,并设置各用户具有多个数据条目;3)Cloud Server(云服务器),云服务器为Data Owner提供存储空间以存储海量数据;4)Proxy Server(代理服务器),代理服务器负责接收并响应User的数据存储请求.
图1 计算保护算法架构
计算保护算法包括准备、数据上传和计算3个阶段,各阶段具体描述如下:
1)准备阶段.User通过调用密钥生成算法,输入安全参数即可生成输出加密密钥Ke和解密密钥Kd,并与Data Owner共享密钥且确定最大样本数MAX.
2)上传阶段.上传阶段包括数据标识生成、加密、添加空样本和Salt-hash生成4个步骤:
① 标识生成.第i个Data Owner调用标识生成函数并输入第j条数据条目Tij,即可生成Tij所对应的标识Tagij;
② 加密.第i个Data Owner调用同态加密算法并输入加密密钥及Tij所对应的数据值Vij,可生成密文cij,即可生成数据条目及其值对应的二元组(Tagij,cij);
③ 添加空样本.当Data Owner所拥有的总数据条目小于最大样本数时,生成一个与(Tagij,cij)等长的空样本(dtag,dvalue),其中,dtag为空样本条目,dvalue为空样本的值.该样本并不具有实际意义,但有助于保护用户数据;
3)计算阶段.计算阶段包括数据请求、验证和计算3个步骤:
① 数据请求.用户通过(Tij,Tagij)查找数据条目Tij所对应的Tagij和Cloud Server,并随即添加dtag来保证请求的隐私性,且根据结果查找随机数δk.查找结束后,将δk、hk及随机数生成法则发送给代理服务器.
② 验证.验证步骤实现User和Cloud Server的完整性验证,首先代理服务器将δk、hk发送给Cloud Server,Cloud Server根据接收的信息作应答并返回(Tagij,cij,dtag,h′k)给代理服务器,之后代理服务器将h′k发送给User,最后User比较加收的h′k和本地存储的hk,若h′k=hk,表明数据完整,并将结果发送给代理服务器,结束验证.
③ 计算.代理服务器接收到验证结果后,根据随机数生成法则计算验证结果并发送给User.若无法通过完整性验证则向代理服务器发送错误信息;若通过验证,User使用解密算法得到解密后的结果.
1.2 算法分析
对上述算法进行安全和效率分析:
1)安全分析.计算保护算法为了保证数据的安全隐私,对数据拥有者上传的所有数据均进行了同态加密.当云平台受到攻击时,其只能获取加密后的数据,而无法获取密钥且不能恢复出原数据,因此,该算法能保证用户数据的隐私性.
在数据协议处理过程中,代理服务器和云服务器可能会统计分析各条目内容及其对应值.而在数据上传的过程中,已使用密钥生成函数对其进行了处理.由于密钥具有不可逆性,因此代理服务器和云服务器均无法得知条目的内容.同时,算法为了保护用户数据添加空样本,空样本也会参与计算过程,所以代理服务器和云服务器无法确定用户数据情况,该算法能同时保护条目内容和条目数的隐私性.
该算法也使用了挑战-应答的形式来验证数据的完整性,并使用了Salt-hash值规避代理服务器和云服务器会隐瞒已发生的数据事故的问题,因此,算法能保证计算结果的完整性和正确性.
2 云平台数据完整性隐私保护算法
数据完整性隐私保护算法用于验证数据完整性及在数据发生损坏时,能及时恢复被破坏的数据的能力.该算法的系统模型与计算保护算法类似,且对User、Data Owner和Proxy Server的定义与计算保护算法的定义一致,而这里的Cloud Server定义是为Data Owner提供存储空间以存储海量数据,与计算保护算法不同,这里不再为数据拥有者指定特定的云服务器,数据拥有者只需将数据发送给云平台即可.
该算法主要考虑云计算平台对数据完整性造成的威胁,即云平台管理不善或受黑客攻击时对数据的破坏.此处使用RS编码算法对文件进行编码,假设待编码文件为Ci={Ci,1,Ci,2,…,Ci,MAX},编码参数为t,编码后的结果为Cicode={Cicode,1,Cicode,2,…,Cicode,MAX}.RS编码算法使用纠错能力较强的多元BCH码,具体编码算法为
CiD=(Ci,1,Ci,2,…,Ci,MAX)(I|R)=
{Ci,1,Ci,2,…,Ci,MAX,Ci,MAX+1,…,Ci,t}=
{Cicode,1,Cicode,2,…,Cicode,MAX}
式中:D=(I|R)为分布矩阵;R为监督码多项式.
数据完整性隐私保护算法包括准备阶段、上传阶段、验证阶段和数据恢复4个模块,具体实现过程如下:
1)准备阶段.准备阶段由用户调用秘钥生成算法,输入安全参数即可生成输出加密密钥Ke和解密密钥Kd,并与Data Owner共享密钥且确定最大样本数MAX及编码参数t.
2)上传阶段.数据拥有者调用编码函数,生成密文Ci={Ci,1,Ci,2,…,Ci,MAX}和编码文件Cicode={Cicode,1,Cicode,2,…,Cicode,t}以及每个文件对应的Hash值{H(Cicode,1),H(Cicode,2),…,H(Cicode,t)}.
图2 挑战应答过程
4)数据恢复.当云平台接收到报错信息后,启动数据恢复机制即可根据文件的哈希值和RS编码算法恢复出不完整的数据块.假设需要恢复的数据块为D,则数据恢复表达式为
(Cicode,r1,Cicode,r2,…,Cicode,rn)(I|R)-1D=
{Cicode,s1,Cicode,s2,…,Cicode,sn}
式中:{Cicode,r1,Cicode,r2,…,Cicode,rn}为编码文件;{Cicode,s1,Cicode,s2,…,Cicode,sn}为恢复后的文件;(I|R)-1D为D对应的分布矩阵构成的逆矩阵.
3 实验与仿真分析
为了验证本文所提出算法的有效性,文中基于阿里云平台进行仿真测试.本文采用个人医疗记录数据作为需要加密存储的数据,这些数据为非结构性数据,包含文本和图片.数据的最大样本数MAX固定为20,使用MD5哈希算法对数据进行编码,每个数据样本的大小为1 MB.
本文使用不同数量的数据测试本文算法进行数据编解码所需时间,结果如图3所示.从图3可以看出,计算保护算法和数据完整性隐私保护算法均能在较短的时间内完成数据编码和隐私保护,且数据完整性隐私保护算法所需的计算时间更短.计算保护算法在处理时需要预计算多个Salt-hash值,这会导致一定程度的时间浪费.
图3 不同长度数据的处理时间
本文通过添加不同长度冗余数据测试了数据完整性隐私保护算法的数据恢复能力,不同长度数据的编码及解码结果如图4、5所示.实验结果表明,添加越多的冗余数据所需要的编码时间越长.但当数据发生错误时,能正确恢复的概率越高.而对于数据解码所需的时间并无明显的规律,表明用户选择不同的参数并不能影响云平台的工作效率.
图4 不同长度数据编码所需时间
图5 不同长度数据解码所需时间
本文从数据存储和计算结果两方面分析所提出算法的安全性.本文算法只将用户上传的数据存储在云服务器,并对数据进行加密,当服务器受到攻击时,黑客只能获取加密后的密文,而由于秘钥是保存在用户本地的,因此,黑客无法恢复出原始数据.对于计算结果,本文算法使用Proxy Server接收用户的请求,并计算云服务器所存储的数据,然后返回计算结果给用户,但是Proxy Server并不拥有数据秘钥,因此能保证计算结果的隐私性.
4 结 论
为了保证云平台的安全,在充分考虑云平台数据计算和存储问题的基础上,提出一种基于同态加密机制的云平台计算安全保护算法和云平台数据完整性隐私保护算法.云平台计算安全保护算法能成功实现云平台对加密后的用户数据进行安全计算,并使用同态加密算法保护用户详细信息.云平台数据完整性隐私保护算法能保证数据的完整性,并在数据遭受破坏时恢复出原始数据.仿真测试与实验结果表明,所提出的方法使用较小的计算代价即可有效保证云平台数据的安全.