林學聰,董 征,劉友武
(1.閩南師范大學 教務處,福建 漳州 363000;2.三明學院 網絡中心,福建 三明 365000)
云計算是一種通過互聯網允許用戶隨時隨地以按次付費的方式訪問信息技術服務的新模式[1,2],用戶數據中可能包含用戶隱私(如企業客戶信息和醫院患者信息),因此,數據安全和隱私問題是基于云的物聯網應用程序構成的重要威脅之一[3,4]。用戶通過共享其敏感數據并允許服務提供商獲取、分析或將其數據貨幣化,從而存在暴露這些數據的風險[5]。此外,惡意云服務提供商或攻擊者可以攔截用戶的操作,然后訪問用戶身份信息或篡改用戶數據,可能造成嚴重后果[6,7]。在云計算中保證用戶隱私是至關重要的,使用身份驗證技術來保護敏感信息免受對手攻擊被認為是保證用戶隱私的有效解決方案[8,9]。然而,現有技術的驗證性能并沒有達到要求的水平,因為客戶的敏感信息暴露在云端的對手面前[10],實際上,數百個用戶可以同時訪問云服務。因此,用戶訪問的認證過程必須盡可能有效,并且計算復雜性必須最小[11]。因此本文將抑制方法和多階段認證相結合來實現云計算環境下數據隱私保護的增強。
提出的算法最初由客戶端向云服務器發送請求,在接受請求時云服務器使用客戶端ID和密碼、一次性令牌、條件屬性等進行多階段身份驗證來驗證客戶端身份的真實性,當且僅當客戶端是合法時,云服務器允許客戶端獲取所需的數據訪問,以最短時間訪問云數據的客戶端的驗證性能。圖1給出用于隱私保護數據訪問算法的具體架構。

圖1 用于隱私保護的數據訪問算法架構
云服務器S對系統進行初始化,S選取兩個大素數p和q以及具有q階加群G的生成器P,隨后選擇非奇異橢圓曲線E(Fq):y2=x3+ax+bmodp,S生成xs∈Fq并將其設置為密鑰。
在提出的方法中,客戶端在注冊階段將適當的身份信息發送給云服務器,云服務器借助抑制方法將客戶端的身份信息存儲在數據庫中,并發出客戶端ID、密碼和一些條件屬性。注冊是在云環境中收集有關客戶的個人信息的過程,有助于本文算法在與客戶端的基于云的文件共享過程中獲得集中控制。在獲得任何數據服務之前,云環境中的客戶端必須向云服務器注冊其個人詳細信息。為了做到這一點,每個客戶機通過一個安全通道將他/她的個人詳細信息發送給云服務器。
在傳統的加密方案中,密碼僅包括數值和特殊字符。在提出的算法中,除了包括數值和特殊字符之外,條件屬性還包括一組問題,這些問題的構造是為了在訪問云數據時驗證客戶的身份。完成注冊過程后,云服務器通過以下公式提供客戶端ID和密碼
CS→Cid,PWD
(1)
式中:CS表示云服務器,Cid表示客戶端ID,PWD為客戶端密碼,云服務器借助不同數量的條件為每個客戶定義條件屬性CAi。在此基礎上,使用以下數學表達式構造條件屬性
Cid→(CA1,CA2,…,CAn)
(2)
依據等式(2),云服務器為每個客戶標識Cid設置條件屬性CAi。對于每個注冊個人信息的客戶端,云服務器生成一個唯一的客戶端ID、密碼和條件屬性,以安全地從云端訪問數據,構造的客戶端ID、密碼和條件屬性存儲在云服務器數據庫中。在云環境中,向對手秘密保存客戶詳細細節是一個亟待解決的問題。
K-匿名主要通過抑制和泛化的方法來保護需要對外公開的數據的隱私性,它以損失發布信息中的某些屬性值為代價保護一些涉及個人隱私信息的屬性值,盡可能的在發布數據的精確度和隱私保護的安全度之間達到一定的平衡。不僅保證數據整體趨勢,對單條數據記錄的精確性也加以保護,為發布的數據提供更好的可用性。為了將客戶身份信息安全地保存在云服務器數據庫中,本文首先通過抑制K-匿名方法替換客戶密碼的原始字符或值,以星號“*”替換客戶的條件屬性,然后將替換后的客戶密碼和條件屬性存儲在云服務器數據庫中,使云環境中沒有人知道客戶端的真實身份。由此,客戶敏感信息被安全地保存下來,并且不會在云環境中泄露給對手。實驗結果表明,提出的技術比現有的技術提高了數據隱私保護率,通過對客戶端身份信息的隱私保護,提高了云端的驗證性能。
當客戶端發送獲取云服務的請求時,進行多階段驗證過程(即密碼、一次性令牌和條件屬性),以確認客戶端是合法的還是非法的。當客戶端使用ID和密碼登錄時,如果密碼有效,則生成一次性令牌,然后將創建的一次性令牌傳輸到云環境中的相應客戶端。借助于一次性令牌,本文以更高的準確性增強了云計算中的客戶端身份驗證性能。
圖2給出了進行身份認證的具體流程。如圖2所示,提出的算法驗證向云服務器發送請求的客戶端的密碼、一次性令牌和條件屬性。如果客戶端是合法的人,則允許客戶端使用加密或解密過程獲得所需的數據服務;如果客戶端是非法用戶,則該算法不允許客戶端從云端獲取任何數據服務,從而提高認證準確性。

