本發明專利申請是國際申請號為pct/us2012/058083、國際申請日為2012年9月28日、國家申請號為201280047625.2、發明名稱為“基于參數的密鑰推導”的發明專利申請的分案申請。
相關申請的交叉參考
本申請主張以下各專利申請的優先權:2011年9月29日提交,名為“parameterbasedkeyderivation”的第13/248,962號(代理人檔案號90204-813889(029400pc))美國專利申請;2011年9月29日提交,名為“techniquesforclientconstructedsessions”的第13/248,953號(代理人檔案號90204-818478(032300us))美國專利申請;以及2011年9月29日提交,名為“keyderivationtechniques”的第13/248,973號(代理人檔案號90204-813890(029500us))美國專利申請,所述申請的全部公開以引用的方式并入本文。
背景
計算環境采用許多形式。作為實例,組織常常利用計算裝置網絡為其用戶提供一組穩定服務。網絡常常跨越多個地理邊界且常常與其它網絡連接。例如,組織可以使用計算資源的內部網絡和由其它組織管理的計算資源兩者支持其操作。例如,組織的計算機可以與其它組織的計算機通信以在使用另一組織的服務時訪問和/或提供數據。在許多情況中,組織使用由其它組織管理的硬件來配置和操作遠程網絡,從而減少基礎設施成本并且獲得其它優點。
雖然已經證明多樣的計算環境有用于各種應用,但是這些環境存在許多挑戰。例如,配置計算機資源以促成一個組織目標可能不利影響另一組織目標的促成。例如,計算資源安全的有效管理可能常常以有效訪問數據和服務為代價。平衡安全和效率的目標可能極具挑戰性,這常常需要重大努力和資源。
附圖簡述
圖1示出了根據至少一個實施方案的可用于實施本公開的各個方面的計算環境的說明性實例。
圖2示出了根據至少一個實施方案的包括管理多個故障區的計算資源供應商的環境的說明性實例。
圖3示出了根據至少一個實施方案的圖2的故障區內部的環境的說明性實例。
圖4示出了根據至少一個實施方案的可用于支持環境(如圖3中示出的環境)的計算資源配置的說明性實例。
圖5是根據至少一個實施方案的示出其中參與計算環境的各個元件可被分配不同范圍的授權的示例性方式的圖。
圖6是根據至少一個實施方案的示出可以在消息簽名驗證過程中在參與者之間傳遞信息的示例性方式的圖。
圖7是根據實施方案的示出了用于簽名消息的過程的說明性實例的流程圖;
圖8是根據至少一個實施方案的示出了用于簽名驗證的過程的說明性實例的流程圖;
圖9是根據至少一個實施方案的示出了分配密鑰的示例性方式的圖;
圖10是根據至少一個實施方案的示出了以提供各種授權范圍的方式分配密鑰的示例性方式的圖;
圖11是根據至少一個實施方案的示出了密鑰導出的過程的說明性實例的流程圖;
圖12是根據至少一個實施方案的示出了多重限制密鑰導出的圖;
圖13是根據至少一個實施方案的用于導出簽名的函數的說明性實例;
圖14是根據至少一個實施方案的可以如何執行并使用多密鑰導出的說明性實例;
圖15是根據至少一個實施方案的示出了其中可以導出密鑰的示例性方式的圖;
圖16是根據至少一個實施方案的示出了其中可以導出密鑰的另一示例性方式的圖;
圖17是根據至少一個實施方案的示出了其中可以導出密鑰的又一示例性方式的圖;
圖18是根據至少一個實施方案的示出了用于啟動會話的過程的說明性實例的流程圖;
圖19是根據至少一個實施方案的示出了用于產生會話密鑰的過程的說明性實例的流程圖。
圖20是根據至少一個實施方案的示出了用于在會話期間獲得對一個或多個計算資源的訪問的過程的說明性實例的流程圖;
圖21是根據至少一個實施方案的示出了用于確定是否授予請求訪問一個或多個計算資源的過程的說明性實例的流程圖;
圖22是根據至少一個實施方案示出了用于委托授權的過程的說明性實例的流程圖;
圖23是根據至少一個實施方案的表示多次授權委托的說明性實例的圖;
圖24是表示其中可以使用來自多次授權的密鑰導出密鑰的方式的說明性實例的圖。
詳述
在以下描述中將描述各個實施方案。出于解釋的目的,陳述具體配置和細節以提供對實施方案的透徹理解。然而,本領域一般技術人員也將明白,所述實施方案可以在沒有具體細節的情況下實踐。此外,可省略或簡化熟知特征以免模糊所述實施方案。
本文所述和建議的技術包括根據各個實施方案的用于密鑰產生的系統和方法。密鑰可用于各種目的,諸如消息簽名方案中的認證和參與。在實施方案中,計算資源供應商至少部分基于從服務的用戶裝置接收的電子請求而將計算服務提供給客戶。服務可以是可提供的任何合適的服務,包括(但不限于)訪問數據、訪問計算資源以執行操作、訪問數據存儲服務等等。
為了保證以安全方式提供服務,本公開的各個實施方案利用多種技術以認證請求(也稱為“消息”)以保證請求是合法的。在實施方案中,使用哈希消息認證代碼(hmac)算法或其它合適的算法來認證請求,如下文更詳細討論的。
在實施方案中,認證方(例如,服務的用戶或代表用戶行動的一方)和認證者(例如,服務供應商或代表供應商行動的一方)兩者共享可以稱為密鑰的秘密證書。認證者可以存儲共享的秘密證書以用于多個用戶。作為交易的部分,認證方可以使用共享的秘密證書簽名請求,從而形成簽名。簽名可以請求的形式被提供給認證者。認證者可以使用其本身的共享的秘密證書的副本以產生用于所接收的請求的簽名,且通過比較所產生的簽名是否匹配所接收的簽名(例如通過與所接收的簽名相同)來確定所述請求是否是使用共享的秘密證書進行簽名。如果確定請求是使用共享的秘密證書進行簽名,那么請求可以視為真實的,且因此可以確定應滿足請求。
因為以上交互是對稱的(即,扮演其角色時均利用共同信息),所以認證者持有的共享的秘密證書可用于對認證方認證或代表其行動兩者。結果,希望高度安全地保護這些證書。維持高度安全性可能具有負面性能和可用性后果。例如,維持高度安全性可以包括維持集中式系統用于密鑰存儲。然而,這些集中式系統可能由于用戶和/或服務的添加對集中式系統造成更大負擔而造成擴展瓶頸。如果這種集中式系統出現故障,那么可能難以或不可能認證請求。因此,集中化提供安全性的優點和服務的擴展和可用性的缺點二者。
在實施方案中,通過利用由共享秘密證書工件(artifact)導出的簽名協議而減少這些系統(和其它系統)的負面影響,所述共享秘密證書工件可以用來證明認證方具有共享秘密證書且因此可能被授權來獲得以工件簽名的請求中指定的訪問。在實施方案中,這些工件是通過配置認證者計算機系統以接受至少部分基于共享證書的導出而不是共享證書本身的值作為簽名而獲得。共享證書的導出可能使得(如下文更完整描述)導出不允許實際確定共享證書。
例如,在實施方案中,認證方能夠用以下項來對簽名進行簽名,
hmac(m,hmac(x,credential))
其中m是消息,且hmac(x,credential)是從共享秘密證書導出的工件。x的值可以是認證方和認證者雙方兩者已知的某個值,且可以公用。例如,x可以是以預定方式編碼的當前日期,以保證由認證方和認證者始終計算hmac(x,credential)。作為另一實例,x可以是工件可用的服務的識別符。作為另一實例,x可以編碼多個語義意義且可以認證方和認證者雙方始終計算工件的方式提供。語義意義可以是密鑰的使用的限制,包括指示不應使用形成密鑰的其它推導的意義。結合本段的先前實例,x可以編碼為“20110825/dds”,其中斜線左邊的字符串表示日期且斜線右邊的字符串表示用x計算的工件可用的服務名。一般來說,x可以是始終編碼用于認證方和認證者兩者的任何值或任何值集合。應注意,如下文討論可使用除了hmac函數以外的其它合適函數。
返回到利用hmac的實例,在實施方案中,選取x值以提供額外優點。如提及,x可以(但非必需)對應于一個或多個語義意義。在實施方案中,使用諸如時戳、服務名、地區名等等的語義意義以提供其中根據本公開的技術產生的工件對由x導出的密鑰的使用提供對應限制的系統。以此方式,即使所產生的密鑰泄露可以允許由不希望的多方認證,用來編碼密鑰的限制仍允許在泄露密鑰時最小化不利影響。作為實例,用來導出密鑰的時間限制為系統提供了有效方式以核對所提交的簽名是否是以在簽名提交時有效的密鑰簽名。作為具體實例,如果當前日期用來導出密鑰且認證者系統只接受當前日期提交的簽名,那么認證者系統將確定使用以不同日期導出的密鑰產生的簽名是無效的。類似地,以特定服務的識別符導出的密鑰與另一服務一起使用時將是無效的。下文提供了其它實例。
如提及,本公開的各種技術允許使用多個參數導出密鑰。在實施方案中,密鑰是通過多重使用hmac函數由多個參數而導出。例如,可以依據以下項計算密鑰:
ks=hmac(...hmac(hmac(hmac(k,p1),p2),p3)...,pn)
其中k是共享的秘密證書和pi是參數。密鑰ks可以用于產生簽名,諸如:
s=hmac(ks,m)
其中m是消息,其可以被規范化。以此方式,密鑰是以分層方式而導出,從而允許將密鑰的部分導出傳遞到分布式系統的各個組件。例如,kp1=hmac(k,p1)可以被計算并傳遞到分布式系統的一個或多個組件。接收kp1的組件可以計算kp2=hmac(kp1,p2),其中p2對于每個組件而言可以相同或對于一些或所有組件而言可以不同。由各個組件計算的kp2的值可以將計算傳遞到分布式系統中可以計算kp3=hmac(kp2,p3)的其它組件。每個組件可以緩存其計算的結果和由其它組件計算的可能結果。以此方式,因為可以由分布式系統的其它組件執行所導出密鑰的計算,所以可以對存儲共享的秘密密鑰的數據存儲裝置提供更高安全性。
本公開的技術也提供了會話的啟動。例如,如所討論,共享的秘密證書和一個或多個參數可以用來導出密鑰。因此,會話參數可以用于產生可以在會話期間使用的證書。證書可以由做出請求的用戶或(在一些實施方案中)由證書被傳遞至且已委托訪問一個或多個計算資源的用戶來使用。在這些實例中,因為這種訪問的受委托者使用從共享的秘密證書導出的密鑰但是沒有使用共享的秘密證書本身,所以維持高的安全級別且防止由受委托者未來使用而無需更迭共享的秘密證書。如下問更詳細討論,受委托者也可以成為使用本公開的技術的委托者,其中的許多技術在下文更詳細描述。
圖1示出了根據各個實施方案的實施本公開的各個方面的示例性環境100的各個方面。如應明白,雖然出于解釋目的而使用基于網頁的環境,但是也可以酌情使用不同環境以實施各個實施方案。環境包括電子客戶端裝置102,其可以包括可操作來通過適當的網絡104發送并接收請求、消息或信息且將信息傳達返回到裝置的用戶的任何適當的裝置。這些客戶端裝置的實例包括個人計算機、手機、手持通訊裝置、膝上型計算機、機頂盒、個人數據助理、電子書閱讀器等。網絡可包括任何適當的網絡,包括內聯網、互聯網、蜂窩網絡、局域網或任何其它這樣的網絡或其組合。用于這種系統的組件可至少部分取決于所選擇的網絡和/或環境的類型。用于經由這種網絡進行通信的協議和部件是眾所周知的且將不會在本文詳細討論。通過網絡進行的通信可由有線或無線連接和其組合實現。在這個實例中,雖然當環境包括用于接收請求并響應于請求而服務于內容的網頁服務器106時,網絡包括互聯網,但是對于其它網絡而言,如本領域一般技術人員明白,也可使用服務于類似目的的替代裝置。
說明性環境包括至少一個應用服務器108和數據存儲110。應明白,可存在多個應用服務器、層或其它元件、程序或組件,其可以被鏈接或以其它方式配置、可交互以執行諸如從適當的數據存儲獲得數據的任務。如本文使用,術語“數據存儲”是指能夠存儲、訪問和檢索數據的任何裝置或裝置組合,其可以包括以下各項的任何組合和任何數量的以下各項:任何標準、分布式或集群環境中的數據服務器、數據庫、數據存儲裝置和數據存儲介質。應用服務器可包括用于按需要與數據存儲集成以對客戶端裝置執行一個或多個應用的各個方面、為應用處置大多數數據訪問和業務邏輯的任何適當的硬件和軟件。應用服務器與數據存儲合作提供訪問控制服務且能夠產生被傳送到用戶的內容(諸如文本、圖形、音頻和/或視頻),其可以通過網頁服務器以html、xml或這個實例中的另一適當的結構化語言的形式而服務于用戶。所有請求和響應和客戶端裝置102與應用服務器108之間的內容的傳遞的處置可由網頁服務器進行處置。應了解,因為可在如本文別處討論的任何適當的裝置或主機上執行本文討論的結構化代碼,所以網頁和應用服務器并非必需且只是示例性組件。
數據存儲110可包括用于存儲與特定方面有關的數據的多個單獨的數據表、數據庫或其它數據存儲機制和介質。例如,所示出的數據存儲包括用于存儲生產數據112和用戶信息116的機制,其可用來服務于生產方的內容。數據存儲也被示為包括用于存儲日志數據114的機制,其可用于報告、分析或其它這樣的目的。應了解,可存在可能需要存儲在數據存儲中的許多其它方面,諸如對于頁面圖像信息和訪問正確信息,其可酌情存儲在上文列出的機制中的任何一個或數據存儲110中的額外機制中。數據存儲110可通過與其相關聯的邏輯而操作來從應用服務器108接收指令并響應于接收指令而獲得、更新或以其它方式處理數據。在一個實例中,用戶可能提交對某種類型的項目的搜索請求。在這種情況下,數據存儲可能訪問用戶信息來驗證用戶的身份,且可訪問目錄細節信息以獲得關于所述類型的項目的信息。然后可以如在用戶能夠經由用戶裝置102上的瀏覽器查看的網頁上列出的結果中將所述信息返回到用戶。可在瀏覽器的專用頁面和窗口中查看感興趣的特定項目的信息。
每個服務器通常將包括為所述服務器的一般管理和操作提供可執行程序指令的操作系統,且通常將包括存儲指令的計算機可讀存儲介質(例如,硬盤、隨機存取存儲器、只讀存儲器等),指令當由服務器的處理器執行時允許服務器執行其預期功能。尤其鑒于本文的公開,用于服務器的操作系統和一般功能的合適的實施方式是已知的或可商購,且由本領域一般技術人員來容易地實施。
在一個實施方案中,環境是利用經由通信鏈路、使用一個或多個計算機網絡或直接連接而互連的多個計算機系統和組件的分布式計算環境。然而,本領域一般技術人員應明白,這種系統同樣可在具有比圖1中示出的更少或更多數量的組件的系統中充分操作。因此,圖1中的系統100的描述在本質上應被視為是說明性的且不限制本公開的范圍。
圖2示出了根據至少一個實施方案的包括管理多個故障區204的計算資源供應商202的環境200的說明性實例。在實施方案中,計算資源供應商是代表一個或多個客戶206操作計算機硬件的組織。計算資源供應商可以各種方式提供計算資源。例如,在一個實施方案中,計算資源供應商202管理被配置由客戶206使用的硬件。計算資源供應商202提供了允許客戶206使用硬件以編程方式配置計算資源的界面。例如,計算資源供應商可以維持執行由客戶以編程方式控制的虛擬計算機系統的硬件服務器。作為另一實例,計算資源供應商202可以管理各種數據存儲以提供遠程數據存儲解決方案,諸如高耐用性數據存儲和塊級數據存儲。
在實施方案中,故障區是由一個或多個故障邊界分離使得每個故障區容忍另一故障區的故障的計算資源的集合。作為實例,每個故障區204可以是單獨的數據中心。因此,如果一個數據中心可能由于斷電或其它破壞性事件而停止運行,那么其它數據中心可以繼續運行。故障區可以各自位于不同的地理位置且故障區的一些或所有可以由地理政治邊界分離。例如,故障區中的兩個或多個可以在不同國家。應注意,出于說明目的,本公開提供了其中故障區是數據中心的許多實例。然而,故障區可以多種其它方式來定義。例如,相同數據中心中的單獨房間可以根據各個實施方案而被認為是單獨的故障區。作為另一實例,相同位置中但由不同的備用發電機支持和/或由不同的網絡資源支持的計算資源可以被認為是不同的故障區。作為又一實例,數據中心可以被群集使得數據中心的每個群集可以被認為是故障區。此外,故障區可能出現故障的原因可能有許多,包括與電網操作、公共網絡操作、電力的策略主張有關的原因和其它原因。
在實施方案中,客戶206通過網絡208(諸如互聯網)與計算資源供應商202通信。客戶206可以具有配置在故障區204中的一個或多個中的資源,且可以通過發送電子消息(諸如調用計算資源供應商的網頁服務應用程序設計界面(api)的消息)與資源進行通信以便配置并操作資源。客戶可以利用多個故障區中的資源以降低影響客戶資源的潛在故障的影響。利用計算資源供應商202的資源以操作可公開訪問網站的客戶可以(例如)維持單獨故障區中的網頁和其它服務器使得如果一個故障區中服務器出現故障,那么公眾仍可以通過訪問另一故障區中的服務器來訪問網站。
圖3示出了故障區302內部的環境300的說明性實例,所述故障區可以是如圖2中示出的計算資源供應商的故障區。在實施方案中,故障區302包括用于代表客戶提供各種服務的計算資源。例如,如圖3中示出,故障區302包括用來提供可以代表客戶便宜且冗余地存儲相對大量數據的持久數據存儲服務的計算資源。當需要大量數據存儲和/或安全性的數據存儲但是輸入/輸出性能不具有高優先級時可以使用這種服務。故障區306也可以包括塊數據存儲服務306,其向客戶提供了塊級存儲裝置、物理裝置和/或虛擬裝置的使用。客戶可以將(例如)塊級存儲裝置附接到也由客戶利用的計算機系統。本文還示出了可以為客戶提供計算服務的虛擬計算機系統服務308。在實施方案中,虛擬計算機系統服務308通過為客戶在由計算資源供應商維護的物理服務器上實施虛擬計算機系統來提供計算服務,但是可能存在變動,諸如其中物理計算機系統被分配給客戶以供客戶使用。在與虛擬計算機系統有關的實施方案中,客戶可以根據其需求而以編程方式管理虛擬計算機系統。例如,如圖3中示出,客戶可以將虛擬計算機系統服務308的虛擬計算機系統配置為虛擬計算服務供應商的客戶的服務器客戶。虛擬計算機系統可以(例如)被配置來操作可公開訪問的網站。在各個實施方案中,虛擬計算資源供應商的客戶和客戶的客戶兩者可以通過憑借網絡310(其可以是上文結合圖2描述的網絡208)與服務通信來訪問在故障區302中操作的各種服務。
應注意,正如附圖中示出且本文描述的所有說明性實施方案,圖3中示出的各個實施方案在本質上是說明性的且變動被認為在本公開的范圍內。例如,除了示出的服務以外還可以在故障區302中提供不同于示出的所述服務的其它服務,或可以在故障區302中提供不同于示出的所述服務的其它服務來代替示出的服務。如圖3中的橢圓形示出,例如,額外服務可以在故障區302中操作。此外,一些服務可以利用其它服務。例如,多個服務(例如,塊級數據存儲服務306和虛擬計算機系統服務308)可以被一起使用以提供其它服務,諸如關系數據庫服務、電子郵件服務和一般來說可使用計算資源供應商的資源提供的任何類型的計算服務。
如圖3中示出,計算資源供應商的服務中每個可以包括單獨的驗證器312。驗證器可以是計算裝置、計算裝置的集合、應用模塊或驗證由客戶和可能由其它計算機系統做出的各種證明的其它資源。如下文更詳細描述,在實施方案中,驗證器312中的每個驗證根據本文的各個實施方案產生且然后由客戶結合訪問計算資源的請求而提供的消息簽名。密鑰和其它相關信息可以被從中央密鑰授權傳播到驗證器以使驗證器能夠驗證信息。應注意,具有驗證器的每個服務是特定實施方案的說明性實例,但是其它布置也在本公開的范圍內。例如,單個驗證器可以支持多個服務,甚至所有服務且甚至可以支持多個故障區。
圖4示出了根據至少一個實施方案的可用來支持環境(諸如圖3中示出的環境)的計算資源配置的說明性示例。圖4具體示出了其中圖3中的故障區是數據中心的具體的實例。因此,返回到圖4,數據中心402可以包括多個服務器機架404至406。數據中心402是可以用于本公開的各個實施方案的一個或多個數據中心(諸如圖4中示出的數據中心)的實例。服務器機架404與服務器機架406之間的省略號指示數據中心402可以包括任何合適數量的服務器機架,但是為了清楚起見圖4中只示出了兩個。每個服務器機架404至406可以參與維護服務,諸如到多個服務器計算機408至414和416至422的電力和數據通信。此外,省略號指示服務器機架404至406可以包括任何合適數量的服務器計算機。例如,服務器計算機408至422可以包括一個或多個虛擬計算機系統(vcs)服務器和/或一個或多個數據存儲服務器。每個服務器408至422可以對應于實施資源專用單元。
在圖4中,每個服務器機架404至406被描繪為包括一個機架交換機424至426。機架交換機424和426可以負責在其各自的服務器計算機組408至414和416至422之間來回交換數字數據的數據包。機架交換機424至426可以通信地鏈接到數據中心交換結構428,且然后鏈接到將數據中心402連接到包括互聯網的一個或多個其它計算機網絡的一組邊緣路由器430。交換結構可以包括任何適當的網絡組件集合,包括布置在一個或多個交換層中的一個或多個交換機類型的多個互連交換機432至438(為清楚起見,圖4中只示出了四個)和路由器、網關、網橋、集線器、中繼器、防火墻、計算機和其合適的組合。在至少一個實施方案中,機架交換機424至426和邊緣路由器430被認為是交換結構428的部分。機架交換機424至426、邊緣路由器430和交換結構428的組件是圖2的網絡硬件224的實例。
如上文提及,本公開的各個實施方案允許由于不同原因而被賦予各個授權等級。圖5是示出了根據至少一個實施方案的可以給參與計算環境的各個元件分配不同授權范圍的方式的示例性方式的圖。在圖5中,示出了計算資源供應商502。在實施方案中,計算資源供應商502的授權高于其資源,且如圖5中示出,計算資源供應商502能夠在資源使用時將所述授權分配在各個參與者之間。應注意,出于使說明和本文的其它說明和描述一致的目的,圖5示出了具有授權高于域的計算資源供應商502。然而,本公開的實施方案也可適用于授權域的其它控制者。例如,授權的控制者可以是政府或政府組織、另一組織的子組織或一般來說授權高于某個域的任何實體。
返回到圖5的說明性實例,計算資源供應商502通過允許不同子實體的授權高于不同子域來管理其授權。例如,如附圖中示出,計算資源供應商的多個故障區504中的每個被提供計算資源供應商502的域的對應子域。因此,每個故障區的授權可以高于其本身的資源,但不會高于另一故障區的資源(但是,在一些情況下可以共享高于一些子域的授權)。因此,根據實施方案,故障區可以提供對故障區中的計算資源的用戶訪問,但是沒有提供對另一故障區的計算資源的訪問。
如上文提及,每個故障區可以包括一個或多個服務506。因此,如圖5中示出,每個服務可以負責對應故障區506的域的子域。因此,在實施方案中,服務可提供對可由服務訪問的資源的訪問,但是沒有提供對其它服務的訪問。每個服務可以服務于一個或多個客戶508,且因此每個客戶可以負責對應服務506的授權的子域。因此,在實施方案中,客戶可以提供對涉及對應服務的其本身資源的訪問,但不會提供對另一客戶的服務的訪問。作為具體說明性實例,如果服務是虛擬計算資源服務,那么客戶可以提供對其本身的虛擬計算機系統的訪問(諸如公共訪問),但不會在不被允許的情況下提供對其它客戶的虛擬計算機系統的訪問。
如提及,如圖5中示出的授權的特定分配是出于說明目的,且多種變動被認為在本公開的范圍內。如提及,本公開的實施方案可適用于由計算資源供應商管理的域以外的授權的域,且可以根據特定需要和狀況確定子域。此外,圖5示出了虛擬資源供應商中具有授權的最小子域的客戶。然而,本公開的技術可以允許將客戶域分成一個或多個子域。
本公開的各個實施方案涉及消息簽名。圖6是示出了根據至少一個實施方案的可以在消息簽名驗證過程中在參與者之間傳達信息的示例性方式的圖600。在實施方案中,密鑰源602將密鑰提供給消息提交器604和簽名驗證器606兩者。密鑰源可以是被配置來將密鑰提供給至少所述消息提交器604和簽名驗證器606的計算機系統。密鑰源也可以使用各種技術(包括本文描述的各個實施方案)產生密鑰或可以從另一源獲得所產生的密鑰。消息提交器604可以是被配置來將消息和簽名提交給簽名驗證器606的計算機系統或結合簽名驗證器606操作的其它組件。消息提交器604的計算機系統可以是(例如)計算資源供應商的客戶的計算機系統。如下文討論,簽名驗證器606可以是被配置來接收消息和簽名并分析簽名以驗證消息是真實的計算機系統。簡單來說,簽名驗證器606可以分析所接收的簽名和消息以確定簽名是否是使用正確的密鑰k而產生。應注意,雖然圖6示出了與消息提交器604和簽名驗證器606分離的密鑰源602,但是消息提交器或簽名驗證器中的任何一個也可能是密鑰源。例如,計算資源供應商的客戶可以提供其本身的密鑰。然后客戶密鑰可以被提供給簽名驗證器以驗證簽名。此外,消息提交器604和簽名驗證器606可以每個從密鑰源602接收不同密鑰。例如,消息提交器604可以接收密鑰且簽名驗證器606可以接收使用本公開的各個實施方案從由消息提交器604接收的密鑰導出的密鑰。
如圖6中示出,簽名驗證器606從消息提交器604接收消息和對應簽名。消息可以是(例如)訪問計算服務608的電子請求。消息可以(例如)編碼對網頁服務的api調用。如果簽名和消息的分析指示消息是真實的,那么簽名驗證器通知服務(或控制對服務的訪問的組件):消息提交器可具有所請求的訪問。例如,簽名驗證器可以將所接收的消息傳遞給服務以使服務能夠滿足所述請求。因此,服務可以是可操作以滿足請求的計算機系統,諸如上文描述的各種服務。應注意,雖然圖6的各個組件和其它組件的各種描述將組件描述為可能被實施為被配置來執行某些行動的計算機系統,但是組件也可以包括被共同地配置來執行行動的多個計算裝置,諸如計算裝置的網絡。
圖7是示出了根據實施方案的用于簽名消息的過程700的說明性實例的流程圖。過程700(或本文描述的任何其它過程或其變動和/或組合)中的一些或所有可以在以可執行指令配置的一個或多個計算機系統的控制下而執行且可以被實施為由硬件或其組合在一個或多個處理器上共同地執行的代碼(例如,可執行指令、一個或多個計算機程序或一個或多個應用)。代碼可以(例如)計算機程序(包括可由一個或多個處理器執行的多個指令)的形式存儲在計算機可讀存儲介質上。計算機可讀存儲介質可以是非瞬時性的。
在實施方案中,過程700包括獲得密鑰k(701)。密鑰可以任何合適的方式獲得。例如,密鑰可以由計算機系統執行過程700而產生。密鑰可以由執行過程700的計算機系統以電子形式接收。一般來說,可以任何合適的方式執行獲得密鑰。密鑰可以是利用特定簽名算法的任何合適的密鑰。例如,如果使用基于哈希的消息認證代碼(hmac)方案和安全哈希算法(sha)-256加密哈希函數,那么密鑰可以是字節序列,諸如64或更少字節的序列。也可以使用不同加密哈希函數,諸如sha-224、sha-384和sha-512。
在實施方案中,所述過程也包括規范化消息m以形成規范化消息mc。規范化消息可以包括以允許驗證器驗證消息的簽名是否有效的格式布置消息中的信息。一般來說,許多信息通信協議轉換包括消息的位,同時使消息的語義相同。因此,兩個語義相同的消息可以包括不同的位集合,且因此可以產生不同簽名。因此,規范化允許保證可驗證簽名的簡單直接方式。然而,應注意,本公開的一些實施方案無需消息規范化。例如,如果所利用的各種協議沒有產生包括不同的位集合的語義相同消息,那么規范化并不是必需的且可以省略。一般來說,在其中簽名驗證能夠成功進行而無需操控簽名消息的任何情況下均可以省略規范化。
在實施方案中,通過計算hmac(k,mc)產生簽名,其中hmac()是hmac函數,諸如上文描述的。hmac函數具有使其尤其有用于本公開的各個實施方案的多個性質。例如,hmac函數可由計算機系統有效地執行,從而使計算資源可用于其它任務。此外,hmac函數具有抗原像性(不可逆)。例如,假設簽名s=hmac(k,m),其中k是密鑰且m是消息,基本上不會獲得關于密鑰k的任何信息。例如,從s可知,由s確定k在計算上不可能或至少不切實際。hmac函數也具有抗第二原像性。換句話說,假設s=hmac(k,m)和m,確定不同于m的消息m’使得s=hmac(k,m’)不可能或至少在計算上不切實際。此外,hmac函數具有抗偽造性。例如,假設s=hmac(k,m)的oracle數據庫,n次查詢oracle數據庫(n是正整數)允許產生最多n個簽名消息對。換句話說,假設一組簽名消息對,確定密鑰或確定將產生不在所述組中的消息的正確簽名的函數是不可能的或在計算上不切實際。
雖然hmac函數尤其有用于各個實施方案,但是也可使用其它函數。例如,可以使用具有hmac函數的上述性質的任何函數。此外,諸如在其中安全并不是主要問題和/或安全成問題但通過其它機制維持的狀況下可使用不一定具有所有(或任何)上述性質的其它函數。應注意,各個實施方案的各種說明示出了hmac函數的具體輸入,但是也可存在變動。例如,hmac函數(或其它函數)的輸入可以不同。如上文描述,例如,一個輸入是密鑰。然而,這個輸入可以由密鑰導出或以其它方式至少部分基于密鑰。作為說明性實例,輸入可以包括具有信息(諸如簽名方案識別符(可能是版本識別符))的密鑰,所述信息被添加給密鑰作為前綴、后綴或其它。作為另一實例,輸入可以是通過使用密鑰到信息(可以是另一密鑰)的映射而獲得的信息。類似地,示為消息的輸入可以由消息導出。作為另一實例,變動被認為在本公開的范圍內,簽名可能不是hmac函數的輸出,但可能是由hmac函數(或其它合適的函數)的輸出導出的一個或多個值。在一些實施方案中,密鑰和消息可以按相反次序被傳遞到函數中。
返回到圖7的描述,一旦通過計算hmac(k,mc)產生簽名,將簽名和消息m提供給接收器(708),其可以是驗證簽名的計算裝置或簽名驗證過程中涉及的另一計算裝置,諸如提供用于傳達消息和簽名的界面的計算裝置。正如本文明確描述的所有實施方案,變動被認為在本公開的范圍內。例如,可以將規范化消息mc提供給接收器來代替消息m或除了消息m以外還將規范化消息mc提供給接收器。此外,將消息m和簽名提供給接收器也可以包括提供其它信息,諸如密鑰識別符,其可以在使密鑰與密鑰識別符相關聯的數據存儲中用于識別。此外,諸如下文討論的編碼策略的參數的其它信息可以被提供有消息m和簽名。
圖8是示出根據至少一個實施方案的簽名驗證的過程800的說明性實例的流程圖。圖8中示出的過程800可以由如圖2中描述的驗證器執行。此外,過程800可以響應于收到簽名和消息(諸如響應于另一計算機系統已執行圖7的過程700)而被執行。在實施方案中,過程800包括獲得密鑰k(802),諸如上文描述的。獲得密鑰k在各個實施方案中也可以包括其它行動。例如,如果過程800是由驗證從多個密鑰(諸如從計算資源供應商的多個客戶)產生的簽名的計算機系統使用,那么獲得密鑰k可以包括從數據存儲中的多個密鑰選擇所述密鑰。數據存儲可以將各種密鑰與提交簽名以用于驗證的所述密鑰關聯。例如,計算資源供應商的每個客戶可以具有用于參照數據存儲并識別適當密鑰的密鑰識別符(或多個密鑰識別符)。密鑰識別符可以結合消息和其簽名的提交而提交,或可以其它方式而確定,諸如在提交登陸證書時被確定。密鑰識別符的接收器(例如,消息驗證器)可以參照數據存儲以確定對應于所述密鑰識別符的密鑰是否在數據存儲中,且如果否,那么可以產生密鑰其自身,諸如通過使用本文描述的技術來從共享的秘密證書直接或間接導出密鑰。為實現此,接收器可以訪問密鑰導出路徑,其在實施方案中是編碼從接收器已經具有的信息導出密鑰(例如,從共享的秘密證書導出的密鑰)所必需的信息的信息。這個信息可以被從具有簽名的消息的提交器提供到接收器,或可以其它方式提供給接收器。例如,接收器可以被編程來使用其指派地區和當前日期的代碼而自動產生密鑰。一般來說,可使用獲得用于產生簽名的密鑰(或在一些實施方案中,可用于驗證簽名的另一密鑰)的任何方法。接收器也可能相對于手頭的請求或接收器已知的某種其它屬性實施關于允許和不允許的密鑰導出路徑的策略。
在實施方案中,接收簽名s和消息m(804)。可以從提交器(諸如執行圖7的過程700的計算裝置)以電子形式接收簽名s和消息m。根據實施方案,然后規范化消息m以確定mc(806)。在各個實施方案中,消息m的規范化保證簽名s可被驗證。因此,在實施方案中,過程800包括通過計算hmac(k,mc)而產生簽名s’(808)。在實施方案中,s’等于hmac(k,mc),但是在各個實施方案中可由hmac(k,mc)導出s’。出于說明的目的,過程800的剩余部分將在s’=hmac(k,mc)的假設下描述,但是許多變動是在本公開的范圍內。
因此,在實施方案中,確定s’是否等于所接收的簽名s(810)。換句話說,例如確定所接收的簽名是否充分,因為其是使用密鑰k產生的簽名。因此,在實施方案中,如果確定s’與s不相等(810),那么簽名未驗證(812)。然而,如果s’等于s,那么驗證簽名(814)。取決于簽名是否被驗證,可以采取適當行動。例如,如果消息是用于訪問計算資源的請求,那么所請求的訪問可以(至少暫時)被拒絕。類似地,如果消息是訪問計算資源的請求且簽名被驗證,那么所請求的訪問可以被授予。然而應注意,在各個實施方案中將采取的適當行動可取決于接收和驗證簽名的原因而廣泛地變化。
如上文提及,本公開的各個實施方案應用到許多環境。在許多環境中,具有安全維護的各種方面的集中管理是有用的。例如,圖9是示出根據至少一個實施方案的分配密鑰的示例性方式的圖900。在圖9中,中央密鑰授權維護包括組織所利用的各種密鑰的一個或多個數據存儲(統稱為“數據存儲”)。密鑰可以(例如)對應于組織的計算裝置的用戶。一組用戶中的每個用戶可以(例如)被指派一個或多個密鑰。在實施方案中,至少一些密鑰對應于組織的客戶(和/或客戶的用戶)。例如,在實施方案中,組織是計算資源供應商且所述計算資源供應商的每個客戶對應于允許客戶的用戶訪問由計算資源供應商維護的計算資源的一個或多個密鑰。根據上文關于圖7描述的變動的圖8的過程800的其它改編也在本公開的范圍內。
如圖9中示出,密鑰授權902將密鑰傳播到多個密鑰區904。密鑰區可以是所接收的密鑰有效的組織域。例如,參考圖2,每個密鑰區904可以對應于故障區,諸如數據中心。密鑰區可以(但并非必需)在地理上加以定義。例如,每個密鑰區可以對應于國家、地區或其它地理上定義的地區。密鑰區也可以其它方式定義。例如,每個密鑰區可以對應于由計算資源供應商提供給組織的客戶等等的服務。雖然沒有這樣示出,但是密鑰區可以具有子區。例如,密鑰區可以對應于國家。在國家內可以具有多個地區,每個對應于密鑰區的子區。在這些實施方案中,密鑰可以被傳播到子區。
如圖9中示出,密鑰區904可以將密鑰傳播到密鑰區的一個或多個驗證器906。例如,如果密鑰區對應于數據中心,那么數據中心的計算裝置可以為了由數據中心中的計算資源支持的多個服務的每個而將密鑰傳播到驗證器。以此方式,驗證器可用于驗證結合各種請求而提交的簽名。這使密鑰授權自身的計算資源擺脫驗證簽名,而且尤其在密鑰授權902在地理位置上遠距進行請求的服務的情況中減少了等待時間和帶寬需求。
密鑰傳播可以各種方式進行。在實施方案中,密鑰在安全通道上分配到各種接收器。在一些實施方案中,密鑰授權將相同密鑰傳播到每個密鑰區。此外,一些密鑰可以用于多個密鑰區。密鑰授權902可以將多個密鑰區中可用的密鑰傳播到所述多個密鑰區,同時抑制將所述密鑰傳播到密鑰不可使用的密鑰區。因此,在計算資源供應商的實例中,密鑰授權902可以只將客戶的密鑰傳播到所述客戶能夠使用所述密鑰的所述密鑰區,諸如用于維護所述客戶的計算資源的數據中心。
本公開的各個實施方案也以提供許多優點的方式提供密鑰傳播。圖10是示出了根據至少一個實施方案的以提供各種授權范圍的方式分配密鑰的示例性方式的圖1000。正如圖10,圖1000包括具有密鑰k的密鑰授權1002,其中諸如根據結合圖9的上文描述,密鑰授權1002將密鑰直接或間接傳播到各種密鑰區1004和驗證器1006。雖然出于說明的目的結合單個密鑰k描述圖1000且由k導出密鑰,但是當密鑰授權對許多密鑰執行這些行動時本文描述的實施方案適用。
如圖10中示出,密鑰k用作從k導出的其它密鑰的基礎。例如,密鑰k1從k導出且傳播到第一密鑰區(密鑰區1)。因此,密鑰k1(或從密鑰k1導出的密鑰)在第一密鑰區中可用,但是在不具有k1(或從密鑰k1導出的密鑰)的其它密鑰區中不可用。類似地,多個其它密鑰區中的每個接收從密鑰k導出的對應不同密鑰。應注意,雖然圖10示出從密鑰k導出的密鑰從密鑰授權1002傳播到對應密鑰區,但是也可存在變動。例如,密鑰k可以傳播到密鑰區,且接收密鑰k的每個密鑰區可以使用密鑰k來導出一個或多個對應密鑰。例如,標為“密鑰區1”的密鑰區1004可以接收密鑰k并導出k1。一般來說,密鑰導出和傳播中所涉及的各種任務可以不同于各個實施方案中示出的任務來執行。
如圖10的說明性實例中示出,由密鑰區1004接收的密鑰用于導出進一步傳播的密鑰。例如,參考標為“密鑰區2”的密鑰區1004,從密鑰k導出的密鑰k2用于導出額外密鑰k2’和k2”。密鑰k2’和k2”傳播到對應驗證器1006以由驗證器1006用于驗證簽名。因此,在實施方案中,接收k2’的驗證器將能夠驗證使用k2’產生的簽名,而不接收k2’的驗證器將不能驗證所述簽名。通過以圖9和圖10中圖示的方式(或其變動)傳播密鑰,實現了多個優點。例如,通過將密鑰傳播到多個位置中的許多驗證器,而不是一個或多個集中化的驗證器,實現了更少的等待時間。此外,參考圖10,通過將導出的密鑰傳播到其它裝置,其它裝置然后又導出額外密鑰,在多個位置上的多個裝置上擴展計算是可能的,從而允許更快的密鑰導出并增大容錯。
密鑰的導出可以許多方式執行。圖11是示出根據至少一個實施方案的密鑰導出的過程1100的說明性實例的流程圖。在實施方案中,過程100包括諸如以上文描述的方式獲得密鑰ki(1002)。密鑰ki可以是任何合適的密鑰,諸如上文描述的。此外,密鑰ki可以(但并非必需)從另一密鑰導出,諸如通過執行過程1100或另一過程。在獲得密鑰ki之后,從ki導出新的密鑰。在圖11的說明性實例中,依據(或至少部分基于)hmac(ki,ri+1)計算新的密鑰kki+1,其中ri+1是識別密鑰ki+1上的一個或多個限制的信息。例如ri+1可以是編碼指示密鑰ki+1在何處可用的信息的位序列。例如,ri+1可以編碼可以使用密鑰ki+1之處的密鑰區。限制可以至少部分基于地理、時間、用戶身份、服務等等。在下文描述中提供示例性限制。
此外,如下文更多討論,可以多次使用過程1100以導出密鑰。例如,使用過程1100(或其變動)產生的密鑰可以用于使用相同或另一限制來產生另一密鑰。使用圖中的術語,ri+1可以(例如)是編碼指示密鑰ki+1何處可用的信息的位序列。對于過程的下一迭代,ki+1將成為密鑰ki。例如,如果過程1100用于基于地理限制產生密鑰,那么所產生的密鑰可以用于使用基于日期限制產生密鑰。可以多次利用這個過程以使用多重限制來導出密鑰。如下文更完整地討論,通過使用多重限制來導出密鑰,一個或多個驗證器可實施策略并同時驗證簽名。作為簡短的說明性實例,作為簽名驗證過程的部分,驗證器可以使用限制(諸如當前日期的編碼)來確定預期簽名。根據實施方案,如果提供在不同日期產生的簽名,那么所述簽名的驗證將失敗。一般來說,根據各個實施方案,如果簽名的使用不遵守用于導出密鑰的限制,那么簽名驗證可能失敗。
圖12是示出了根據至少一個實施方案的使用多重限制導出密鑰的說明性實例的圖1200。在圖12中,使用多重限制導出密鑰。在這個實例中,密鑰和日期限制用于確定日期密鑰(圖中為kdate)。在圖中,日期被編碼為20110715(對應于2011年7月15日),但是日期可以不同地編碼,且一般來說,信息可以不同于圖中示出的信息來編碼。日期密鑰與地區限制一起用于導出地區密鑰kregion。在這個實例中,地區是以地區識別符“usa-zone-1”編碼,其可以對應于美國多個地區中的一個。密鑰kregion與服務限制一起用于導出服務密鑰kservice。在這個實例中,服務是虛擬計算機系統服務(其由其首字母縮略詞vcs編碼)。密鑰kservice與請求識別符一起用于導出簽名密鑰,即,用于簽名對服務的請求的密鑰。在這個實例中,請求識別符是“vcs_request”,其可以對應于可以提交到vcs服務的特定類型的請求。例如,“vcs_request”可以對應于某個請求以提供、停止或以其它方式修改虛擬計算系統。使用簽名密鑰來產生可以與請求一起提交的簽名。簽名可以任何合適方式來產生,諸如上文描述的。
如圖12中示出,請求可以被規范化以形成消息mc,其作為到hmac函數的輸入以產生簽名。當然,可以根據各個實施方案利用變動,包括規范化并非必需之處以及使用除了hmac函數以外的函數之處的變動。此外,圖12示出了根據實施方案的導出簽名的特定實例。然而,在導出簽名時可以使用更多或更少限制,且可以按不同于示出的次序使用限制。此外,雖然圖12示出簽名的導出,但是所述技術可以應用于導出在所有應用中可能不被認為是簽名的其它對象。例如,一般來說圖12中(和別處)示出的技術可以用于導出密鑰。
圖13是根據至少一個實施方案的用于導出簽名的函數1300的說明性實例。如圖13中示出,依據以下項計算簽名:
hmac(hmac(hmac(hmac(hmac(k,date),region),service),
protocol),mc).
在這個實例中,k是密鑰,“date”是日期的編碼,“region”是地區識別符的編碼,“service”是服務識別符的編碼,“protocol”對應于特定消息編碼協議,且mc是規范化消息。因此,如圖13中示出,通過多次計算相同hmac函數來計算簽名,每次將不同限制輸入到hmac函數。在這個實例中,簽名密鑰是:
hmac(hmac(hmac(hmac(k,date),region),service),protocol)
其本身是通過多次使用hmac函數而導出,每次具有不同限制。
在圖13的實例中,各種限制每個定義域且所定義的域的交集定義其中以簽名密鑰產生的簽名將有效的方式。在這個具體實例中,以圖13中示出的簽名密鑰產生的簽名在使用所指定協議指定的日期、指定的地區和指定的服務內將有效。因此,如果使用簽名密鑰但在不同于由簽名密鑰的輸入指定的日期的日期內簽名請求,那么即使對所指定服務和在所指定地區中做出所述請求,對所述請求的簽名仍然可能被認為未驗證。
正如本文描述的其它實施方案,變動被認為在本公開的范圍內。例如,圖13示出了hmac函數的重復使用。多個函數可以用于導出簽名,且在一些實施方案中,hmac函數沒有用于導出的每一部分。此外,如提及,各個實施方案中也可以使用不同限制和不同數量的限制。
可以根據各個實施方案以多種方式執行密鑰導出。例如,根據一些實施方案,單個計算裝置可計算簽名密鑰。根據其它實施方案,多個計算裝置可以共同地計算簽名密鑰。作為具體說明性實例,參考圖13,一個計算機可以計算
kregion=hmac(hmac(k,date),region)
且另一計算機可以計算
簽名密鑰=hmac(kregion,service).
作為另一實例,單獨計算機系統可以執行計算簽名密鑰中的不同層。參考先前段落中的實例,一個計算機可以計算以下項來代替單個計算機計算kregion
kdate=hmac(k,date)
且另一計算機可以計算
kregion=hmac(kdate,region).
圖14是根據至少一個實施方案的可以如何執行并使用多密鑰導出的說明性實例。特別地,圖14示出了示例性圖1500,其示出了一組分布式計算機系統的成員共同地計算簽名密鑰(或在各個其它實施方案中,其它密鑰)。如圖14中示出,所述組的每個成員是產生密鑰并將所產生的密鑰提供給另一計算機系統的密鑰供應商計算機系統1402。例如,標記為密鑰供應商1的密鑰供應商(從另一來源或通過產生密鑰本身)獲得密鑰k,且使用密鑰和標記為r1的限制以產生密鑰k1。密鑰供應商1將密鑰k1傳遞給密鑰供應商2,其使用k2和另一限制r2以產生另一密鑰k2。密鑰供應商2將密鑰k2傳遞給密鑰供應商3,其使用k3和另一限制r3以產生另一密鑰k3。取決特定實施方案中的密鑰供應商的數量,這個過程可以繼續進行直到密鑰供應商n-1將密鑰kn-1傳遞給密鑰供應商n為止,其使用kn-1和另一限制rn以產生另一簽名密鑰kn。然后將密鑰kn傳遞給驗證者計算機系統1404。也可以通過(諸如)安全密鑰交換算法將密鑰k或從k導出的任何密鑰(在圖中一般稱為ki)傳遞給簽名器計算機系統1406。
在各個實施方案中,例如如果簽名器和/或公開可使用限制r1-rn,那么簽名器計算機系統1406也可以自身產生kn。此外,在各個實施方案中,簽名器計算機系統1406可以只執行用于自身導出kn的過程的部分。例如,對于小于n的某個整數i和限制ri+1至rn,簽名器可以(可能從適當的密鑰供應商計算機系統)獲得ki。然后簽名器可以使用ki和限制ri+1至rn以產生簽名密鑰kn。其它變動也被認為在本公開的范圍內。
簽名器計算機系統1406可以使用密鑰kn以簽名將由驗證器1404驗證的消息。例如,如示出,簽名器1406計算簽名s=hmac(kn,mc),其中mc是也被發送到驗證器的消息m的規范化版本。因為驗證器具有kn,所以驗證器可獨立地規范化消息m并計算hmac(kn,mc)以確定計算結果是否匹配所接收的簽名s。
應注意,雖然圖14中示出的過程和本文描述的過程的變動被示為涉及hmac函數的多次使用,但是可以使用多個不同函數來導出密鑰。例如,在導出密鑰的不同時刻可以使用不同類型的消息認證代碼(mac)函數。例如,一種類型的mac函數的輸出可以被用作到另一類型的mac函數的輸入的基礎。一般來說,在密鑰導出過程中可以使用其它類型的函數來代替hmac函數和/或除了hmac函數以外還可以使用其它類型的函數,且在各個實施方案中,沒有必要多次使用同一類型的函數來導出密鑰,但是每當需要函數時可以使用不同函數。
圖15是示出了根據至少一個實施方案的可以使用多個限制導出密鑰的示例性方式的圖1500。圖15中示出的實例是指客戶,諸如計算資源供應商的客戶。然而,如提及,可以在多種其它情境(context)使用本文描述的技術(包括結合圖15描述的技術)。
如示出,客戶密鑰kcust是一組客戶長期密鑰的部分,其中的每個可以是由客戶在一段時間內(諸如直到客戶更新密鑰、被指派新密鑰或以其它方式改變密鑰為止)使用的密鑰。密鑰也可以由一個或多個客戶無限制地使用。客戶密鑰kcust用來導出一個或多個地區密鑰,諸如以上文示出的方式。例如,如圖15中示出,可以通過(諸如)計算hmac(kcust,usa-e-1)和hmac(kcust,usa-n-1)產生兩個地區密鑰,其中usa-e-1和usa-n-1是各自地區的識別符。類似地,地區密鑰可以用來導出日期密鑰,其的有效性可以受限于用來編碼日期密鑰的日期。日期密鑰中的每個可以用來導出服務密鑰,諸如以上文描述的方式。
在各個實施方案中,以此方式,服務密鑰和各自服務只可以在用來編碼密鑰的日期中和地區內使用。每天可以產生新日期密鑰,而地區密鑰和客戶長期密鑰的產生頻率可能較低。諸如圖15和本公開中的別處示出的多限制密鑰導出提供多個優勢。例如,如果簽名密鑰被泄漏(例如,由第三方惡意獲得)那么通過以結合圖15描述的方式導出密鑰,將安全漏洞限于特定地區、特定日期上且與特定服務相結合。其它服務將保持不受影響。可以用可導出密鑰的其它方式應用類似優勢。
例如,圖16是示出了根據至少一個實施方案的可以導出密鑰的另一示例性方式的圖1600。圖16以與圖16的方式類似的方式示出概念。然而,在圖16中,客戶長期密鑰用來導出日期密鑰。日期密鑰用來導出地區密鑰。地區密鑰用來導出服務密鑰。可以根據本文描述的各個實施方案完成導出。
圖17是示出了根據至少一個實施方案的可以導出密鑰的又一示例性方式的圖1700。在圖17中,客戶長期密鑰用來導出月份密鑰。月份密鑰用來導出地區密鑰。地區密鑰用來導出日期密鑰。日期密鑰用來定義服務密鑰。可以與上文描述一致的方式來導出各種密鑰。
如討論,本公開的各種技術允許產生會話的新穎方式。會話可以是允許一個或多個行動的集合的時間段,其中會話的終結(或其它終止)造成不允許一個或多個行動的所述集合。圖18是示出了根據至少一個實施方案的用于啟動會話的過程1800的說明性實例的流程圖。過程1800可以由任何合適的計算裝置執行或由計算裝置的任何合適集合共同地執行。例如,過程1800可以由計算資源供應商的客戶的客戶端裝置執行。作為另一實例,在另一實施方案中,參考圖3,故障區的服務之一可以是會話服務且參與提供服務的一個或多個計算裝置可以執行過程1800。
返回到圖18,在實施方案中,過程1800包括獲得密鑰k(1802)。密鑰k可以是任何合適的密鑰,諸如以上文描述的方式使用其它密鑰導出的密鑰。例如,密鑰k可以被傳播到參與執行過程1800的計算裝置。在某個時刻(諸如當獲得密鑰k時,如附圖中示出的),在實施方案中,可以接收啟動會話的請求(1804)。所述請求可以是電子請求,諸如上文描述的。此外,在實施方案中,使用本公開的各種技術簽名并驗證所述請求。再者,取決于用來實施過程1800的特定環境,所述請求可以是不同請求。例如,如果過程1800由客戶端裝置(諸如計算資源供應商的客戶的客戶裝置)執行以產生會話,那么可以由客戶端裝置的模塊接收啟動會話的請求。
在實施方案中,確定會話的會話參數(1806)。會話參數可以是指示對將產生的會話的一個或多個限制的信息。示例性參數包括(但不限于)持續時間、將要產生的會話密鑰的可接受用戶的識別符、其中產生的會話密鑰是可用的一個或多個服務、對可以使用會話密鑰執行的行動的限制、上文描述的限制中的任何一個和其它。參數可以根據預定義格式化需求以電子形式編碼以保證涉及將產生的會話密鑰的計算是一致的。例如,可能需要以格式yyyymmdd來編碼日期。其它參數可以具有其本身的格式化需求。此外,可以各種方式執行確定會話參數。例如,參數可以是會話的默認參數,使得會話密鑰只可用于會話啟動的請求器允許的行動范圍和預定義的時間段(諸如24小時周期)。作為另一實例,參數可以被提供作為所接收請求的部分或以其它方式結合所接收請求而提供。例如,參數可以根據來自請求器的用戶輸入而產生且根據預定義方案進行編碼。
在實施方案中,一旦確定參數,使用參數來計算會話密鑰ks(1808)。可以多種方式執行計算會話密鑰ks。例如,在一個實施方案中,可以依據(或以其它方式至少部分基于)以下項來計算會話密鑰ks
hmac(k,session_parameters)
其中session_parameters是已確定(1806)的參數的編碼。session_parameters可以用保證計算一致性的預定義方式進行編碼。會話密鑰ks也可以其它方式(諸如下文結合圖19描述的方式)計算。
在實施方案中,一旦計算會話密鑰ks(1808),提供會話密鑰ks以供使用。在各個實施方案中可以多種方式執行提供會話密鑰。例如,可以將會話密鑰提供給請求器的模塊以使請求器能夠用會話密鑰簽名消息。也可以通過網絡將會話密鑰提供給另一裝置以使另一裝置能夠用會話密鑰簽名消息。例如,也可以將會話密鑰提供給啟動會話的受委托者。例如,請求器可以用啟動會話的請求或以其它方式結合啟動會話的請求指定受委托者。可以根據由請求器(即,委托者)提供的信息(諸如電子郵件或其它電子地址)以電子形式提供會話密鑰。
如提及,圖19示出了根據實施方案的可用以產生簽名的過程1900的說明性實例。可以由一個或多個計算裝置(諸如執行上文結合圖18描述的過程1800的一個或多個計算裝置)執行過程1900。如圖19中示出,過程1900包括接收會話參數,諸如上文描述的。在實施方案中,使用已獲得的會話參數依據以下項計算中間密鑰ki+1(1904):
ki+1=hmac(ki,pi),
其中ki可以是圖18的描述中用于首次計算ki+1的密鑰k,且pi是會話參數的第i個參數。可以根據預定次序來排序會話參數以保證密鑰簽名的計算一致性。
在實施方案中,確定產生會話密鑰時是否使用額外參數(1906)。如果在實施方案中存在額外參數,那么將索引i增加1(1908)且再次計算ki+1(1904)。然而,如果確定不存在額外參數,那么將ks設置成ki+1的值(1910)。
圖20是示出了根據至少一個實施方案的用于在會話期間獲得對一個或多個計算資源訪問的過程2000的說明性實例的流程圖。應注意,雖然圖20呈現了用于獲得對一個或多個計算資源訪問的過程2000,但是正如本文描述的其它過程,還可以針對其中使用簽名過程的任何情況修改過程2000。過程2000可以由請求訪問一個或多個計算資源的用戶的計算機系統(諸如圖1中示出的客戶端計算機系統和/或本文別處描述的客戶計算機系統)執行。在實施方案中,過程2000包括獲得會話密鑰ks。可以任何合適的方式(諸如在電子消息中)獲得會話密鑰。可以從訪問所述一個或多個計算資源的委托者的計算機系統或另一計算機系統(諸如結合執行用于產生ks的過程的所述一個或多個計算機系統操作的計算機系統)獲得會話密鑰。
在實施方案中,產生請求r(2004)。請求r可以是消息,諸如上文描述的。然后在實施方案中規范化請求r(2006),且由規范化消息計算簽名(2008),諸如通過依據(或以其它方式至少部分基于)hmac(ks,rc)計算簽名。當產生簽名之后,提供簽名s和請求r(2010)。例如,如上文討論,可以電子形式將簽名s和請求r提供給參與管理請求和驗證簽名的計算機系統的界面。正如一般的簽名和消息,可以用單一通信、單獨通信或由多種通信共同地來一起提供簽名s和請求r。也可以結合簽名s和請求r提供其它信息。例如,可以提供識別信息以使驗證器能夠選擇用于產生簽名且用簽名來驗證所接收簽名的適當密鑰。識別可以是(例如)應用來產生簽名以進行比較的密鑰的識別符。在各個實施方案中,也可以酌情提供并使用其它信息。
圖21是示出了根據至少一個實施方案的用于確定是否授予請求訪問一個或多個計算資源的過程2100的說明性實例的流程圖。如圖12中示出,過程2100包括獲得簽名密鑰ks(2102)。正如本文用來獲得簽名密鑰的其它敘述,可以各種方式(諸如通過從另一來源接收簽名密鑰、從存儲器檢索簽名密鑰、由可用信息計算簽名密鑰等)獲得簽名密鑰。
在實施方案中,規范化所接收的請求r來形成rc,諸如以上文描述的方式。應注意,正如本文描述的其它過程,可能存在變動。例如,執行過程2100(或另一過程)的變動的計算機系統可能只接收規范化消息且可以由另一計算裝置執行規范化。返回到圖21的描述,依據(或以其它方式至少部分基于)hmac(ks,rc)計算簽名s’。比較所計算的簽名密鑰s’和所接收的簽名s(2110)以確定所述兩個簽名是否相等。如果所述兩個簽名被確定不相等,那么確定會話無效(2112)且可以采取適當行動(諸如拒絕請求)。如果所述兩個簽名被確定相等,那么會話有效(2114)且可以采取適當行動(諸如授予訪問一個或多個計算資源)。
如提及,本公開的技術可以用來允許委托授權。圖22是示出了根據至少一個實施方案的用于委托授權的過程2200的說明性實例的流程圖。可以由計算裝置(諸如嘗試委托訪問一個或多個計算資源的用戶的計算裝置或計算資源供應商的計算裝置或任何合適的計算裝置)執行過程2200。如附圖中示出,過程2200包括獲得會話密鑰ksi(2202)。可以任何合適的方式(諸如其中描述獲得上述密鑰的方式)獲得所獲得的會話密鑰ksi。此外,會話密鑰可以是已產生作為委托訪問一個或多個計算資源的過程的部分的密鑰。例如,可以通過執行過程2200或其變動產生會話密鑰。
在實施方案中,確定會話參數(2004)。可以任何合適的方式確定會話參數,諸如上文結合圖18描述的。使用已確定(2004)的會話參數,可以產生新會話密鑰ks(i+1),諸如上文描述的,包括上文結合圖19描述的。一旦產生,可以將新會話密鑰提供給受委托者。例如,可以用電子消息將會話密鑰發送到受委托者。可以將會話密鑰直接或間接提供給受委托者。例如,會話密鑰可以被給予委托者,且委托者可以負責將會話密鑰提供給一個或多個受委托者。也可以將其它信息提供給受委托者。例如,可以將會話參數提供給受委托者以使受委托者能夠給會話參數提供簽名,從而使會話參數的接收器(例如,驗證器)產生預期簽名以驗證所提供簽名是否有效。例如,接收器可以使用參數以從秘密證書或從秘密證書導出的密鑰來產生會話密鑰且使用所述會話密鑰以產生對應簽名消息的規范化版本的簽名。一般來說,參數可以任何合適的方式提供給簽名的接收器以使接收器能夠驗證消息簽名,且如果接收器獨立于受委托者訪問參數,那么受委托者不一定需要訪問參數。
例如,圖23示出了圖2300,其示出了可以如何多次委托特權。委托者2302可以希望授予受委托者2304一個或多個訪問特權。然而,在這個實例中,受委托者2304可以希望將一個或多個特權提供給另一受委托者2306。因此,在這個實例中,受委托者2304可以成為委托者。類似地,受委托者2306可以希望向另一受委托者提供訪問,且所述受委托者可以希望將訪問授予另一受委托者(以此類推)直到最終授予又一受委托者2308一個或多個特權為止。
因此,在這個實例中,初始委托者2302提交對可以是故障區的服務的基于會話的認證服務2310的委托請求,如上文描述的。在實施方案中,諸如上文結合圖22描述的,作為響應,基于會話的認證服務產生會話密鑰并將會話密鑰提供給委托者2302。在實施方案中,委托者2302然后將接收自基于會話的認證服務2310的會話密鑰提供給受委托者2304。受委托者2304可以將會話密鑰提供給另一受委托者2306。以此方式,受委托者2306將接收由受委托者2304接收的特權范圍,受委托者2304接收的特權范圍將與提供給受委托者2306的特權范圍相同。
然而,仍如圖23中示出,受委托者2304可以提交對基于會話的認證服務2310的委托請求并接收響應于委托請求而由基于會話的認證服務2310產生的不同會話密鑰。受委托者2304可以將這個新會話密鑰提供給下一個受委托者2306。所述下一個受委托者2306可以將會話密鑰提供給又一受委托者,或如上文描述也可以提交對基于會話的認證服務2310的委托請求,基于會話的認證服務2310將然后產生會話密鑰并將會話密鑰提供給提交委托請求的受委托者2306。如圖23中指示,這可以繼續且受委托者中的一個或多個可以嘗試使用他或她已接收的會話密鑰。
在這個特定實例中,受委托者2308結合請求將會話密鑰提供給計算資源2312。如上文,雖然所述請求可以包括會話密鑰,但是會話密鑰可以獨立于所述請求而提供。計算資源2312可以是上文描述的計算資源中的任何一個或一般來說任何計算資源。策略管理服務2314可以包括驗證器,諸如上文描述,且當請求計算資源時可以使確認請求。雖然圖23中單獨示出,但是計算資源2312和策略管理服務2314也可以是單個組件。此外,雖然圖23示出了用來產生會話密鑰的單個基于會話的認證服務2310,但是各個實施方案也可以使用不同的基于會話的認證服務。
如上文提及,除了本文提供的說明性實例以外的多種變動被認為在本公開的范圍內。圖24示出表示根據實施方案的可以使用來自多次授權的密鑰導出密鑰的方式的說明性實例的圖2400。在圖23中,客戶密鑰kcust是來自由計算資源供應商維持的一組客戶密鑰。正如上文描述的實施方案,雖然圖23結合計算資源供應商討論了說明性實例,但是其它變動也被認為在本公開的范圍內。
在圖24中,維持一組授權密鑰,其中每個授權密鑰對應于不同的授權域。從客戶密鑰kcust導出的每個授權密鑰可以(例如)傳播到不同故障區,諸如上文描述的。故障區可以是(例如)不同策略管轄區中的數據中心。然而,應注意,雖然圖24示出了每個分開的授權密鑰從單個客戶密鑰kcust導出,但是也可能存在變動。例如,可以獨立地導出分開的授權密鑰。作為另一實例,可以從公用密鑰導出一個或多個分開的授權密鑰,可以從另一公用密鑰導出一個或多個其它密鑰(等)。
在實施方案中,多次授權能夠組合授權以允許訪問一個或多個計算資源。例如,如圖24中示出,分開的授權密鑰的子集合可以用來導出其它密鑰。例如,如圖23中示出,標記為auth1和auth2的兩個授權密鑰用來導出合并的授權密鑰。在實施方案中,為了導出合并的授權密鑰,計算hmac(f(auth1,auth2),r)的值,其中r是某種限制,諸如上文描述的。在這個實例中,f是分開的授權密鑰的函數,且可以是二維以上。例如,如圖23中示出,在函數f(auth1,auth2,auth3)中使用三個分開的授權密鑰auth1、auth2和auth3以依據(或以其它方式至少部分基于)hmac(f(auth1,auth2,auth3),r)計算合并的授權密鑰。
從不同授權構造密鑰的多種變動被認為在本公開的范圍內。例如,授權可以使用本公開的各個實施方案產生(或已產生)密鑰(kspec)。每個授權kspec可以對應于部分密鑰種子,其可以是用來產生其kspec的限制的可公開使用編碼(或以其它方式可用于消息簽名器和簽名驗證器的編碼)。例如,部分密鑰種子可以是(k1/20110810/usa-east-1/dds、k2/20110810/org_name/jp1/dds),其中斜線之間的每個字符串是限制。信息的這種編碼可以稱為密鑰路徑。作為更一般實例,部分密鑰種子可以是x1/.../xn,其中每個xi(對于1與n之間的i)對應于參數,諸如上文描述的參數。來自可應用授權的部分密鑰種子可以被編碼為稱為密鑰種子的n元組。剛剛上面實例的n元組可以是(spec1、spec2、...、specn),其中每一項是對應kspec的密鑰路徑。應注意,密鑰種子(和/或密鑰路徑)編碼密鑰持有人正通過產生簽名/密鑰而進行授權的精確密鑰使用(所有被授權密鑰之間的全限制)。此外,由于部分密鑰種子可用于消息簽名器和簽名驗證器兩者,因為(例如)消息簽名器具有指定使用參數產生簽名密鑰的次序的信息且因此可產生密鑰并因此產生消息,所以用來產生密鑰和簽名的參數的任意排序是可能的。
然后可以針對可應用授權中的每個(即,將產生密鑰的授權)獲得或計算hmac(kspec,key-seed)的值。在各個實施方案中,這個值可以由獲得簽名密鑰以簽名消息的客戶端而計算或可以由另一裝置計算且隨后提供給客戶端。出于下列討論目的,可以將這些值中的每個稱作部分密鑰。在實施方案中,這些部分密鑰中的每個的語義是:它們只有在與下面的構造(和下面的構造的某些變動)相結合時才有效且當結合時形成以密鑰種子編碼的專門化交集。
為了產生簽名密鑰以簽名消息,值是
ks=hmac(partial_key1+...+partial_keyn,key-seed)
其中“+”可以指對公式中的該符號周圍的部分密鑰的某種關聯運算。“+”符號可以是(例如)對包括部分密鑰的位的異或(xor)運算。“+”符號也可以指某種其它合適的運算或函數。
為了驗證用來簽名消息的簽名,驗證器可以獲得每個部分密鑰、如上組合部分密鑰以形成簽名密鑰、簽名所接收的消息并比較該結果與預期結果以驗證簽名,諸如上文討論的。
本公開的實例實施方案可根據以下條款加以描述:
條款1.一種用于提供服務的計算機實施方法,其包括:
在以可執行指令配置的一個或多個計算機系統的控制下,
從認證方接收電子信息,所述電子信息編碼消息、所述消息的簽名和對從與所述認證方共享的秘密證書導出的密鑰的一個或多個限制的集合,所述簽名可通過對所述消息、所述秘密證書和一個或多個限制的所述集合應用基于哈希的消息認證代碼函數而確定,而且在只具有基于哈希的消息認證代碼函數而沒有一個或多個限制的所述集合時無法確定;
獲得至少部分使用一個或多個限制的所述集合的至少子集而產生的密鑰;
通過至少將以下項輸入至所述基于哈希的消息認證代碼函數中而由所述一個或多個計算機系統計算基于哈希的消息認證代碼函數的值:
至少部分基于所獲得的密鑰的第一輸入;和
至少部分基于一個或多個限制的所述集合的第二輸入;
由所述一個或多個計算機系統且至少部分基于所計算的值確定所述簽名是否有效;和
在確定所述簽名有效時提供對一個或多個計算資源的訪問。
條款2.根據條款1所述的計算機實施方法,其中:
所述消息包括訪問所述一個或多個計算資源的請求;
所述方法還包括確定一個或多個限制的所述集合是否指示應滿足所述請求;和
取決于確定限制指示應滿足所述請求而提供對所述一個或多個計算資源的訪問。
條款3.根據條款2所述的計算機實施方法,其中編碼一個或多個限制的所述集合的所述信息由文檔加以編碼且其中確定限制的所述集合是否指示應滿足所述請求包括針對接收所述請求的情境評估所述文檔。
條款4.根據條款1所述的計算機實施方法,其中:
所述消息包括訪問所述一個或多個計算資源的計算資源的請求;
編碼一個或多個限制的所述集合的所述信息包括指定所述計算資源的信息;和
提供對所述一個或多個計算資源的訪問包括在計算資源匹配所指定的計算資源時提供對所述計算資源的訪問。
條款5.根據條款1所述的計算機實施方法,其中:
編碼一個或多個限制的所述集合的所述消息對應于所述消息有效的時間段;且
確定所述簽名是否有效的步驟至少部分基于在所述對應時間段期間所述消息是否被提交。
條款6.根據條款1所述的計算機實施方法,其中:
編碼一個或多個限制的所述集合的所述消息對應于至少部分基于位置的限制;且
確定所述簽名是否有效是至少部分基于所述一個或多個計算機中的至少一個的位置是否匹配對應的位置。
條款7.一種用于提供服務的計算機實施方法,其包括:
在以可執行指令配置的一個或多個計算機系統的控制下,
獲得編碼以下各項的電子信息:(i)消息;(ii)所述消息的第一簽名;和(iii)一個或多個參數的集合,所述第一簽名已經至少部分基于(i)所述消息、(ii)秘密證書和(iii)一個或多個參數的所述集合而產生,而且所述第一簽名在只具有所述消息和所述秘密證書而不具有一個或多個參數的所述集合時無法確定;
至少部分基于所述秘密證書和一個或多個參數的所述集合的至少子集導出第二證書;
至少部分基于所導出的第二證書產生第二簽名;
確定所述第一簽名是否匹配所述第二簽名;和
在所產生的第二簽名匹配所述第一簽名時提供對一個或多個計算資源的訪問。
條款8.根據條款7所述的計算機實施方法,其中導出所述第二證書包括將所述秘密證書和一個或多個參數的所述集合的所述至少子集輸入至函數中。
條款9.根據條款8所述的計算機實施方法,其中所述函數是對稱消息認證函數。
條款10.根據條款9所述的計算機實施方法,其中所述對稱消息認證函數是哈希函數。
條款11.根據條款9所述的計算機實施方法,其中,作為基于哈希的消息認證代碼(hmac)的部分,執行將所述秘密證書和一個或多個參數的所述至少子集輸入至所述函數中。
條款12.根據條款8所述的計算機實施方法,其中產生所述第二簽名包括將所述函數的輸出和來自一個或多個參數的所述集合的參數兩者輸入至所述函數中。
條款13.根據條款7所述的計算機實施方法,其中編碼所述一個或多個參數的所述消息包括編碼一個或多個參數的所述集合的電子文檔。
條款14.根據條款8所述的計算機實施方法,其中:
產生所述第二簽名的步驟至少部分基于密鑰;
一個或多個參數的所述集合包括所述密鑰的使用上的一個或多個限制;和
根據所述一個或多個限制執行提供對所述一個或多個計算資源的訪問。
條款15.根據條款14所述的計算機實施方法,其中所述密鑰至少部分基于將所述秘密證書輸入至函數中的結果。
條款16.一種具有存儲在其上的指令的非瞬時性計算機可讀存儲介質,所述指令在由計算機系統執行時促使所述計算機系統至少進行以下各項:
獲得從至少秘密證書和用于中間密鑰的一個或多個參數中導出的所述中間密鑰;
至少部分基于所獲得的中間密鑰來應用產生消息的簽名的簽名產生過程的至少部分,所述簽名產生過程被配置成使得所述簽名對于具有所述消息、所述秘密證書和所述簽名但是缺少所述一個或多個限制的計算裝置而言是無法由所述簽名產生過程確定的;和
將所述消息、所述簽名和所述一個或多個參數提供給被配置來至少部分基于所述一個或多個參數和所述消息分析所述簽名的另一計算機系統以確定所述簽名是否有效。
條款17.根據條款16所述的非瞬時性計算機可讀存儲介質,其中所述一個或多個參數編碼至少部分由所述另一計算機系統實施的所述中間密鑰的使用上的一個或多個限制。
條款18.根據條款16所述的非瞬時性計算機可讀存儲介質,其中所述一個或多個限制對應于所述中間密鑰可使用所在的時間段、所述中間密鑰可使用所在的位置和所述中間密鑰可用于獲得訪問的一個或多個服務中的至少一個。
條款19.根據條款16所述的非瞬時性計算機可讀存儲介質,其中所述指令在由所述計算機系統執行時使所述計算機系統能夠產生所述簽名而無需所述計算機系統具有對所述秘密證書的訪問。
條款20.根據條款19所述的非瞬時性計算機可讀存儲介質,其中在具有一個或多個參數的所述集合的情況下,所述簽名可使用所述共享秘密證書或所述中間密鑰由所述簽名產生過程確定。
條款21.根據條款19所述的非瞬時性計算機可讀存儲介質,其中獲得所述中間密鑰包括執行算法,在所述算法中將哈希函數的至少一個輸出和所述參數中的至少一個輸入至所述哈希函數中。
條款22.一種計算機系統,其包括:
一個或多個處理器;和
包括指令的存儲器,所述指令在由計算機系統的一個或多個處理器執行時促使所述計算機系統至少進行以下各項:
接收一個或多個電子通信,所述一個或多個電子通信共同地編碼消息、所述消息的簽名和一個或多個參數,所述簽名是至少部分基于所述秘密證書和所述一個或多個參數而產生的;
至少部分基于所述一個或多個參數和中間證書來分析所述消息和所述簽名以確定所述簽名是否有效,其中,從所述一個或多個參數的至少部分和所述秘密證書,但是在沒有所述秘密證書的情況下,導出所述中間證書;和
取決于確定所述簽名是有效的而采取一個或多個行動。
條款23.根據條款22所述的計算機系統,其中:
所述存儲器和所述一個或多個處理器是第一地理位置中的第一服務器系統的部分;
所述計算機系統包括第二地理位置中的第二服務器系統,所述第二服務器系統被配置來至少部分基于所述秘密證書產生不同的簽名;
所述第一服務器系統和所述第二服務器系統均缺少所述秘密證書;
分析所述消息和所述簽名包括將所述一個或多個參數的所述至少部分和所述中間證書輸入至函數中;和
所述第一服務器系統和所述第二服務器系統各自缺少信息,從所述信息可使用所述函數從所述消息中產生相同簽名。
條款24.根據條款22所述的計算機系統,其中:
所述計算機系統對應于服務;且
所述一個或多個行動包括提供對所述服務的訪問。
條款25.根據條款24所述的計算機系統,其中所述一個或多個參數限制使用所述中間證書用于訪問所述服務。
條款26.根據條款22所述的計算機系統,其中:
分析所述消息和所述簽名包括對所述中間證書應用哈希函數;
所述一個或多個參數包括所述中間證書的使用上的多個限制;且
其中所述計算機系統被配置來實施所述限制。
條款27.根據條款22所述的計算機系統,其中:
分析所述消息和所述簽名包括對從所述秘密證書導出的密鑰應用哈希函數;且
所述指令在由所述計算機系統的所述一個或多個處理器執行時促使所述計算機系統進一步從密鑰授權計算機系統接收所導出的密鑰。
條款28.根據條款27所述的計算機系統,其中促使所述計算機系統進一步從所述密鑰授權計算機系統接收所導出的密鑰的所述指令促使所述計算機系統在接收所述消息之前從所述密鑰授權計算機系統接收所導出的密鑰。
條款29.根據條款22所述的計算機系統,其中所述中間證書由不同于所述計算機系統的另一計算機系統確定。
各個實施方案還可以在各種各樣的操作環境中實施,在一些情況中所述操作環境可包括可用于操作任何數量的應用的一個或多個用戶計算機、計算裝置或處理裝置。用戶或客戶端裝置可包括任何數量的通用個人計算機,諸如運行標準操作系統的桌上型或膝上型計算機和運行移動軟件且能夠支持多種聯網和消息傳遞協議的蜂窩裝置、無線裝置和手持裝置。這種系統也可包括運行任何種類的商購操作系統和其它已知應用的多個工作站以用于諸如研發和數據庫管理的目的。這些裝置也可包括其它電子裝置,諸如虛擬終端、瘦客戶端、游戲系統和能夠經由網絡進行通信的其它裝置。
大部分實施方案利用為本領域一般技術人員所熟悉的用于支持使用任何種類的商購協議(諸如tcp/ip、osi、ftp、upnp、nfs、cifs和appletalk)進行通信的至少一個網絡。網絡可能是(例如)局域網、廣域網、虛擬專用網絡、互聯網、內部網、外部網、公用電話交換網、紅外線網絡、無線網絡和其任何組合。
在利用網頁服務器的實施方案中,網頁服務器可運行任何種類的服務器或中間層應用,包括http服務器、ftp服務器、cgi服務器、數據服務器、java服務器和商用服務器。服務器也可以能夠響應于來自用戶裝置的請求而執行程序或腳本,諸如通過執行一個或多個網頁應用,所述網頁應用可以被實施為以任何編程語言(諸如
如上文討論,所述環境可包括各種數據存儲和其它存儲器和存儲介質。這些可駐留在各個位置中,諸如近距計算機中的一個或多個(和/或駐留在計算機中的一個或多個中)或跨網絡遠距計算機中的任何一個或所有的存儲介質上。在特定的實施方案集中,信息可以駐留在本領域一般技術人員所熟悉的存儲區域網(“san”)中。類似地,可以酌情地本地和/或遠程存儲用于執行專屬于計算機、服務器或其它網絡裝置的功能的任何必要文件。如果系統包括計算化裝置,那么每個這樣的裝置可包括可以經由總線電耦接的硬件元件,所述元件包括(例如)至少一個中央處理單元(cpu)、至少一個輸入裝置(例如,鼠標、鍵盤、控制器、觸摸屏或小鍵盤)和至少一個輸出裝置(例如,顯示裝置、打印機或揚聲器)。這樣的系統也可以包括一個或多個存儲裝置,諸如硬盤驅動器、光學存儲裝置和固態存儲裝置,諸如隨機存取存儲器(“ram”)或只讀存儲器(“rom”)和可移除介質裝置、存儲卡、快閃卡等。
這些裝置也可包括如上文描述的計算機可讀存儲介質閱讀器、通信裝置(例如,調制解調器、網卡(無線或有線)、紅外線通信裝置等)和工作存儲器。計算機可讀存儲介質閱讀器可鏈接或被配置來接收計算機可讀存儲介質,其表示遠程、本地、固定和/或可移除存儲裝置和用于瞬時和/或更永久地包括、存儲、傳輸和檢索計算機可讀信息的存儲介質。系統和各種裝置通常也將包括多種軟件應用、模塊、服務或位于至少一個工作存儲器裝置內的其它元件(包括操作系統和應用程序,諸如客戶端應用或網頁瀏覽器)。應明白,替代實施方案可以具有自上文描述的多種變動。例如,也可能使用定制硬件和/或可能在硬件、軟件(包括便攜式軟件、諸如小應用)或兩者中實施特定元件。此外,可以采用到其它計算裝置的連接,諸如網絡輸入/輸出裝置。
用于包括代碼或代碼部分的存儲介質和計算機可讀介質可包括本領域中已知或使用的任何適當的介質,包括存儲介質和通信介質,諸如(但不限于)以任何方法或技術實施的用于存儲和/或傳輸信息(諸如計算機可讀指令、數據結構、程序模塊或其它數據)的易失性和非易失性、可移動和不可移動介質(包括ram、rom、eeprom、快閃存儲器或其它存儲器技術、cd-rom、數字通用光盤(dvd)或其它光學存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲裝置或可用來存儲所希望的信息并可由系統裝置訪問的任何其它介質)。基于本文提供的公開和教學,本領域一般技術人員應明白實施各個實施方案的其它方式和/或方法。
說明書和附圖因此被視為具有說明性意義而不是限制性意義。然而,明顯的是,可以在不違背如權利要求中陳述的本發明的更廣泛精神和范圍的情況下作出各種修改和改變。
其它變動是在本公開的精神內。因此,雖然所公開的技術可具有各種修改和替代結構,但是也在附圖中示出了且在上文詳細描述了其某些示出的實施方案。然而,應了解,不旨在將本發明限于所公開的一種或多種具體形式,反而本發明旨在涵蓋落在如隨附權利要求中定義的本發明的精神和范圍內的所有修改、替代結構和等效物。
除非本文另有指示或上下文明顯矛盾,否則術語“a(一)”和“an(一個)”和“the(所述)”和描述公開實施方案的上下文(尤其是下列權利要求的上下文)中的類似參考符號的使用均被解釋為涵蓋單數和復數兩者。除非另有提及,否則術語“comprising(包括)”、“having(具有)”、“including(包括)”和“containing(包括)”均被解釋為開放式術語(即,意指“包括但不限于”)。即使存在某種干預,術語“connected(已連接)”仍被解釋為部分或全部包括在內、附接到或連結在一起。除非本文另有指示,否則本文的值范圍的敘述只旨在用作個別參考落在所述范圍內的每個單獨值的速記方法,且每個單獨值如同其在本文被個別敘述一樣而合并在說明書中。除非本文另有指示或上下文明顯矛盾,否則本文描述的所有方法均以任何合適的次序加以執行。除非另有說明,否則本文提供的任何和所有實例或示例性語言(例如,“諸如”)的使用只旨在更好地闡述本發明的實施方案且沒有強加限制本發明的范圍。說明書中應沒有任何語言被解釋為指示實踐本發明所必需的任何未說明元件。
本文描述了本公開的優選實施方案,包括發明者已知用于實行本發明的最佳模式。本領域一般技術人員在閱讀前文描述之后可以更加明白所述優選實施方案的變動。發明者希望本領域一般技術人員酌情采用這些變動,且發明者希望以其它方式而不是如本文具體描述般實踐本發明。因此,本發明包括隨附于本發明的權利要求中敘述且適用法律允許的主題的所有修改和等效物。此外,除非本文另有指示或上下文明顯矛盾,否則本發明的所有可能變動中的上述元件的任何組合包括在本發明中。
本文敘述的所有參考物(包括出版物、專利申請和專利)以引用的方式以與每個參考被個別且具體指示成以引用方式并入且在本文全部陳述的相同程度并入本文。