APP下载

基于秘密分享的分级安全存储系统设计与实现

2020-04-26鲍康胜

安徽教育科研 2020年4期

鲍康胜

摘要:随着云计算和云存储技术的快速发展和广泛应用,云数据的安全问题也引起了越来越多的关注。用于数据保护的传统加密等技术,运算复杂度较高,且由于加密之后的秘密信息只有一份,一旦丢失秘密信息也将随之丢失。多云存储技术由于复杂度低,因此成为云数据安全的主流技术之一。但是具有丢失容忍特性的多云存储系统还有待于进一步研究与设计。本文将具有丢失容忍特性的秘密分享技术应用于多云存储环境中,设计了一种分级安全存储系统。系统具有防止恶意内部人员窃密、分级权限控制等优点。

关键词:多云存储  内部人员窃密  秘密分享  权限控制

随着云计算的发展,云存储技术越来越受到人们的青睐,把重要数据存放在云上也是越来越多人的选择。然而,仅将数据存放在单个云上将承担很大的风险,因为即使云提供商是可信的,恶意的内部人员仍可能窃取用户信息,导致信息的泄露。

考虑如下一个应用场景,一家公司选择将重要数据存储在云上,但如果是直接将数据以明文形式存放在云上,即使云提供商是可信的,但恶意的内部人员仍然难以防范,因此,考虑以秘密分享方式把秘密分享为n个秘密份额分发到n个云上,只有拿到k及k个以上份额才能恢复秘密,这样恶意的内部人员拿到一个秘密份额是无法得到秘密的任何信息的,提高了数据的安全性。但由于公司内员工(这里把公司中所有人员统称为员工)也分为不同的等级,公司的文件也相应有不同的密级,因此不同等级的员工应该接触到的最高文件密级也不同,员工等级越高,就能操作越高密级的文件,也即是不同等级的员工拥有不同的权限。例如,该公司有高层、中层和底层三个等级的员工,则文件密级对应为密级3、密级2和密级1,高层员工可以对所有密级文件进行操作,如高层员工Alice想发布一个秘密文件,只让中层和高层人员查看,那么她应将文件密级设为2;中层员工能对密级为1和2的文件进行操作;底层员工只能对密级为1的文件进行操作。

用于类似于以上场景的数据保护的传统的加密等技术,运算复杂度较高,且由于加密之后的秘密信息只有一份,一旦丢失秘密信息也将随之丢失,也就是不具有丢失容忍特性。多云存储技术由于复杂度低,因此成为云数据安全的主流技术之一。但是具有丢失容忍特性的多云存储系统还有待于进一步研究与设计。