圖2 身份認證流程
在提出的算法中,一次性令牌用于驗證客戶端,密碼用于保護客戶賬戶的安全和機密性,以防非法訪問。每當客戶端登錄系統時,所提方法均提供一個新的一次性令牌。這個一次性令牌是系統本身使用以下公式隨機生成的
Cid→OTT,OTT={r}
(3)
依據等式(3),通過隨機選擇一個大素數r來構造客戶端ID的一次性令牌OTT。每次為客戶端創建新的一次性令牌時,該客戶端先前的一次性令牌被刪除。生成的一次性令牌只用于本次登錄。因此,只有具有一次性令牌的授權客戶端才能訪問所需的服務。
驗證一次性令牌后,將驗證客戶端的條件屬性,如您最喜歡的食物是什么、昵稱是什么等等。在完成多階段身份驗證過程后,提出的技術只允許授權的客戶端獲得云服務。
考慮云計算中表示為Ci=C1,C2,…,Cn的客戶端,對于每個客戶端Ci,多階段身份驗證MFA在數學上表示為

(4)
式中:P表示PWD=PWD*,O表示OTT=OTT*,Q表示CA=CA*,一次性令牌和條件屬性,PWD*、OTT*和CA*表示與相應客戶端一起存儲在CS數據庫中的密碼、一次性令牌和條件屬性。如果密碼、一次性令牌和條件屬性是合法的,則確認客戶端是可信的。否則,將驗證客戶端是否為云中的真實身份。
在對客戶端進行身份驗證之后,使用數據訪問階段來為客戶端提供所需的服務。當該技術在云環境中獲得授權后,即可提供所需的云數據服務。如果客戶不是授權人,該技術不允許客戶獲取云數據服務。因此,該技術在較短的時間內增加了云中客戶機的認證準確性。
在給客戶請求的云數據之前,執行c=diPkimodPki進行數據加密以提高數據傳輸的安全性。其中c表示密碼文本,di表示客戶端請求的云數據,Pki表示客戶端的公鑰(即密碼)。然后,密碼文本發送給向云服務器發送請求的客戶端。在接收端,對加密數據進行解密,目的是利用其私鑰獲得原始云數據。數據解密的數學實現方法如下
di=wSki*mod(α*β)
(5)
式中:Ski表示私鑰(即一次性密碼),di表示原始云數據,α和β表示兩個質數。
基于多階段認證的云計算隱私保護數據訪問的具體算法如下:
該算法包含注冊、認證和數據訪問3個關鍵過程。輸入客戶數量,在注冊過程中,對每個客戶使用式(1)生成客戶端ID和密碼,使用式(2)設置條件屬性“CA”,然后通過抑制方法將每個客戶的密碼和條件屬性存儲在云數據庫中,云服務器向客戶端發送密碼和條件屬性。在認證階段,客戶使用客戶端ID和密碼登錄,云服務器生成一次性令牌,并將其使用式(3)和式(4)傳輸到相應的客戶端,然后云服務器驗證客戶端的密碼、一次性令牌和條件屬性。如果客戶端的密碼、一次性令牌和條件屬性有效,則認為客戶端是合法的,否則,客戶將被視為非法訪問。在數據訪問階段,如果客戶端經過認證,則通過執行數據加密/解密獲得所需的服務;如果客戶端沒有經過認證,客戶將被視為非法訪問,不允許客戶端獲取云數據服務。
為了評估所提出的算法性能指標,所有實驗均是在一臺配置為Intel Core i7、3.4 GHz CPU和4 GB內存的Microsoft Windows 7平臺上進行,所有測試均是用Java語言實現。從UCI機器學習庫選取Amazon Access示例數據集,該數據集提供的匿名化樣本有4個屬性:人員屬性、資源ID、組ID和系統支持ID。將測試結果與基于屬性的簽名外包ABS協議和云環境中基于屬性模糊分組的隱私感知訪問控制方法Priguarder[15]進行對比分析。
為了測量訪問云數據服務時的客戶端身份認證性能,選擇身份認證準確度(authentication accuracy,AA)對實驗性能進行分析比較。身份驗證準確度(AA)是指被正確驗證為已授權或未授權的客戶端數量與客戶端總數的比率。云數據訪問的AA是在不同數量的客戶機上估算的,AA由以下數學表達式確定:AA=Mc/n*100%,Mc表示正確認證的客戶端數量,n表示實驗過程中考慮的客戶端總數。
計算復雜性(computational complexity,CC)決定了用于驗證向云服務器發送請求的客戶端的時間量。可以看出,用不同數量的客戶來衡量確認客戶身份所需的時間,可表示為:CC=n*T(ASC),T(ASC)表示用于驗證單個客戶端的時間,n表示客戶端的數量,CC以毫秒(ms)為單位計算。
為了評估本文算法的安全性,采用隱私保護率(privacy preserving rate,PPR)對實驗性能進行評價。隱私保護率(PPR)衡量的是只有授權客戶端才能正確訪問的云數據數量與云數據總數的比率。PPR由以下數學表達式確定
(6)
式中:LAC表示合法客戶端正確獲取的數據數量,N表示云數據的總數(合法客戶端正確獲取的數據數量和非法客戶端正確獲取的數據數量的總數),隱私保護率是根據百分比(%)確定。換言之,PPR是指合法用戶使用加密或解密過程從云端獲取任何數據服務的比率,PPR越高,非法用戶從云端獲取任何數據服務的次數越少,則算法的認證性能越高。
為了測量訪問云數據服務時的客戶端身份驗證性能,圖3給出了本文算法與基于屬性的簽名外包ABS協議和云環境中基于屬性模糊分組的隱私感知訪問控制方法Priguarder[15]的身份驗證準確性。

