本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,更進(jìn)一步涉及移動(dòng)云計(jì)算安全技術(shù)領(lǐng)域中的一種移動(dòng)云計(jì)算環(huán)境下的輕量級(jí)文件遠(yuǎn)程加密方法。本發(fā)明可以在用戶進(jìn)行文件加密的過程中通過遠(yuǎn)程加密的方式,不讓私有云知曉加密密鑰,保證了文件和密鑰的安全性,進(jìn)而避免由于云端遭受攻擊而導(dǎo)致的用戶隱私泄露的問題。
背景技術(shù):
隨著移動(dòng)終端(MT,Mobile Terminal)的廣泛普及,人們比起使用電腦等傳統(tǒng)的終端,更喜歡使用移動(dòng)終端來接入和使用網(wǎng)絡(luò)。移動(dòng)終端有著非常多的優(yōu)點(diǎn),如體積小易攜帶、快捷、互動(dòng)、隨時(shí)隨地不受時(shí)間和空間限制等,從而受到了廣大用戶的青睞,應(yīng)用前景非常廣闊。但是實(shí)際上移動(dòng)終端也有著它本身不可避免的缺點(diǎn),其存儲(chǔ)和計(jì)算能力有限,不能承擔(dān)大量的存儲(chǔ)和計(jì)算任務(wù),只能進(jìn)行一些輕量級(jí)的文件操作。因此對(duì)于移動(dòng)終端來講,我們常常希望將存儲(chǔ)負(fù)擔(dān)和復(fù)雜計(jì)算轉(zhuǎn)移出去。云計(jì)算提供了一個(gè)很好的平臺(tái),云環(huán)境具有強(qiáng)大的存儲(chǔ)和計(jì)算能力,因此可以將這些任務(wù)轉(zhuǎn)移到云上?,F(xiàn)在普遍采用移動(dòng)終端(MT,Mobile Terminal)、私有云(Prc,Private Clouds)、公有云(Puc,Public Clouds)三方模型來降低移動(dòng)終端的存儲(chǔ)和計(jì)算負(fù)擔(dān)。在這個(gè)模型中,移動(dòng)終端將文件存儲(chǔ)在公有云,私有云是一個(gè)可信的第三方,當(dāng)移動(dòng)終端需要使用公有云端文件時(shí),代替移動(dòng)終端進(jìn)行數(shù)據(jù)完整性檢測(cè)。
Yang J,Wang H,Wang J,et al.在其發(fā)表的論文“Provable Data Possession of Resource-constrained Mobile Devices in Cloud Computing”(Journal of Networks,2011,6(7):1033-1040)中提出了一種移動(dòng)云計(jì)算環(huán)境下的數(shù)據(jù)完整性驗(yàn)證方法。該方法通過使用遞增的消息認(rèn)證碼來驗(yàn)證存儲(chǔ)在云端數(shù)據(jù)的安全性。Trust Coprocessor充當(dāng)可信第三方進(jìn)行消息驗(yàn)證碼的生成,一定程度上利用了云計(jì)算的計(jì)算能力。為了最小化移動(dòng)終端上的處理開銷,該方案沒有將大量的認(rèn)證工作轉(zhuǎn)移到云服務(wù)提供商和可信第三方上。移動(dòng)終端執(zhí)行消息驗(yàn)證碼MAC的產(chǎn)生和比較以及所有文件的更新操作;可信第三方只是在移動(dòng)終端發(fā)出驗(yàn)證數(shù)據(jù)完整性請(qǐng)求時(shí),對(duì)公有云的云端傳回的文件生成MAC。該方法存在的不足之處是,由于移動(dòng)終端過多地承擔(dān)了完整性驗(yàn)證的工作,會(huì)導(dǎo)致移動(dòng)終端負(fù)擔(dān)過重;并且由于移動(dòng)終端直接將未加密的明文文件發(fā)送存儲(chǔ)在公有云端導(dǎo)致文件安全遭受威脅。
華中科技大學(xué)在其申請(qǐng)的專利“一種移動(dòng)云存儲(chǔ)輕量級(jí)數(shù)據(jù)安全共享方法”(專利申請(qǐng)?zhí)枺?01410026787.9,申請(qǐng)公布號(hào):CN103763319A)中公開了一種移動(dòng)云存儲(chǔ)輕量級(jí)數(shù)據(jù)安全共享方法。該方法包括:數(shù)據(jù)擁有者在可信第三方注冊(cè)屬性集合,數(shù)據(jù)擁有者為用戶指定屬性集合,可信第三方根據(jù)用戶的屬性集合使用屬性密碼機(jī)制對(duì)用戶授權(quán)生成屬性密鑰,數(shù)據(jù)擁有者使用移動(dòng)端共享文件時(shí),首先采用對(duì)稱密碼機(jī)制對(duì)對(duì)稱密鑰加密,并將文件密文和密鑰密文發(fā)送到云端,用戶從云端讀取文件密文及密鑰密文后,通過代理解密服務(wù)器使用屬性密碼機(jī)制解密文件,數(shù)據(jù)擁有者向可信第三方及云端發(fā)送權(quán)限變更聲明,可信第三方及云端根據(jù)用戶權(quán)限變聲聲明判斷為用戶增加或刪除權(quán)限。本發(fā)明能在電量和計(jì)算能力有限的移動(dòng)端實(shí)現(xiàn)數(shù)據(jù)的安全共享。該方法存在的不足之處是,由于可信第三方知曉密鑰,萬一可信第三方遭受攻擊會(huì)導(dǎo)致密鑰泄露問題;并且由于可信第三方擁有密文文件,萬一可信第三方遭受攻擊,或者存在云欺詐,會(huì)導(dǎo)致文件信息泄露問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述已有技術(shù)的不足,提出一種移動(dòng)云計(jì)算環(huán)境下的輕量級(jí)文件遠(yuǎn)程加密方法。本發(fā)明通過遠(yuǎn)程加密、密文文件共享、完整性驗(yàn)證,可是保證密鑰的機(jī)密性和文件的完整性,有效解決由于云端受到攻擊而導(dǎo)致的用戶文件和密鑰泄露問題,進(jìn)一步加強(qiáng)了用戶使用文件的安全性。
為實(shí)現(xiàn)上述目的,本發(fā)明的具體實(shí)現(xiàn)步驟如下:
(1)驗(yàn)證移動(dòng)終端用戶:
(1a)采用移動(dòng)終端用戶驗(yàn)證方法,私有云對(duì)移動(dòng)終端用戶進(jìn)行驗(yàn)證;
(1b)私有云查詢移動(dòng)終端用戶信息表,判斷移動(dòng)終端用戶的身份識(shí)別ID和口令psd是否與移動(dòng)終端用戶信息表中的信息一致,若是,則通過移動(dòng)終端用戶驗(yàn)證,執(zhí)行步驟(2),否則,刪除待驗(yàn)證的移動(dòng)終端用戶的身份識(shí)別碼ID和口令psd;
(2)遠(yuǎn)程加密:
(2a)按照下式,私有云計(jì)算待加密文件的第一個(gè)中間塊:
其中,I1表示待加密文件的第一個(gè)中間塊,P1表示待加密文件的第一個(gè)明文塊,表示按位異或操作,H(·)表示私有云計(jì)算的一個(gè)哈希函數(shù),Ii表示待加密文件的第i個(gè)中間塊,In表示待加密文件的第n個(gè)中間塊,n表示待加密文件的分塊的總數(shù);
(2b)私有云用移動(dòng)終端的公鑰對(duì)待加密文件的第一個(gè)中間塊I1和時(shí)間戳t2進(jìn)行加密操作,將加密后的消息發(fā)送給移動(dòng)終端;
(2c)私有云用自己的私鑰解密接收到的消息,得到待加密文件的第一個(gè)中間塊I1,按照下式,私有云計(jì)算待加密文件的第一個(gè)密文塊:
C1=Ek(I1)
其中,C1表示待加密文件的第一個(gè)密文塊,Ek(·)表示在加密密鑰k下,使用由移動(dòng)終端和私有云共享的對(duì)稱加密算法,對(duì)待加密文件的第一個(gè)中間塊I1進(jìn)行加密操作;
(2d)按照下式,移動(dòng)終端計(jì)算密鑰替代值:
Kp=M(Ek(C1))
其中,Kp表示密鑰替代值,M(·)表示移動(dòng)終端計(jì)算的一個(gè)哈希函數(shù),Ek(·)表示在密鑰k下,使用由移動(dòng)終端和私有云共享的對(duì)稱加密算法,對(duì)待加密文件的第一個(gè)密文塊C1進(jìn)行加密操作;
(2e)移動(dòng)終端用私有云的公鑰,對(duì)待加密文件的第一個(gè)密文塊C1和密鑰替代值Kp進(jìn)行加密操作,將加密后的消息發(fā)送給私有云;
(2f)私有云用自己的私鑰解密接收到的消息,得到待加密文件的第一個(gè)密文塊C1和密鑰替代值Kp,按照下式,完成除第一個(gè)明文塊之外的其余明文塊的加密操作,得到所有的密文塊;
其中,Ci表示待加密文件的第i個(gè)密文塊,i=2...n,n表示密文塊分塊的總數(shù),表示在密鑰替代值Kp下,使用移動(dòng)終端和私有云共享的對(duì)稱加密算法對(duì)待加密文件進(jìn)行加密操作,Ii表示待加密文件的第i個(gè)中間塊,表示按位異或操作,Ci-1表示待加密文件的第i-1個(gè)密文塊;
(2g)私有云生成加密完成的確認(rèn)消息,發(fā)送給移動(dòng)終端;
(2h)私有云刪除待加密文件;
(3)生成數(shù)據(jù)指紋:
(3a)私有云接收到加密完成的確認(rèn)消息后,依照元數(shù)據(jù)生成算法g(a,b),為每個(gè)密文塊生成K位的元數(shù)據(jù),K表示數(shù)據(jù)塊需要讀取的數(shù)據(jù)位的總量,僅為數(shù)據(jù)所有者和可信第三方私有云知道,g(a,b)表示第a個(gè)數(shù)據(jù)塊的第b位數(shù)據(jù),a=1...m,b=1...x,m表示密文分塊的總數(shù),x表示每一個(gè)數(shù)據(jù)塊中需要讀取的數(shù)據(jù)位置;
(3b)私有云按照私有云和公有云共享的哈希函數(shù)為每個(gè)密文塊的元數(shù)據(jù)生成獨(dú)一無二的數(shù)據(jù)指紋;
(3c)私有云生成密文塊和元數(shù)據(jù)指紋對(duì)應(yīng)關(guān)系的索引表IndexTable,存儲(chǔ)索引表IndexTable;
(4)驗(yàn)證數(shù)據(jù)指紋:
(4a)采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云驗(yàn)證對(duì)方的數(shù)據(jù)指紋;
(4b)判斷私有云返回的公有云隨機(jī)數(shù)和公有云發(fā)送的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云生成確認(rèn)消息,發(fā)送給私有云,執(zhí)行步驟(5),否則,公有云刪除數(shù)據(jù)指紋;
(5)上傳存儲(chǔ)密文塊:
(5a)私有云接收到確認(rèn)消息后,將密文文件名以及密文文件的每一個(gè)密文塊發(fā)送給公有云,密文文件的每一個(gè)密文塊包括數(shù)據(jù)塊號(hào)和密文數(shù)據(jù);
(5b)公有云接收到密文文件名和密文文件的每一個(gè)密文塊后,存儲(chǔ)密文文件名和密文文件的每一個(gè)密文塊,生成關(guān)系索引表RelationIndex和存儲(chǔ)索引表StorageIndex,保存關(guān)系索引表RelationIndex和存儲(chǔ)索引表StorageIndex;
(5c)公有云生成確認(rèn)消息,發(fā)送給私有云;
(6)私有云刪除全部密文塊;
(7)驗(yàn)證挑戰(zhàn)信息:
(7a)采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云相互驗(yàn)證對(duì)方的數(shù)據(jù)指紋;
(7b)判斷私有云返回的公有云隨機(jī)數(shù)和公有云發(fā)送的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云生成確認(rèn)消息,發(fā)送給私有云,執(zhí)行步驟(7c),否則,公有云刪除數(shù)據(jù)指紋;
(7c)私有云生成挑戰(zhàn)信息,對(duì)挑戰(zhàn)信息使用私有云和公有云共享的哈希函數(shù)生成數(shù)據(jù)指紋,將數(shù)據(jù)指紋發(fā)送給公有云;
(7d)公有云接收數(shù)據(jù)指紋;
(7e)判斷公有云發(fā)送的公有云隨機(jī)數(shù)與公有云接收的公有云隨機(jī)數(shù)是否相同,若是,則執(zhí)行步驟(8),否則,公有云刪除數(shù)據(jù)指紋;
(8)比對(duì)數(shù)據(jù)指紋:
(8a)公有云根據(jù)待驗(yàn)證密文塊的數(shù)據(jù)塊號(hào)查詢存儲(chǔ)索引表StorageIndex,得到待驗(yàn)證密文塊,公有云將待驗(yàn)證密文塊發(fā)送給私有云;
(8b)私有云接收到待驗(yàn)證密文塊后,按照私有云和公有云共享的哈希函數(shù),計(jì)算待驗(yàn)證密文塊的哈希值,將哈希值作為數(shù)據(jù)指紋;
(8c)私有云根據(jù)待驗(yàn)證密文塊的數(shù)據(jù)塊號(hào)查詢索引表IndexTable,得到存儲(chǔ)的待驗(yàn)證密文塊的數(shù)據(jù)指紋;
(8d)判斷私有云接收的待驗(yàn)證密文塊的數(shù)據(jù)指紋和私有云存儲(chǔ)的待驗(yàn)證密文塊的數(shù)據(jù)指紋是否相同,若是,則私有云向移動(dòng)終端發(fā)送Success,否則,私有云向移動(dòng)終端發(fā)送Failure;
(8e)判斷移動(dòng)終端用戶是否需要使用數(shù)據(jù),若是,執(zhí)行步驟(9),否則,不做任何處理;
(9)完整性檢測(cè):
(9a)根據(jù)待驗(yàn)證文件的隱私等級(jí)的高低,確定時(shí)間間隔;
(9b)按照時(shí)間間隔,執(zhí)行步驟(7);
(10)發(fā)送待使用文件的文件名:
(10a)采用移動(dòng)終端用戶驗(yàn)證方法,私有云對(duì)移動(dòng)終端用戶進(jìn)行驗(yàn)證;
(10b)私有云查詢移動(dòng)終端用戶信息表,判斷移動(dòng)終端用戶的身份識(shí)別ID和口令psd是否與移動(dòng)終端用戶信息表中的信息一致,若是,則通過移動(dòng)終端用戶驗(yàn)證,執(zhí)行步驟(10c),否則,刪除待驗(yàn)證的移動(dòng)終端用戶的身份識(shí)別碼ID和口令psd;
(10c)采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云相互驗(yàn)證對(duì)方的數(shù)據(jù)指紋;
(10d)判斷公有云發(fā)送的公有云隨機(jī)數(shù)和公有云接收的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云生成確認(rèn)消息,發(fā)送給私有云,并執(zhí)行步驟(10e),否則,公有云刪除數(shù)據(jù)指紋;
(10e)私有云接收到確認(rèn)消息后,將待使用文件的文件名發(fā)送給公有云;
(11)傳回密文塊:
(11a)公有云根據(jù)密文文件名查詢關(guān)系索引表RelationIndex,得到該密文文件包含的數(shù)據(jù)塊號(hào);
(11b)公有云根據(jù)該密文文件包含的數(shù)據(jù)塊號(hào)查詢存儲(chǔ)索引表StorageIndex,得到全部密文塊;
(11c)公有云將查詢得到的全部密文塊發(fā)送給私有云;
(11d)私有云接收到全部密文塊后,生成確認(rèn)消息,發(fā)送給公有云;
(12)遠(yuǎn)程解密:
(12a)私有云接收到確認(rèn)消息后,用移動(dòng)終端的公鑰加密第一個(gè)密文塊,將加密后的數(shù)據(jù)發(fā)送至移動(dòng)終端;
(12b)移動(dòng)終端接收到加密后的數(shù)據(jù)后,用自己的私鑰解密接收到的數(shù)據(jù),得到第一個(gè)密文塊;
(12c)按照下式,移動(dòng)終端計(jì)算密鑰替代值:
Kp=M(Ek(C1))
其中,Kp表示密鑰替代值,M(·)表示移動(dòng)終端計(jì)算的一個(gè)哈希函數(shù),Ek(·)表示在密鑰k下使用移動(dòng)終端和私有云共享的加密算法,對(duì)第一個(gè)密文塊C1進(jìn)行加密操作;
(12d)按照下式,移動(dòng)終端計(jì)算第一個(gè)中間塊:
I1=Dk(C1)
其中,I1表示待使用文件的第一個(gè)中間塊,Dk(·)表示在密鑰k下使用對(duì)待對(duì)稱解密算法對(duì)第一個(gè)密文塊C1進(jìn)行解密操作;
(12e)移動(dòng)終端將第一個(gè)中間塊I1、密鑰替代值Kp和時(shí)間戳t3發(fā)送給私有云;
(12f)私有云接收到數(shù)據(jù)后,按照下式,私有云計(jì)算全部明文塊:
其中,Ij表示待使用文件的第j個(gè)中間塊,j=2...y,y表示待使用文件分塊的總數(shù),表示在密鑰替代值Kp下使用移動(dòng)終端和私有云共享的對(duì)稱解密算法,對(duì)第j個(gè)密文塊Cj進(jìn)行解密操作,Cj-1表示待使用文件的第j-1個(gè)密文塊,j=2...y,P1表示待使用文件的第一個(gè)明文塊,I1表示待使用文件的第一個(gè)中間塊,H(·)表示私有云計(jì)算的一個(gè)哈希函數(shù),Iy表示待使用文件的第y個(gè)中間塊,P表示全部明文塊,表示按位異或操作;
(13)返回全部明文塊:
(13a)私有云將時(shí)間戳t4和解密得到的全部明文塊,發(fā)送給移動(dòng)終端;
(13b)移動(dòng)終端接收全部明文塊,明文塊包括數(shù)據(jù)塊號(hào)和明文數(shù)據(jù);
(13c)移動(dòng)終端生成確認(rèn)消息,發(fā)送給私有云。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
第一,由于本發(fā)明生成密鑰替代值,代替密鑰進(jìn)行加密和解密計(jì)算操作,克服了現(xiàn)有技術(shù)由于可信第三方知曉密鑰,萬一可信第三方遭受攻擊會(huì)導(dǎo)致密鑰泄露問題,使得本發(fā)明的密鑰具有安全性高的優(yōu)點(diǎn)。
第二,由于本發(fā)明上傳存儲(chǔ)密文塊,私有云將明文文件加密后上傳存儲(chǔ)在公有云,克服了現(xiàn)有技術(shù)中由于移動(dòng)終端直接將未加密的明文文件發(fā)送存儲(chǔ)在公有云端導(dǎo)致文件安全遭受威脅的問題,使得本發(fā)明的文件數(shù)據(jù)具有安全性高的優(yōu)點(diǎn)。
第三,由于本發(fā)明采用生成所有密文塊,私有云代替移動(dòng)終端進(jìn)行所有明文塊的加密運(yùn)算操作,克服了現(xiàn)有技術(shù)由于移動(dòng)終端過多地承擔(dān)了完整性驗(yàn)證的工作,會(huì)導(dǎo)致移動(dòng)終端負(fù)擔(dān)過重的問題,使得本發(fā)明具有減輕移動(dòng)終端存儲(chǔ)和計(jì)算負(fù)擔(dān)的優(yōu)點(diǎn)。
第四,由于本發(fā)明生成所有明文塊,私有云代替移動(dòng)終端進(jìn)行所有密文塊的解密運(yùn)算操作,克服了現(xiàn)有技術(shù)由于移動(dòng)終端過多地承擔(dān)了完整性驗(yàn)證的工作,會(huì)導(dǎo)致移動(dòng)終端負(fù)擔(dān)過重的問題,使得本發(fā)明具有減輕移動(dòng)終端存儲(chǔ)和計(jì)算負(fù)擔(dān)的優(yōu)點(diǎn)。
第五,由于本發(fā)明刪除全部密文塊,私有云將全部密文塊發(fā)送給公有云后,將全部的密文塊刪除,克服了現(xiàn)有技術(shù)由于可信第三方擁有密文文件,萬一可信第三方遭受攻擊,或者存在云欺詐,會(huì)導(dǎo)致文件信息泄露問題,使得本發(fā)明具有文件信息機(jī)密性高的優(yōu)點(diǎn)。
附圖說明
圖1為本發(fā)明的流程圖;
圖2為本發(fā)明步驟2遠(yuǎn)程加密的流程圖;
圖3為本發(fā)明步驟12遠(yuǎn)程解密的流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。
參照附圖1,對(duì)實(shí)現(xiàn)本發(fā)明的具體步驟作進(jìn)一步的描述。
步驟1,驗(yàn)證移動(dòng)終端用戶。
采用用戶驗(yàn)證方法,私有云對(duì)移動(dòng)終端用戶進(jìn)行驗(yàn)證。
實(shí)現(xiàn)用戶驗(yàn)證方法的具體步驟如下:
第1步,移動(dòng)終端將移動(dòng)終端用戶身份識(shí)別碼ID、口令psd、待加密文件的文件名fn、待加密文件的隱私等級(jí)PrivLevel和時(shí)間戳t1用私有云的公鑰加密,將加密后的消息發(fā)送給私有云。
第2步,私有云用自己的私鑰解密接收的消息,得到移動(dòng)終端用戶身份識(shí)別碼ID和口令psd。
私有云查詢移動(dòng)終端用戶信息表,判斷移動(dòng)終端用戶的身份識(shí)別ID和口令psd是否與移動(dòng)終端用戶信息表中的信息一致,若是,則通過移動(dòng)終端用戶驗(yàn)證,執(zhí)行步驟2,否則,刪除待驗(yàn)證的移動(dòng)終端用戶的身份識(shí)別碼ID和口令psd;
步驟2,遠(yuǎn)程加密。
參照附圖2,對(duì)實(shí)現(xiàn)遠(yuǎn)程加密操作的具體步驟作進(jìn)一步的描述。
按照下式,私有云計(jì)算待加密文件的第一個(gè)中間塊:
其中,I1表示待加密文件的第一個(gè)中間塊,P1表示待加密文件的第一個(gè)明文塊,表示按位異或操作,H(·)表示私有云計(jì)算的一個(gè)哈希函數(shù),Ii表示待加密文件的第i個(gè)中間塊,In表示待加密文件的第n個(gè)中間塊,n表示待加密文件的分塊的總數(shù)。
私有云用移動(dòng)終端的公鑰對(duì)待加密文件的第一個(gè)中間塊I1和時(shí)間戳t2進(jìn)行加密操作,將加密后的消息發(fā)送給移動(dòng)終端。
私有云用自己的私鑰解密接收到的消息,得到待加密文件的第一個(gè)中間塊I1,按照下式,私有云計(jì)算待加密文件的第一個(gè)密文塊:
C1=Ek(I1)
其中,C1表示待加密文件的第一個(gè)密文塊,Ek(·)表示在加密密鑰k下,使用由移動(dòng)終端和私有云共享的對(duì)稱加密算法,對(duì)待加密文件的第一個(gè)中間塊I1進(jìn)行加密操作。
按照下式,移動(dòng)終端計(jì)算密鑰替代值:
Kp=M(Ek(C1))
其中,Kp表示密鑰替代值,M(·)表示移動(dòng)終端計(jì)算的一個(gè)哈希函數(shù),Ek(·)表示在密鑰k下,使用由移動(dòng)終端和私有云共享的對(duì)稱加密算法,對(duì)待加密文件的第一個(gè)密文塊C1進(jìn)行加密操作。
移動(dòng)終端用私有云的公鑰,對(duì)待加密文件的第一個(gè)密文塊C1和密鑰替代值Kp進(jìn)行加密操作,將加密后的消息發(fā)送給私有云。
私有云用自己的私鑰解密接收到的消息,得到待加密文件的第一個(gè)密文塊C1和密鑰替代值Kp,按照下式,完成除第一個(gè)明文塊之外的其余明文塊的加密操作,得到所有的密文塊;
其中,Ci表示待加密文件的第i個(gè)密文塊,i=2...n,n表示密文塊分塊的總數(shù),表示在密鑰替代值Kp下,使用移動(dòng)終端和私有云共享的對(duì)稱加密算法對(duì)待加密文件進(jìn)行加密操作,Ii表示待加密文件的第i個(gè)中間塊,表示按位異或操作,Ci-1表示待加密文件的第i-1個(gè)密文塊。
私有云生成加密完成的確認(rèn)消息,發(fā)送給移動(dòng)終端。
私有云刪除待加密文件,遠(yuǎn)程加密步驟結(jié)束。
步驟3,生成數(shù)據(jù)指紋。
私有云接收到加密完成的確認(rèn)消息后,依照元數(shù)據(jù)生成算法g(a,b),為每個(gè)密文塊生成K位的元數(shù)據(jù),K表示數(shù)據(jù)塊需要讀取的數(shù)據(jù)位的總量,僅為數(shù)據(jù)所有者和可信第三方私有云知道,g(a,b)表示第a個(gè)數(shù)據(jù)塊的第b位數(shù)據(jù),a=1...m,b=1...x,m表示密文分塊的總數(shù),x表示每一個(gè)數(shù)據(jù)塊中需要讀取的數(shù)據(jù)位置。
私有云按照私有云和公有云共享的哈希函數(shù)為每個(gè)密文塊的元數(shù)據(jù)生成獨(dú)一無二的數(shù)據(jù)指紋。
私有云生成密文塊和元數(shù)據(jù)指紋對(duì)應(yīng)關(guān)系的索引表IndexTable,存儲(chǔ)索引表IndexTable。
步驟4,驗(yàn)證數(shù)據(jù)指紋。
采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云驗(yàn)證對(duì)方的數(shù)據(jù)指紋。
實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)指紋方法的具體步驟如下:
第1步,私有云隨機(jī)選擇隨機(jī)數(shù)rPrc和臨時(shí)密鑰K1,用公有云公鑰對(duì)私有云隨機(jī)數(shù)rPrc、臨時(shí)密鑰K1和公有云標(biāo)識(shí)符Puc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,將加密后的數(shù)據(jù)和數(shù)據(jù)指紋發(fā)送給公有云;
第2步,公有云用自己的私鑰解密接收到的消息,得到加密后的數(shù)據(jù)和數(shù)據(jù)指紋,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,判斷生成的數(shù)據(jù)指紋和接收到的數(shù)據(jù)指紋是否相同,若是,執(zhí)行本步驟的第3步,否則,執(zhí)行本步驟的第1步;
第3步,隨機(jī)選擇公有云隨機(jī)數(shù)rPuc和臨時(shí)密鑰K2,用私有云公鑰對(duì)公有云隨機(jī)數(shù)rPuc、臨時(shí)密鑰K2、私有云隨機(jī)數(shù)rPrc和私有云標(biāo)識(shí)符Prc進(jìn)行加密操作,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給私有云;
第4步,私有云用自己的私鑰解密接收到的消息,得到私有云隨機(jī)數(shù)rPrc,檢驗(yàn)是否是私有云發(fā)送過的隨機(jī)數(shù),若是,則執(zhí)行本步驟的第5步,否則,執(zhí)行本步驟的第1步;
第5步,私有云用公有云公鑰對(duì)公有云標(biāo)識(shí)符Puc和公有云隨機(jī)數(shù)rPuc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給公有云;
第6步,公有云用自己的私鑰解密接收到的消息,得到公有云隨機(jī)數(shù)rPuc。
判斷私有云返回的公有云隨機(jī)數(shù)和公有云發(fā)送的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云生成確認(rèn)消息,發(fā)送給私有云,執(zhí)行步驟5,否則,公有云刪除數(shù)據(jù)指紋。
步驟5,上傳存儲(chǔ)密文塊。
私有云接收到確認(rèn)消息后,將密文文件名以及密文文件的每一個(gè)密文塊發(fā)送給公有云,密文文件的每一個(gè)密文塊包括數(shù)據(jù)塊號(hào)和密文數(shù)據(jù)。
公有云接收到密文文件名和密文文件的每一個(gè)密文塊后,存儲(chǔ)密文文件名和密文文件的每一個(gè)密文塊,生成關(guān)系索引表RelationIndex和存儲(chǔ)索引表StorageIndex,保存關(guān)系索引表RelationIndex和存儲(chǔ)索引表StorageIndex。
公有云生成確認(rèn)消息,發(fā)送給私有云。
步驟6,私有云刪除全部密文塊。
步驟7,驗(yàn)證挑戰(zhàn)信息。
(7a)采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云相互驗(yàn)證對(duì)方的數(shù)據(jù)指紋。
實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)指紋方法的具體步驟如下:
第1步,私有云隨機(jī)選擇隨機(jī)數(shù)rPrc和臨時(shí)密鑰K1,用公有云公鑰對(duì)私有云隨機(jī)數(shù)rPrc、臨時(shí)密鑰K1和公有云標(biāo)識(shí)符Puc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,將加密后的數(shù)據(jù)和數(shù)據(jù)指紋發(fā)送給公有云;
第2步,公有云用自己的私鑰解密接收到的消息,得到加密后的數(shù)據(jù)和數(shù)據(jù)指紋,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,判斷生成的數(shù)據(jù)指紋和接收到的數(shù)據(jù)指紋是否相同,若是,執(zhí)行本步驟的第3步,否則,執(zhí)行本步驟的第1步;
第3步,隨機(jī)選擇公有云隨機(jī)數(shù)rPuc和臨時(shí)密鑰K2,用私有云公鑰對(duì)公有云隨機(jī)數(shù)rPuc、臨時(shí)密鑰K2、私有云隨機(jī)數(shù)rPrc和私有云標(biāo)識(shí)符Prc進(jìn)行加密操作,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給私有云;
第4步,私有云用自己的私鑰解密接收到的消息,得到私有云隨機(jī)數(shù)rPrc,檢驗(yàn)是否是私有云發(fā)送過的隨機(jī)數(shù),若是,則執(zhí)行本步驟的第5步,否則,執(zhí)行本步驟的第1步;
第5步,私有云用公有云公鑰對(duì)公有云標(biāo)識(shí)符Puc和公有云隨機(jī)數(shù)rPuc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給公有云;
第6步,公有云用自己的私鑰解密接收到的消息,得到公有云隨機(jī)數(shù)rPuc。
(7b)判斷私有云返回的公有云隨機(jī)數(shù)和公有云發(fā)送的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云發(fā)送確認(rèn)消息給私有云,執(zhí)行步驟(7c),否則,公有云刪除數(shù)據(jù)指紋。
(7c)私有云生成挑戰(zhàn)信息,對(duì)挑戰(zhàn)信息使用私有云和公有云共享的哈希函數(shù)生成數(shù)據(jù)指紋,將數(shù)據(jù)指紋發(fā)送給公有云。
挑戰(zhàn)信息,包括待驗(yàn)證密文塊的數(shù)據(jù)塊號(hào)和挑戰(zhàn)值。
(7d)公有云接收數(shù)據(jù)指紋。
(7e)判斷公有云發(fā)送的公有云隨機(jī)數(shù)與公有云接收的公有云隨機(jī)數(shù)是否相同,若是,則執(zhí)行步驟8,否則,公有云刪除數(shù)據(jù)指紋。
步驟8,比對(duì)數(shù)據(jù)指紋。
公有云根據(jù)待驗(yàn)證密文塊的數(shù)據(jù)塊號(hào)查詢存儲(chǔ)索引表StorageIndex,得到待驗(yàn)證密文塊,公有云將待驗(yàn)證密文塊發(fā)送給私有云。
私有云接收到待驗(yàn)證密文塊后,按照私有云和公有云共享的哈希函數(shù),計(jì)算待驗(yàn)證密文塊的哈希值,將哈希值作為數(shù)據(jù)指紋。
私有云根據(jù)待驗(yàn)證密文塊的數(shù)據(jù)塊號(hào)查詢索引表IndexTable,得到存儲(chǔ)的待驗(yàn)證密文塊的數(shù)據(jù)指紋。
判斷私有云接收的待驗(yàn)證密文塊的數(shù)據(jù)指紋和私有云存儲(chǔ)的待驗(yàn)證密文塊的數(shù)據(jù)指紋是否相同,若是,則私有云向移動(dòng)終端發(fā)送Success,否則,私有云向移動(dòng)終端發(fā)送Failure。
判斷移動(dòng)終端用戶是否需要使用數(shù)據(jù),若是,執(zhí)行步驟9,否則,不做任何處理。
步驟9,完整性檢測(cè)。
根據(jù)待驗(yàn)證文件的隱私等級(jí)的高低,確定時(shí)間間隔。
根據(jù)待驗(yàn)證文件的隱私等級(jí)的高低,確定時(shí)間間隔是指,將待驗(yàn)證文件的隱私等級(jí)高的完整性檢測(cè)的時(shí)間間隔T設(shè)為1秒,將待驗(yàn)證文件的隱私等級(jí)中的完整性檢測(cè)的時(shí)間間隔T設(shè)為1小時(shí),將待驗(yàn)證文件的隱私等級(jí)低的完整性檢測(cè)的時(shí)間間隔T設(shè)為1天。
按照時(shí)間間隔,執(zhí)行步驟7。
步驟10,發(fā)送待使用文件的文件名。
(10a)采用移動(dòng)終端用戶驗(yàn)證方法,私有云對(duì)移動(dòng)終端用戶進(jìn)行驗(yàn)證。
實(shí)現(xiàn)用戶驗(yàn)證方法的具體步驟如下:
第1步,移動(dòng)終端將移動(dòng)終端用戶身份識(shí)別碼ID、口令psd、待加密文件的文件名fn、待加密文件的隱私等級(jí)PrivLevel和時(shí)間戳t1用私有云的公鑰加密,將加密后的消息發(fā)送給私有云;
第2步,私有云用自己的私鑰解密接收的消息,得到移動(dòng)終端用戶身份識(shí)別碼ID和口令psd。
(10b)私有云查詢移動(dòng)終端用戶信息表,判斷移動(dòng)終端用戶的身份識(shí)別ID和口令psd是否與移動(dòng)終端用戶信息表中的信息一致,若是,則通過移動(dòng)終端用戶驗(yàn)證,執(zhí)行步驟(10c),否則,刪除待驗(yàn)證的移動(dòng)終端用戶的身份識(shí)別碼ID和口令psd。
(10c)采用驗(yàn)證數(shù)據(jù)指紋方法,公有云和私有云相互驗(yàn)證對(duì)方的數(shù)據(jù)指紋。
實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)指紋方法的具體步驟如下:
第1步,私有云隨機(jī)選擇隨機(jī)數(shù)rPrc和臨時(shí)密鑰K1,用公有云公鑰對(duì)私有云隨機(jī)數(shù)rPrc、臨時(shí)密鑰K1和公有云標(biāo)識(shí)符Puc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,將加密后的數(shù)據(jù)和數(shù)據(jù)指紋發(fā)送給公有云;
第2步,公有云用自己的私鑰解密接收到的消息,得到加密后的數(shù)據(jù)和數(shù)據(jù)指紋,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,判斷生成的數(shù)據(jù)指紋和接收到的數(shù)據(jù)指紋是否相同,若是,執(zhí)行本步驟的第3步,否則,執(zhí)行本步驟的第1步;
第3步,隨機(jī)選擇公有云隨機(jī)數(shù)rPuc和臨時(shí)密鑰K2,用私有云公鑰對(duì)公有云隨機(jī)數(shù)rPuc、臨時(shí)密鑰K2、私有云隨機(jī)數(shù)rPrc和私有云標(biāo)識(shí)符Prc進(jìn)行加密操作,使用私有云和公有云共享的哈希函數(shù)對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給私有云;
第4步,私有云用自己的私鑰解密接收到的消息,得到私有云隨機(jī)數(shù)rPrc,檢驗(yàn)是否是私有云發(fā)送過的隨機(jī)數(shù),若是,則執(zhí)行本步驟的第5步,否則,執(zhí)行本步驟的第1步;
第5步,私有云用公有云公鑰對(duì)公有云標(biāo)識(shí)符Puc和公有云隨機(jī)數(shù)rPuc進(jìn)行加密操作,對(duì)加密后的數(shù)據(jù)生成數(shù)據(jù)指紋,發(fā)送給公有云;
第6步,公有云用自己的私鑰解密接收到的消息,得到公有云隨機(jī)數(shù)rPuc。
(10d)判斷公有云發(fā)送的公有云隨機(jī)數(shù)和公有云接收的公有云隨機(jī)數(shù)是否相同,若是,則通過驗(yàn)證,公有云生成確認(rèn)消息,發(fā)送給私有云,并執(zhí)行步驟(10e),否則,公有云刪除數(shù)據(jù)指紋。
(10e)私有云接收到確認(rèn)消息后,將待使用文件的文件名發(fā)送給公有云;
步驟11,傳回密文塊。
公有云根據(jù)密文文件名查詢關(guān)系索引表RelationIndex,得到該密文文件包含的數(shù)據(jù)塊號(hào)。
公有云根據(jù)該密文文件包含的數(shù)據(jù)塊號(hào)查詢存儲(chǔ)索引表StorageIndex,得到全部密文塊。
公有云將查詢得到的全部密文塊發(fā)送給私有云。
私有云接收到全部密文塊后,生成確認(rèn)消息,發(fā)送給公有云。
步驟12,遠(yuǎn)程解密。
參照附圖3,對(duì)實(shí)現(xiàn)遠(yuǎn)程解密操作的具體步驟作進(jìn)一步的描述。
私有云接收到確認(rèn)消息后,用移動(dòng)終端的公鑰加密第一個(gè)密文塊,將加密后的數(shù)據(jù)發(fā)送至移動(dòng)終端。
移動(dòng)終端接收到加密后的數(shù)據(jù)后,用自己的私鑰解密接收到的數(shù)據(jù),得到第一個(gè)密文塊。
按照下式,移動(dòng)終端計(jì)算密鑰替代值:
Kp=M(Ek(C1))
其中,Kp表示密鑰替代值,M(·)表示移動(dòng)終端計(jì)算的一個(gè)哈希函數(shù),Ek(·)表示在密鑰k下使用移動(dòng)終端和私有云共享的加密算法,對(duì)第一個(gè)密文塊C1進(jìn)行加密操作。
按照下式,移動(dòng)終端計(jì)算第一個(gè)中間塊:
I1=Dk(C1)
其中,I1表示待使用文件的第一個(gè)中間塊,Dk(·)表示在密鑰k下使用對(duì)稱解密算法,對(duì)第一個(gè)密文塊C1進(jìn)行解密操作。
移動(dòng)終端將第一個(gè)中間塊I1、密鑰替代值Kp和時(shí)間戳t3發(fā)送給私有云。
私有云接收到數(shù)據(jù)后,按照下式,私有云計(jì)算全部明文塊:
其中,Ij表示待使用文件的第j個(gè)中間塊,j=2...y,y表示待使用文件分塊的總數(shù),表示在密鑰替代值Kp下使用移動(dòng)終端和私有云共享的對(duì)稱解密算法對(duì)第j個(gè)密文塊Cj進(jìn)行解密操作,Cj-1表示待使用文件的第j-1個(gè)密文塊,j=2...y,P1表示待使用文件的第一個(gè)明文塊,I1表示待使用文件的第一個(gè)中間塊,H(·)表示私有云計(jì)算的一個(gè)哈希函數(shù),Iy表示待使用文件的第y個(gè)中間塊,P表示全部明文塊,表示按位異或操作。
遠(yuǎn)程解密步驟結(jié)束。
步驟13,返回全部明文塊。
私有云將時(shí)間戳t4和解密得到的全部明文塊,發(fā)送給移動(dòng)終端。
移動(dòng)終端接收全部明文塊,明文塊包括數(shù)據(jù)塊號(hào)和明文數(shù)據(jù)。
移動(dòng)終端生成確認(rèn)消息,發(fā)送給私有云。