何建成,郭兵
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
基于云存儲(chǔ)的個(gè)人數(shù)據(jù)保管箱的設(shè)計(jì)與實(shí)現(xiàn)
何建成,郭兵
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái)在促進(jìn)經(jīng)濟(jì)發(fā)展和豐富民眾生活的同時(shí)也帶來(lái)用戶(hù)隱私泄露的問(wèn)題,隨著民眾對(duì)加強(qiáng)個(gè)人隱私保護(hù)的意識(shí)的逐步提高,為此研究設(shè)計(jì)一款基于云存儲(chǔ)的個(gè)人數(shù)據(jù)保管箱系統(tǒng),對(duì)用戶(hù)隱私數(shù)據(jù)進(jìn)行加密存儲(chǔ)保護(hù)。基于SHA1和AES加密技術(shù)實(shí)現(xiàn)了個(gè)人數(shù)據(jù)保管箱系統(tǒng),包括后端服務(wù)器系統(tǒng)和手機(jī)客戶(hù)端軟件,詳細(xì)闡述后端服務(wù)器的架構(gòu)以及手機(jī)客戶(hù)端的詳細(xì)設(shè)計(jì),分析軟件設(shè)計(jì)的MVC模式;對(duì)市場(chǎng)上可用的云存儲(chǔ)方案進(jìn)行對(duì)比,選擇可行且成本低廉的存儲(chǔ)方案。經(jīng)過(guò)實(shí)驗(yàn)和試用表明該系統(tǒng)簡(jiǎn)潔易操作、運(yùn)行穩(wěn)定、能較好地保證用戶(hù)隱私數(shù)據(jù)的安全性。
個(gè)人隱私;云存儲(chǔ);數(shù)據(jù)加密;保管箱
移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展和智能手機(jī)的普及使得人們能便捷的將自己的私密圖片、音視頻等數(shù)據(jù)存儲(chǔ)在手機(jī)并上傳至云端。普通智能手機(jī)自帶的存儲(chǔ)系統(tǒng)對(duì)存入的數(shù)據(jù)沒(méi)有進(jìn)行任何加密處理,一旦人們的手機(jī)丟失或者被盜,就有可能造成個(gè)人隱私數(shù)據(jù)泄露而帶來(lái)風(fēng)險(xiǎn)。為此設(shè)計(jì)了一款基于云存儲(chǔ)的個(gè)人隱私[1]數(shù)據(jù)保管箱系統(tǒng),可存儲(chǔ)的數(shù)據(jù)類(lèi)型有文字、圖片、音頻、視頻等,針對(duì)不同數(shù)據(jù)類(lèi)型采用不同加密方法,從數(shù)據(jù)庫(kù)層、服務(wù)器層、系統(tǒng)管理員層等多層次進(jìn)行安全監(jiān)管,采用目前流行的云存儲(chǔ)方案,確保數(shù)據(jù)安全。本文將從云存儲(chǔ)、安全機(jī)制、軟件設(shè)計(jì)實(shí)現(xiàn)、實(shí)驗(yàn)驗(yàn)證四個(gè)方面展開(kāi)。
云存儲(chǔ)[2]是在云計(jì)算(Cloud Computing)概念上延伸和發(fā)展的一種新興網(wǎng)絡(luò)存儲(chǔ)技術(shù),是指利用集群應(yīng)用、網(wǎng)絡(luò)技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類(lèi)型的存儲(chǔ)設(shè)備通過(guò)應(yīng)用軟件集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪(fǎng)問(wèn)功能。當(dāng)云計(jì)算系統(tǒng)運(yùn)算和處理的核心是大量數(shù)據(jù)的存儲(chǔ)和管理時(shí),云計(jì)算系統(tǒng)中將會(huì)配置大量存儲(chǔ)設(shè)備,此時(shí)云計(jì)算系統(tǒng)就轉(zhuǎn)變成一個(gè)云存儲(chǔ)系統(tǒng)。一方面,相比傳統(tǒng)的存儲(chǔ)系統(tǒng)會(huì)因?yàn)橄到y(tǒng)升級(jí)或者硬件故障導(dǎo)致服務(wù)停止的不足,云存儲(chǔ)利用分布式原理將文件和數(shù)據(jù)存儲(chǔ)在不同的節(jié)點(diǎn),當(dāng)系統(tǒng)升級(jí)或者硬件故障時(shí),云存儲(chǔ)系統(tǒng)將讀寫(xiě)指令導(dǎo)向存放在另一臺(tái)存儲(chǔ)服務(wù)器上的文件來(lái)保證正常持續(xù)的服務(wù)。另一方面,在云存儲(chǔ)設(shè)備的選擇上面,如果普通用戶(hù)或企業(yè)選擇自己搭建云存儲(chǔ)服務(wù)器,將會(huì)面臨高額的成本(購(gòu)買(mǎi)設(shè)備的費(fèi)用和維持設(shè)備正常運(yùn)轉(zhuǎn)的費(fèi)用)壓力。通用的解決辦法是選擇市面上已經(jīng)成熟的云服務(wù)提供商提供的云存儲(chǔ)方案[5],國(guó)內(nèi)比較著名的有阿里云,騰訊云、新浪云等,國(guó)外的有微軟Azure、亞馬遜Glacier、谷歌云平臺(tái)等。表1為阿里云和騰訊云在穩(wěn)定性、可擴(kuò)展性和維護(hù)便利性方面的比較。綜合比較因素,選擇阿里云作為存儲(chǔ)方案。