秘密分享技术是信息加密的重要技术之一,通过秘密分享将秘密s分享成n份,拿到少于k(k本文设计一种分级安全存储系统,把多云存储思想和秘密分享技术结合起来,提供了一种数据加密存储的选择。概括来讲,本系统有以下两个特点:

1.分级安全存储系统主要缓解了单云存储可能会出现的用户数据泄漏问题,尤其是降低了服务商恶意内部人员窃取用户数据的可能。

2.本系统为指定文件进行分级,根据分级确定相应的秘密分享参数,分享出指定份额;同时,用户被赋予不同的访问权限,能够访问满足等级要求的文件,并对文件进行增删查改操作,但无法得到高于其访问权限的文件的任何信息内容。用户的权限设定和文件的分级体现了权限控制的思想,使分级安全存储系统使用更加灵活,应用面也更加广泛。

一、背景知识

一个秘密分享算法一般包括秘密分享(share或generate)和秘密恢复(recover)两个阶段,也称作加密(encrypt)和解密(decrypt)两个过程或者编码(encode)和解碼(decode)两个过程。现以基于图像的秘密分享为例说明秘密分享算法的基本概念,在由多个参与方组成的秘密分享方案中,加密方通过加密算法将秘密分解为多个秘密信息不可见的影子图像,并分发给对应的参与方个体;参与方若想恢复秘密图像,必须获取足够数量的影子图像(除数量基本需求外,也可有其他方面要求)才能恢复原始秘密图像,由此可确保图像传输和储存过程的安全性。在(k,n)门限秘密分享方案(scheme)中,其中k≤n,将秘密信息加密成n个影子图像。参与方如果获取影子图像数量不足k个时,则无法获得任何秘密;在获得大于或者等于k个影子图像时,才能获得原始秘密图像的信息,由此还可以保证在图像传输和存储过程中的丢失容忍性。

起初的(k,n)门限秘密分享是由Blakley和Shamir于1979年分别提出的。目前秘密分享研究较多的分支是Shamir多项式秘密分享和可视秘密分享(又称为视觉密码,visual secret sharing,VSS 或 visual cryptographic scheme,VCS)。

下面具体介绍Shamir多项式秘密分享技术,也是本文设计的分级安全存储模块采用的方法,其优点是几乎可以应用于各种类型的图像、能够无损恢复和具有(k,n)门限等。

设定一个合适的素数p,随机从(0,p-1)内生成k-1个数a1,a2,…,ak-1,把秘密值s设为a0,构造(k-1)次多项式q(x)=a0+a1x+…+ak-1xk-1。显然,对于该多项式,只要知道该多项式的k个互不相同的点的函数值q(xi)(i=1,2,…,k),就可以解出a0,a1,a2,…,ak-1,也即是恢复出秘密a0,生成n个不同的点xi(i=1,2,…,k)并计算函数值q(xi)(i=1,2,…,n),则(xi,q(xi)),i=1,2,…,n,即为分割的n个子秘密。显然,这n个子秘密中的任意k个子秘密即可重构q(x),从而可得到秘密s。

三、基于秘密分享的分级安全存储系统设计与实现

基于上述场景等应用需求,运用秘密分享技术,设计实现分级安全存储系统,根据门限k设置用户权限和文件密级。为简化问题和突出重点,在本机上创建5个文件夹以代替5个云,这样就能避免将数据分发到云上可能出现的数据丢失、乱序、被恶意篡改等问题。假设用户权限为4,该用户拥有对cloud 1、cloud 2、cloud 3和cloud 4四个云的访问权,能对密级为1,2,3,4的文件进行操作,分享一个密级为3的文件,调用(3,3)门限秘密分享算法,得到3个秘密份额,将这3个秘密份额分发到cloud 1、cloud 2和cloud 3三个云上,分享一个密级为4的文件,调用(4,4)门限秘密分享算法,同样得到4个秘密份额,将这4个秘密份额分发到cloud 1、cloud 2、cloud 3和cloud 4四个云上。也即是文件密级等于门限k,用户权限大于等于门限k。通过用户权限控制其对不同云平台的访问能力,通过文件等级限制影子文件的存放范围,这样就实现了基于秘密分享的具有权限控制的分级安全存储系统的设计。

1.整体设计

分级安全存储系统设计以秘密分享技术为基础,融入权限控制的思想,逻辑上包括六个模块:用户注册与登录模块、文件检索模块、文件分享模块、文件恢复模块、文件更新模块和文件删除模块,系统整体框架如图 1所示:

代码实现上分为六个部分,分别是一个主模块和五个功能模块,主模块为SimpleFileSystem.py,功能模块为Register.py,Login.py,Encryption.py,Decryption.py和Delete.py。

执行主模块,首先是用户注册或者用户登录环节,身份验证通过后,即成功进入了分级安全存储系统,可以进行相关文件操作,分别为文件分享、文件恢复和文件删除,操作完毕后,选择退出选项退出系统。

2.关键模块设计

(1)分级安全存储系统的三个核心功能

分级安全存储系统三个核心功能分别是文件分享(加密文件)、文件恢复(读取文件)和文件删除。在注册或者登录成功后,用户即可使用本系统,此时有四个选项供用户选择,即文件分享、恢复、删除和退出系统四个选项。在文件分享部分,用户输入想要分享的文件的绝对路径以及设定的文件密级,系统会根据用户权限检测是否是合法操作,检测通过后即可进行文件分享。在文件恢复部分,系统会检索并显示在该用户查看权限范围内的所有文件的文件标识及对应的文件密级,用户输入想要恢复的文件标识即可进行文件恢复,恢复的文件统一放在recover文件夹中。在文件删除部分,系统会检索并显示在该用户删除权限内的所有文件的文件标识和其对应的文件密级,用户输入想要删除文件的文件标识即可进行文件删除。用户操作完毕后,可以选择退出结束此次操作。

(2)元数据文件

分级安全存储系统中分享恢复的文件的逻辑数据单元包含两个部分,一个是元数据部分,一个是数据部分,元数据是数据的描述信息,用以描述数据。任何格式的文件的元数据部分都由文件标识和文件密级构成,以文件标识为键,文件密级为值,两者构成一键值对,形式为“文件标识”:文件密级。在五个分享云cloud 1~5中,都设一个metadata_i.txt(i=1,2,…,5)的元数据文件,以字典形式存储,元素为分享到相应云中文件的元数据部分(键值对)。

(3)权限控制

分级安全存储系统将n设为5,也即是云的数量为5,用户权限可以设为1,2,3,4,5,值越大,权限越大。文件密级可以设为1,2,3,4,5,值越大,文件密级越高,门限k的大小与文件密级的值是一致的。以权限为4的用户为例,该用户可以将其要加密的文件密级设置为1,2,3,4,即文件密级不大于权限值,因此该用户也只能访问存储在文件系统中密级小于等于4的文件。权限为1的用户为游客,只能访问存储在cloud 1中security_1文件夹中的明文文件,权限为5的用户为系统管理员,能够访问所有密级的文件。

(4)影子文件在云中的存储结构

分级安全存储系统以5个文件夹(分别命名为Cloud 1,Cloud 2,Cloud 3,Cloud 4,Cloud 5)代替5个云,即n值为5,影子文件为打不开的无格式文件,文件标识即文件名。Cloud 1中有Security_1,Security_2,Security_3,Security_4,Security_5五个文件夹,分别用以存放文件密级为1至5的文件的影子文件,而Cloud 2中只有Security_2,Security_3,Security_4,Security_5四个文件夹,Cloud 3中只有Security_3,Security_4,Security_5三個文件夹,以此类推,Cloud 5中只有Security_5一个文件夹。也即是密级为k(k≤5)的文件经秘密分享后得到的k个影子文件,分别存在Cloud 1~k中的Security k文件夹中,如一个权限为4的用户设置一个文件密级为3,分享出3个影子文件后,分别存放在Cloud 1,Cloud 2,Cloud 3三个云中的Security_3文件夹中。

3.模块设计

主要对文件分享和恢复过程进行介绍。

(1)文件分享模块

各种格式的文件在磁盘中都是以0,1序列存储的,以二进制形式读出文件,再以ord函数将每个字节转换为十进制整数(0~255),依次放入一个列表中,这样就将目标文件转换为元素为十进制整数(0~255)的列表,调用秘密分享代码,根据用户权限right的值和文件密级确定门限k,其中文件密级小于等于权限right,等于k值。以权限为4的用户为例,该用户可以将文件密级确定为1,2,3,4,现有一个文件名为filename_1的pdf文件,将其密级设为3,则门限值k也为3,得到该文件的十进制整数列表后,将列表中的每个元素通过(3,3)门限秘密分享算法得到3个分享元素(只有拿到全部的3个分享元素才能恢复秘密),将这3个分享元素按序放至三个空列表中,该文件的十进制整数列表中的每个元素都以此步骤操作,分发完毕后这三个列表中十进制整数即和该文件的十进制列表数目一致,将这三个分享出来的列表按文件恢复过程(详细过程见下一个模块)恢复成三个打不开的无格式文件,文件标识为影子文件的文件名(即没有扩展名),再把这三个‘恢复文件作为秘密分享份额分发到cloud 1、cloud 2、cloud 3的security_3文件夹中,分享完毕。

需要注意的是,密级为1的文件分享时不需要做任何变换,直接复制到cloud 1的security_1文件夹并在metadata_1.txt中记录相应的键值对即可。

(2)文件恢复模块

登录成功若要进行文件恢复,系统遍历cloud 1中的metadata_1.txt文件,将用户权限与每个键值对的值(文件密级)做比对,只要文件密级小于用户权限,即为可访问文件,显示这些文件的文件标识和对应的文件密级,用户输入想要查看文件的文件标识,进行文件恢复。以恢复一个密级为3的filename.doc文件为例,在输入文件标识filename.doc后,系统取出Cloud 1,Cloud 2,Cloud 3中的Security 3文件夹中的filename文件(也即是得到三个影子文件,每一个影子文件无任何秘密信息泄露),运用文件分享过程,以字节形式读出文件,再以ord函数将每个字节转换为十进制整数(0~255),并将十进制整数放入一个空列表,对这三个无格式文件都依此操作,得到三个十进制整数列表,并执行一个循环,每次依次取出三个列表中的一个十进制整数,将这三个数依据秘密分享恢复算法恢复出原文件转换的十进制整数列表中的相应十进制整数,待循环完毕后,则恢复出原文件转换成的十进制列表,再调用chr函数将恢复列表中的每个十进制整数转换为一个字节并拼接为一个二进制字符串,最后根据正确的文件格式(此例为.doc)以二进制写文件的方法,恢复原文件并放到recover文件夹中。

需要注意的是,密级为1的文件存在cloud 1的security_1文件夹中,并且未作任何变换,恢复时根据文件标识在云中找到相应文件直接复制到recover文件夹中即可。

四、系统测试与分析

本节将会具体演示分级安全存储系统的工作过程,先展示分级安全存储系统的构成,再从用户注册和登录开始,以图片形式展示核心功能的实现效果。

1.文件分享

在用户登录或者注册成功后,进入分级安全存储系统,弹出“Are you going to encrypt, decrypt, delete files or exit? encrypy:E, decrypt:D, delete:S, exit:T :”的提示项,输入E为文件分享,D为文件恢复,S为文件删除。先演示文件分享功能,输入E后,弹出“Please enter the file you want to encrypt:”提示项,拖入想要分享的文件即可,而后弹出“Please enter the secret level you want to encrypt:”的提示项,输入权限范围内的文件密级,以分享一文件标识为How_to_share_a_secrect.pdf,密级为3的文件为例, 为用户输入命令, 为cloud 1的security_3中的影子文件(在cloud 2和cloud 3的security_3中一致变化), 为cloud 1中metadata_1.txt中的元数据部分(在cloud 2中的metadata_2.txt和cloud 3中的metadata_3.txt一致变化)。

登录或者注册成功后,输入D,选择文件恢复,系统根据用户权限值检索在权限范围内的所有文件,以文件标识:文件密级的形式显示出来,而后弹出提示项:“Please enter the name of the file you want to decrypt:”,输入想要恢复的文件标识即可进行文件恢复,恢复的文件放入recover文件夹中。以恢复上述分享过的How_to_share_a_secrect.pdf文件为例, 为参数输入, 为recover中的恢复文件。

3.系统分析

根据以上所展示的实验结果,验证了分级安全存储系统基本满足设计思路,能够完成数据的加密存储,恶意人员在拿到少于k个份额影子文件时得不到关于秘密的任何信息,同时也实现了权限控制,用户只能在权限范围内对相应文件进行操作。

分级安全存储系统在测试中还发现存在两点不足,一是存储优化,二是丢失容忍性,下面对这两点以及改进思路进行描述如下。

存储优化方面,分级安全存储系统在分享文件时,每个影子文件的大小与原文件大小等大,如以密级3分享一个文件,则在cloud 1,cloud 2,cloud 3的security_3文件夹中生成三个等大的影子文件,也即是分享一个大小为a的文件,在云中则需要3a的存储空间进行影子文件的存储(存储文件密级越高,所占存储空间越大),如果要分享的文件很大,密级很高,对云存储空间的存储能力是一个挑战,对用户而言,增加了使用成本,因此存储优化是本系统可拓展的方向之一。

这里给出一个存储优化的思路:文件的数据部分使用随机密钥加密,对加密后的数据进行编码(如使用纠删码),密钥使用秘密共享进行划分,每个服务器接收一块加密数据块和一份额的密钥共享。这种方法能够保证存储在云中的总数据量与原文件大小一致(比原文件大小要大一点,因为云中要存储秘密分享后的密钥)。

丢失容忍性方面,分级安全存储系统根据门限k值提出了用户权限和文件密级的概念,引入了权限控制的思想。要实现权限控制,每个用户在分享文件时,确定文件密级必须小于等于自己的权限值的大小,并且根据文件密级k,只往k个云中分发影子文件。因此,在进行文件分享时,首先检查用户想要分享的文件密级大小是否合法,文件密级确定后,影子文件的数量也即确定,密级为k的文件,影子文件数量为k,分发到cloud 1~k的security_k文件夹中。

依次设计思路,权限控制可以实现,但引发另一个问题,系统容错性太差,影子文件没有冗余备份。若云中的一个影子文件在传输过程中出错,或存储在云端的数据受到破坏,那么就不能恢复出原文件。因此,提高系统容错性是可拓展的另一个方向。

这里给出一种提高系统容错性的思路:设置一个具有最高权限的管理员,定时对系统内的文件进行刷新,刷新的办法是根据用户分发到云上的影子文件,利用秘密分享算法得到另外的影子文件以作备份,一般用户还是只能访问权限范围内的规定云。当某个云中数据出错时,错误会在下一次更新时被发现并改正。

本文中设计并实现的分级安全存储系统,把秘密分享技术运用于多云存储,实现了各种格式文件的加密存储,确保拿到少于k个份额的影子文件时得不到关于秘密的任何信息,缓解单云存储中可能出现的数据泄露问题。并且本系统依据门限k设计了用户权限和文件密级,系统为指定文件进行分级,根据分级确定相应的秘密分享参数,分享出指定份额;用户被赋予不同的访问权限,能够访问满足等级要求的文件,并对文件进行增删查改操作,但无法得到高于其访问权限的文件的任何信息内容。用户的权限设定和文件的分级体现了权限控制的思想,使分级安全存储系统使用更加灵活,应用面也更加广泛。本文下一步工作主要集中在提升系统的存储优化和容错性上。

参考文献:

[1]Bessani A, Correia M, Quaresma B, et al. DepSky: Dependable and Secure Storage in a Cloud of Clouds[C]// European Conference on European Conference on Computer Systems. DBLP, 2011.

[2]許春香,肖国镇.门限多重秘密共享方案[J].电子学报,2004,32(10):1688-1689.

[3]谯伟,梁华庆,钮心忻.可视秘密分享技术的研究现状与发展[J].计算机应用研究,2006,23(5).

[4]任方,韩冰,冯景瑜.秘密共享技术及其在图像加密中的应用[J].科学技术与工程,2015,15(16):108-116.

责任编辑:黄大灿