圖3 不同算法的身份驗證準確性
可以看出,在對40個客戶進行實驗過程中,本文算法、Priguarder和ABS算法獲得AA分別為98%、78%和73%。從圖中曲線可以看出,與其它算法相比,本文算法提供了增強的AA,獲得了更好的身份驗證準確性。這是因為當客戶端登錄系統時,構造一次性令牌,并在口令正確時將其廣播給相應的客戶端,然后驗證客戶端的條件屬性。如果客戶端的密碼、一次性令牌和條件屬性合法,則客戶端被驗證為已授權。否則,客戶端將被驗證為云中未經授權的人。由此,本文算法增加了被完全認證的客戶端數量。
圖4給出了客戶端數量不同時,3種算法的計算復雜度。可以看出,計算復雜度隨著客戶端數量的增加而增加。在對60個客戶端完成實驗評估時,本文算法、Priguarder和ABS算法獲得CC分別為28 ms、34 ms和40 ms。從圖中曲線可以看出,與Priguarder和ABS算法相比,本文算法將CC分別減少了19%和32%。這是因為本文借助多階段身份驗證的應用,對請求云數據服務的客戶端進行時間利用率的精確驗證,這有助于本文算法在訪問云數據時比其它現有工作花費更少的時間來驗證客戶端。

圖4 不同算法的計算復雜度
圖5給出了云數據的數量不同時,3種算法的隱私保護率。可以看出,在對100個云數據進行實驗時,本文算法、Priguarder和ABS算法獲得的隱私保護率分別為97%、85%和66%。與Priguarder和ABS算法相比,本文算法將隱私保護率分別提高了20%和41%。因此,本文算法在云環境中實現了更高的隱私保護率。這是因為本文算法通過抑制方法將客戶端數據安全地保存在云計算數據庫中。同時,在多階段驗證的支持下,只允許合法客戶獲取云數據服務。

圖5 不同算法的隱私保護率
提出了一種基于多階段身份認證的云計算隱私保護數據訪問算法,通過避免低計算復雜度云中的非法訪問來提高云數據的隱私保護率。該算法利用抑制方法替換客戶密碼的原始字符或值以將客戶的個人信息安全地存儲在云數據庫中,利用密碼、一次性令牌和條件屬性等進行多階段身份認證,提高了認證準確性,以最短的時間高效地驗證需要云數據服務的客戶端。該算法當且僅當客戶在密碼、一次性令牌和條件屬性有效時,云服務器允許客戶使用加密或解密過程獲得所需的云數據訪問服務,從而獲得了更高的隱私保護率。實驗結果表明,與其它方法相比,提出的方法在隱私保護率、計算復雜度和身份認證精度方面均優于所對比的方法。未來的工作是通過采用不同的加密技術(即簽密)來提高云計算的數據完整性和保密性。