用于安全的第三方數(shù)據(jù)存儲的系統(tǒng)和方法
【專利摘要】本發(fā)明提供了一種用于安全的第三方數(shù)據(jù)存儲的計算機實現(xiàn)的方法,所述方法可包括1)在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求,2)響應于所述請求來識別被指定用于所述用戶賬戶的非對稱密鑰對,所述非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰,3)從所述客戶端系統(tǒng)接收所述客戶端密鑰,4)用所述客戶端密鑰對所述解密密鑰解密,以及5)使用所述解密密鑰訪問所述加密文件的未加密版本。還公開了各種其他方法、系統(tǒng)和計算機可讀介質(zhì)。
【專利說明】用于安全的第三方數(shù)據(jù)存儲的系統(tǒng)和方法
【背景技術】
[0001]組織和消費者越來越多地使用第三方服務來存儲數(shù)據(jù)。第三方存儲服務可為客戶提供多個有益效果,包括靈活性、低資本要求、附加服務、數(shù)據(jù)共享和對數(shù)據(jù)的集中訪問。
[0002]許多第三方存儲客戶想要或需要在將其數(shù)據(jù)提交給第三方存儲供應商之前加密其數(shù)據(jù)。例如,由于隱私問題,個體消費者可能希望對發(fā)送給第三方存儲供應商的數(shù)據(jù)加密。類似地,組織可能希望對發(fā)送給第三方存儲供應商的數(shù)據(jù)加密以便確保遵守內(nèi)部或外部數(shù)據(jù)保護要求,諸如政府法律法規(guī)、與其他組織的合作協(xié)議等。遺憾的是,通過在將數(shù)據(jù)提交給第三方存儲系統(tǒng)之前加密數(shù)據(jù),客戶可能會妨礙第三方存儲供應商對數(shù)據(jù)進行去重的嘗試。例如,如果兩個客戶使用不同加密方案(例如,不同密鑰)對相同文件加密,所得到的加密文件將不同,從而有可能妨礙第三方存儲供應商將文件去重為多次引用的單個文件。另外,在將文件提交給第三方存儲系統(tǒng)之前加密文件可能妨礙第三方存儲服務與其定向的其他用戶有效共享文件和/或?qū)ξ募?zhí)行其他服務的能力,諸如對文件運行安全掃描、生成文件的自定義視圖等。
[0003]鑒于上述限制,本發(fā)明識別出需要用于安全的第三方數(shù)據(jù)存儲的附加和改進的系統(tǒng)和方法。
【發(fā)明內(nèi)容】
[0004]本發(fā)明整體涉及用于安全的第三方數(shù)據(jù)存儲的系統(tǒng)和方法。如下文將更詳細地描述,通過在第三方存儲服務器上保持用于對安全數(shù)據(jù)(例如,文件和/或用于文件的加密密鑰)加密和解密的非對稱密鑰對并且用客戶端所保持的加密密鑰來對這些非對稱密鑰對的解密密鑰加密,本文所述的系統(tǒng)和方法可允許第三方存儲服務器根據(jù)需要加密數(shù)據(jù),但需要客戶端提交解密密鑰以便訪問安全數(shù)據(jù)。
[0005]在一個實施例中,用于安全的第三方數(shù)據(jù)存儲的計算機實現(xiàn)的方法可包括I)在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求(其中所請求的訪問需要對加密文件解密),2)響應于該請求識別被指定用于用戶賬戶的非對稱密鑰對,該非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰,3)從客戶系統(tǒng)接收客戶端密鑰,4)用客戶端密鑰對解密密鑰解密,以及5)使用解密密鑰訪問加密文件的未加密版本。
[0006]在一些例子中,接收客戶端密鑰可包括將客戶端密鑰存儲在易失性存儲器中而不將客戶端密鑰存儲在非易失性存儲器中。使用解密密鑰訪問加密文件的未加密版本可包括多種步驟中的任何一者。在一些實施例中,使用解密密鑰訪問加密文件的未加密版本可包括I)識別用于對加密文件加密的文件密鑰(該文件密鑰已用加密密鑰加密),2)用解密密鑰對文件密鑰解密,以及3)用文件密鑰對加密文件解密。
[0007]在一些例子中,使用解密密鑰訪問加密文件的未加密版本可包括生成描述加密文件的未加密版本的元數(shù)據(jù)。在這些例子中,生成元數(shù)據(jù)可包括I)執(zhí)行對加密文件的未加密版本的安全掃描,2)基于加密文件的未加密版本內(nèi)的內(nèi)容來對加密文件的未加密版本加索弓丨,和/或3)生成加密文件未加密版本的預覽。
[0008]在一些實施例中,使用解密密鑰訪問加密文件的未加密版本可包括I)識別被指定用于包括所述用戶賬戶的多個用戶賬戶的附加非對稱密鑰對,其中該附加非對稱密鑰對包括附加加密密鑰和已用(例如,被指定用于所述用戶賬戶的非對稱密鑰對的)加密密鑰加密的附加解密密鑰,2)用(例如,被指定用于所述用戶賬戶的非對稱密鑰對的)解密密鑰對附加解密密鑰解密,3)識別用于對加密文件加密的文件密鑰(該文件密鑰已用附加加密密鑰加密),4)用附加解密密鑰對文件密鑰解密,以及5)用文件密鑰對加密文件解密。
[0009]在一些例子中,訪問加密文件的未加密版本可包括將加密文件的未加密版本傳輸至客戶端系統(tǒng)。除此之外或作為另外一種選擇,訪問加密文件的未加密版本可包括向附加用戶賬戶提供對加密文件的未加密版本的訪問,其中I)附加非對稱密鑰對被指定用于附加用戶賬戶,2)附加非對稱密鑰對包括附加加密密鑰和附加解密密鑰,以及3)附加解密密鑰用附加客戶端密鑰加密。在這些實施例中,向附加用戶賬戶提供對加密文件的未加密版本的訪問可包括I)識別用于對加密文件加密的文件密鑰(該文件密鑰已用加密密鑰加密),2)用解密密鑰對文件密鑰解密,以及3)用附加加密密鑰對文件密鑰的副本加密。
[0010]在一些例子中,計算機實現(xiàn)的方法還可包括I)識別被指定為訪問加密文件的未加密版本的附加用戶賬戶,其中a)附加非對稱密鑰對被指定用于附加用戶賬戶,b)附加非對稱密鑰對包括附加加密密鑰和附加解密密鑰,并且c)附加解密密鑰用附加客戶端密鑰加密,以及2)用附加加密密鑰對解密密鑰加密。在這些例子中,計算機實現(xiàn)的方法可附加地包括I)識別來自附加客戶端系統(tǒng)的經(jīng)由附加用戶賬戶進一步訪問加密文件(其中附加請求訪問需要對加密文件解密)的附加請求,2)用附加解密密鑰對所述解密密鑰解密,以及3)使用解密密鑰經(jīng)由附加用戶賬戶訪問加密文件的未加密版本。
[0011]在一個例子中,計算機實現(xiàn)的方法還可包括I)從客戶端系統(tǒng)接收加密文件的未加密版本,2)通過a)基于加密文件的未加密版本的至少一個特性生成文件密鑰和b)用文件密鑰對加密文件的未加密版本加密,來生成加密文件,以及3)用加密密鑰對文件密鑰加密。在該例子中,計算機實現(xiàn)的方法可附加地包括用通過文件密鑰加密的附加加密文件對加密文件去重。
[0012]在一個實施例中,用于實現(xiàn)上述方法的系統(tǒng)可包括I)識別模塊,該識別模塊被編程為在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求(其中所請求的訪問需要對加密文件解密),2)密鑰模塊,該密鑰模塊被編程為響應于請求來識別被指定用于該用戶賬戶的非對稱密鑰對,該非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰,3)接收模塊,該接收模塊被編程為從客戶端系統(tǒng)接收客戶端密鑰,4)解密模塊,該解密模塊被編程為用客戶端密鑰對解密密鑰解密,以及5)訪問模塊,該訪問模塊被編程為使用解密密鑰訪問加密文件的未加密版本。該系統(tǒng)還可包括至少一個處理器,該處理器被配置為執(zhí)行識別模塊、密鑰模塊、接收模塊、解密模塊和訪問模塊。
[0013]在一些例子中,上述方法可被編碼為計算機可讀存儲介質(zhì)上的計算機可讀指令。例如,計算機可讀存儲介質(zhì)可包括一個或多個計算機可執(zhí)行指令,當由計算設備的至少一個處理器執(zhí)行時,該指令可使計算設備I)在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求(其中所請求的訪問需要對加密文件解密),2)響應于請求來識別被指定用于該用戶賬戶的非對稱密鑰對,該非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰,3)從客戶端系統(tǒng)接收客戶端密鑰,4)用客戶端密鑰對解密密鑰解密,以及5)使用解密密鑰訪問加密文件的未加密版本。
[0014]如將在下文中更詳細地說明,通過在第三方存儲服務器上保持用于對安全數(shù)據(jù)加密和解密的非對稱密鑰對并且用客戶端所保持的加密密鑰對非對稱密鑰對的解密密鑰加密,本文所述的系統(tǒng)和方法可對客戶端數(shù)據(jù)進行安全存儲和加密而不存儲為訪問未加密狀態(tài)下的安全數(shù)據(jù)所需的客戶端解密密鑰。這些系統(tǒng)和方法從而可阻止已獲取第三方存儲系統(tǒng)訪問的攻擊者訪問未加密狀態(tài)下的安全數(shù)據(jù),同時仍允許和/或促進該安全數(shù)據(jù)的共享、去重、分析和/或加索引。
[0015]來自上述實施例中的任何一者的特征可根據(jù)本文所述的一般原理彼此結(jié)合地使用。通過結(jié)合附圖和權(quán)利要求閱讀下面的詳細描述,將會更充分地理解這些和其他實施例、特征和優(yōu)點。
【專利附圖】
【附圖說明】
[0016]附圖示出了多個示例性實施例并且為說明書的一部分。這些附圖結(jié)合下面的描述展示并且說明本發(fā)明的各種原理。
[0017]圖1為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0018]圖2為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0019]圖3為用于安全的第三方數(shù)據(jù)存儲的示例性方法的流程圖。
[0020]圖4為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0021]圖5為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0022]圖6為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0023]圖7為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的框圖。
[0024]圖8為能夠?qū)崿F(xiàn)本文描述和/或示出的實施例中的一者或多者的示例性計算系統(tǒng)的框圖。
[0025]圖9為能夠?qū)崿F(xiàn)本文描述和/或示出的實施例中的一者或多者的示例性計算網(wǎng)絡的框圖。
[0026]在全部附圖中,相同引用字符和描述指示類似但未必相同的元件。雖然本文所述的示例性實施例易受各種修改和替代形式的影響,但在附圖中以舉例的方式示出了特定實施例并且將在本文中詳細描述這些特定實施例。然而,本文所述的示例性實施例并非旨在限于所公開的特定形式。相反,本發(fā)明涵蓋落在所附權(quán)利要求范圍內(nèi)的所有修改形式、等同形式和替代形式。
【具體實施方式】
[0027]下面將參考圖1-2和4-7提供對用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)的詳細描述。還將結(jié)合圖3提供相應計算機實現(xiàn)方法的詳細描述。此外,將分別結(jié)合圖8和9提供能夠?qū)崿F(xiàn)本文所述實施例中的一者或多者的示例性計算系統(tǒng)和網(wǎng)絡體系結(jié)構(gòu)的詳細描述。
[0028]圖1為用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)100的框圖。如該附圖所示,示例性系統(tǒng)100可包括用于執(zhí)行一個或多個任務的一個或多個模塊102。例如,并且如將在下面更詳細地說明,示例性系統(tǒng)100可包括識別模塊104,該識別模塊104被編程為在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求。示例性系統(tǒng)100也可包括密鑰模塊106,該密鑰模塊106被編程為響應于請求來識別被指定用于該用戶賬戶的非對稱密鑰對,該非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰。
[0029]此外,并且如將在下面更詳細地描述,示例性系統(tǒng)100可包括接收模塊108,該接收模塊108被編程為從客戶端系統(tǒng)接收客戶端密鑰。示例性系統(tǒng)100也可包括解密模塊110,該解密模塊110被編程為用客戶端密鑰對解密密鑰解密。示例性系統(tǒng)100可附加包括訪問模塊112,該訪問模塊112被編程為使用解密密鑰訪問加密文件的未加密版本。盡管示出為獨立元件,但圖1中的模塊102中的一者或多者可表示單個模塊或應用程序的部分。
[0030]在某些實施例中,圖1中的模塊102中的一者或多者可表示一個或多個軟件應用程序或程序,當由計算設備執(zhí)行時所述軟件應用程序或程序可使計算設備執(zhí)行一個或多個任務。例如,并且如將在下文更詳細地描述,模塊102中的一者或多者可表示被存儲并且被配置為在一個或多個計算設備上運行的軟件模塊,所述計算設備諸如為圖2中示出的設備(例如,計算設備202和/或客戶端系統(tǒng)206)、圖8中的計算系統(tǒng)810和/或圖9中的示例性網(wǎng)絡體系結(jié)構(gòu)900的部分。圖1中的模塊102中的一者或多者也可表示被配置為執(zhí)行一個或多個任務的一臺或多臺專用計算機的全部或部分。
[0031]圖1中的示例性系統(tǒng)100可以多種方式來實現(xiàn)。例如,示例性系統(tǒng)100的全部或一部分可表示圖2中的示例性系統(tǒng)200的部分。如圖2所示,系統(tǒng)200可包括經(jīng)由網(wǎng)絡204與客戶端系統(tǒng)206通信(以向客戶端系統(tǒng)206提供例如第三方存儲服務)的計算設備202。
[0032]在一個實施例中,圖1中的模塊102中的一者或多者在由計算設備202的至少一個處理器執(zhí)行時可促進計算設備202實現(xiàn)安全的第三方數(shù)據(jù)存儲。例如,并且如將在下面更詳細地描述,模塊102中的一者或多者可使計算設備2021)在服務器端計算設備202識別來自客戶端系統(tǒng)206的訪問存儲在用戶賬戶240下的加密文件242的請求210,2)響應于請求210來識別被指定用于用戶賬戶240的非對稱密鑰對220,該非對稱密鑰對220包括加密密鑰222和已用客戶端密鑰230加密的加密解密密鑰224,3)從客戶端系統(tǒng)206接收客戶端密鑰230,4)用客戶端密鑰230對加密解密密鑰224解密(產(chǎn)生例如解密密鑰226)以及5)使用解密密鑰226訪問加密文件242 (例如,文件244)的未加密版本。
[0033]計算設備202和客戶端系統(tǒng)206通常表示能夠讀取計算機可執(zhí)行指令的任何類型或形式的計算設備。計算設備202和客戶端系統(tǒng)206的例子包括但不限于服務器、臺式計算機、膝上型計算機、平板、移動電話、個人數(shù)字助理(PDA)、多媒體播放器、嵌入式系統(tǒng)、這些設備中的一者或多者的組合、圖8中的示例性計算系統(tǒng)810或任何其他合適的計算設備。
[0034]網(wǎng)絡204通常表示能夠促進通信或數(shù)據(jù)傳輸?shù)娜魏谓橘|(zhì)或體系結(jié)構(gòu)。網(wǎng)絡204的例子包括但不限于內(nèi)聯(lián)網(wǎng)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、個人局域網(wǎng)(PAN)、互聯(lián)網(wǎng)、電力線通信(PLC)、蜂窩網(wǎng)絡(例如,GSM網(wǎng)絡)、圖9中的示例性網(wǎng)絡體系結(jié)構(gòu)900等等。網(wǎng)絡204可使用無線或有線連接促進通信或數(shù)據(jù)傳輸。在一個實施例中,網(wǎng)絡204可促進計算設備202與客戶端系統(tǒng)206之間的通信。
[0035]圖3為用于安全的第三方數(shù)據(jù)存儲的示例性計算機實現(xiàn)方法300的流程圖。圖3中示出的步驟可由任何合適的計算機可執(zhí)行代碼和/或計算系統(tǒng)執(zhí)行。在一些實施例中,圖3中示出的步驟可由圖1中的系統(tǒng)100、圖2中的系統(tǒng)200、圖8中的計算系統(tǒng)810和/或圖9中的示例性網(wǎng)絡體系結(jié)構(gòu)900的部分的組件中的一者或多者執(zhí)行。
[0036]如圖3所示,在步驟302本文所述系統(tǒng)中的一者或多者可在服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求。例如,在步驟302,識別模塊104可作為圖2中的計算設備202的一部分識別來自客戶端系統(tǒng)206的訪問存儲在用戶賬戶240下的加密文件242的請求210。在上述兩個例子中,所請求的訪問可需要或涉及對加密文件解密。
[0037]在一些例子中,服務器端計算設備可作為第三方存儲系統(tǒng)的一部分運行。如本文所用,術語“第三方存儲系統(tǒng)”可指能夠為用戶存儲數(shù)據(jù)的任何類型或形式的存儲系統(tǒng),包括基于云的存儲系統(tǒng)。在一些例子中,第三方存儲系統(tǒng)可存儲用于多個不同實體的數(shù)據(jù)。在至少一個例子中,用第三方存儲系統(tǒng)存儲數(shù)據(jù)的實體可能需要針對彼此(以便例如阻止未經(jīng)授權(quán)訪問實體內(nèi)的數(shù)據(jù))、針對入侵者(例如,未經(jīng)授權(quán)訪問存儲在第三方存儲系統(tǒng)內(nèi)的數(shù)據(jù)的實體)和/或第三方存儲系統(tǒng)的一個或多個管理員的數(shù)據(jù)安全性。在一些例子中,第三方存儲系統(tǒng)可表示或包括單實例存儲系統(tǒng)(即,被配置為僅存儲用于多個所有者的內(nèi)容的每個項目的單個實例)。
[0038]因此,客戶端系統(tǒng)可繼而包括用于促進使用第三方存儲系統(tǒng)的任何系統(tǒng)。在一些例子中,客戶端系統(tǒng)可由不同于服務器端計算設備的所有者和/或管理員的實體擁有和/或進行管理。
[0039]如本文所用,術語“文件”可指數(shù)據(jù)的任何合適單元,包括但不限于文件、數(shù)據(jù)對象、數(shù)據(jù)區(qū)段、數(shù)據(jù)流的部分、數(shù)據(jù)庫、數(shù)據(jù)庫條目和/或電子文檔。此外,短語“用戶賬戶”可指可對應于數(shù)據(jù)所有者(用于例如識別由數(shù)據(jù)所有者擁有的數(shù)據(jù)和/或保護數(shù)據(jù)所有者擁有的數(shù)據(jù)以供數(shù)據(jù)所有者使用)的任何標識符和/或權(quán)限系統(tǒng)。
[0040]識別模塊104可識別多種類型請求中的任何一者。例如,如將在下面更詳細地說明,識別模塊104可識別為客戶端系統(tǒng)檢索加密文件的未加密版本的請求。除此之外或作為另外一種選擇,識別模塊104可識別與另一個用戶賬戶共享文件的可訪問版本的請求。在一些例子中,識別模塊104可識別對文件執(zhí)行一個或多個程序(例如,需要對加密文件的未加密版本進行訪問的程序)的請求。
[0041]識別模塊104可在多種上下文中的任何一者中接收請求。例如,識別模塊104可從客戶端系統(tǒng)接收用戶發(fā)起的請求。除此之外或作為另外一種選擇,并且如將在下文更詳細地說明,識別模塊104可接收僅通過從客戶端系統(tǒng)接收使得能夠訪問加密文件的客戶端密鑰來訪問加密文件的隱式請求。
[0042]返回圖3,在步驟304,本文所述的系統(tǒng)中的一者或多者可響應于請求來識別被指定用于用戶賬戶的非對稱密鑰對,該非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰。例如,在步驟304,密鑰模塊106可作為圖2中的計算設備202的一部分,響應于請求210來識別被指定用于用戶賬戶240的非對稱密鑰對220,該非對稱密鑰對220包括加密密鑰222和已用客戶端密鑰230加密的加密解密密鑰224。
[0043]如本文所用,短語“非對稱密鑰對”可指包括加密密鑰(或“公用密鑰”)和解密密鑰(或“私有密鑰”)的任何一對密碼密鑰。加密密鑰可包括不需要保密以便對用密鑰加密的數(shù)據(jù)進行保護的任何密鑰。例如,加密密鑰可用于使用非對稱密鑰算法來加密數(shù)據(jù)。因此,對用加密密鑰加密的數(shù)據(jù)解密可能需要非對稱密鑰對的相應解密密鑰。在一些例子中,非對稱密鑰對可存儲在第三方存儲系統(tǒng)上和/或由第三方存儲系統(tǒng)存儲。在至少一個例子中,加密密鑰和解密密鑰均不可分配到第三方存儲系統(tǒng)之外。
[0044]此外,如本文所用的短語“客戶端密鑰”可指用于對非對稱密鑰對的解密密鑰加密和/或解密的任何合適密碼密鑰。在一些例子中,客戶端密鑰可包括對稱密鑰(例如,既用于加密數(shù)據(jù),也用于對所述數(shù)據(jù)解密的密鑰)。例如,客戶端密鑰可被配置為根據(jù)高級加密標準規(guī)范(例如,AES-256)對數(shù)據(jù)加密和解密。在一些例子中,客戶端密鑰可在客戶端系統(tǒng)上生成。例如,客戶端密鑰可使用密鑰派生功能生成,例如基于密碼的密鑰派生功能(例如,PBKDF2)。
[0045]在一些例子中,客戶端密鑰可緩存到客戶端系統(tǒng)上。除此之外或作為另外一種選擇,客戶端密鑰可根據(jù)需要通過密碼生成(例如,在客戶端系統(tǒng)或在第三方存儲系統(tǒng)生成)。在一些例子中,可從外部密鑰存儲庫檢索客戶端密鑰。如將在下文更詳細地說明,在一些例子中,客戶端密鑰可不存儲在服務器端計算設備上和/或由服務器端計算設備實現(xiàn)的第三方存儲系統(tǒng)內(nèi)。在一些例子中,可能僅可通過相應客戶端來訪問客戶端密鑰。該客戶端可對應于組織、帶有共享秘密的團體、計算設備和/或任何其他合適的實體。
[0046]在一些例子中,本文所述的系統(tǒng)中的一者或多者可能已使用非對稱密鑰對內(nèi)的加密密鑰對加密文件加密。例如,本文所述的系統(tǒng)中的一者或多者可從客戶端系統(tǒng)接收加密文件的未加密版本并且隨后生成加密文件。這些系統(tǒng)可通過基于加密文件的未加密版本的至少一個特性生成文件密鑰并且隨后用該文件密鑰對加密文件的未加密版本加密來生成加密文件。例如,這些系統(tǒng)可衍生加密文件的未加密版本的散列并且使文件密鑰基于該散列。這樣,本文所述的系統(tǒng)和方法可由相同未加密文件產(chǎn)生相同加密文件,從而允許跨客戶端的去重。
[0047]例如,本文所述的系統(tǒng)可通過用文件密鑰加密的附加加密文件對所述加密文件去重。在生成文件密鑰時,這些系統(tǒng)可用加密密鑰對文件密鑰加密。如本文所用的術語“去重”可指與減小單實例數(shù)據(jù)存儲系統(tǒng)中所用的存儲空間的量相關的一個或多個操作,包括用于檢測和阻止數(shù)據(jù)冗余地存儲至單實例數(shù)據(jù)存儲系統(tǒng)的操作。去重可使用任何合適的去重技術或算法來執(zhí)行。在一些例子中,去重可包括文件級別的去重。除此之外或作為另外一種選擇,去重可包括塊級別的去重。
[0048]除了對加密文件的未加密版本加密之外,在一些例子中,本文所述系統(tǒng)中的一者或多者可基于加密文件的未加密版本執(zhí)行一個或多個操作(例如,在對加密文件的未加密版本加密之前并且從而無法再訪問加密文件的未加密版本)。例如,本文所述的系統(tǒng)中的一者或多者可對加密文件的未加密版本的內(nèi)容加索引,對加密文件的未加密版本執(zhí)行反惡意軟件掃描,生成加密文件的未加密版本的內(nèi)容預覽等。在這些例子中,一旦對加密文件加密,這些系統(tǒng)就可將從加密文件的未加密版本生成的元數(shù)據(jù)與該加密文件關聯(lián)。
[0049]密鑰模塊106可識別以任何合適方式被指定用于用戶賬戶的非對稱密鑰對。在一些例子中,第三方存儲系統(tǒng)可托管多個用戶賬戶的數(shù)據(jù),每個用戶賬戶帶有指定并且不同的非對稱密鑰對。因此,密鑰模塊106可根據(jù)客戶端系統(tǒng)提供的一個或多個標識符和/或憑證識別用于該用戶賬戶的非對稱密鑰對。
[0050]返回圖3,在步驟306,本文所述的系統(tǒng)中的一者或多者可從客戶端系統(tǒng)接收客戶端密鑰。例如,在步驟306,接收模塊108可作為圖2中的計算設備202的一部分從客戶端系統(tǒng)206接收客戶端密鑰230。
[0051]如之前所述,在一些例子中,客戶端密鑰可不存儲在服務器端上(即,不存儲在服務器端計算設備和/或關聯(lián)的第三方存儲系統(tǒng)上)。例如,接收模塊108可接收客戶端密鑰并且將客戶端密鑰存儲在易失性存儲器中而不將客戶端密鑰存儲在非易失性存儲器中。如本文所用,短語“易失性存儲器”可指任何非持久性和/或臨時性存儲位置。在一些例子中,短語“易失性存儲器”可指隨機存取存儲器。此外,短語“非易失性存儲器”可指任何持久性存儲位置。例如,短語“非易失性存儲器”可指文件系統(tǒng)用來存儲一個或多個文件的存儲設備。在一些例子中,接收模塊108可接收客戶端密鑰并且在使用之后不保留該客戶端密鑰。例如,接收模塊108可在與客戶端系統(tǒng)的會話已終止之后丟棄客戶端密鑰。
[0052]接收模塊108可以多種方式中的任何一者從客戶端系統(tǒng)接收客戶端密鑰。例如,接收模塊108可直接從客戶端系統(tǒng)接收客戶端密鑰。除此之外或作為另外一種選擇,接收模塊108可通過接收表示客戶端密鑰并且從中可生成客戶端密鑰的數(shù)據(jù)而從客戶端系統(tǒng)接收客戶端密鑰。例如,接收模塊108可從客戶端系統(tǒng)接收用于密鑰派生功能的密碼并且使用該密鑰派生功能來自密碼生成客戶端密鑰。在該例子中,接收模塊108也可將密碼僅保持在非易失性存儲器中和/或在使用密碼生成客戶端密鑰時丟棄該密碼。
[0053]返回圖3,在步驟308,本文所述的系統(tǒng)中的一者或多者可用客戶端密鑰對解密密鑰解密。例如,在步驟308,解密模塊110可作為圖2中的計算設備202的一部分用客戶端密鑰230對加密的解密密鑰224解密(產(chǎn)生例如解密密鑰226)。
[0054]解密模塊110可以任何合適方式對解密密鑰解密。例如,解密模塊110可根據(jù)預先確定的對稱密鑰算法將客戶端密鑰應用于解密密鑰以生成解密密鑰的解密版本。
[0055]在步驟310,本文所述系統(tǒng)中的一者或多者可使用解密密鑰訪問加密文件的未加密版本。例如,在步驟310,訪問模塊112作為圖2中的計算設備202的一部分可使用解密密鑰226訪問加密文件242的未加密版本(例如,文件244)。
[0056]訪問模塊112可使用解密密鑰以各種方式中的任何一者訪問加密文件的未加密版本。例如,訪問模塊112可識別用于對加密文件加密的文件密鑰。在該例子中,可用加密密鑰對文件密鑰加密。因此,訪問模塊112可用解密密鑰對文件密鑰解密并且隨后用文件密鑰對加密文件解密。
[0057]訪問模塊112可訪問加密文件的未加密版本以傳輸至多個終端中的任何一者。例如,如上詳述,來自客戶端系統(tǒng)的請求可包括檢索加密文件的未加密版本的請求。因此,訪問模塊112可將加密文件的未加密版本傳輸至客戶端系統(tǒng)(例如,響應于請求)。
[0058]圖4示出了用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)400。如圖4所示,示例性系統(tǒng)400可包括客戶端系統(tǒng)410,客戶端系統(tǒng)410被配置為經(jīng)由第三方存儲服務器420所促進的第三方存儲服務來存儲一個或多個文件。例如,客戶端系統(tǒng)410可能先前已將未加密文件446傳輸至第三方存儲服務器420。第三方存儲服務器420可能已使用加密密鑰432識別了與客戶端系統(tǒng)410和加密的未加密文件446相關聯(lián)的非對稱密鑰對430。在一個例子中,客戶端系統(tǒng)410可嘗試檢索現(xiàn)在作為加密文件440存儲在第三方存儲服務器420上的未加密文件446。例如,在步驟450,客戶端系統(tǒng)410可向第三方存儲服務器420傳輸消息,該消息請求未加密文件446并且包含客戶端密鑰412。第三方存儲服務器420可因此接收客戶端密鑰412并且將客戶端密鑰412保持在存儲器中以供使用。
[0059]在步驟452,第三方存儲服務器420可識別非對稱密鑰對430并且用客戶端密鑰412對加密的解密密鑰434解密以產(chǎn)生解密密鑰436。在步驟454,第三方存儲服務器420可使用解密密鑰436對加密的文件密鑰442解密以獲得用于加密文件440的文件密鑰444。在步驟456,第三方存儲服務器420可使用文件密鑰444對加密文件440解密并且獲得未加密文件446。在步驟458,第三方存儲服務器420可將未加密文件446傳輸至客戶端系統(tǒng)410,從而滿足客戶端系統(tǒng)410的請求。此外,第三方存儲系統(tǒng)420可丟棄客戶端密鑰412、解密密鑰436和文件密鑰444,并且刪除未加密文件446。
[0060]返回圖3的步驟310,在一些例子中,訪問模塊112可訪問加密文件的未加密版本以生成描述加密文件的未加密版本的元數(shù)據(jù)。在一些例子中,訪問模塊112隨后可存儲與加密文件相關的元數(shù)據(jù),使得描述加密文件的元數(shù)據(jù)即使在加密文件的未加密版本在第三方存儲系統(tǒng)上不再可直接訪問之后仍然可用。
[0061]例如,訪問模塊112可對加密文件的未加密版本執(zhí)行安全掃描(例如,以確定加密文件是否包括任何惡意軟件或引起任何其他安全風險)。在另一個例子中,訪問模塊112可基于加密文件的未加密版本內(nèi)的內(nèi)容來對加密文件的未加密版本加索引(例如,以促進基于其內(nèi)容搜索加密文件而不訪問加密文件的未加密版本)。在附加例子中,訪問模塊112可基于加密文件的未加密版本的內(nèi)容生成加密文件的未加密版本的預覽(例如,以促進瀏覽加密文件而不訪問加密文件的未加密版本)。如上詳述,在一些例子中,當加密文件的未加密版本第一次被上載時(例如,在加密之前),本文所述的一個或多個系統(tǒng)可除此之外或作為另外一種選擇執(zhí)行上述操作中的一者或多者。
[0062]在一些例子中,訪問模塊112可向另一方提供對加密文件的未加密版本的訪問。例如,訪問模塊112可向另一個用戶賬戶提供對加密文件的未加密版本的訪問。在該例子中,可針對附加用戶賬戶指定附加非對稱密鑰對,包括附加加密密鑰和附加解密密鑰??捎酶郊涌蛻舳嗣荑€(與例如對應于附加用戶賬戶的附加客戶端系統(tǒng)有關)對附加解密密鑰加密。在該例子中,訪問模塊112可通過首先識別用于對加密文件加密的文件密鑰而向附加用戶賬戶提供對加密文件的未加密版本的訪問。由于加密文件可與用戶賬戶有關,因此可用加密密鑰(即,對應于用戶賬戶的非對稱密鑰對的加密密鑰)對文件密鑰加密。訪問模塊112隨后可用解密密鑰對文件密鑰解密并且用附加加密密鑰對文件密鑰的副本加密。這樣,附加用戶賬戶可對加密文件進行訪問(通過例如提交附加客戶端密鑰以對文件密鑰解密,從而允許由文件密鑰對加密文件解密)。
[0063]圖5示出了用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)500。如圖5所示,示例性系統(tǒng)500可包括客戶端系統(tǒng)510(1)和510 (2),該客戶端系統(tǒng)510 (I)和510(2)被配置為經(jīng)由第三方存儲服務器520所促進的第三方存儲服務來存儲和/或訪問一個或多個文件。例如,第三方存儲服務器520可以為客戶端系統(tǒng)510(1)存儲加密文件540。在該例子中,非對稱密鑰對530 (I)可對應于客戶端系統(tǒng)510 (I),非對稱密鑰對530 (2)可對應于客戶端系統(tǒng)510 (2)。因此,加密文件540可以是用文件密鑰544加密的,該文件密鑰544用加密密鑰532(1)加密并且存儲為加密的文件密鑰542(1)。
[0064]在步驟550,客戶端系統(tǒng)510 (I)可將請求傳輸至第三方存儲服務器520以與客戶端系統(tǒng)510 (2)共享對加密文件540的未加密內(nèi)容的訪問。請求可包括客戶端密鑰512(1)。第三方存儲服務器520可接收客戶端密鑰512 (I)并且在步驟552用客戶端密鑰512 (I)對加密的解密密鑰534(1)解密以獲得解密密鑰536(1)。在步驟554,第三方存儲服務器520可用解密密鑰536(1)對加密的文件密鑰542(1)解密以獲得文件密鑰544。在步驟556,第三方存儲服務器520可用加密密鑰532(2)對文件密鑰544加密以獲得加密的文件密鑰542 (2),并且可存儲加密的文件密鑰542 (2)以供將來使用。在步驟558,第三方存儲服務器520可從客戶端系統(tǒng)510(2)接收請求,以訪問加密文件540的未加密內(nèi)容。請求可包括客戶端密鑰512 (2),從而允許第三方存儲服務器520對加密的解密密鑰534 (2)解密,并且從而對加密的文件密鑰542(2)解密,以便獲得文件密鑰544并且對加密文件540解密。
[0065]在一些例子中,訪問模塊112可通過允許對應于附加用戶賬戶的附加客戶端密鑰對用戶賬戶的解密密鑰解密,來向附加用戶賬戶提供對加密文件的未加密版本的訪問。例如,訪問模塊112可識別被指定為訪問加密文件的未加密版本的附加用戶賬戶。在該例子中,可針對附加用戶賬戶指定附加非對稱密鑰對,該非對稱密鑰對包括附加加密密鑰和附加解密密鑰。可用附加客戶端密鑰(與例如對應于附加用戶賬戶的附加客戶端系統(tǒng)有關)對附加解密密鑰加密。
[0066]在上述例子中,訪問模塊112可通過用附加加密密鑰對解密密鑰加密(并且,例如存儲加密的解密密鑰以供以后與附加用戶賬戶一起使用)而向附加用戶賬戶提供對加密文件的未加密版本的訪問。例如,本文所述的系統(tǒng)中的一者或多者可稍后識別來自附加客戶端系統(tǒng)的附加請求,以經(jīng)由附加用戶賬戶進一步訪問加密文件。這些系統(tǒng)隨后可用附加解密密鑰對解密密鑰解密并且使用解密密鑰來經(jīng)由附加用戶賬戶訪問加密文件的未加密版本(通過例如使用解密密鑰對已用以對加密文件加密的文件密鑰解密并且接著用文件密鑰對加密文件解密)。在一些例子中,上述方法可用于在用戶賬戶和附加用戶賬戶之間共享多個文件。該方法也可消除一些密碼處理步驟(通過例如不要求針對共享的每個文件生成單獨的加密文件)。
[0067]圖6示出了用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)600。如圖6所示,示例性系統(tǒng)600可包括客戶端系統(tǒng)610 (I)和610 (2),該客戶端系統(tǒng)610 (I)和610(2)被配置為經(jīng)由第三方存儲服務器620所促進的第三方存儲服務來存儲和/或訪問一個或多個文件。例如,第三方存儲服務器620可為客戶端系統(tǒng)610(1)存儲加密文件640、642和644。在該例子中,非對稱密鑰對630 (I)可對應于客戶端系統(tǒng)610 (I),非對稱密鑰對630 (2)可對應于客戶端系統(tǒng)610 (2)。因此,加密文件640、642和644可以是分別用加密的文件密鑰641、643和645加密的,所述加密的文件密鑰繼而可以是用加密密鑰632(1)加密的。
[0068]在步驟650,客戶端系統(tǒng)610 (I)可將請求傳輸至第三方存儲服務器620以與客戶端系統(tǒng)610(2)共享對加密文件640、642和644的未加密內(nèi)容的訪問。請求可包括客戶端密鑰612 (I)。第三方存儲服務器620可接收客戶端密鑰612 (I)并且在步驟652用客戶端密鑰612(1)對加密的解密密鑰634(1)解密以獲得解密密鑰636(1)。
[0069]在步驟654,第三方存儲服務器620可用加密密鑰632 (2)對解密密鑰636 (I)加密以獲得加密的解密密鑰638。第三方存儲服務器620隨后可存儲加密的解密密鑰638以供將來使用。隨后,在步驟656,客戶端系統(tǒng)610 (2)可向第三方存儲服務器620發(fā)送訪問加密文件640、642和644中的一者或多者的請求(包括客戶端密鑰612(2))。第三方存儲服務器620隨后可通過以下過程來提供訪問:用加密的解密密鑰634 (2)對加密的解密密鑰638解密以獲得解密密鑰636 (I),并且用解密密鑰636 (I)對文件密鑰641、643和645中的一者或多者解密以獲得加密文件640、642和644中的一者或多者的未加密內(nèi)容。
[0070]返回圖3的步驟310,在一些例子中,訪問模塊112可基于用戶賬戶群組的成員資格提供對加密文件的未加密版本的訪問。例如,訪問模塊112可識別被指定用于包括所述用戶賬戶的用戶賬戶群組的附加非對稱密鑰對。附加非對稱密鑰對可包括附加加密密鑰和附加解密密鑰??捎脤谟脩糍~戶的非對稱密鑰對的加密密鑰來對附加解密密鑰加密。訪問模塊112隨后可用解密密鑰對附加解密密鑰解密。訪問模塊112可進一步識別用于對加密文件加密的文件密鑰。文件密鑰可用附加加密密鑰加密。因此,訪問模塊112可用附加解密密鑰對文件密鑰解密并且用文件密鑰對加密文件解密。在附加例子中,加密文件可以是用附加的加密密鑰,而不是文件密鑰進行加密。在該例子中,訪問模塊112可僅用附加解密密鑰對加密文件解密。
[0071]圖7示出了用于安全的第三方數(shù)據(jù)存儲的示例性系統(tǒng)700。如圖7所示,示例性系統(tǒng)700可包括客戶端系統(tǒng)710 (I)、710 (2)和710 (3),該客戶端系統(tǒng)710 (I)、710 (2)和710(3)被配置為經(jīng)由第三方存儲服務器720所促進的第三方存儲服務來存儲和/或訪問一個或多個文件。例如,第三方存儲服務器720可為客戶端系統(tǒng)710(1)-(3)存儲加密文件746、747和748。在該例子中,個人非對稱密鑰對730 (I)可對應于客戶端系統(tǒng)710 (I)并且群組非對稱密鑰對740(2)可對應于作為群組的客戶端系統(tǒng)710(1)-(3)(其中例如客戶端系統(tǒng)710(1)、710(2)和710(3)各自具有分別帶有加密解密密鑰744 (I)、744 (2)和744(3)的群組解密密鑰738的加密版本)。加密文件746、747和748可用加密密鑰742加密。
[0072]在步驟750,客戶端系統(tǒng)710 (I)可將請求傳輸至第三方存儲服務器720,以訪問加密文件740的未加密內(nèi)容。請求可包括客戶端密鑰712 (I)。第三方存儲服務器720可接收客戶端密鑰712(1)并且在步驟752用客戶端密鑰712(1)對加密的解密密鑰734(1)解密,以獲得個人解密密鑰736 (I)。在步驟754,第三方存儲服務器720可用個人解密密鑰736 (I)對加密的解密密鑰744(1)解密,以獲得群組解密密鑰738。在步驟756,第三方存儲服務器720可用群組解密密鑰738對加密文件746解密,以獲得未加密文件749。在步驟758,第三方存儲服務器720可將未加密文件749傳輸至客戶端系統(tǒng)710(1)。以類似的方式,第三方存儲服務器720可通過分別用客戶端密鑰712(2)和712(3)對加密的解密密鑰744(2)和744(3)解密,來獲得針對客戶端系統(tǒng)710(2)和710(3)的加密文件746、747和/或748的未加密版本。作為另外一種選擇,如之前所述,在一些例子中,加密文件746、747和748可各自用相應的文件密鑰加密,該文件密鑰可繼而各自用加密密鑰742加密。在這些例子中,第三方存儲服務器720可用群組解密密鑰738對文件密鑰解密并且隨后用相應的文件密鑰對加密文件746、747和748解密。
[0073]如上所述,通過保持用于對第三方存儲服務器上的安全數(shù)據(jù)加密和解密的非對稱密鑰對并且用客戶端所保持的加密密鑰對非對稱密鑰對的解密密鑰加密,本文所述的系統(tǒng)和方法可安全地存儲和加密客戶端數(shù)據(jù)而不存儲為訪問未加密狀態(tài)下的安全數(shù)據(jù)所需的客戶端解密密鑰。這些系統(tǒng)和方法從而可阻止已獲取對第三方存儲系統(tǒng)訪問的攻擊者訪問未加密狀態(tài)下的安全數(shù)據(jù),同時仍允許和/或促進該安全數(shù)據(jù)的共享、去重、分析和/或加索引。
[0074]圖8為能夠?qū)崿F(xiàn)本文描述和/或示出的實施例中的一者或多者的示例性計算系統(tǒng)810的框圖。例如,計算系統(tǒng)810的全部或一部分可執(zhí)行和/或作為一種方式用于單獨或與其他元件結(jié)合使用來執(zhí)行以下各項中的一者或多者:本文所述的識別、接收、生成、加密、去重、存儲、解密、使用、訪問、傳輸、生成、執(zhí)行、加索引和提供步驟。計算系統(tǒng)810的全部或一部分也可執(zhí)行和/或作為一種方式來執(zhí)行本文描述和/或示出的任何其他步驟、方法或過程。
[0075]計算系統(tǒng)810在廣義上表示能夠執(zhí)行計算機可讀指令的任何單處理器或多處理器計算設備或系統(tǒng)。計算系統(tǒng)810的例子包括但不限于工作站、膝上型計算機、客戶端終端、服務器、分布式計算系統(tǒng)、手持式設備或任何其他計算系統(tǒng)或設備。在其最基本的配置中,計算系統(tǒng)810可包括至少一個處理器814和系統(tǒng)內(nèi)存816。
[0076]處理器814通常表示能夠處理數(shù)據(jù)或解譯和執(zhí)行指令的任何類型或形式的處理單元。在某些實施例中,處理器814可接收來自軟件應用程序或模塊的指令。這些指令可使處理器814執(zhí)行本文描述和/或示出的一個或多個示例性實施例的功能。
[0077]系統(tǒng)內(nèi)存816通常表示能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的易失性或非易失性存儲設備或介質(zhì)。系統(tǒng)內(nèi)存816的例子包括但不限于隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存存儲器或任何其他合適的存儲器設備。盡管不是必需的,但在某些實施例中,計算系統(tǒng)810可包括易失性存儲器單元(諸如系統(tǒng)內(nèi)存816)和非易失性存儲設備(諸如,主存儲設備832,如下詳述)。在一個例子中,圖1的模塊102中的一者或多者可加載到系統(tǒng)內(nèi)存816中。
[0078]在某些實施例中,除處理器814和系統(tǒng)內(nèi)存816之外,示例性計算系統(tǒng)810還可包括一個或多個組件或元件。例如,如圖8所示,計算系統(tǒng)810可包括內(nèi)存控制器818、輸入/輸出(I/O)控制器820和通信接口 822,它們中的每一者都可經(jīng)由通信基礎結(jié)構(gòu)812互連。通信基礎結(jié)構(gòu)812通常表示能夠促進計算設備的一個或多個組件之間的通信的任何類型或形式的基礎結(jié)構(gòu)。通信基礎結(jié)構(gòu)812的例子包括但不限于通信總線(諸如ISA、PC1、PCIe或類似總線)和網(wǎng)絡。
[0079]內(nèi)存控制器818通常表示能夠處理內(nèi)存或數(shù)據(jù)或控制計算系統(tǒng)810的一個或多個組件之間的通信的任何類型或形式的設備。例如,在某些實施例中,內(nèi)存控制器818可經(jīng)由通信基礎結(jié)構(gòu)812來控制處理器814、系統(tǒng)內(nèi)存816和I/O控制器820之間的通信。
[0080]I/O控制器820通常表示能夠協(xié)調(diào)和/或控制計算設備的輸入和輸出功能的任何類型或形式的模塊。例如,在某些實施例中,I/o控制器820可控制或促進計算系統(tǒng)810的一個或多個元件之間的數(shù)據(jù)傳輸,所述元件諸如處理器814、系統(tǒng)內(nèi)存816、通信接口 822、顯示適配器826、輸入接口 830和存儲接口 834。
[0081]通信接口 822在廣義上表示能夠促進示例性計算系統(tǒng)810與一個或多個附加設備之間的通信的任何類型或形式的通信設備或適配器。例如,在某些實施例中,通信接口 822可促進計算系統(tǒng)810與包括附加計算系統(tǒng)的專用或公共網(wǎng)絡之間的通信。通信接口 822的例子包括但不限于有線網(wǎng)絡接口(諸如網(wǎng)絡接口卡)、無線網(wǎng)絡接口(諸如無線網(wǎng)絡接口卡)、調(diào)制解調(diào)器和任何其他合適的接口。在至少一個實施例中,通信接口 822可經(jīng)由與網(wǎng)絡(諸如互聯(lián)網(wǎng))的直接鏈接來提供與遠程服務器的直接連接。通信接口 822還可通過例如局域網(wǎng)(諸如以太網(wǎng)網(wǎng)絡)、個人局域網(wǎng)、電話或電纜網(wǎng)絡、蜂窩電話連接、衛(wèi)星數(shù)據(jù)連接或任何其他合適的連接來間接提供此類連接。
[0082]在某些實施例中,通信接口 822還可表示主機適配器,該主機適配器可被配置為經(jīng)由外部總線或通信信道來促進計算系統(tǒng)810與一個或多個附加網(wǎng)絡或存儲設備之間的通信。主機適配器的例子包括但不限于SCSI主機適配器、USB主機適配器、IEEE1394主機適配器、SATA和eSATA主機適配器、ATA和PATA主機適配器、光纖信道接口適配器、以太網(wǎng)適配器等等。通信接口 822還可允許計算系統(tǒng)810參與分布式或遠程計算。例如,通信接口 822可接收來自遠程設備的指令或?qū)⒅噶畎l(fā)送到遠程設備以供執(zhí)行。
[0083]如圖8所示,計算系統(tǒng)810還可包括至少一個顯示設備824,該顯示設備824經(jīng)由顯示適配器826連接到通信基礎結(jié)構(gòu)812。顯示設備824通常表示能夠以可視方式顯示由顯示適配器826轉(zhuǎn)發(fā)的信息的任何類型或形式的設備。類似地,顯示適配器826通常表示被配置為轉(zhuǎn)發(fā)來自通信基礎結(jié)構(gòu)812(或來自幀緩沖器,如本領域所已知)的圖形、文本和其他數(shù)據(jù)以在顯示設備824上顯示的任何類型或形式的設備。
[0084]如圖8所示,示例性計算系統(tǒng)810還可包括經(jīng)由輸入接口 830連接到通信基礎結(jié)構(gòu)812的至少一個輸入設備828。輸入設備828通常表示能夠向示例性計算系統(tǒng)810提供輸入(由計算機或人生成)的任何類型或形式的輸入設備。輸入設備828的例子包括但不限于鍵盤、指針設備、語音識別設備或任何其他輸入設備。
[0085]如圖8所示,示例性計算系統(tǒng)810還可包括主存儲設備832和經(jīng)由存儲接口 834連接到通信基礎結(jié)構(gòu)812的備份存儲設備833。存儲設備832和833通常表示能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的存儲設備或介質(zhì)。例如,存儲設備832和833可為磁盤驅(qū)動器(例如,所謂的硬盤驅(qū)動器)、固態(tài)驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、光盤驅(qū)動器、閃存驅(qū)動器等等。存儲接口 834通常表示用于在計算系統(tǒng)810的存儲設備832和833與其他組件之間傳輸數(shù)據(jù)的任何類型或形式的接口或設備。
[0086]在某些實施例中,存儲設備832和833可被配置為對被配置為存儲計算機軟件、數(shù)據(jù)或其他計算機可讀信息的可移動存儲單元執(zhí)行讀取和/或?qū)懭?。合適的可移動存儲單元的實例包括但不限于軟盤、磁帶、光盤、閃存設備等。存儲設備832和833還可包括允許將計算機軟件、數(shù)據(jù)或其他計算機可讀指令加載到計算系統(tǒng)810內(nèi)的其他類似結(jié)構(gòu)或設備。例如,存儲設備832和833可被配置為讀取和寫入軟件、數(shù)據(jù)或其他計算機可讀信息。存儲設備832和833還可為計算系統(tǒng)810的一部分,或者可為通過其他接口系統(tǒng)進行訪問的獨立設備。
[0087]可將多個其他設備或子系統(tǒng)連接到計算系統(tǒng)810。相反地,無需提供圖8中示出的所有組件和設備,亦可實踐本文描述和/或示出的實施例。上文提及的設備和子系統(tǒng)也可通過不同于圖8所示的方式互連。計算系統(tǒng)810還可采用任何數(shù)量的軟件、固件和/或硬件配置。例如,本文所公開的一個或多個示例性實施例可被編碼為計算機可讀存儲介質(zhì)上的計算機程序(也稱為計算機軟件、軟件應用程序、計算機可讀指令或計算機控制邏輯)。短語“計算機可讀存儲介質(zhì)”通常指能夠存儲或攜帶計算機可讀指令的任何形式的設備、載體或介質(zhì)。計算機可讀存儲介質(zhì)的例子包括但不限于傳輸型介質(zhì),諸如載波,和非暫態(tài)型介質(zhì),諸如磁存儲介質(zhì)(例如,硬盤驅(qū)動器和軟盤)、光存儲介質(zhì)(例如,CD-或DVD-ROM)、電子存儲介質(zhì)(例如,固態(tài)驅(qū)動器和閃存介質(zhì))和其他分配系統(tǒng)。
[0088]可將包含計算機程序的計算機可讀存儲介質(zhì)加載到計算系統(tǒng)810中。然后可將計算機可讀存儲介質(zhì)上存儲的全部或一部分計算機程序存儲在系統(tǒng)內(nèi)存816中和/或存儲設備832和833的各個部分中。當由處理器814執(zhí)行時,加載到計算系統(tǒng)810中的計算機程序可使處理器814執(zhí)行和/或作為一種方式來執(zhí)行本文描述和/或示出的示例性實施例中的一者或多者的功能。除此之外或作為另外一種選擇,可在固件和/或硬件中實施本文描述和/或示出的示例性實施例中的一者或多者。例如,計算系統(tǒng)810可被配置為用于實施本文所公開的示例性實施例中的一者或多者的專用集成電路(ASIC)。
[0089]圖9為示例性網(wǎng)絡體系結(jié)構(gòu)900的框圖,其中客戶端系統(tǒng)910、920和930以及服務器940和945可連接到網(wǎng)絡950。如上詳述,網(wǎng)絡體系結(jié)構(gòu)900的全部或一部分可執(zhí)行和/或作為一種方式用于單獨或與其他元件結(jié)合使用來執(zhí)行以下各項中的一者或多者:本文所公開的識別、接收、生成、加密、去重、存儲、解密、使用、訪問、傳輸、生成、執(zhí)行、加索引和提供步驟。網(wǎng)絡體系結(jié)構(gòu)900的全部或一部分也可用于執(zhí)行和/或作為一種方式用于執(zhí)行本發(fā)明中闡述的其他步驟和特征。
[0090]客戶端系統(tǒng)910、920和930通常表示任何類型或形式的計算設備或系統(tǒng),諸如圖8中的示例性計算系統(tǒng)810。類似地,服務器940和945通常表示被配置為提供各種數(shù)據(jù)庫服務和/或運行特定軟件應用程序的計算設備或系統(tǒng),諸如應用程序服務器或數(shù)據(jù)庫服務器。網(wǎng)絡950通常表示任何電信或計算機網(wǎng)絡,包括(例如)內(nèi)聯(lián)網(wǎng)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、個人局域網(wǎng)(PAN)或互聯(lián)網(wǎng)。在一個例子中,客戶端系統(tǒng)910、920和/或930和/或服務器940和/或945可包括圖1的系統(tǒng)100的全部或一部分。
[0091]如圖9所示,一個或多個存儲設備960(1)-(N)可直接連接到服務器940。類似地,一個或多個存儲設備970 (I)-(N)可直接連接到服務器945。存儲設備960 (I) - (N)和存儲設備970 (I)-(N)通常表示能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的存儲設備或介質(zhì)。在某些實施例中,存儲設備960 (I)-(N)和存儲設備970 (I)-(N)可表示被配置為使用各種協(xié)議,諸如NFS、SMB或CIFS,與服務器940和945進行通信的網(wǎng)絡連接存儲(NAS)設備。
[0092]服務器940和945還可連接到存儲區(qū)域網(wǎng)絡(SAN)光纖網(wǎng)980。SAN光纖網(wǎng)980通常表示能夠促進多個存儲設備之間的通信的任何類型或形式的計算機網(wǎng)絡或體系結(jié)構(gòu)。SAN光纖網(wǎng)980可促進服務器940和945與多個存儲設備990 (I)-(N)和/或智能存儲陣列995之間的通信。SAN光纖網(wǎng)980還可經(jīng)由網(wǎng)絡950以及服務器940和945以這樣的方式促進客戶端系統(tǒng)910、920和930與存儲設備990 (I)-(N)和/或智能存儲陣列995之間的通信:設備990 (I)-(N)和陣列995呈現(xiàn)為客戶端系統(tǒng)910、920和930的本地連接設備。與存儲設備960 (I)-(N)和存儲設備970 (I)-(N)相同,存儲設備990 (I) - (N)和智能存儲陣列995通常表示能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的存儲設備或介質(zhì)。
[0093]在某些實施例中,并參考圖8的示例性計算系統(tǒng)810,通信接口,諸如圖8中的通信接口 822,可用于在每個客戶端系統(tǒng)910、920和930與網(wǎng)絡950之間提供連接。客戶端系統(tǒng)910、920和930可能能夠使用(例如)網(wǎng)頁瀏覽器或其他客戶端軟件來訪問服務器940或945上的信息。此類軟件可允許客戶端系統(tǒng)910、920和930訪問由服務器940、服務器945、存儲設備960 (I) - (N)、存儲設備970 (I) - (N)、存儲設備990 (I) - (N)或智能存儲陣列995托管的數(shù)據(jù)。盡管圖9示出了使用網(wǎng)絡(諸如互聯(lián)網(wǎng))來交換數(shù)據(jù),但本文描述和/或示出的實施例并非僅限于互聯(lián)網(wǎng)或任何特定的基于網(wǎng)絡的環(huán)境。
[0094]在至少一個實施例中,本文所公開的一個或多個示例性實施例中的全部或一部分可被編碼為計算機程序并加載到服務器940、服務器945、存儲設備960 (I)-(N)、存儲設備970 (I)-(N)、存儲設備990 (I)-(N)或智能存儲陣列995或它們的任意組合上并加以執(zhí)行。本文所公開的一個或多個示例性實施例中的全部或一部分還可被編碼為計算機程序,存儲在服務器940中,由服務器945運行,以及通過網(wǎng)絡950分配到客戶端系統(tǒng)910、920和930。
[0095]如上詳述,計算系統(tǒng)810和/或網(wǎng)絡體系結(jié)構(gòu)900的一個或多個組件可執(zhí)行和/或作為一種方式用于單獨或與其他元件結(jié)合來執(zhí)行用于安全的第三方數(shù)據(jù)存儲的示例性方法的一個或多個步驟。
[0096]雖然上述發(fā)明使用特定框圖、流程圖和例子闡述了各種實施例,但每個框圖組件、流程圖步驟、操作和/或本文描述和/或示出的組件可使用范圍廣泛的硬件、軟件或固件(或其任何組合)配置來單獨和/或共同實現(xiàn)。此外,包含在其他組件內(nèi)的組件的任何公開內(nèi)容應當被視為在本質(zhì)上是示例性的,因為可實施許多其他體系結(jié)構(gòu)來實現(xiàn)相同功能。
[0097]在一些例子中,圖1中的示例性系統(tǒng)100的全部或一部分可表示云計算環(huán)境或基于網(wǎng)絡的環(huán)境的部分。云計算環(huán)境可以通過互聯(lián)網(wǎng)提供各種服務和應用程序。這些基于云的服務(例如軟件即服務(software as a service)、平臺即服務(platform as aservice)、基礎結(jié)構(gòu)即服務等(infrastructure as a service))可以通過網(wǎng)頁瀏覽器或其他遠程接口進行訪問。本文所述的各種功能可以通過遠程桌面環(huán)境或任何其他基于云的計算環(huán)境提供。
[0098]本文描述和/或示出的過程參數(shù)和步驟序列僅通過舉例的方式給出并且可根據(jù)需要改變。例如,雖然本文示出和/或描述的步驟可以特定順序示出或討論,但這些步驟不必按示出或討論的順序來執(zhí)行。本文描述和/或示出的各種示例性方法還可省略本文描述或示出的步驟中的一者或多者,或除了所公開的那些步驟之外還包括附加步驟。
[0099]雖然本文已經(jīng)在充分發(fā)揮功能的計算系統(tǒng)的背景下描述和/或示出了各種實施例,但這些示例性實施例中的一者或多者可作為各種形式的程序產(chǎn)品來分配,而不考慮用于實際進行分配的計算機可讀存儲介質(zhì)的特定類型。本文所公開的實施例還可使用執(zhí)行某些任務的軟件模塊來實現(xiàn)。這些軟件模塊可包括腳本、批處理或可存儲在計算機可讀存儲介質(zhì)上或計算系統(tǒng)中的其他可執(zhí)行文件。在一些實施例中,這些軟件模塊可將計算系統(tǒng)配置為執(zhí)行本文所公開的示例性實施例中的一者或多者。
[0100]此外,本文所述的模塊中的一者或多者可將數(shù)據(jù)、物理設備和/或物理設備的表示從一種形式轉(zhuǎn)換為另一種形式。例如,本文所述的模塊中的一者或多者可將計算設備轉(zhuǎn)換為用于安全的第三方存儲的設備。又如,本文所述的模塊中的一者或多者可將加密文件轉(zhuǎn)換成未加密文件。
[0101]提供前面描述的目的是使本領域的其他技術人員能夠最好地利用本文所公開的示例性實施例的各個方面。該示例性描述并非旨在是詳盡的或局限于所公開的任何精確形式。在不脫離本發(fā)明精神和范圍的前提下,可進行許多修改和變化。本文所公開的實施例在所有方面均應被視為示例性的而非限制性的。應當參考所附權(quán)利要求及其等同形式來確定本發(fā)明的范圍。
[0102]除非另有說明,否則在本說明書和權(quán)利要求中使用的術語“一”或“一個”應當理解為是表示“…中的至少一者”。此外,為了易于使用,在本說明書和權(quán)利要求中使用的詞語“包括”和“具有”與詞語“包含”可互換并且與詞語“包含”具有相同含義。
【權(quán)利要求】
1.一種用于安全的第三方數(shù)據(jù)存儲的方法,所述方法的至少一部分由包括至少一個處理器的計算設備來執(zhí)行,所述方法包括: 在所述服務器端計算設備識別來自客戶端系統(tǒng)的訪問存儲在用戶賬戶下的加密文件的請求,其中所述所請求的訪問需要對所述加密文件解密; 響應于所述請求來識別被指定用于所述用戶賬戶的非對稱密鑰對,所述非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰; 從所述客戶端系統(tǒng)接收所述客戶端密鑰; 用所述客戶端密鑰對所述解密密鑰解密; 使用所述解密密鑰訪問所述加密文件的未加密版本。
2.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中使用所述解密密鑰訪問所述加密文件包括: 識別用于對所述加密文件加密的文件密鑰,其中所述文件密鑰用所述加密密鑰加密; 用所述解密密鑰對所述文件密鑰解密; 用所述文件密鑰對所述加密文件解密。
3.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中: 訪問所述加密文件包括向附加用戶賬戶提供對所述加密文件的所述未加密版本的訪問; 附加非對稱密鑰對被指定用于所述附加用戶賬戶,所述附加非對稱密鑰對包括附加加密密鑰和已用附加客戶端密鑰加密的附加解密密鑰。
4.根據(jù)權(quán)利要求3所述的計算機實現(xiàn)的方法,其中向所述附加用戶賬戶提供對所述加密文件的所述未加密版本的訪問包括: 識別用于對所述加密文件加密的文件密鑰,其中所述文件密鑰用所述加密密鑰加密; 用所述解密密鑰對所述文件密鑰解密; 用所述附加加密密鑰對所述文件密鑰的副本加密。
5.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中訪問所述加密文件包括將所述加密文件的所述未加密版本傳輸至所述客戶端系統(tǒng)。
6.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中使用所述解密密鑰訪問所述加密文件的所述未加密版本包括生成描述所述加密文件的未加密版本的元數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中生成描述所述加密文件的所述未加密版本的所述元數(shù)據(jù)包括以下各項中的至少一者: 對所述加密文件的所述未加密版本執(zhí)行安全掃描; 基于所述加密文件的所述未加密版本內(nèi)的內(nèi)容來對所述加密文件的所述未加密版本加索引; 基于所述加密文件的所述未加密版本內(nèi)的內(nèi)容來生成所述加密文件的所述未加密版本的預覽。
8.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 從所述客戶端系統(tǒng)接收所述加密文件的所述未加密版本; 通過以下各項生成所述加密文件: 基于所述加密文件的所述未加密版本的至少一個特性生成文件密鑰; 用所述文件密鑰對所述加密文件的所述未加密版本加密; 用所述加密密鑰對所述文件密鑰加密。
9.根據(jù)權(quán)利要求8所述的計算機實現(xiàn)的方法,還包括用通過所述文件密鑰加密的附加加密文件對所述加密文件去重。
10.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中接收所述客戶端密鑰包括將所述客戶端密鑰存儲在易失性存儲器中而不將所述客戶端密鑰存儲在非易失性存儲器中。
11.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 識別被指定為訪問所述加密文件的所述未加密版本的附加用戶賬戶,其中附加非對稱密鑰對被指定用于所述附加用戶賬戶,所述附加非對稱密鑰對包括附加加密密鑰和已用附加客戶端密鑰加密的附加解密密鑰; 用所述附加加密密鑰對所述解密密鑰加密。
12.根據(jù)權(quán)利要求11所述的計算機實現(xiàn)的方法,還包括: 識別來自附加客戶端系統(tǒng)的經(jīng)由所述附加用戶賬戶進一步訪問所述加密文件的附加請求,其中所述所請求的附加訪問需要對所述加密文件解密; 用所述附加解密密鑰對所述解密密鑰解密; 使用所述解密密鑰經(jīng)由所述附加用戶賬戶來訪問所述加密文件的所述未加密版本。
13.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中使用所述解密密鑰訪問所述加密文件的所述未加密版本包括: 識別被指定用于包括所述用戶賬戶的多個用戶賬戶的附加非對稱密鑰對,所述附加非對稱密鑰對包括附加加密密鑰和已用所述加密密鑰加密的附加解密密鑰; 用所述解密密鑰對所述附加解密密鑰解密; 識別用于對所述加密密鑰加密的文件密鑰,其中所述文件密鑰用所述附加加密密鑰加密; 用所述附加解密密鑰對所述文件密鑰解密; 用所述文件密鑰對所述加密文件解密。
14.一種用于安全的第三方數(shù)據(jù)存儲的系統(tǒng),所述系統(tǒng)包括: 識別模塊,其被編程為在所述服務器端計算設備識別來自客戶端系統(tǒng)的以訪問存儲在用戶賬戶下的加密文件的請求,其中所請求的訪問需要對所述加密文件解密; 密鑰模塊,其被編程為響應于所述請求識別被指定用于所述用戶賬戶的非對稱密鑰對,所述非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰; 接收模塊,其被編程為從所述客戶端系統(tǒng)接收所述客戶端密鑰; 解密模塊,所述解密模塊被編程為用所述客戶端密鑰對所述解密密鑰解密; 訪問模塊,其被編程為使用所述解密密鑰訪問所述加密文件的未加密版本; 至少一個處理器,其被配置為執(zhí)行所述識別模塊、所述密鑰模塊、所述接收模塊、所述解密模塊和所述訪問模塊。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述訪問模塊被編程為使用所述解密密鑰通過以下過程訪問所述加密文件: 識別用于對所述加密文件加密的文件密鑰,其中所述文件密鑰用所述加密密鑰加密; 用所述解密密鑰對所述文件密鑰解密; 用所述文件密鑰對所述加密文件解密。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中: 所述訪問模塊被編程為通過向附加用戶賬戶提供對所述加密文件的所述未加密版本的訪問來訪問所述加密文件; 附加非對稱密鑰對被指定用于所述附加用戶賬戶,所述附加非對稱密鑰對包括附加加密密鑰和已用附加客戶端密鑰加密的附加解密密鑰。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中所述訪問模塊被編程為通過以下過程向所述附加用戶賬戶提供對所述加密文件的所述未加密版本的訪問: 識別用于對所述加密文件加密的文件密鑰,其中所述文件密鑰用所述加密密鑰加密; 用所述解密密鑰對所述文件密鑰解密; 用所述附加加密密鑰對所述文件密鑰的副本加密。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述訪問模塊被編程為通過將所述加密文件的所述未加密版本傳輸至所述客戶端系統(tǒng)來訪問所述加密文件。
19.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述訪問模塊被編程為通過生成描述所述加密文件的所述未加密版本的元數(shù)據(jù)來使用所述解密密鑰訪問所述加密文件的所述未加密版本。
20.一種計算機可讀存儲介質(zhì),其包括一個或多個計算機可執(zhí)行指令,當由計算設備的至少一個處理器執(zhí)行時,所述指令可使所述計算設備: 在所述服務器端計算設備識別來自客戶端系統(tǒng)的訪問加密文件的請求,其中所述所請求的訪問需要對所述加密文件解密; 響應于所述請求來識別非對稱密鑰對,所述非對稱密鑰對包括加密密鑰和已用客戶端密鑰加密的解密密鑰; 從所述客戶端系統(tǒng)接收所述客戶端密鑰; 用所述客戶端密鑰對所述解密密鑰解密; 使用所述解密密鑰訪問所述加密文件的未加密版本。
【文檔編號】G06F21/78GK104205123SQ201380013570
【公開日】2014年12月10日 申請日期:2013年2月28日 優(yōu)先權(quán)日:2012年3月26日
【發(fā)明者】W·伯格拉德 申請人:賽門鐵克公司