一種移動雲計算環境下的輕量級文件遠程加密方法與流程
2023-10-23 23:31:53 1

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