表1 阿里云與騰訊云的比較
2.1 加密原理與方法
用戶(hù)首次創(chuàng)建保管箱時(shí)需要設(shè)定保管箱密碼,密碼必須符合一定的格式要求:長(zhǎng)度不低于8位,必須由數(shù)字、字母和下劃線(xiàn)組成。這樣可降低簡(jiǎn)單密碼被輕松攻破的風(fēng)險(xiǎn)。為了防止密碼在傳輸過(guò)程中被竊取,對(duì)用戶(hù)密碼采用安全散列算法(SHA1)進(jìn)行加密,SHA1面對(duì)強(qiáng)行攻擊和密碼分析攻擊都具有很好的防護(hù)性能。以加密字符串“abc”為例,SHA1加密原理可分解為以下五個(gè)步驟:
(1)補(bǔ)位。將”abc”轉(zhuǎn)換成二進(jìn)制表示01100001 0110001001100011,長(zhǎng)度為24位,對(duì)其進(jìn)行補(bǔ)位,使其長(zhǎng)度在對(duì)512取模后的余數(shù)是448,即(補(bǔ)位后的消息長(zhǎng)度)%512=448。補(bǔ)位方法為:先補(bǔ)一個(gè)1,然后再補(bǔ)0,直到長(zhǎng)度滿(mǎn)足對(duì)512取模后余數(shù)是448。補(bǔ)位完成后的數(shù)據(jù)用16進(jìn)制表示為:61626380 0000000000 000000 00000000 00000000 0000000000000000 000000 00 00000000 0000000000000000 00000000 00000000 00000000
(2)補(bǔ)長(zhǎng)度。將原始數(shù)據(jù)的長(zhǎng)度補(bǔ)到已經(jīng)進(jìn)行了部位操作的消息后面。通常用一個(gè)64位的數(shù)據(jù)來(lái)表示原始消息的長(zhǎng)度。如果消息長(zhǎng)度不大于264,那么第一個(gè)字就是0。進(jìn)行補(bǔ)長(zhǎng)度操作后的數(shù)據(jù)變?yōu)椋?1626380 0000000000000000 00000000 00000000 000000000000 0000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000018
(3)常量定義。定義80個(gè)常量字K(0),K(1),…,K(79)。16進(jìn)制表示如下:
Kt=0x5A827999(0〈=t〈=19)
Kt=0x6ED9EBA1(20〈=t〈=39)
Kt=0x8F1BBCDC(40〈=t〈=59)
Kt=0xCA62C1D6(60〈=t〈=79)。
(4)函數(shù)定義。每個(gè)函數(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)計(jì)算消息摘要。計(jì)算需要兩個(gè)緩沖區(qū),每個(gè)都由5個(gè)32位的字組成,還需要一個(gè)80個(gè)字的緩沖區(qū)和一個(gè)一個(gè)字的TEMP緩沖區(qū)。第一個(gè)5個(gè)字的緩沖區(qū)被標(biāo)識(shí)為A,B,C,D,E。第二個(gè)5個(gè)字的緩沖區(qū)被標(biāo)識(shí)為H0,H1,H2,H3,H4。80個(gè)字的緩沖區(qū)被標(biāo)識(shí)為W0,W1,...,W79。在處理每個(gè)數(shù)據(jù)塊之前,緩沖區(qū){Hi}被初始化為下面的值(16進(jìn)制)。
H0=0x67452301
H1=0xEFCDAB89
H2=0x98BADCFE
H3=0x10325476
H4=0xC3D2E1F0.
對(duì)于分組的數(shù)據(jù)塊M1,M2,…,Mn進(jìn)行以下處理:
(1)將Mi分成16個(gè)字W0,W1,…,W15,W0是最左邊的字
(2)對(duì)于t=16到79令Wt=S1(Wt-3 XOR Wt-8XOR Wt-14 XOR Wt-16).
(3)令A(yù)=H0,B=H1,C=H2,D=H3,E=H4。
(4)對(duì)于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ù)塊后,消息摘要是一個(gè)160位的字符串,以下面的順序標(biāo)識(shí)H0 H1 H2 H3 H4。
對(duì)于存儲(chǔ)在保管箱中的圖片、文本、音頻和視頻等小量數(shù)據(jù)采用高級(jí)加密標(biāo)準(zhǔn)算法(AES)加密。算法主要分為兩步:
(1)初始置換。其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L(zhǎng)0、R0兩部分,每部分各長(zhǎng)32位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類(lèi)推,最后一位是原來(lái)的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3……D64,則經(jīng)過(guò)初始置換后的結(jié)果為:L0= D58D50……D8;R0=D57D49……D7。
(2)經(jīng)過(guò)16次迭代運(yùn)算后,得到L16、R16,將此作為輸入,進(jìn)行逆置換,逆置換正好是初始置換的逆運(yùn)算,由此即得到密文輸出。圖1為EBC分組模式。

