鮑康勝



摘要:隨著云計算和云存儲技術的快速發展和廣泛應用,云數據的安全問題也引起了越來越多的關注。用于數據保護的傳統加密等技術,運算復雜度較高,且由于加密之后的秘密信息只有一份,一旦丟失秘密信息也將隨之丟失。多云存儲技術由于復雜度低,因此成為云數據安全的主流技術之一。但是具有丟失容忍特性的多云存儲系統還有待于進一步研究與設計。本文將具有丟失容忍特性的秘密分享技術應用于多云存儲環境中,設計了一種分級安全存儲系統。系統具有防止惡意內部人員竊密、分級權限控制等優點。
關鍵詞:多云存儲 ?內部人員竊密 ?秘密分享 ?權限控制
隨著云計算的發展,云存儲技術越來越受到人們的青睞,把重要數據存放在云上也是越來越多人的選擇。然而,僅將數據存放在單個云上將承擔很大的風險,因為即使云提供商是可信的,惡意的內部人員仍可能竊取用戶信息,導致信息的泄露。
考慮如下一個應用場景,一家公司選擇將重要數據存儲在云上,但如果是直接將數據以明文形式存放在云上,即使云提供商是可信的,但惡意的內部人員仍然難以防范,因此,考慮以秘密分享方式把秘密分享為n個秘密份額分發到n個云上,只有拿到k及k個以上份額才能恢復秘密,這樣惡意的內部人員拿到一個秘密份額是無法得到秘密的任何信息的,提高了數據的安全性。但由于公司內員工(這里把公司中所有人員統稱為員工)也分為不同的等級,公司的文件也相應有不同的密級,因此不同等級的員工應該接觸到的最高文件密級也不同,員工等級越高,就能操作越高密級的文件,也即是不同等級的員工擁有不同的權限。例如,該公司有高層、中層和底層三個等級的員工,則文件密級對應為密級3、密級2和密級1,高層員工可以對所有密級文件進行操作,如高層員工Alice想發布一個秘密文件,只讓中層和高層人員查看,那么她應將文件密級設為2;中層員工能對密級為1和2的文件進行操作;底層員工只能對密級為1的文件進行操作。
用于類似于以上場景的數據保護的傳統的加密等技術,運算復雜度較高,且由于加密之后的秘密信息只有一份,一旦丟失秘密信息也將隨之丟失,也就是不具有丟失容忍特性。多云存儲技術由于復雜度低,因此成為云數據安全的主流技術之一。但是具有丟失容忍特性的多云存儲系統還有待于進一步研究與設計。
秘密分享技術是信息加密的重要技術之一,通過秘密分享將秘密s分享成n份,拿到少于k(k本文設計一種分級安全存儲系統,把多云存儲思想和秘密分享技術結合起來,提供了一種數據加密存儲的選擇。概括來講,本系統有以下兩個特點:
1.分級安全存儲系統主要緩解了單云存儲可能會出現的用戶數據泄漏問題,尤其是降低了服務商惡意內部人員竊取用戶數據的可能。
2.本系統為指定文件進行分級,根據分級確定相應的秘密分享參數,分享出指定份額;同時,用戶被賦予不同的訪問權限,能夠訪問滿足等級要求的文件,并對文件進行增刪查改操作,但無法得到高于其訪問權限的文件的任何信息內容。用戶的權限設定和文件的分級體現了權限控制的思想,使分級安全存儲系統使用更加靈活,應用面也更加廣泛。
一、背景知識
一個秘密分享算法一般包括秘密分享(share或generate)和秘密恢復(recover)兩個階段,也稱作加密(encrypt)和解密(decrypt)兩個過程或者編碼(encode)和解碼(decode)兩個過程。現以基于圖像的秘密分享為例說明秘密分享算法的基本概念,在由多個參與方組成的秘密分享方案中,加密方通過加密算法將秘密分解為多個秘密信息不可見的影子圖像,并分發給對應的參與方個體;參與方若想恢復秘密圖像,必須獲取足夠數量的影子圖像(除數量基本需求外,也可有其他方面要求)才能恢復原始秘密圖像,由此可確保圖像傳輸和儲存過程的安全性。在(k,n)門限秘密分享方案(scheme)中,其中k≤n,將秘密信息加密成n個影子圖像。參與方如果獲取影子圖像數量不足k個時,則無法獲得任何秘密;在獲得大于或者等于k個影子圖像時,才能獲得原始秘密圖像的信息,由此還可以保證在圖像傳輸和存儲過程中的丟失容忍性。
起初的(k,n)門限秘密分享是由Blakley和Shamir于1979年分別提出的。目前秘密分享研究較多的分支是Shamir多項式秘密分享和可視秘密分享(又稱為視覺密碼,visual secret sharing,VSS 或 visual cryptographic scheme,VCS)。
下面具體介紹Shamir多項式秘密分享技術,也是本文設計的分級安全存儲模塊采用的方法,其優點是幾乎可以應用于各種類型的圖像、能夠無損恢復和具有(k,n)門限等。
設定一個合適的素數p,隨機從(0,p-1)內生成k-1個數a1,a2,…,ak-1,把秘密值s設為a0,構造(k-1)次多項式q(x)=a0+a1x+…+ak-1xk-1。顯然,對于該多項式,只要知道該多項式的k個互不相同的點的函數值q(xi)(i=1,2,…,k),就可以解出a0,a1,a2,…,ak-1,也即是恢復出秘密a0,生成n個不同的點xi(i=1,2,…,k)并計算函數值q(xi)(i=1,2,…,n),則(xi,q(xi)),i=1,2,…,n,即為分割的n個子秘密。顯然,這n個子秘密中的任意k個子秘密即可重構q(x),從而可得到秘密s。
三、基于秘密分享的分級安全存儲系統設計與實現
基于上述場景等應用需求,運用秘密分享技術,設計實現分級安全存儲系統,根據門限k設置用戶權限和文件密級。為簡化問題和突出重點,在本機上創建5個文件夾以代替5個云,這樣就能避免將數據分發到云上可能出現的數據丟失、亂序、被惡意篡改等問題。假設用戶權限為4,該用戶擁有對cloud 1、cloud 2、cloud 3和cloud 4四個云的訪問權,能對密級為1,2,3,4的文件進行操作,分享一個密級為3的文件,調用(3,3)門限秘密分享算法,得到3個秘密份額,將這3個秘密份額分發到cloud 1、cloud 2和cloud 3三個云上,分享一個密級為4的文件,調用(4,4)門限秘密分享算法,同樣得到4個秘密份額,將這4個秘密份額分發到cloud 1、cloud 2、cloud 3和cloud 4四個云上。也即是文件密級等于門限k,用戶權限大于等于門限k。通過用戶權限控制其對不同云平臺的訪問能力,通過文件等級限制影子文件的存放范圍,這樣就實現了基于秘密分享的具有權限控制的分級安全存儲系統的設計。
1.整體設計
分級安全存儲系統設計以秘密分享技術為基礎,融入權限控制的思想,邏輯上包括六個模塊:用戶注冊與登錄模塊、文件檢索模塊、文件分享模塊、文件恢復模塊、文件更新模塊和文件刪除模塊,系統整體框架如圖 1所示:
代碼實現上分為六個部分,分別是一個主模塊和五個功能模塊,主模塊為SimpleFileSystem.py,功能模塊為Register.py,Login.py,Encryption.py,Decryption.py和Delete.py。
執行主模塊,首先是用戶注冊或者用戶登錄環節,身份驗證通過后,即成功進入了分級安全存儲系統,可以進行相關文件操作,分別為文件分享、文件恢復和文件刪除,操作完畢后,選擇退出選項退出系統。
2.關鍵模塊設計
(1)分級安全存儲系統的三個核心功能
分級安全存儲系統三個核心功能分別是文件分享(加密文件)、文件恢復(讀取文件)和文件刪除。在注冊或者登錄成功后,用戶即可使用本系統,此時有四個選項供用戶選擇,即文件分享、恢復、刪除和退出系統四個選項。在文件分享部分,用戶輸入想要分享的文件的絕對路徑以及設定的文件密級,系統會根據用戶權限檢測是否是合法操作,檢測通過后即可進行文件分享。在文件恢復部分,系統會檢索并顯示在該用戶查看權限范圍內的所有文件的文件標識及對應的文件密級,用戶輸入想要恢復的文件標識即可進行文件恢復,恢復的文件統一放在recover文件夾中。在文件刪除部分,系統會檢索并顯示在該用戶刪除權限內的所有文件的文件標識和其對應的文件密級,用戶輸入想要刪除文件的文件標識即可進行文件刪除。用戶操作完畢后,可以選擇退出結束此次操作。
(2)元數據文件
分級安全存儲系統中分享恢復的文件的邏輯數據單元包含兩個部分,一個是元數據部分,一個是數據部分,元數據是數據的描述信息,用以描述數據。任何格式的文件的元數據部分都由文件標識和文件密級構成,以文件標識為鍵,文件密級為值,兩者構成一鍵值對,形式為“文件標識”:文件密級。在五個分享云cloud 1~5中,都設一個metadata_i.txt(i=1,2,…,5)的元數據文件,以字典形式存儲,元素為分享到相應云中文件的元數據部分(鍵值對)。
(3)權限控制
分級安全存儲系統將n設為5,也即是云的數量為5,用戶權限可以設為1,2,3,4,5,值越大,權限越大。文件密級可以設為1,2,3,4,5,值越大,文件密級越高,門限k的大小與文件密級的值是一致的。以權限為4的用戶為例,該用戶可以將其要加密的文件密級設置為1,2,3,4,即文件密級不大于權限值,因此該用戶也只能訪問存儲在文件系統中密級小于等于4的文件。權限為1的用戶為游客,只能訪問存儲在cloud 1中security_1文件夾中的明文文件,權限為5的用戶為系統管理員,能夠訪問所有密級的文件。
(4)影子文件在云中的存儲結構
分級安全存儲系統以5個文件夾(分別命名為Cloud 1,Cloud 2,Cloud 3,Cloud 4,Cloud 5)代替5個云,即n值為5,影子文件為打不開的無格式文件,文件標識即文件名。Cloud 1中有Security_1,Security_2,Security_3,Security_4,Security_5五個文件夾,分別用以存放文件密級為1至5的文件的影子文件,而Cloud 2中只有Security_2,Security_3,Security_4,Security_5四個文件夾,Cloud 3中只有Security_3,Security_4,Security_5三個文件夾,以此類推,Cloud 5中只有Security_5一個文件夾。也即是密級為k(k≤5)的文件經秘密分享后得到的k個影子文件,分別存在Cloud 1~k中的Security k文件夾中,如一個權限為4的用戶設置一個文件密級為3,分享出3個影子文件后,分別存放在Cloud 1,Cloud 2,Cloud 3三個云中的Security_3文件夾中。
3.模塊設計
主要對文件分享和恢復過程進行介紹。
(1)文件分享模塊
各種格式的文件在磁盤中都是以0,1序列存儲的,以二進制形式讀出文件,再以ord函數將每個字節轉換為十進制整數(0~255),依次放入一個列表中,這樣就將目標文件轉換為元素為十進制整數(0~255)的列表,調用秘密分享代碼,根據用戶權限right的值和文件密級確定門限k,其中文件密級小于等于權限right,等于k值。以權限為4的用戶為例,該用戶可以將文件密級確定為1,2,3,4,現有一個文件名為filename_1的pdf文件,將其密級設為3,則門限值k也為3,得到該文件的十進制整數列表后,將列表中的每個元素通過(3,3)門限秘密分享算法得到3個分享元素(只有拿到全部的3個分享元素才能恢復秘密),將這3個分享元素按序放至三個空列表中,該文件的十進制整數列表中的每個元素都以此步驟操作,分發完畢后這三個列表中十進制整數即和該文件的十進制列表數目一致,將這三個分享出來的列表按文件恢復過程(詳細過程見下一個模塊)恢復成三個打不開的無格式文件,文件標識為影子文件的文件名(即沒有擴展名),再把這三個‘恢復文件作為秘密分享份額分發到cloud 1、cloud 2、cloud 3的security_3文件夾中,分享完畢。
需要注意的是,密級為1的文件分享時不需要做任何變換,直接復制到cloud 1的security_1文件夾并在metadata_1.txt中記錄相應的鍵值對即可。
(2)文件恢復模塊
登錄成功若要進行文件恢復,系統遍歷cloud 1中的metadata_1.txt文件,將用戶權限與每個鍵值對的值(文件密級)做比對,只要文件密級小于用戶權限,即為可訪問文件,顯示這些文件的文件標識和對應的文件密級,用戶輸入想要查看文件的文件標識,進行文件恢復。以恢復一個密級為3的filename.doc文件為例,在輸入文件標識filename.doc后,系統取出Cloud 1,Cloud 2,Cloud 3中的Security 3文件夾中的filename文件(也即是得到三個影子文件,每一個影子文件無任何秘密信息泄露),運用文件分享過程,以字節形式讀出文件,再以ord函數將每個字節轉換為十進制整數(0~255),并將十進制整數放入一個空列表,對這三個無格式文件都依此操作,得到三個十進制整數列表,并執行一個循環,每次依次取出三個列表中的一個十進制整數,將這三個數依據秘密分享恢復算法恢復出原文件轉換的十進制整數列表中的相應十進制整數,待循環完畢后,則恢復出原文件轉換成的十進制列表,再調用chr函數將恢復列表中的每個十進制整數轉換為一個字節并拼接為一個二進制字符串,最后根據正確的文件格式(此例為.doc)以二進制寫文件的方法,恢復原文件并放到recover文件夾中。
需要注意的是,密級為1的文件存在cloud 1的security_1文件夾中,并且未作任何變換,恢復時根據文件標識在云中找到相應文件直接復制到recover文件夾中即可。
四、系統測試與分析
本節將會具體演示分級安全存儲系統的工作過程,先展示分級安全存儲系統的構成,再從用戶注冊和登錄開始,以圖片形式展示核心功能的實現效果。
1.文件分享
在用戶登錄或者注冊成功后,進入分級安全存儲系統,彈出“Are you going to encrypt, decrypt, delete files or exit? encrypy:E, decrypt:D, delete:S, exit:T :”的提示項,輸入E為文件分享,D為文件恢復,S為文件刪除。先演示文件分享功能,輸入E后,彈出“Please enter the file you want to encrypt:”提示項,拖入想要分享的文件即可,而后彈出“Please enter the secret level you want to encrypt:”的提示項,輸入權限范圍內的文件密級,以分享一文件標識為How_to_share_a_secrect.pdf,密級為3的文件為例, 為用戶輸入命令, 為cloud 1的security_3中的影子文件(在cloud 2和cloud 3的security_3中一致變化), 為cloud 1中metadata_1.txt中的元數據部分(在cloud 2中的metadata_2.txt和cloud 3中的metadata_3.txt一致變化)。
登錄或者注冊成功后,輸入D,選擇文件恢復,系統根據用戶權限值檢索在權限范圍內的所有文件,以文件標識:文件密級的形式顯示出來,而后彈出提示項:“Please enter the name of the file you want to decrypt:”,輸入想要恢復的文件標識即可進行文件恢復,恢復的文件放入recover文件夾中。以恢復上述分享過的How_to_share_a_secrect.pdf文件為例, 為參數輸入, 為recover中的恢復文件。
3.系統分析
根據以上所展示的實驗結果,驗證了分級安全存儲系統基本滿足設計思路,能夠完成數據的加密存儲,惡意人員在拿到少于k個份額影子文件時得不到關于秘密的任何信息,同時也實現了權限控制,用戶只能在權限范圍內對相應文件進行操作。
分級安全存儲系統在測試中還發現存在兩點不足,一是存儲優化,二是丟失容忍性,下面對這兩點以及改進思路進行描述如下。
存儲優化方面,分級安全存儲系統在分享文件時,每個影子文件的大小與原文件大小等大,如以密級3分享一個文件,則在cloud 1,cloud 2,cloud 3的security_3文件夾中生成三個等大的影子文件,也即是分享一個大小為a的文件,在云中則需要3a的存儲空間進行影子文件的存儲(存儲文件密級越高,所占存儲空間越大),如果要分享的文件很大,密級很高,對云存儲空間的存儲能力是一個挑戰,對用戶而言,增加了使用成本,因此存儲優化是本系統可拓展的方向之一。
這里給出一個存儲優化的思路:文件的數據部分使用隨機密鑰加密,對加密后的數據進行編碼(如使用糾刪碼),密鑰使用秘密共享進行劃分,每個服務器接收一塊加密數據塊和一份額的密鑰共享。這種方法能夠保證存儲在云中的總數據量與原文件大小一致(比原文件大小要大一點,因為云中要存儲秘密分享后的密鑰)。
丟失容忍性方面,分級安全存儲系統根據門限k值提出了用戶權限和文件密級的概念,引入了權限控制的思想。要實現權限控制,每個用戶在分享文件時,確定文件密級必須小于等于自己的權限值的大小,并且根據文件密級k,只往k個云中分發影子文件。因此,在進行文件分享時,首先檢查用戶想要分享的文件密級大小是否合法,文件密級確定后,影子文件的數量也即確定,密級為k的文件,影子文件數量為k,分發到cloud 1~k的security_k文件夾中。
依次設計思路,權限控制可以實現,但引發另一個問題,系統容錯性太差,影子文件沒有冗余備份。若云中的一個影子文件在傳輸過程中出錯,或存儲在云端的數據受到破壞,那么就不能恢復出原文件。因此,提高系統容錯性是可拓展的另一個方向。
這里給出一種提高系統容錯性的思路:設置一個具有最高權限的管理員,定時對系統內的文件進行刷新,刷新的辦法是根據用戶分發到云上的影子文件,利用秘密分享算法得到另外的影子文件以作備份,一般用戶還是只能訪問權限范圍內的規定云。當某個云中數據出錯時,錯誤會在下一次更新時被發現并改正。
本文中設計并實現的分級安全存儲系統,把秘密分享技術運用于多云存儲,實現了各種格式文件的加密存儲,確保拿到少于k個份額的影子文件時得不到關于秘密的任何信息,緩解單云存儲中可能出現的數據泄露問題。并且本系統依據門限k設計了用戶權限和文件密級,系統為指定文件進行分級,根據分級確定相應的秘密分享參數,分享出指定份額;用戶被賦予不同的訪問權限,能夠訪問滿足等級要求的文件,并對文件進行增刪查改操作,但無法得到高于其訪問權限的文件的任何信息內容。用戶的權限設定和文件的分級體現了權限控制的思想,使分級安全存儲系統使用更加靈活,應用面也更加廣泛。本文下一步工作主要集中在提升系統的存儲優化和容錯性上。
參考文獻:
[1]Bessani A, Correia M, Quaresma B, et al. DepSky: Dependable and Secure Storage in a Cloud?of?Clouds[C]// European Conference on European Conference on Computer Systems. DBLP, 2011.
[2]許春香,肖國鎮.門限多重秘密共享方案[J].電子學報,2004,32(10):1688-1689.
[3]譙偉,梁華慶,鈕心忻.可視秘密分享技術的研究現狀與發展[J].計算機應用研究,2006,23(5).
[4]任方,韓冰,馮景瑜.秘密共享技術及其在圖像加密中的應用[J].科學技術與工程,2015,15(16):108-116.
責任編輯:黃大燦