何建成,郭兵
(四川大学计算机学院,成都 610065)
基于云存储的个人数据保管箱的设计与实现
何建成,郭兵
(四川大学计算机学院,成都 610065)
移动互联网时代的到来在促进经济发展和丰富民众生活的同时也带来用户隐私泄露的问题,随着民众对加强个人隐私保护的意识的逐步提高,为此研究设计一款基于云存储的个人数据保管箱系统,对用户隐私数据进行加密存储保护。基于SHA1和AES加密技术实现了个人数据保管箱系统,包括后端服务器系统和手机客户端软件,详细阐述后端服务器的架构以及手机客户端的详细设计,分析软件设计的MVC模式;对市场上可用的云存储方案进行对比,选择可行且成本低廉的存储方案。经过实验和试用表明该系统简洁易操作、运行稳定、能较好地保证用户隐私数据的安全性。
个人隐私;云存储;数据加密;保管箱
移动互联网的快速发展和智能手机的普及使得人们能便捷的将自己的私密图片、音视频等数据存储在手机并上传至云端。普通智能手机自带的存储系统对存入的数据没有进行任何加密处理,一旦人们的手机丢失或者被盗,就有可能造成个人隐私数据泄露而带来风险。为此设计了一款基于云存储的个人隐私[1]数据保管箱系统,可存储的数据类型有文字、图片、音频、视频等,针对不同数据类型采用不同加密方法,从数据库层、服务器层、系统管理员层等多层次进行安全监管,采用目前流行的云存储方案,确保数据安全。本文将从云存储、安全机制、软件设计实现、实验验证四个方面展开。
云存储[2]是在云计算(Cloud Computing)概念上延伸和发展的一种新兴网络存储技术,是指利用集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中将会配置大量存储设备,此时云计算系统就转变成一个云存储系统。一方面,相比传统的存储系统会因为系统升级或者硬件故障导致服务停止的不足,云存储利用分布式原理将文件和数据存储在不同的节点,当系统升级或者硬件故障时,云存储系统将读写指令导向存放在另一台存储服务器上的文件来保证正常持续的服务。另一方面,在云存储设备的选择上面,如果普通用户或企业选择自己搭建云存储服务器,将会面临高额的成本(购买设备的费用和维持设备正常运转的费用)压力。通用的解决办法是选择市面上已经成熟的云服务提供商提供的云存储方案[5],国内比较著名的有阿里云,腾讯云、新浪云等,国外的有微软Azure、亚马逊Glacier、谷歌云平台等。表1为阿里云和腾讯云在稳定性、可扩展性和维护便利性方面的比较。综合比较因素,选择阿里云作为存储方案。
表1 阿里云与腾讯云的比较
2.1 加密原理与方法
用户首次创建保管箱时需要设定保管箱密码,密码必须符合一定的格式要求:长度不低于8位,必须由数字、字母和下划线组成。这样可降低简单密码被轻松攻破的风险。为了防止密码在传输过程中被窃取,对用户密码采用安全散列算法(SHA1)进行加密,SHA1面对强行攻击和密码分析攻击都具有很好的防护性能。以加密字符串“abc”为例,SHA1加密原理可分解为以下五个步骤:
(1)补位。将”abc”转换成二进制表示01100001 0110001001100011,长度为24位,对其进行补位,使其长度在对512取模后的余数是448,即(补位后的消息长度)%512=448。补位方法为:先补一个1,然后再补0,直到长度满足对512取模后余数是448。补位完成后的数据用16进制表示为:61626380 0000000000 000000 00000000 00000000 0000000000000000 000000 00 00000000 0000000000000000 00000000 00000000 00000000
(2)补长度。将原始数据的长度补到已经进行了部位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。如果消息长度不大于264,那么第一个字就是0。进行补长度操作后的数据变为:61626380 0000000000000000 00000000 00000000 000000000000 0000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000018
(3)常量定义。定义80个常量字K(0),K(1),…,K(79)。16进制表示如下:
Kt=0x5A827999(0〈=t〈=19)
Kt=0x6ED9EBA1(20〈=t〈=39)
Kt=0x8F1BBCDC(40〈=t〈=59)
Kt=0xCA62C1D6(60〈=t〈=79)。
(4)函数定义。每个函数ft(0〈=t〈=79)都操作32位字B,C,D并且产生32位字作为输出。ft(B,C,D)如下定义:
ft(B,C,D)=(B ANDC)or((NOT B)AND D)(0〈=t〈=19)
ft(B,C,D)=B XOR CXOR D(20〈=t〈=39)
ft(B,C,D)=(B ANDC)or(B AND D)or(C AND D)(40〈=t〈=59)
ft(B,C,D)=B XOR CXOR D(60〈=t〈=79).
(5)计算消息摘要。计算需要两个缓冲区,每个都由5个32位的字组成,还需要一个80个字的缓冲区和一个一个字的TEMP缓冲区。第一个5个字的缓冲区被标识为A,B,C,D,E。第二个5个字的缓冲区被标识为H0,H1,H2,H3,H4。80个字的缓冲区被标识为W0,W1,...,W79。在处理每个数据块之前,缓冲区{Hi}被初始化为下面的值(16进制)。
H0=0x67452301
H1=0xEFCDAB89
H2=0x98BADCFE
H3=0x10325476
H4=0xC3D2E1F0.
对于分组的数据块M1,M2,…,Mn进行以下处理:
(1)将Mi分成16个字W0,W1,…,W15,W0是最左边的字
(2)对于t=16到79令Wt=S1(Wt-3 XOR Wt-8XOR Wt-14 XOR Wt-16).
(3)令A=H0,B=H1,C=H2,D=H3,E=H4。
(4)对于t=0到79,执行下面的循环
TEMP=S5(A)+ft(B,C,D)+E+Wt+Kt;
E=D;D=C;C=S30(B);B=A;A=TEMP;
(5)令H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E。
在处理完所有的数据块后,消息摘要是一个160位的字符串,以下面的顺序标识H0 H1 H2 H3 H4。
对于存储在保管箱中的图片、文本、音频和视频等小量数据采用高级加密标准算法(AES)加密。算法主要分为两步:
(1)初始置换。其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0= D58D50……D8;R0=D57D49……D7。
(2)经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。图1为EBC分组模式。
图1 EBC分组模式图
2.2 数据流向与关键技术
系统基本业务数据流向:存入保管箱的用户个人数据采用自定义AES加密[1](KEY=MD5(手机号+用户名+固定关键字)),再通过移动互联网(Wi-Fi/GSM/3G/ 4G等)并在传输层进行SSL非对称加密后采用https同步协议传输机制安全高速传输到阿里云端服务器存储。后台接收到用户请求后,调用相应的服务解密模块和应用处理程序,进行应用的分布式存储、OLAP实时在线分析和手机应用App的更新和同步。系统用到的关键技术有:
(1)数据加密强度和解密效率之间的平衡问题[6]。因为用户隐私数据加密强度越高,消耗的资源越多,后端服务解密需要的相应时间就会延迟。在高并发情况下,会造成系统访问瓶颈。
(2)基于Token的用户身份验证机制。系统采用带版本号与时间戳的对称加密的用户认证Token机制防止会话劫持,确保Token作为应用程序的私有数据,对其他应用不可见,确保Token的安全性。
3.1 服务器端架构
软件服务端采用MySQL+Apache+JSP[7]架构设计,实现与手机客户端的交互,整个服务器后端由三层组成:系统服务层、云存储层、管理控制层。其中:
(1)系统层负责操作系统层的网络、存储、负载均衡等基本服务。
(2)云存储层负责整个服务器后端的集群管理、分布式存储,其中分布式存储采用Swift对象存储,以确保服务器端存储管理的可扩展性。
(3)管理控制层对系统管理员提供集群管理和监控。
3.2 手机客户端
移动客户端基于Android操作系统,客户端与服务器端通过开放的API,也就是服务器端提供的Web-Service与服务器端实现文件的访问、同步、权限和用户管理。客户端的设计采用MVC模式[8],即Model(模型)、View(视图)、Control(控制器)三层架构。模型层封装了应用的一系列数据,并定义了操作、处理数据的逻辑和运算规则。视图层面向用户,将数据展示给用户并且响应用户的操作。控制层协调模型层和视图层。
客户端开发采用Eclipse+ADT(Android Develop ment Tools)[7]集成开发环境。主要用到的Java文件有: SafeboxAddEditActivity.java,实现保管箱内容的增加和修改,SafeboxFirstTimeEntryActivity.java,实现用户创建保管箱的功能,SafeboxListActivity.java,实现保管箱记录的列表显示。
(1)创建保管箱
用户第一次进入保管箱需要设置密码和安全问题。安全问题用于用户找回密码。用户完成设置后点击完成按钮,将密码和安全问题及其答案上传到后端服务器数据库。
(2)登录保管箱
用户每次进入保管箱,需要输入密码进行验证。登录界面比较简单,包括密码输入框、确定、取消按钮和找回密码按钮。
(3)对保管箱的操作
对保管箱进行记录新增,查询,删除,修改等操作,可添加的附件包含图片、音频、视频和文本。
Java封装了用于加密的类,在java.security包下。加密方法[9]Encrypt(String key,String content)。Key为加密密钥,content为需要加密的内容。
解密方法DeEncrype(String content,String key),content为待解密内容,key为解密密钥。密钥产生过程与加密密钥产生过程一致,区别在于解密时直接将待解密的content作为cipher.doFinal()的参数,不需要再转换成字节数组。
3.3 实验验证
将软件安装在Android手机上进行测试,选择手机上部分图片和文件放入隐私保管箱,手机原来的图片和文件将被删除,并且用户每次查看保管箱,都需要输入密码才能进入。保管箱数据上传到云端几乎没有延迟,且后台无法查看用户的隐私数据。软件设计完成后邀请了部分老师和同学进行试用,反馈结果表明系统存在以下优点和不足:
(1)相比市场上同类软件,如金山隐私保管箱、360隐私保管箱,具有界面简洁,高可靠性,易于操作的特点。
(2)趣味性不足,缺乏用户之间的互动,无法让用户长期拥有使用兴趣,这将是进一步改进的方向。
本文详细阐述了公共云存储的数据加密机制与安全云端存储服务系统架构,设计并实现了个人数据保管箱系统。系统确保在用户手机丢失或者被盗的情况下防止数据泄露,并且方便用户快速找回存储在云端的数据。系统中用到的技术在保护用户手机隐私数据安全性上具有重要的研究价值和广阔的应用前景。
[1]黄刘生,田苗苗,黄河.大数据隐私保护密码研究综述[J].软件学报,2015(4).
[2]孟小峰,慈祥.大数据管理:概念、技术与挑战[J].计算机研究与发展,2013(1).
[3]李晖,孙文海,李凤华,王博洋.公共云存储服务数据安全及隐私保护技术综述[J].计算机研究与发展,2014(7).
[4]刘雅辉,张铁赢,靳小龙,陈学旗.大数据时代的个人隐私数据保护[J].计算机研究与发展,2015(1).
[5]纪芳.云存储模式下智能手机个人信息的安全问题及对策[J].网络安全技术与应用,2014(10).
[6]张峰,李基亮.校园私有云存储方案的探索[J].华东师范大学学报(自然科学版),2015(zl).
[7]Bill Phillips,Brain Hardy.Android Programming:the Big Nerd Ranch Guide[M].人民邮电出版社,2014.
[8]曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011(27).
[9]王良,王伟平,孟丹.FVS k-匿名:一种基于k-匿名的隐私保护方法[J].高技术通讯,2015(3):228-23.
[10]Mark Allen Weiss.Data Structures and Algorithm Analysis in Java,Second Edition[M].China Machine Press(2015.7).
[11]Cay S.Horstmann,Gary Cormell.Core Java Volume I-Fundamentals,Ninth Edition[M].China Machine Press(2015.9).
[12]Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer.Java Concurrency in Practice[M].China Machine Press(2016.6).
HE Jian-cheng,GUO Bing
(College of Computer Science,Sichuan University,Chengdu 610065)
The era of the mobile internet has both promoted economic development and enriched peoples'lives,yet at the same time has also led to problems regarding disclosure of user privacy and economic losses.With increasing public awareness of the importance of personal privacy,it is necessary to strengthen the protection of personal data generated in online activities.Presents a system based on cloud storage of personal data,where data is encrypted and stored in the user privacy protection security system.SHA1 and AES-based encryption technology to achieve the personal data Vault system,including back-end server and mobile client systems.It introduces the back-end server system and mobile client composition,as well as mobile client design,and analysis of the MVC software design pattern.Comparing the cloud storage solution available in the market,the most feasible and low-cost services was chosen.The results show that the system is simple and easy to operate,stable,and ensures data security.
Personal Privacy;Cloud Storage;Data Encryption;Security
国家自然科学基金重点项目(No.61332001)、国家自然科学基金资助项目(No.61272104)、国家自然科学基金资助项目(No.61073045)
1007-1423(2016)33-0061-05
10.3969/j.issn.1007-1423.2016.33.014
何建成(1991-),男,四川广安人,硕士,研究方向为嵌入式实时系统、个人大数据,软件工程
2016-10-08
2016-11-20Design and Implementation of Personal Data Security Based on Cloud Storage
郭兵(1970-),男,山东人,博士生导师,研究方向为嵌入式实时系统、绿色计算、个人大数据、软件工程