圖1 EBC分組模式圖
2.2 數(shù)據(jù)流向與關(guān)鍵技術(shù)
系統(tǒng)基本業(yè)務(wù)數(shù)據(jù)流向:存入保管箱的用戶(hù)個(gè)人數(shù)據(jù)采用自定義AES加密[1](KEY=MD5(手機(jī)號(hào)+用戶(hù)名+固定關(guān)鍵字)),再通過(guò)移動(dòng)互聯(lián)網(wǎng)(Wi-Fi/GSM/3G/ 4G等)并在傳輸層進(jìn)行SSL非對(duì)稱(chēng)加密后采用https同步協(xié)議傳輸機(jī)制安全高速傳輸?shù)桨⒗镌贫朔?wù)器存儲(chǔ)。后臺(tái)接收到用戶(hù)請(qǐng)求后,調(diào)用相應(yīng)的服務(wù)解密模塊和應(yīng)用處理程序,進(jìn)行應(yīng)用的分布式存儲(chǔ)、OLAP實(shí)時(shí)在線(xiàn)分析和手機(jī)應(yīng)用App的更新和同步。系統(tǒng)用到的關(guān)鍵技術(shù)有:
(1)數(shù)據(jù)加密強(qiáng)度和解密效率之間的平衡問(wèn)題[6]。因?yàn)橛脩?hù)隱私數(shù)據(jù)加密強(qiáng)度越高,消耗的資源越多,后端服務(wù)解密需要的相應(yīng)時(shí)間就會(huì)延遲。在高并發(fā)情況下,會(huì)造成系統(tǒng)訪(fǎng)問(wèn)瓶頸。
(2)基于Token的用戶(hù)身份驗(yàn)證機(jī)制。系統(tǒng)采用帶版本號(hào)與時(shí)間戳的對(duì)稱(chēng)加密的用戶(hù)認(rèn)證Token機(jī)制防止會(huì)話(huà)劫持,確保Token作為應(yīng)用程序的私有數(shù)據(jù),對(duì)其他應(yīng)用不可見(jiàn),確保Token的安全性。
3.1 服務(wù)器端架構(gòu)
軟件服務(wù)端采用MySQL+Apache+JSP[7]架構(gòu)設(shè)計(jì),實(shí)現(xiàn)與手機(jī)客戶(hù)端的交互,整個(gè)服務(wù)器后端由三層組成:系統(tǒng)服務(wù)層、云存儲(chǔ)層、管理控制層。其中:
(1)系統(tǒng)層負(fù)責(zé)操作系統(tǒng)層的網(wǎng)絡(luò)、存儲(chǔ)、負(fù)載均衡等基本服務(wù)。
(2)云存儲(chǔ)層負(fù)責(zé)整個(gè)服務(wù)器后端的集群管理、分布式存儲(chǔ),其中分布式存儲(chǔ)采用Swift對(duì)象存儲(chǔ),以確保服務(wù)器端存儲(chǔ)管理的可擴(kuò)展性。
(3)管理控制層對(duì)系統(tǒng)管理員提供集群管理和監(jiān)控。
3.2 手機(jī)客戶(hù)端
移動(dòng)客戶(hù)端基于Android操作系統(tǒng),客戶(hù)端與服務(wù)器端通過(guò)開(kāi)放的API,也就是服務(wù)器端提供的Web-Service與服務(wù)器端實(shí)現(xiàn)文件的訪(fǎng)問(wèn)、同步、權(quán)限和用戶(hù)管理。客戶(hù)端的設(shè)計(jì)采用MVC模式[8],即Model(模型)、View(視圖)、Control(控制器)三層架構(gòu)。模型層封裝了應(yīng)用的一系列數(shù)據(jù),并定義了操作、處理數(shù)據(jù)的邏輯和運(yùn)算規(guī)則。視圖層面向用戶(hù),將數(shù)據(jù)展示給用戶(hù)并且響應(yīng)用戶(hù)的操作。控制層協(xié)調(diào)模型層和視圖層。
客戶(hù)端開(kāi)發(fā)采用Eclipse+ADT(Android Develop ment Tools)[7]集成開(kāi)發(fā)環(huán)境。主要用到的Java文件有: SafeboxAddEditActivity.java,實(shí)現(xiàn)保管箱內(nèi)容的增加和修改,SafeboxFirstTimeEntryActivity.java,實(shí)現(xiàn)用戶(hù)創(chuàng)建保管箱的功能,SafeboxListActivity.java,實(shí)現(xiàn)保管箱記錄的列表顯示。
(1)創(chuàng)建保管箱
用戶(hù)第一次進(jìn)入保管箱需要設(shè)置密碼和安全問(wèn)題。安全問(wèn)題用于用戶(hù)找回密碼。用戶(hù)完成設(shè)置后點(diǎn)擊完成按鈕,將密碼和安全問(wèn)題及其答案上傳到后端服務(wù)器數(shù)據(jù)庫(kù)。
(2)登錄保管箱
用戶(hù)每次進(jìn)入保管箱,需要輸入密碼進(jìn)行驗(yàn)證。登錄界面比較簡(jiǎn)單,包括密碼輸入框、確定、取消按鈕和找回密碼按鈕。
(3)對(duì)保管箱的操作
對(duì)保管箱進(jìn)行記錄新增,查詢(xún),刪除,修改等操作,可添加的附件包含圖片、音頻、視頻和文本。
Java封裝了用于加密的類(lèi),在java.security包下。加密方法[9]Encrypt(String key,String content)。Key為加密密鑰,content為需要加密的內(nèi)容。

