何建成,郭兵
(四川大學計算機學院,成都 610065)
基于云存儲的個人數(shù)據(jù)保管箱的設計與實現(xiàn)
何建成,郭兵
(四川大學計算機學院,成都 610065)
移動互聯(lián)網(wǎng)時代的到來在促進經(jīng)濟發(fā)展和豐富民眾生活的同時也帶來用戶隱私泄露的問題,隨著民眾對加強個人隱私保護的意識的逐步提高,為此研究設計一款基于云存儲的個人數(shù)據(jù)保管箱系統(tǒng),對用戶隱私數(shù)據(jù)進行加密存儲保護?;赟HA1和AES加密技術實現(xiàn)了個人數(shù)據(jù)保管箱系統(tǒng),包括后端服務器系統(tǒng)和手機客戶端軟件,詳細闡述后端服務器的架構以及手機客戶端的詳細設計,分析軟件設計的MVC模式;對市場上可用的云存儲方案進行對比,選擇可行且成本低廉的存儲方案。經(jīng)過實驗和試用表明該系統(tǒng)簡潔易操作、運行穩(wěn)定、能較好地保證用戶隱私數(shù)據(jù)的安全性。
個人隱私;云存儲;數(shù)據(jù)加密;保管箱
移動互聯(lián)網(wǎng)的快速發(fā)展和智能手機的普及使得人們能便捷的將自己的私密圖片、音視頻等數(shù)據(jù)存儲在手機并上傳至云端。普通智能手機自帶的存儲系統(tǒng)對存入的數(shù)據(jù)沒有進行任何加密處理,一旦人們的手機丟失或者被盜,就有可能造成個人隱私數(shù)據(jù)泄露而帶來風險。為此設計了一款基于云存儲的個人隱私[1]數(shù)據(jù)保管箱系統(tǒng),可存儲的數(shù)據(jù)類型有文字、圖片、音頻、視頻等,針對不同數(shù)據(jù)類型采用不同加密方法,從數(shù)據(jù)庫層、服務器層、系統(tǒng)管理員層等多層次進行安全監(jiān)管,采用目前流行的云存儲方案,確保數(shù)據(jù)安全。本文將從云存儲、安全機制、軟件設計實現(xiàn)、實驗驗證四個方面展開。
云存儲[2]是在云計算(Cloud Computing)概念上延伸和發(fā)展的一種新興網(wǎng)絡存儲技術,是指利用集群應用、網(wǎng)絡技術或分布式文件系統(tǒng)等功能,將網(wǎng)絡中大量各種不同類型的存儲設備通過應用軟件集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務訪問功能。當云計算系統(tǒng)運算和處理的核心是大量數(shù)據(jù)的存儲和管理時,云計算系統(tǒng)中將會配置大量存儲設備,此時云計算系統(tǒng)就轉變成一個云存儲系統(tǒng)。一方面,相比傳統(tǒng)的存儲系統(tǒng)會因為系統(tǒng)升級或者硬件故障導致服務停止的不足,云存儲利用分布式原理將文件和數(shù)據(jù)存儲在不同的節(jié)點,當系統(tǒng)升級或者硬件故障時,云存儲系統(tǒng)將讀寫指令導向存放在另一臺存儲服務器上的文件來保證正常持續(xù)的服務。另一方面,在云存儲設備的選擇上面,如果普通用戶或企業(yè)選擇自己搭建云存儲服務器,將會面臨高額的成本(購買設備的費用和維持設備正常運轉的費用)壓力。通用的解決辦法是選擇市面上已經(jīng)成熟的云服務提供商提供的云存儲方案[5],國內比較著名的有阿里云,騰訊云、新浪云等,國外的有微軟Azure、亞馬遜Glacier、谷歌云平臺等。表1為阿里云和騰訊云在穩(wěn)定性、可擴展性和維護便利性方面的比較。綜合比較因素,選擇阿里云作為存儲方案。
表1 阿里云與騰訊云的比較
2.1 加密原理與方法
用戶首次創(chuàng)建保管箱時需要設定保管箱密碼,密碼必須符合一定的格式要求:長度不低于8位,必須由數(shù)字、字母和下劃線組成。這樣可降低簡單密碼被輕松攻破的風險。為了防止密碼在傳輸過程中被竊取,對用戶密碼采用安全散列算法(SHA1)進行加密,SHA1面對強行攻擊和密碼分析攻擊都具有很好的防護性能。以加密字符串“abc”為例,SHA1加密原理可分解為以下五個步驟:
(1)補位。將”abc”轉換成二進制表示01100001 0110001001100011,長度為24位,對其進行補位,使其長度在對512取模后的余數(shù)是448,即(補位后的消息長度)%512=448。補位方法為:先補一個1,然后再補0,直到長度滿足對512取模后余數(shù)是448。補位完成后的數(shù)據(jù)用16進制表示為:61626380 0000000000 000000 00000000 00000000 0000000000000000 000000 00 00000000 0000000000000000 00000000 00000000 00000000
(2)補長度。將原始數(shù)據(jù)的長度補到已經(jīng)進行了部位操作的消息后面。通常用一個64位的數(shù)據(jù)來表示原始消息的長度。如果消息長度不大于264,那么第一個字就是0。進行補長度操作后的數(shù)據(jù)變?yōu)椋?1626380 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)函數(shù)定義。每個函數(shù)ft(0〈=t〈=79)都操作32位字B,C,D并且產(chǎn)生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)計算消息摘要。計算需要兩個緩沖區(qū),每個都由5個32位的字組成,還需要一個80個字的緩沖區(qū)和一個一個字的TEMP緩沖區(qū)。第一個5個字的緩沖區(qū)被標識為A,B,C,D,E。第二個5個字的緩沖區(qū)被標識為H0,H1,H2,H3,H4。80個字的緩沖區(qū)被標識為W0,W1,...,W79。在處理每個數(shù)據(jù)塊之前,緩沖區(qū){Hi}被初始化為下面的值(16進制)。
H0=0x67452301
H1=0xEFCDAB89
H2=0x98BADCFE
H3=0x10325476
H4=0xC3D2E1F0.
對于分組的數(shù)據(jù)塊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,執(zhí)行下面的循環(huán)
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。
在處理完所有的數(shù)據(jù)塊后,消息摘要是一個160位的字符串,以下面的順序標識H0 H1 H2 H3 H4。
對于存儲在保管箱中的圖片、文本、音頻和視頻等小量數(shù)據(jù)采用高級加密標準算法(AES)加密。算法主要分為兩步:
(1)初始置換。其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設置換前的輸入值為D1D2D3……D64,則經(jīng)過初始置換后的結果為:L0= D58D50……D8;R0=D57D49……D7。
(2)經(jīng)過16次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。圖1為EBC分組模式。
圖1 EBC分組模式圖
2.2 數(shù)據(jù)流向與關鍵技術
系統(tǒng)基本業(yè)務數(shù)據(jù)流向:存入保管箱的用戶個人數(shù)據(jù)采用自定義AES加密[1](KEY=MD5(手機號+用戶名+固定關鍵字)),再通過移動互聯(lián)網(wǎng)(Wi-Fi/GSM/3G/ 4G等)并在傳輸層進行SSL非對稱加密后采用https同步協(xié)議傳輸機制安全高速傳輸?shù)桨⒗镌贫朔掌鞔鎯?。后臺接收到用戶請求后,調用相應的服務解密模塊和應用處理程序,進行應用的分布式存儲、OLAP實時在線分析和手機應用App的更新和同步。系統(tǒng)用到的關鍵技術有:
(1)數(shù)據(jù)加密強度和解密效率之間的平衡問題[6]。因為用戶隱私數(shù)據(jù)加密強度越高,消耗的資源越多,后端服務解密需要的相應時間就會延遲。在高并發(fā)情況下,會造成系統(tǒng)訪問瓶頸。
(2)基于Token的用戶身份驗證機制。系統(tǒng)采用帶版本號與時間戳的對稱加密的用戶認證Token機制防止會話劫持,確保Token作為應用程序的私有數(shù)據(jù),對其他應用不可見,確保Token的安全性。
3.1 服務器端架構
軟件服務端采用MySQL+Apache+JSP[7]架構設計,實現(xiàn)與手機客戶端的交互,整個服務器后端由三層組成:系統(tǒng)服務層、云存儲層、管理控制層。其中:
(1)系統(tǒng)層負責操作系統(tǒng)層的網(wǎng)絡、存儲、負載均衡等基本服務。
(2)云存儲層負責整個服務器后端的集群管理、分布式存儲,其中分布式存儲采用Swift對象存儲,以確保服務器端存儲管理的可擴展性。
(3)管理控制層對系統(tǒng)管理員提供集群管理和監(jiān)控。
3.2 手機客戶端
移動客戶端基于Android操作系統(tǒng),客戶端與服務器端通過開放的API,也就是服務器端提供的Web-Service與服務器端實現(xiàn)文件的訪問、同步、權限和用戶管理??蛻舳说脑O計采用MVC模式[8],即Model(模型)、View(視圖)、Control(控制器)三層架構。模型層封裝了應用的一系列數(shù)據(jù),并定義了操作、處理數(shù)據(jù)的邏輯和運算規(guī)則。視圖層面向用戶,將數(shù)據(jù)展示給用戶并且響應用戶的操作。控制層協(xié)調模型層和視圖層。
客戶端開發(fā)采用Eclipse+ADT(Android Develop ment Tools)[7]集成開發(fā)環(huán)境。主要用到的Java文件有: SafeboxAddEditActivity.java,實現(xiàn)保管箱內容的增加和修改,SafeboxFirstTimeEntryActivity.java,實現(xiàn)用戶創(chuàng)建保管箱的功能,SafeboxListActivity.java,實現(xiàn)保管箱記錄的列表顯示。
(1)創(chuàng)建保管箱
用戶第一次進入保管箱需要設置密碼和安全問題。安全問題用于用戶找回密碼。用戶完成設置后點擊完成按鈕,將密碼和安全問題及其答案上傳到后端服務器數(shù)據(jù)庫。
(2)登錄保管箱
用戶每次進入保管箱,需要輸入密碼進行驗證。登錄界面比較簡單,包括密碼輸入框、確定、取消按鈕和找回密碼按鈕。
(3)對保管箱的操作
對保管箱進行記錄新增,查詢,刪除,修改等操作,可添加的附件包含圖片、音頻、視頻和文本。
Java封裝了用于加密的類,在java.security包下。加密方法[9]Encrypt(String key,String content)。Key為加密密鑰,content為需要加密的內容。
解密方法DeEncrype(String content,String key),content為待解密內容,key為解密密鑰。密鑰產(chǎn)生過程與加密密鑰產(chǎn)生過程一致,區(qū)別在于解密時直接將待解密的content作為cipher.doFinal()的參數(shù),不需要再轉換成字節(jié)數(shù)組。
3.3 實驗驗證
將軟件安裝在Android手機上進行測試,選擇手機上部分圖片和文件放入隱私保管箱,手機原來的圖片和文件將被刪除,并且用戶每次查看保管箱,都需要輸入密碼才能進入。保管箱數(shù)據(jù)上傳到云端幾乎沒有延遲,且后臺無法查看用戶的隱私數(shù)據(jù)。軟件設計完成后邀請了部分老師和同學進行試用,反饋結果表明系統(tǒng)存在以下優(yōu)點和不足:
(1)相比市場上同類軟件,如金山隱私保管箱、360隱私保管箱,具有界面簡潔,高可靠性,易于操作的特點。
(2)趣味性不足,缺乏用戶之間的互動,無法讓用戶長期擁有使用興趣,這將是進一步改進的方向。
本文詳細闡述了公共云存儲的數(shù)據(jù)加密機制與安全云端存儲服務系統(tǒng)架構,設計并實現(xiàn)了個人數(shù)據(jù)保管箱系統(tǒng)。系統(tǒng)確保在用戶手機丟失或者被盜的情況下防止數(shù)據(jù)泄露,并且方便用戶快速找回存儲在云端的數(shù)據(jù)。系統(tǒng)中用到的技術在保護用戶手機隱私數(shù)據(jù)安全性上具有重要的研究價值和廣闊的應用前景。
[1]黃劉生,田苗苗,黃河.大數(shù)據(jù)隱私保護密碼研究綜述[J].軟件學報,2015(4).
[2]孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術與挑戰(zhàn)[J].計算機研究與發(fā)展,2013(1).
[3]李暉,孫文海,李鳳華,王博洋.公共云存儲服務數(shù)據(jù)安全及隱私保護技術綜述[J].計算機研究與發(fā)展,2014(7).
[4]劉雅輝,張鐵贏,靳小龍,陳學旗.大數(shù)據(jù)時代的個人隱私數(shù)據(jù)保護[J].計算機研究與發(fā)展,2015(1).
[5]紀芳.云存儲模式下智能手機個人信息的安全問題及對策[J].網(wǎng)絡安全技術與應用,2014(10).
[6]張峰,李基亮.校園私有云存儲方案的探索[J].華東師范大學學報(自然科學版),2015(zl).
[7]Bill Phillips,Brain Hardy.Android Programming:the Big Nerd Ranch Guide[M].人民郵電出版社,2014.
[8]曾健平,邵艷潔.Android系統(tǒng)架構及應用程序開發(fā)研究[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-),男,四川廣安人,碩士,研究方向為嵌入式實時系統(tǒng)、個人大數(shù)據(jù),軟件工程
2016-10-08
2016-11-20Design and Implementation of Personal Data Security Based on Cloud Storage
郭兵(1970-),男,山東人,博士生導師,研究方向為嵌入式實時系統(tǒng)、綠色計算、個人大數(shù)據(jù)、軟件工程