本公開涉及系統(tǒng)安全,并且更具體地涉及一種允許設備建立位于遠程資源中的安全工作空間的所有權的系統(tǒng)。
背景技術:
基于現在可以電子地進行的越來越多種類的事務,保護電子信息已經成為了重要問題。包括例如黑客、如病毒、rootkit等惡意軟件(例如,惡意軟件(malware))等的各種威脅共享至少一個目的:規(guī)避現有保護措施以便獲得對另一個用戶設備的訪問或控制。采用設備來執(zhí)行日常事務的用戶可能并未意識到他們的設備已經被損壞,并且可能正不知不覺地向第三方提供敏感的個人數據、財務數據和/或專有數據。正持續(xù)開發(fā)用于防止這些類型的攻擊的技術。然而,隨著新病毒保護策略出現,黑客正發(fā)現在設備內的更低層處進行攻擊的方式,獲得在設備中具有比保護軟件更高優(yōu)先級的層處的訪問和/或控制。因此,設備制造商正將安全措施建立到設備的實際硬件中。例如,這些安全特征可以在設備初始化的早期階段啟動,并且可以通過在將程序加載到設備中時執(zhí)行安全檢查來確保稍后加載的程序是安全的。
例如,在初始化期間,設備可以預留僅對已知良好程序可訪問的存儲器部分。以此方式,可以保護存儲在所述存儲器部分中的敏感數據和/或保密數據免受攻擊。然而,可能存在這樣的場景,在所述場景中,已知良好軟件并不駐留于與受保護存儲器相同的設備中。例如,用戶設備中的已知良好程序(例如,“客戶端”程序)可能需要訪問位于至少一個遠程計算設備(例如,在云架構中進行操作)中的受保護存儲器部分。雖然可能期望客戶端程序能夠訪問駐留于至少一個其他設備中的受保護存儲器,但是可以保護受保護存儲器免于由除了可能例如在第一次創(chuàng)建受保護存儲器部分時分配的受保護存儲器的“所有者”以外的任何軟件訪問。這種要求可能嚴重地限制可以將這種類型的安全技術應用于其中的應用。
附圖說明
所要求保護的主題的各種實施例的特征和優(yōu)點將隨著以下具體實施方式進行并且通過參照附圖變得明顯,其中,相同的數字指代相同的部件,并且在附圖中:
圖1展示了根據本公開的至少一個實施例的用于建立安全工作空間的所有權的示例系統(tǒng);
圖2展示了根據本公開的至少一個實施例可用的客戶端設備和組成遠程資源的至少一個設備的示例配置;
圖3展示了根據本公開的至少一個實施例的可能在客戶端模塊、安全工作空間配置器與安全工作空間之間發(fā)生的示例交互;
圖4展示了根據本公開的至少一個實施例的用于從客戶端設備的視角建立安全工作空間的所有權的示例操作;并且
圖5展示了根據本公開的至少一個實施例的用于從遠程資源的視角建立安全工作空間的所有權的示例操作。
雖然以下具體實施方式將參考說明性實施例進行,但是其許多替代方案、修改及變化將對本領域的技術人員而言是明顯的。
具體實施方式
本申請涉及建立安全工作空間(secureworkspace,sw)的所有權。在至少一個實施例中,客戶端設備可以向位于遠程資源中的sw配置器提供sw數據結構(swds)。一種示例swds可以包括原始sw的散列以及公鑰,并且可以使用與所述公鑰相對應的私鑰來進行簽名。然后,所述sw配置器可以使包括基于所述swds的sw的執(zhí)行容器(ec)被生成。稍后,所述客戶端設備可以通過向所述遠程資源傳輸請求來要求所述sw的所有權。所述請求可以由所述私鑰來進行簽名并且可以連同所述公鑰的副本一起傳輸。然后,所述sw中的所有權確定模塊可以通過例如以下方式來判定所述客戶端設備是否擁有所述sw:使用與所述請求一起接收的所述公鑰來驗證所述請求的簽名;確定與所述請求一起接收的所述公鑰的散列;以及然后將與所述請求一起接收的所述公鑰的所述散列與在所述swds中接收的所述公鑰的散列進行比較。如果確定所述公鑰的所述散列相匹配,則可以允許所述客戶端設備要求所述sw的所有權。
在至少一個實施例中,至少一個設備可以包括例如通信模塊和sw配置器。所述通信模塊可以用于至少與客戶端設備交互。最初地,所述sw配置器可以用于從所述客戶端設備接收swds。然后,所述sw配置器可以用于使sw包括在由所述遠程資源生成的ec內,所述sw基于所述swds。
示例swds可以包括與所述sw有關的數據和公鑰,所述swds是在以與所述公鑰相對應的私鑰簽名的消息中接收的。與所述sw有關的所述數據可以包括從所述sw中測量的散列值。所述ec可以進一步用于基于所述swds來初始化所述sw,對所述sw的初始化包括測量所述安全工作空間數據結構中的所述公鑰的散列值。
在至少一個實施例中,所述sw可以進一步包括所有權確定模塊,所述所有權確定模塊用于接收經簽名的消息,所述經簽名的消息至少包括經由所述通信模塊從所述客戶端設備取得所述sw的所有權和所述公鑰的請求,以及至少基于所述經簽名的消息和所述swds來判定所述客戶端設備是否被授權取得所述sw的所有權。所述所有權確定模塊用于判定所述客戶端設備是否被授權取得所述sw的所有權可以包括所述所有權確定模塊用于利用與所述經簽名的消息一起接收的所述公鑰來驗證所述經簽名的消息的簽名,通過測量所述公鑰來確定與所述經簽名的消息一起接收的所述公鑰的散列值,通過將與所述經簽名的消息一起接收的所述公鑰的所述散列與在將初始化sw時確定的所述公鑰的所述散列進行比較來驗證所述sw的所有權,以及如果與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述sw時確定的所述公鑰的所述散列相匹配,則向所述客戶端設備授予所述sw的所有權。在至少一個實施例中,所述sw是基于軟件防護擴展(softwareguardextensions,sgx)技術的安全飛地,并且所述swds是sgxsigstruct數據結構。
與本公開一致的客戶端設備可以包括例如通信模塊和客戶端模塊。所述通信模塊可以用于至少與遠程資源交互。所述客戶端模塊可以用于通過測量待用于生成新sw的sw的原始版本來確定所述sw的散列值,生成公鑰和相應私鑰,至少將所述散列值和所述公鑰置于swds中,以及向所述遠程資源傳輸所述swds。所述sw的所述散列值可以接收自例如所述遠程資源中的安全工作區(qū)配置器。所述客戶端模塊可以進一步用于生成包括取得sw的所有權的請求的消息;使用所述私鑰來對所述消息進行簽名;以及向所述遠程資源傳輸所述經簽名的消息和所述公鑰。在至少一個實施例中,所述sw是基于sgx技術的安全飛地,并且所述swds是sgxsigstruct數據結構。一種與本公開一致的用于建立sw的所有權的方法可以包括例如在sw配置器處從客戶端設備接收swds,所述sw配置器駐留于遠程資源中;以及使sw包括在由所述遠程資源生成的ec內,所述sw基于所述swds。
圖1展示了根據本公開的至少一個實施例的用于建立安全工作空間的所有權的示例系統(tǒng)。系統(tǒng)100可以至少包括例如客戶端設備102和遠程資源104??蛻舳嗽O備102的示例可以包括但不限于如蜂窩手機或智能電話等基于以下操作系統(tǒng)的移動通信設備:來自谷歌公司(googlecorporation)的安卓
客戶端設備102可以至少包括例如客戶端模塊106??蛻舳四K106可以包括可以被配置成用于訪問sw112的設備和/或軟件。如本文中所參考的“訪問”可以包括將數據存儲在sw112中,從sw112中讀取數據處,執(zhí)行加載在sw112中的程序等。為了解釋的目的,與本公開一致的現實生活使用情況的示例可以包括客戶端設備102是智能電話且客戶端模塊106是提供用于訪問用戶的個人財務賬目的用戶接口的應用,其中,訪問財務賬目(例如,賬號、用戶名、密碼等)所需的信息可以存儲在遠程資源104中以便保護客戶端設備102免于被遺失、被盜或者以其他方式被損壞。雖然此示例解決方案可以容易地防御客戶端設備102中的明顯漏洞,但是當訪問信息存儲在遠程資源104中時,其可能同樣易受攻擊,特別是假定遠程資源104可能是針對與大量用戶(例如,利用客戶端模塊106的任何用戶)相對應的訪問信息的存儲庫,并且由此可能是誘人的攻擊目標。因此,可能有益的是,以可以提供僅客戶端模塊106能夠訪問的高級安全性的方式來進一步保護存儲在遠程資源104中的信息。
遠程資源104可以至少包括例如可以用于使ec110至少包括基于swds114配置的sw112的sw配置器108。如本文中所參考的,ec110通??梢园ɑ谲浖臉嬙?,所述基于軟件的構造可能能夠模仿類似配置的基于軟件的數據處理設備的操作。ec110的示例可以包括但不限于如通常與來自因特爾公司的虛擬化技術(virtualizationtechnology,vt)、如docker公司開發(fā)的docker引擎、基于linux內核的虛擬機(kvm)等相關聯(lián)的虛擬機(vm)。在至少一個實施例中,sw配置器108可以包括用于存儲從客戶端設備102接收的swds114以及用于使至少包括swds114的ec110被生成的設備和/或軟件,所述swds可由ec110用于生成sw112。sw112可以是例如可信執(zhí)行環(huán)境(tee),在所述可信執(zhí)行環(huán)境中,可以執(zhí)行已知良好程序,可以以安全的方式存儲保密信息等等。通常,sw112可以包括一組安全的計算資源,從而使得在sw112內執(zhí)行的程序以及與執(zhí)行程序相關聯(lián)的任何數據被隔離。除了可以開始或停止程序以及可以插入或刪除相關聯(lián)數據以外,在程序執(zhí)行期間,外部因素無法干擾或觀察sw112內的程序/數據。離開sw112的任何數據可以以受控的方式發(fā)布。與本公開一致,在sw112內執(zhí)行的至少一個已知良好程序可以執(zhí)行本文中關于sw112而公開的任何或所有操作。在一個示例實施方式中,sw112可以采用因特爾公司開發(fā)的軟件防護擴展(sgx)技術。sgx可以在系統(tǒng)存儲器內提供安全且軟件加密的計算和存儲區(qū)域,無法通過特權代碼或者甚至通過將硬件探頭應用于存儲器總線來解密其內容。當sw112受sgx保護時,與本公開一致的實施例使入侵者不可能解密sw112的內容。受保護數據無法在sgx之外觀察,并且由此,不可在sgx之外訪問。
在使用sgx來實施sw112的示例實施方式中,可以對程序的身份(例如,基于對每個程序的內容的密碼散列測量)進行簽名并且將其存儲在每個程序之內。在程序之后被加載到sw112中時,處理器可以驗證程序的測量結果(例如,如由處理器計算的)與之前嵌入到程序之內的測量結果完全相同。因為處理器可以提供有用于在程序加載時間驗證簽名的公鑰,所以用于對嵌入式測量結果進行簽名的簽名也是可驗證的。以此方式,在不變更程序的可驗證測量結果的情況下,惡意軟件無法篡改所述程序。因為具有程序作者的簽名密鑰是安全的,所以惡意軟件也無法欺騙簽名。因此,軟件可能無法由任何惡意軟件讀取、寫入或變更。此外,還可以在tee模塊106中保護數據。例如,sw112中的已知良好程序將如密鑰、密碼、許可證等加密,從而使得僅經驗證的良好程序可以解密此數據。在采用sgx的至少一個實施例中,sw112可以是安全飛地,并且swds114可以是sigstruct數據結構。sigstruct數據結構可以包括來自飛地簽名器的與飛地相關的信息,包括例如如sha256等飛地散列以及四個3072位整數(例如,模量(modulus)、簽名(signature)、q1和q2)。雖然rsa簽名可能不需要q1和q2,但是可以采用這些整數值來加速簽名驗證。與本公開一致,可以改變sigstruct數據結構的內容中的一些或所有內容的用途以便容納如將關于圖3而描述的其他信息(例如,公鑰)。
在操作的示例中,客戶端設備102中的客戶端模塊106可以與sw配置器108交互以便建立swds114。所述交互可以包括例如確定包含在sw配置器108中的sw112的原始版本的散列,生成公鑰和相應私鑰,將sw112的散列和公鑰的副本置于swds114中,以及向sw配置器108傳輸swds114。在至少一個實施例中,sw112的散列可由sw配置器108確定并且可以向客戶端模塊106傳輸所述散列??梢愿鶕ɡ鐁sa、迪菲-赫爾曼(diffie-hellman)、數字簽名算法(dsa)等公鑰密碼方法來生成公鑰和私鑰。在向遠程資源104傳輸之前,可以由私鑰來對swds114進行簽名。私鑰/公鑰對可以表示客戶(例如,客戶端設備102)或基于例如客戶的偏好而表示sw112。當在遠程資源104中生成ec110時,sw配置器108可以使swds114置于ec110中(例如,除了其他管理證書以外)。然后,ec110可以在初始化sw112時利用swds114。在至少一個實施例中,在初始化期間,可以確定swds114中的公鑰的散列,當確定sw112的所有者時,公鑰的散列很重要。
然后,客戶端模塊106可以嘗試要求sw112的所有權,這可以包括客戶端模塊106使設備102向遠程資源104傳輸針對sw112的所有權的請求??梢允褂盟借€來對所述請求進行簽名,并且所述請求可以包括公鑰的副本。在至少一個實施例中,可由所有權確定模塊116在ec110中接收所述請求。然后,所有權確定模塊116可以例如使用與請求一起接收的公鑰來驗證請求上的簽名并且可以判定與請求一起接收的公鑰是否與包括在swds114中的公鑰相同。如果確定所述密鑰相匹配,則所有權確定模塊116可以授予對所有權的請求。然后,可以通知客戶端模塊106,其是sw112的所有者并且可以訪問sw112。重要的是,注意,雖然所有權確定模塊116被示出為駐留于sw112內,但是所有權確定模塊116還有可能駐留于ec110內的其他地方或者甚至在遠程資源104內的其他地方。
圖2展示了根據本公開的至少一個實施例可用的客戶端設備102和組成遠程資源104的至少一個設備的示例配置。具體地,客戶端設備102'和/或遠程資源104'可能能夠執(zhí)行如圖1中所公開的示例功能。然而,客戶端設備102’和遠程資源104'僅意指作為在與本公開一致的實施例中可用的裝置的示例,并且并不意在將這些各種實施例限制于任何特定實施方式。
客戶端設備102’可以包括例如被配置成用于管理設備操作的系統(tǒng)模塊200。系統(tǒng)模塊200可以包括例如處理模塊202、存儲器模塊204、電源模塊206、用戶接口模塊208以及通信接口模塊210??蛻舳嗽O備102'還可以包括通信模塊212。雖然通信模塊212已經被展示為與系統(tǒng)模塊200分離,但是為了解釋的目的,僅僅提供了圖2中所示出的示例實施方式??梢詫⑴c通信模塊212相關聯(lián)的功能中的一些或所有功能并入系統(tǒng)模塊200中。
在客戶端設備102’中,處理模塊202可以包括位于分離部件中的一個或多個處理器,或者可替代地,在單個部件中(例如,在片上系統(tǒng)(soc)配置中)具體化的一個或多個處理核以及任何與處理器相關的支持電路(例如,橋接接口等)。示例處理器可以包括但不限于可從因特爾公司獲得的各種基于x86的微處理器,包括奔騰(pentium)、至強(xeon)、安騰(itanium)、賽揚(celeron)、凌動(atom)、核(core)i系列產品族、高級risc(reducedinstructionsetcomputing,精簡指令集計算)機器或“arm”處理器等中的微處理器。支持電路的示例可以包括被配置成用于提供接口的芯片組(例如,可從英特爾公司獲得的北橋(northbridge)、南橋(southbridge)等),處理模塊202可以通過所述接口與客戶端設備102’中可以正以不同速度、在不同總線上等進行操作的其他系統(tǒng)部件交互。通常與支持電路相關聯(lián)的功能中的一些或所有功能還可以包括在與處理器相同的物理封裝體中(例如,如在可從英特爾公司獲得的處理器的沙橋(sandvbridge)族中)。
處理模塊202可以被配置成用于執(zhí)行客戶端設備102’中的各種指令。指令可以包括程序代碼,所述程序代碼被配置成用于使處理模塊202執(zhí)行與讀取數據、寫入數據、處理數據、制定數據、轉換數據、變換數據等相關的活動。信息(例如,指令、數據等)可以存儲在存儲器模塊204中。存儲器模塊204可以包括采用固定或可移除格式的隨機存取存儲器(ram)或只讀存儲器(rom)。ram可以包括被配置成用于在客戶端設備102’的操作期間保持信息的易失性存儲器,如例如,靜態(tài)ram(sram)或動態(tài)ram(dram)。rom可以包括基于bios、uefi等而被配置成用于在客戶端設備102'被激活時提供指令的非易失性(nv)存儲器模塊、如電子可編程rom(eproms)等可編程存儲器、閃存等。其他固定/可移除存儲器可以包括但不限于:磁存儲器(如例如,軟盤、硬盤驅動器等)、如固態(tài)閃存(例如,嵌入式多媒體卡(emmc))等)等電子存儲器、可移除存儲卡或存儲棒(例如,微型存儲設備(usd)、usb等)、如基于cd盤的rom(cd-rom)等光存儲器、數字視頻盤(dvd)、藍光碟等。
電源模塊206可以包括內部電源(例如,電池、燃料電池等)和/或外部電源(例如,機電或太陽能發(fā)電機、電網、燃料電池等)、以及被配置成用于為客戶端設備102'供應操作所需的電源的相關電路。用戶接口模塊208可以包括用于允許用戶與客戶端設備102’(如例如,各種輸入機構(例如,麥克風,開關,按鈕,旋鈕,鍵盤,揚聲器,觸敏表面,被配置成用于捕獲圖像和/或感測接近度、距離、運動、姿勢、取向等的一個或多個傳感器)以及各種輸出機構(例如,揚聲器,顯示器,發(fā)光/閃爍指示器,針對振動、運動等的機電部件)交互的硬件和/或軟件。用戶接口模塊208中的硬件可以并入客戶端設備102’內和/或可以經由有線或無線通信介質耦合至客戶端設備102’。
通信接口模塊210可以被配置成用于對分組路由和通信模塊212的其他控制功能進行管理,所述通信模塊可以包括被配置成用于支持有線和/或無線通信的資源。在某些實例中,客戶端設備102’可以包括全部由集中通信接口模塊210管理的多于一個的通信模塊212(例如,包括針對有線協(xié)議和/或無線電的分離物理接口模塊)。有線通信可以包括串聯(lián)和并聯(lián)的有線介質,如例如,以太網、通用串行總線(usb)、火線、數字視頻接口(dvi)、高清多媒體接口(hdmi)等。無線通信可以包括例如極近無線介質(例如,如基于近場通信(nfc)標準的射頻(rf)、紅外(ir)等)、短距離無線介質(例如,藍牙、wlan、wi-fi等)、長距離無線介質(例如,蜂窩廣域無線電通信技術、基于衛(wèi)星的通信等)或經由聲波的電子通信。在一個實施例中,通信接口模塊210可以被配置成用于防止在通信模塊212中活動的無線通信互相干擾。在執(zhí)行此功能時,通信接口模塊210可以基于例如等待傳輸的消息的相對優(yōu)先級為通信模塊212安排活動。雖然圖2中所公開的實施例展示了通信接口模塊210與通信模塊212分離,但是還有可能將通信接口模塊210和通信模塊212的功能并入相同模塊內。
與本公開一致,存儲器模塊204至少可以包括客戶端模塊106’的一部分??蛻舳四K106'還有可能包括可以與加載到存儲器模塊204中的可執(zhí)行文件和/或數據合作的基于硬件的部分。在至少一個實施例中,客戶端模塊106’可以經由以上所描述的模塊和/或總線與通信模塊212交互。作為這種交互的一部分,客戶端模塊106'可以使通信模塊212向遠程資源104'傳輸信息和/或從其處接收信息。遠程資源104'被公開為單個設備,但是實際上可以是如在云計算架構的實例中被配置成用于單獨地或一起操作以便處理數據的多個設備。遠程資源104'可以包括分別與如關于客戶端設備102'而公開的模塊200至212相對應的模塊200'至212’,并且因此,這兩組模塊可以被類似配置和/或執(zhí)行類似功能。在客戶端設備102'與遠程資源104'之間通??赡艽嬖谝恍┡渲貌町?,其中,例如,因為數據服務器(例如,安裝在機架構型中)可以不包括用戶接口設備并且相反可以依賴于針對用戶接口功能的遠程客戶端站,所以用戶接口模塊210’可以是可選的。在至少一個實施例中,存儲器模塊204’可以包括ec110’。ec110’可能能夠經由以上所公開的模塊和/或總線與通信模塊212'交互,并且可以使通信模塊212’經由客戶端設備102’中的通信模塊212從客戶端模塊106'接收信息和/或向其傳輸信息。
圖3展示了根據本公開的至少一個實施例的可能在客戶端模塊106、sw配置器108與sw112之間發(fā)生的示例交互。初始地,雖然圖3中公開的示例交互可能參考與sgx技術相關聯(lián)的各種術語、結構、方法等,但是與本公開一致的實施例不限于僅使用sgx來實施。本文中所公開的實施例還可以使用替代性安全技術來實施。如在300處所示出的,客戶端模塊106可以采用指令(例如,sgxereport指令)來確定sw112的散列??梢詮谋挥米鱯w配置器108中的“控制者(master)”來生成ec110中的sw112的“原始”sw112中測量所述散列。對散列的實際確定可由客戶端模塊106或sw配置器108執(zhí)行,并且然后可以向客戶端模塊106傳輸所述實際確定。然后,如在302處所示出的,客戶端模塊106可以生成公鑰和私鑰,如在304處所示出的,將之前確定的sw112的散列置于swds114(例如,sgxsigstruct數據結構)中。在306處,sigstruct可由客戶端模塊106使用私鑰來進行簽名,并且然后在308處,可以向sw配置器108傳輸所述sigstruct。在310處,當生成ec110時,sw配置器108可以將sigstruct的副本置于ec110中。然后,在312處,ec110可以基于sigstruct而初始化sw112,其中,初始化可以包括在314處計算由客戶端模塊106置于sigstruct中的公鑰的散列(例如,使用sgxeinit指令)。
如在316處所示出的,當要求sw112的所有權時,客戶端模塊106可以使客戶端設備102傳輸要求sw112的所有權的請求(由私鑰來進行簽名的)連同公鑰的副本。在318處,sw112(并且更具體地,所有權確定模塊116)可以初始地使用連同從客戶端模塊106接收的要求所有權的請求一起提供的公鑰來驗證所述請求上的簽名。如果簽名有效,則sw112可以采用指令(例如,sgxereport指令)來確定之前存儲在sigstruct中的公鑰的散列,可以確定連同所述請求一起提供的公鑰的散列,并且然后在320處,可以將連同所述請求一起提供的公鑰的散列與sigstruct中的公鑰的之前確定的散列進行比較。在至少一個示例實施方式中,可由sw112(例如,支持sw112的sgx硬件)將sigstruct內的至少一個域中的公鑰的散列值置于ereport.mrsigner中。然后,可以將ereport.mrsigner的值與和所有權請求一起接收的公鑰的散列進行比較以便確定sw112的所有權。在322處,如果確定所述散列相匹配,則sw112可以建議客戶端模塊106,已經由客戶端模塊106驗證了sw112的所有權。
圖4展示了根據本公開的至少一個實施例的用于從客戶端設備的視角建立安全工作空間的所有權的示例操作。示例操作400至406通常可以與配置sw生成有關。初始地,在操作400中,連同公鑰和私鑰一起確定可信sw(例如,稍后將要求其所有權的sw)的散列。然后,在操作402中,可以將sw散列和公鑰置于swds中。在操作404中,可以計算swds上的簽名(例如,利用私鑰),并且在操作406中,可以傳輸經簽名的swds(例如,向sw配置器傳輸)。示例操作408和410通??梢耘c取得sw的所有權有關。在操作408中,可以傳輸針對sw的所有權的請求(例如,向包括sw的遠程資源傳輸)。在操作410中,可以接收對所述請求的響應。例如,對所述請求的響應可以指示驗證了所述請求并且請求者是sw的所有者(例如,可能能夠訪問sw),或者可替代地,指示無法驗證所述請求并且請求者不被允許訪問sw。
圖5展示了根據本公開的至少一個實施例的用于從遠程資源的視角建立安全工作空間的所有權的示例操作。示例操作500至504通??梢耘c生成遠程資源中的sw有關。在操作500中,可以接收swds(例如,在sw配置器中)。然后,在操作502中,可以生成包括swds的ec。然后,在操作504中,ec可以利用swds來初始化sw。在至少一個示例中,對sw的初始化可以包括確定包括在swds內的公鑰的散列。示例操作506至516通??梢耘c驗證sw的所有權有關。在操作506中,可以接收要求sw的所有權的請求連同公鑰??梢詫λ稣埱筮M行簽名,并且在操作508中,可以使用連同所述請求一起提供的公鑰來驗證所述請求的簽名。假設在操作508中能夠驗證簽名,則在操作510中,至少可以確定連同要求sw的所有權的請求一起接收的公鑰的散列值。然后,在操作512中,可以判定連同所述請求一起接收的公鑰的散列是否與在swds中接收的公鑰的散列相匹配。如果在操作中確定所述散列不匹配,則在操作514中,可以拒絕要求sw的所有權的請求。在另一方面,在操作512中,如果確定所述散列相匹配,則在操作516中,可以授予要求sw的所有權的請求。在至少一個實施例中,然后可以通知請求者,授予了所述請求并且現在允許訪問sw。
雖然圖4和圖5展示了根據不同實施例的操作,但是將理解的是,對于其他實施例來說,并非圖4和圖5中所描繪的所有操作都是必需的。確實,本文中完全設想的是,在本公開的其他實施例中,可以采用任何附圖中未具體地示出、但仍然與本公開完全一致的方式來圖4和圖5中所描繪的操作和/或本文中所描述的其他操作進行組合。因此,涉及未在一個附圖中準確示出的特征和/或操作的權利要求被視為處于本公開的范圍和內容之內。
如在本申請和權利要求書中所使用的,由術語“和/或”所連接的一系列項目可以意指所列項目的任何組合。例如,短語“a、b和/或c”可以指a;b;c;a和b;a和c;b和c;或者a、b和c。如在本申請和權利要求書中所使用的,由術語“中的至少一項”連接的一系列項目可以意指所列術語的任何組合。例如,短語“a、b或c中的至少一者”可以指著a;b;c;a和b;a和c;b和c;或者a、b和c。
如本文中任何實施例所使用的,術語“模塊”可以指被配置成用于執(zhí)行前述操作中任何操作的軟件、固件和/或電路。軟件可以被具體化為非瞬態(tài)計算機可讀存儲介質上所記錄的軟件包、代碼、指令、指令集和/或數據。固件可以被具體化為存儲器設備中硬編碼(例如,非易失性的)的代碼、指令或指令集和/或數據。如本文中任何實施例中所使用的,“電路”可以例如單一地或以任何組合形式包括硬接線電路、可編程電路(比如,包括一個或多個單獨指令處理核的計算機處理器)、狀態(tài)機電路、和/或存儲有可由可編程電路執(zhí)行的指令的固件。所述模塊可以被統(tǒng)一地或單獨地具體化為形成例如集成電路(ic)、片上系統(tǒng)(soc)、臺式計算機、膝上型計算機、平板計算機、服務器、智能電話等的更大系統(tǒng)的一部分的電路。
本文中所描述的任何操作可以在系統(tǒng)中實施,所述系統(tǒng)包括具有單獨地或組合地存儲在其上的指令的一個或多個存儲介質(比如,非瞬態(tài)存儲介質),當所述指令由一個或多個處理器執(zhí)行時執(zhí)行所述方法。此處,處理器可以包括例如服務器cpu、移動設備cpu、和/或其他可編程電路。而且,旨在使得本文中所描述的操作可以在多個物理設備(比如,在多于一個不同物理位置處的處理結構)之間分布。存儲介質可以包括任何類型的有形介質,例如包括以下各項的任何類型的磁盤:硬盤、軟盤、光盤、壓縮盤-只讀存儲器(cd-rom)、可復寫致密盤(cd-rw)、和磁光盤、如只讀存儲器(rom)等半導體器件、如動態(tài)和靜態(tài)ram等隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、閃存、固態(tài)盤(ssd)、嵌入式多媒體卡(emmc)、安全數字輸入/輸出(sdio)卡、磁卡或光卡、或者適合于存儲電子指令的任何類型的介質。其他實施例可以實施為由可編程控制設備執(zhí)行的軟件模塊。
因此,本申請涉及建立安全工作空間(sw)的所有權。客戶端設備可以向sw配置器提供sw數據結構(swds)。一種swds可以包括原始sw的散列以及公鑰,并且可以通過與所述公鑰相對應的私鑰來進行簽名。所述sw配置器可以使得生成包括使用所述swds所發(fā)起的sw的執(zhí)行容器(ec)。所述客戶端設備可以使用連同所述公鑰的副本一起傳輸的請求(由所述私鑰來進行簽名的)來要求sw所有權。sw所有權可由所有權確定模塊確定,所述所有權確定模塊使用與所述請求一起接收的所述公鑰來驗證所述請求的簽名,確定所述所接收的公鑰的散列,并且將所述所接收的公鑰的所述散列與所述swds中的所述公鑰的散列進行比較。
以下示例涉及進一步實施例。如以下所提供的,本公開的以下示例可以包括如設備、方法、用于存儲指令(當被執(zhí)行時使機器基于所述方法執(zhí)行動作)的至少一個機器可讀介質、用于基于所述方法執(zhí)行動作的裝置和/或用于建立安全工作空間的所有權的系統(tǒng)等主題。
根據示例1,提供了至少一種設備。所述至少一種設備可以包括通信模塊,所述通信模塊用于至少與客戶端設備交互;以及安全工作空間配置器,所述安全工作空間配置器用于從所述客戶端設備接收安全工作空間數據結構以及使安全工作空間包括在由所述遠程資源生成的執(zhí)行容器內,所述安全工作空間基于所述安全工作空間數據結構。
示例2可以包括如示例1所述的要素,其中,所述安全工作空間數據結構包括與所述安全工作空間有關的數據以及公鑰,所述安全工作空間數據結構是在以與所述公鑰相對應的私鑰簽名的消息中接收的。
示例3可以包括如示例2所述的要素,其中,與所述安全工作空間有關的所述數據包括從所述安全工作空間中測量的散列值。
示例4可以包括如示例2至3中任一項所述的要素,其中,所述執(zhí)行容器進一步用于基于所述安全工作空間數據結構來初始化所述安全工作空間,對所述安全工作空間的初始化包括測量所述安全工作空間數據結構中的所述公鑰的散列值。
示例5可以包括如示例4所述的要素,其中,所述安全工作空間進一步包括所有權確定模塊,所述所有權確定模塊用于接收經簽名的消息,所述經簽名的消息至少包括經由所述通信模塊從所述客戶端設備取得所述安全工作空間的所有權以及所述公鑰的請求以及至少基于所述經簽名的消息和所述安全工作空間數據結構來判定所述客戶端設備是否被授權取得所述安全工作空間的所有權。
示例6可以包括如示例5所述的要素,其中,所述所有權確定模塊用于判定所述客戶端設備是否被授權取得所述安全工作空間的所有權包括所述所有權確定模塊用于:利用與所述經簽名的消息一起接收的所述公鑰來驗證所述經簽名的消息的簽名;通過測量所述公鑰來確定與所述經簽名的消息一起接收的所述公鑰的散列值;通過將與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列進行比較來驗證所述安全工作空間的所有權;以及如果與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列相匹配,則向所述客戶端設備授予所述安全工作空間的所有權。
示例7可以包括如示例6所述的要素,其中,將與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列進行比較包括:將從軟件防護擴展(sgx)sigstruct數據結構內的域中讀取的散列值置于sgxereport.mrsigner數據結構中;以及將所述ereport.mrsigner的值與和所述經簽名的消息一起接收的所述公鑰的所述散列進行比較。
示例8可以包括如示例1至7中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
示例9可以包括如示例1至8中任一項所述的要素,其中,所述安全工作空間數據結構包括從所述安全工作空間中測量的散列值以及公鑰,所述安全工作空間數據結構是在以與所述公鑰相對應的私鑰簽名的消息中接收的。
示例10可以包括如示例1至9中任一項所述的要素,其中,所述至少一種設備是被配置成用于在云計算架構中進行操作的至少一個服務器。
示例11可以包括如示例1至10中任一項所述的要素,其中,所述執(zhí)行容器包括虛擬機。
根據示例12,提供了一種客戶端設備。所述客戶端設備可以包括通信模塊,所述通信模塊用于至少與遠程資源交互;以及客戶端模塊,所述客戶端模塊用于通過測量安全工作空間的待用于生成新安全工作空間的原始版本來確定所述安全工作空間的散列值,生成公鑰和相應私鑰,至少將所述散列值和所述公鑰置于安全工作空間數據結構中,并且向所述遠程資源傳輸所述安全工作空間數據結構。
示例13可以包括如示例12所述的要素,其中,所述安全工作區(qū)的所述散列值接收自所述遠程資源中的安全工作區(qū)配置器。
示例14可以包括如示例12至13中任一項所述的要素,其中,所述客戶端模塊進一步用于生成包括取得安全工作空間的所有權的請求的消息,使用所述私鑰來對所述消息進行簽名,并且向所述遠程資源傳輸所述經簽名的消息和所述公鑰。
示例15可以包括如示例12至14中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
根據示例16,提供了一種用于建立安全工作空間的所有權的方法。所述方法可以包括:在安全工作空間配置器處從客戶端設備接收安全工作空間數據結構,所述安全工作空間配置器駐留于遠程資源中;以及使安全工作空間包括在由所述遠程資源生成的執(zhí)行容器內,所述安全工作空間基于所述安全工作空間數據結構。
示例17可以包括如示例16所述的要素,其中,所述安全工作空間數據結構包括與所述安全工作空間有關的數據以及公鑰,所述安全工作空間數據結構是在以與所述公鑰相對應的私鑰簽名的消息中接收的。
示例18可以包括如示例16至17中任一項所述的要素,其中,與所述安全工作空間有關的所述數據包括從所述安全工作空間中測量的散列值。
示例19可以包括如示例18所述的要素,并且可以進一步包括基于所述安全工作空間數據結構來初始化所述安全工作空間,其中,初始化所述安全工作空間包括測量所述安全工作空間數據結構中的所述公鑰的散列值。
示例20可以包括如示例19所述的要素,并且可以進一步包括:接收經簽名的消息,所述經簽名的消息至少包括從所述客戶端設備取得所述安全工作空間的所有權以及所述公鑰的請求;以及至少基于所述經簽名的消息和所述安全工作空間數據結構來判定所述客戶端設備是否被授權取得所述安全工作空間的所有權。
示例21可以包括如示例20所述的要素,其中,判定所述客戶端設備是否被授權取得所述安全工作空間的所有權可以包括:利用與所述經簽名的消息一起接收的所述公鑰來驗證所述經簽名的消息的簽名;通過測量所述公鑰來確定與所述經簽名的消息一起接收的所述公鑰的散列值;通過將與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列進行比較來驗證所述安全工作空間的所有權;以及如果與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列相匹配,則向所述客戶端設備授予所述安全工作空間的所有權。
示例22可以包括如示例21所述的要素,其中,將與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列進行比較包括:將從軟件防護擴展(sgx)sigstruct數據結構內的域中讀取的散列值置于sgxereport.mrsigner數據結構中;以及將所述ereport.mrsigner的值與和所述經簽名的消息一起接收的所述公鑰的所述散列進行比較。
示例23可以包括如示例16至22中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
示例24可以包括如示例16至23中任一項所述的要素,其中,所述安全工作空間數據結構包括從所述安全工作空間中測量的散列值以及公鑰,所述安全工作空間數據結構是在以與所述公鑰相對應的私鑰簽名的消息中接收的。
示例25可以包括如示例16至24中任一項所述的要素,其中,所述遠程資源包括被配置成用于在云計算架構中進行操作的至少一個服務器。
示例26可以包括如示例16至25中任一項所述的要素,其中,所述執(zhí)行容器包括虛擬機。
根據示例27,提供了一種用于要求安全工作空間的所有權的方法。所述方法可以包括:通過測量安全工作空間的待用于生成新安全工作空間的原始版本來確定所述安全工作空間的散列值;生成公鑰和相應私鑰;至少將所述散列值和所述公鑰置于安全工作空間數據結構中;以及向所述遠程資源傳輸所述安全工作空間數據結構。
示例28可以包括如示例27所述的要素,其中,所述安全工作區(qū)的所述散列值接收自所述遠程資源中的安全工作區(qū)配置器。
示例29可以包括如示例27至28中任一項所述的要素,并且可以進一步包括生成包括取得安全工作空間的所有權的請求的消息;使用所述私鑰來對所述消息進行簽名;以及向所述遠程資源傳輸所述經簽名的消息和所述公鑰。
示例30可以包括如示例27至29中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
根據示例31,提供了一種系統(tǒng),所述系統(tǒng)至少包括設備和遠程資源,所述系統(tǒng)被安排成用于執(zhí)行以上示例16至30中任一項所述的方法。
根據示例32,提供了一種芯片組,所述芯片組被安排成用于執(zhí)行如以上示例16至30中任一項所述的方法。
根據示例33,提供了至少一種機器可讀介質,包括多條指令,所述多條指令響應于正在計算設備上被執(zhí)行而使所述計算設備執(zhí)行根據以上示例16至30中任一項所述的方法。
根據示例34,提供了一種被配置成用于建立安全工作空間的所有權的設備,所述設備被安排成用于執(zhí)行如以上示例16至30中任一項所述的方法。
根據示例35,提供了一種用于建立安全工作空間的所有權的系統(tǒng)。所述系統(tǒng)可以包括:用于在安全工作空間配置器處從客戶端設備接收安全工作空間數據結構的裝置,所述安全工作空間配置器駐留于遠程資源中;以及用于使安全工作空間包括在由所述遠程資源生成的執(zhí)行容器內的裝置,所述安全工作空間基于所述安全工作空間數據結構。
示例36可以包括如示例35所述的要素,其中,所述安全工作空間數據結構包括與所述安全工作空間有關的數據以及公鑰,所述安全工作空間數據結構是在以與所述公鑰相對應的私鑰簽名的消息中接收的。
示例37可以包括如示例36所述的要素,其中,與所述安全工作空間有關的所述數據包括從所述安全工作空間中測量的散列值。
示例38可以包括如示例36至37中任一項所述的要素,并且可以進一步包括用于基于所述安全工作空間數據結構來初始化所述安全工作空間的裝置,其中,初始化所述安全工作空間包括測量所述安全工作空間數據結構中的所述公鑰的散列值。
示例39可以包括如示例38所述的要素,并且可以進一步包括用于接收經簽名的消息的裝置,所述經簽名的消息至少包括從所述客戶端設備取得所述安全工作空間的所有權以及所述公鑰的請求;以及用于至少基于所述經簽名的消息和所述安全工作空間數據結構來判定所述客戶端設備是否被授權取得所述安全工作空間的所有權的裝置。
示例40可以包括如示例39所述的要素,其中,用于判定所述客戶端設備是否被授權取得所述安全工作空間的所有權的所述裝置包括用于以下操作的裝置:利用與所述經簽名的消息一起接收的所述公鑰來驗證所述經簽名的消息的簽名;通過測量所述公鑰來確定與所述經簽名的消息一起接收的所述公鑰的散列值;通過將與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列進行比較來驗證所述安全工作空間的所有權;以及如果與所述經簽名的消息一起接收的所述公鑰的所述散列與在初始化所述安全工作空間時確定的所述公鑰的所述散列相匹配,則向所述客戶端設備授予所述安全工作空間的所有權。
示例41可以包括如示例36至40中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
根據示例42,提供了一種用于要求安全工作空間的所有權的系統(tǒng)。所述系統(tǒng)可以包括:用于通過測量安全工作空間的待用于生成新安全工作空間的原始版本來確定所述安全工作空間的散列值的裝置;用于生成公鑰和相應私鑰的裝置;用于至少將所述散列值和所述公鑰置于安全工作空間數據結構中的裝置;以及用于向所述遠程資源傳輸所述安全工作空間數據結構的裝置。
示例43可以包括如示例42所述的要素,其中,所述安全工作區(qū)的所述散列值接收自所述遠程資源中的安全工作區(qū)配置器。
示例44可以包括如示例42至43中任一項所述的要素,并且可以進一步包括:用于生成包括取得安全工作空間的所有權的請求的消息的裝置;用于使用所述私鑰來對所述消息進行簽名的裝置;以及用于向所述遠程資源傳輸所述經簽名的消息和所述公鑰的裝置。
示例45可以包括如示例42至44中任一項所述的要素,其中,所述安全工作空間是基于軟件防護擴展(sgx)技術的安全飛地,并且所述安全工作空間數據結構是sgxsigstruct數據結構。
本文中已采用的術語和表達用作描述而非限制術語,并且在使用這種術語和表達時不旨在排除所示出且所描述的特征(或其部分)的任何等效物,并且應當認識到,在權利要求書范圍內的各種修改是有可能的。因此,權利要求書旨在涵蓋所有這種等效物。