解密方法DeEncrype(String content,String key),content為待解密內(nèi)容,key為解密密鑰。密鑰產(chǎn)生過(guò)程與加密密鑰產(chǎn)生過(guò)程一致,區(qū)別在于解密時(shí)直接將待解密的content作為cipher.doFinal()的參數(shù),不需要再轉(zhuǎn)換成字節(jié)數(shù)組。
3.3 實(shí)驗(yàn)驗(yàn)證
將軟件安裝在Android手機(jī)上進(jìn)行測(cè)試,選擇手機(jī)上部分圖片和文件放入隱私保管箱,手機(jī)原來(lái)的圖片和文件將被刪除,并且用戶(hù)每次查看保管箱,都需要輸入密碼才能進(jìn)入。保管箱數(shù)據(jù)上傳到云端幾乎沒(méi)有延遲,且后臺(tái)無(wú)法查看用戶(hù)的隱私數(shù)據(jù)。軟件設(shè)計(jì)完成后邀請(qǐng)了部分老師和同學(xué)進(jìn)行試用,反饋結(jié)果表明系統(tǒng)存在以下優(yōu)點(diǎn)和不足:
(1)相比市場(chǎng)上同類(lèi)軟件,如金山隱私保管箱、360隱私保管箱,具有界面簡(jiǎn)潔,高可靠性,易于操作的特點(diǎn)。
(2)趣味性不足,缺乏用戶(hù)之間的互動(dòng),無(wú)法讓用戶(hù)長(zhǎng)期擁有使用興趣,這將是進(jìn)一步改進(jìn)的方向。
本文詳細(xì)闡述了公共云存儲(chǔ)的數(shù)據(jù)加密機(jī)制與安全云端存儲(chǔ)服務(wù)系統(tǒng)架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)了個(gè)人數(shù)據(jù)保管箱系統(tǒng)。系統(tǒng)確保在用戶(hù)手機(jī)丟失或者被盜的情況下防止數(shù)據(jù)泄露,并且方便用戶(hù)快速找回存儲(chǔ)在云端的數(shù)據(jù)。系統(tǒng)中用到的技術(shù)在保護(hù)用戶(hù)手機(jī)隱私數(shù)據(jù)安全性上具有重要的研究?jī)r(jià)值和廣闊的應(yīng)用前景。
[1]黃劉生,田苗苗,黃河.大數(shù)據(jù)隱私保護(hù)密碼研究綜述[J].軟件學(xué)報(bào),2015(4).
[2]孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2013(1).
[3]李暉,孫文海,李鳳華,王博洋.公共云存儲(chǔ)服務(wù)數(shù)據(jù)安全及隱私保護(hù)技術(shù)綜述[J].計(jì)算機(jī)研究與發(fā)展,2014(7).
[4]劉雅輝,張鐵贏,靳小龍,陳學(xué)旗.大數(shù)據(jù)時(shí)代的個(gè)人隱私數(shù)據(jù)保護(hù)[J].計(jì)算機(jī)研究與發(fā)展,2015(1).
[5]紀(jì)芳.云存儲(chǔ)模式下智能手機(jī)個(gè)人信息的安全問(wèn)題及對(duì)策[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(10).
[6]張峰,李基亮.校園私有云存儲(chǔ)方案的探索[J].華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(zl).
[7]Bill Phillips,Brain Hardy.Android Programming:the Big Nerd Ranch Guide[M].人民郵電出版社,2014.
[8]曾健平,邵艷潔.Android系統(tǒng)架構(gòu)及應(yīng)用程序開(kāi)發(fā)研究[J].微計(jì)算機(jī)信息,2011(27).
[9]王良,王偉平,孟丹.FVS k-匿名:一種基于k-匿名的隱私保護(hù)方法[J].高技術(shù)通訊,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
國(guó)家自然科學(xué)基金重點(diǎn)項(xiàng)目(No.61332001)、國(guó)家自然科學(xué)基金資助項(xiàng)目(No.61272104)、國(guó)家自然科學(xué)基金資助項(xiàng)目(No.61073045)
1007-1423(2016)33-0061-05
10.3969/j.issn.1007-1423.2016.33.014
何建成(1991-),男,四川廣安人,碩士,研究方向?yàn)榍度胧綄?shí)時(shí)系統(tǒng)、個(gè)人大數(shù)據(jù),軟件工程
2016-10-08
2016-11-20Design and Implementation of Personal Data Security Based on Cloud Storage
郭兵(1970-),男,山東人,博士生導(dǎo)師,研究方向?yàn)榍度胧綄?shí)時(shí)系統(tǒng)、綠色計(jì)算、個(gè)人大數(shù)據(jù)、軟件工程