一种基于国密算法的云数据加密方案研究
2018-07-16叶成荫
陈 庄 齐 锋 叶成荫
(重庆理工大学计算机科学与工程学院 重庆 400054)(cz@cqut.edu.cn)
近年来云存储技术得到蓬勃发展,2016年《中国云计算白皮书》指出2015年我国云计算市场规模达到378亿元,整体增速31.7%,仅在2015年国务院就出台了3项与云计算相关的政策文件.目前越来越多的企业和个人将数据存放到云端,这种存储方式可以有效提高数据库的存储容量、抗故障能力、响应速度等.
云存储在不断发展的同时安全性问题也日益突出[1],尤其是云端数据的存储和隐私问题,例如雅虎在2016年9月公布用户账号信息遭到黑客盗取,至少5亿用户的信息被泄露;Kromtech Security信息专家近期披露,疑似来自 Patient Home Monitoring的医疗数据存储记录遭到黑客破解,近47 GB的医疗数据文件在云端被公开访问,数据的安全存储和隐私问题已经成为云计算发展的“噩梦”.
基于本文提出了一种全新的云数据加密方案,根据不同的数据类型采取不同的加密策略,有效地解决了云存储加解密目前所面临的技术问题.
1 相关工作
密码技术是确保云数据安全的主导力量,可分为对称加密和非对称加密2种算法.对称加密算法使用相同的加解密密钥,具有运算效率高、计算量小的优点,非常适用于云存储环境下的海量数据加解密,常用的对称加密算法有AES,DES,3DES[2-3]等.非对称加密算法使用不同的加解密密钥,具有高安全性的优点,但是算法复杂性高计算消耗时间量大,不适用大数据加解密,常用的非对称加密算法有 RSA,ECC[4-5]等.目前国际上绝大多数的密码技术标准都是由美国制定和开发的,为确保我国网络安全和社会公众利益,国家商用密码管理局先后发布了一系列密码标准,例如SM2,SM3,SM4[6-8]等密码算法,算法公开后国内外学者对其安全性作了全面测试.除了传统的加密算法以外,目前也出现了一些新的加密技术,例如在文献[9]中Huang等人提出了一种同态加密算法,该算法通过矩阵和向量的运算来加解密数据,但是其密文检索的处理效率很低,离实际的商业应用还有较大的差距;在文献[10]中Ateniese等人提出了基于代理重加密的分布式存储方案,利用半可信服务器进行解密操作,但是无法避免恶意服务器的攻击;在文献[11]中Kamara等人提出了一种面向公有云的加密存储框架,但是目前该框架还没有具体的实施细节,仍处于理论阶段.
关系型数据库已经无法适应云数据的多源异构性,为解决这一问题人们引入了非关系型数据库,但是在查询分析方面能力较弱.目前越来越多的云环境供应商开始采用关系型数据库和非关系型数据库互补的架构方式,来解决在处理不同数据类型上的缺陷和不足.
云数据的多样化存储方式,决定了单一的数据加密方式很难满足实际的应用需求.针对以上问题本文提出了数据分类分级的加密方案,在加密算法的选择上均采用国产密码算法.针对关系型数据库中的结构化数据只对敏感数据进行加密并采用多重密钥管理机制,即可以有效地提高加解密效率,又可以定期更换主密钥增强数据的安全性;针对非结构化数据(文档、图片、视频等)采取客户端本地加密的方式,同时采用混合加密算法解决密文共享问题.
2 方案设计
根据目前国内外研究现状,云平台的设计采用关系型数据库和非关系型数据库优点互补的架构方式,同时采用混合加密算法来克服单一密码算法的缺点和密文共享问题,敏感明文数据的传输需要通过SSL加密通道,具体架构方案如图1所示:
图1 云平台加密架构方案
2.1 客户端加密系统
客户端负责文档、图片等非结构化数据的加解密,用户登录加密系统后选择文件.对于需要加密但是无需共享的文件,使用国密SM4算法加密后上传云端,私钥本地化存储.当云数据中的敏感数据需要共享给第三方时,采取如下的加密方式:
1)客户端
客户端的数据加密方案如图2所示,详细加密步骤如下:
①利用SM3算法将信息产生报文摘要;
②报文摘要用发送方SM2的私钥进行加密,生成数字签名;
③将数字签名和信息使用SM4的私钥进行加密,生成密文;
④使用SM2接收方的公钥对SM4的私钥加密生成数字信封,将密文和数字信封发送给接收方.
2)共享端
共享端的数据解密方案如图3所示,详细解密步骤如下:
①共享端从云端下载密文和数字信封,使用SM2的私钥对数字信封进行解密,生成SM4的私钥;
②使用SM4的私钥解密密文,产生信息和数字签名;
③使用SM2发送方的公钥对数字签名解密,得到报文摘要;同时对原始信息使用SM3再次生成报文摘要;
④对比2个报文摘要,如果相同说明数字签名有效,原始消息没有被篡改;如果不同说明原始消息被修改或签名不可信赖,并产生告警.
2.2 数据库加密系统
关系型数据库中的关系型数据,例如登录信息、个人信息等内容,通过SSL安全通道进行传输,数据到达服务器后先经过加密系统加密,加密后的数据存入数据库中.目前绝大多数的数据库自带加解密功能,但是并不支持国产密码算法,同时DBA的权限过大可以获取所有的密钥,如果黑客获取DBA权限那么所有的数据都将会是透明的.基于此本文设计了一种基于DBMS外层的关系型数据库加密系统,该加密系统由密钥管理模块、加解密引擎模块、密钥管理模块构成,具体架构如图4所示.密钥管理模块采用多级密钥管理机制,使用国产密码算法SM2的公钥去加密表的密钥后存储于加密字典中,而SM2的私钥存储于加密系统中,利用表密钥去保护数据密钥,这种密钥管理方式可以定期更换主密钥而不影响以前加密的数据.加解密引擎模块主要负责数据库的链接和加密算法的选择,数据的加解密采用国产密码算法SM4,在加密粒度的选择上采用的是基于字段的加密方法,能够对某一列敏感数据进行加解密,这种方式避免了数据的全表加解密,有效降低了因加解密造成的时延.加密系统管理模块主要用来验证用户身份的合法性,只有合法用户才能通过该模块访问加密字典,修改加密定义参数.
图4 数据库加密系统架构图
图2 客户端加密方案
图3 共享端解密方案
3 实验结果
客户端加密系统和数据库加密系统使用Java语言编程实现,选用Eclipse作为集成开发环境;数据库使用Oracle和MongoDB,其中Oracle数据库用来管理关系型数据,MongoDB用来存放文件和文件夹信息;云端存储平台利用hadoop搭建.
非结构化数据采用本地加密方式,客户端首先选择需要加密的数据,经过加密后的文件统一以WanaCry为后缀名并上传到云端,为防止云端数据被非法修改,采用SM3报文摘要算法验证数据的完整性.
选取1组明文数据用于论证方案的正确性,通过对比表1和表2的相关实验参数发现,共享端解密过程中得到的明文、报文摘要、SM4的私钥都与客户端加密时产生的参数完全相同.
Oracle数据库用来管理被加密后的关系型数据,无论数据库管理员以何种身份进入都无法看到明文,即使数据库遭到非法入侵也无法获取密钥得到明文信息,具体加密效果如图5所示.数据库加密系统的设计采用基于字段的加密方法,只对表中的敏感信息进行加密,这种方式可以大幅度提高数据的加解密效率.实验过程中分别选取了1万~4万条的数据量,采取了全表加密和敏感信息加密(选取了其中的1列)的方式,通过对比分析发现基于字段的加密方式效率更高,具体实验对比效果如图6所示.
表1 客户端加密实验参数
表2 共享端解密实验参数
图5 数据库加密效果
图6 加密效率对比
4 结 语
本文结合云数据多样化存储的特点,在借鉴传统加密方案的基础上,提出了基于国密算法的云数据分类分级加密方案.该方案集终端数据安全、网络传输安全、数据存储安全技术于一体,有效地确保了云数据的完整性、保密性、可用性.