基于參數(shù)的密鑰推導(dǎo)的制作方法
【專利摘要】本發(fā)明公開了用于從認(rèn)證方與認(rèn)證者之間共享的秘密證書認(rèn)證產(chǎn)生密鑰的系統(tǒng)和方法。密鑰的產(chǎn)生可以涉及利用專業(yè)信息,其由于用來產(chǎn)生密鑰而使所產(chǎn)生的密鑰可用的使用范圍小于秘密證書。此外,密鑰產(chǎn)生可以涉及函數(shù)的多次調(diào)用,其中所述函數(shù)的調(diào)用的至少子集中的每個產(chǎn)生密鑰,所述密鑰具有小于從所述函數(shù)的先前調(diào)用產(chǎn)生的密鑰的可允許使用范圍。所產(chǎn)生的密鑰可以用作簽名密鑰以簽名消息。取決于消息和/或提交消息的方式是否遵守密鑰使用的限制,可以采取一個或多個行動。
【專利說明】基于參數(shù)的密鑰推導(dǎo)
[0001]相關(guān)申請的交叉參考
[0002]本申請主張以下各專利申請的優(yōu)先權(quán):2011年9月29日提交,名為“PARAMETERBASED KEY DERIVATION” 的第 13/248,962 號(代理人檔案號 90204-813889 (029400PC))美國專利申請;2011 年9 月 29 日提交,名為 “TECHNIQUES FOR CLIENT CONSTRUCTEDSESSIONS”的第13/248,953號(代理人檔案號90204-818478 (032300US))美國專利申請;以及 2011 年 9 月 29 日提交,名為 “KEY DERIVATION TECHNIQUES” 的第 13/248,973 號(代理人檔案號90204-813890 (029500US))美國專利申請,所述申請的全部公開以引用的方式并入本文。
[0003]背景
[0004]計算環(huán)境采用許多形式。作為實例,組織常常利用計算裝置網(wǎng)絡(luò)為其用戶提供一組穩(wěn)定服務(wù)。網(wǎng)絡(luò)常??缭蕉鄠€地理邊界且常常與其它網(wǎng)絡(luò)連接。例如,組織可以使用計算資源的內(nèi)部網(wǎng)絡(luò)和由其它組織管理的計算資源兩者支持其操作。例如,組織的計算機(jī)可以與其它組織的計算機(jī)通信以在使用另一組織的服務(wù)時訪問和/或提供數(shù)據(jù)。在許多情況中,組織使用由其它組織管理的硬件來配置和操作遠(yuǎn)程網(wǎng)絡(luò),從而減少基礎(chǔ)設(shè)施成本并且獲得其它優(yōu)點。
[0005]雖然已經(jīng)證明多樣的計算環(huán)境有用于各種應(yīng)用,但是這些環(huán)境存在許多挑戰(zhàn)。例如,配置計算機(jī)資源以促成一個組織目標(biāo)可能不利影響另一組織目標(biāo)的促成。例如,計算資源安全的有效管理可能常常以有效訪問數(shù)據(jù)和服務(wù)為代價。平衡安全和效率的目標(biāo)可能極具挑戰(zhàn)性,這常常需要重大努力和資源。
[0006]附圖簡述
[0007]圖I示出了根據(jù)至少一個實施方案的可用于實施本公開的各個方面的計算環(huán)境的說明性實例。
[0008]圖2示出了根據(jù)至少一個實施方案的包括管理多個故障區(qū)的計算資源供應(yīng)商的環(huán)境的說明性實例。
[0009]圖3示出了根據(jù)至少一個實施方案的圖2的故障區(qū)內(nèi)部的環(huán)境的說明性實例。
[0010]圖4示出了根據(jù)至少一個實施方案的可用于支持環(huán)境(如圖3中示出的環(huán)境)的計算資源配置的說明性實例。
[0011]圖5是根據(jù)至少一個實施方案的示出其中參與計算環(huán)境的各個元件可被分配不同范圍的授權(quán)的示例性方式的圖。
[0012]圖6是根據(jù)至少一個實施方案的示出可以在消息簽名驗證過程中在參與者之間傳遞信息的示例性方式的圖。
[0013]圖7是根據(jù)實施方案的示出了用于簽名消息的過程的說明性實例的流程圖;
[0014]圖8是根據(jù)至少一個實施方案的示出了用于簽名驗證的過程的說明性實例的流程圖;
[0015]圖9是根據(jù)至少一個實施方案的示出了分配密鑰的示例性方式的圖;
[0016]圖10是根據(jù)至少一個實施方案的示出了以提供各種授權(quán)范圍的方式分配密鑰的示例性方式的圖;
[0017]圖11是根據(jù)至少一個實施方案的示出了密鑰導(dǎo)出的過程的說明性實例的流程圖;
[0018]圖12是根據(jù)至少一個實施方案的示出了多重限制密鑰導(dǎo)出的圖;
[0019]圖13是根據(jù)至少一個實施方案的用于導(dǎo)出簽名的函數(shù)的說明性實例;
[0020]圖14是根據(jù)至少一個實施方案的可以如何執(zhí)行并使用多密鑰導(dǎo)出的說明性實例;
[0021]圖15是根據(jù)至少一個實施方案的示出了其中可以導(dǎo)出密鑰的示例性方式的圖;
[0022]圖16是根據(jù)至少一個實施方案的示出了其中可以導(dǎo)出密鑰的另一示例性方式的圖;
[0023]圖17是根據(jù)至少一個實施方案的示出了其中可以導(dǎo)出密鑰的又一示例性方式的圖;
[0024]圖18是根據(jù)至少一個實施方案的示出了用于啟動會話的過程的說明性實例的流程圖;
[0025]圖19是根據(jù)至少一個實施方案的示出了用于產(chǎn)生會話密鑰的過程的說明性實例的流程圖。
[0026]圖20是根據(jù)至少一個實施方案的示出了用于在會話期間獲得對一個或多個計算資源的訪問的過程的說明性實例的流程圖;
[0027]圖21是根據(jù)至少一個實施方案的示出了用于確定是否授予請求訪問一個或多個計算資源的過程的說明性實例的流程圖;
[0028]圖22是根據(jù)至少一個實施方案示出了用于委托授權(quán)的過程的說明性實例的流程圖;
[0029]圖23是根據(jù)至少一個實施方案的表示多次授權(quán)委托的說明性實例的圖;
[0030]圖24是表示其中可以使用來自多次授權(quán)的密鑰導(dǎo)出密鑰的方式的說明性實例的圖。
[0031]詳述
[0032]在以下描述中將描述各個實施方案。出于解釋的目的,陳述具體配置和細(xì)節(jié)以提供對實施方案的透徹理解。然而,本領(lǐng)域一般技術(shù)人員也將明白,所述實施方案可以在沒有具體細(xì)節(jié)的情況下實踐。此外,可省略或簡化熟知特征以免模糊所述實施方案。
[0033]本文所述和建議的技術(shù)包括根據(jù)各個實施方案的用于密鑰產(chǎn)生的系統(tǒng)和方法。密鑰可用于各種目的,諸如消息簽名方案中的認(rèn)證和參與。在實施方案中,計算資源供應(yīng)商至少部分基于從服務(wù)的用戶裝置接收的電子請求而將計算服務(wù)提供給客戶。服務(wù)可以是可提供的任何合適的服務(wù),包括(但不限于)訪問數(shù)據(jù)、訪問計算資源以執(zhí)行操作、訪問數(shù)據(jù)存儲服務(wù)等等。
[0034]為了保證以安全方式提供服務(wù),本公開的各個實施方案利用多種技術(shù)以認(rèn)證請求(也稱為“消息”)以保證請求是合法的。在實施方案中,使用哈希消息認(rèn)證代碼(HMAC)算法或其它合適的算法來認(rèn)證請求,如下文更詳細(xì)討論的。
[0035]在實施方案中,認(rèn)證方(例如,服務(wù)的用戶或代表用戶行動的一方)和認(rèn)證者(例如,服務(wù)供應(yīng)商或代表供應(yīng)商行動的一方)兩者共享可以稱為密鑰的秘密證書。認(rèn)證者可以存儲共享的秘密證書以用于多個用戶。作為交易的部分,認(rèn)證方可以使用共享的秘密證書簽名請求,從而形成簽名。簽名可以請求的形式被提供給認(rèn)證者。認(rèn)證者可以使用其本身的共享的秘密證書的副本以產(chǎn)生用于所接收的請求的簽名,且通過比較所產(chǎn)生的簽名是否匹配所接收的簽名(例如通過與所接收的簽名相同)來確定所述請求是否是使用共享的秘密證書進(jìn)行簽名。如果確定請求是使用共享的秘密證書進(jìn)行簽名,那么請求可以視為真實的,且因此可以確定應(yīng)滿足請求。
[0036]因為以上交互是對稱的(B卩,扮演其角色時均利用共同信息),所以認(rèn)證者持有的共享的秘密證書可用于對認(rèn)證方認(rèn)證或代表其行動兩者。結(jié)果,希望高度安全地保護(hù)這些證書。維持高度安全性可能具有負(fù)面性能和可用性后果。例如,維持高度安全性可以包括維持集中式系統(tǒng)用于密鑰存儲。然而,這些集中式系統(tǒng)可能由于用戶和/或服務(wù)的添加對集中式系統(tǒng)造成更大負(fù)擔(dān)而造成擴(kuò)展瓶頸。如果這種集中式系統(tǒng)出現(xiàn)故障,那么可能難以或不可能認(rèn)證請求。因此,集中化提供安全性的優(yōu)點和服務(wù)的擴(kuò)展和可用性的缺點二者。
[0037]在實施方案中,通過利用由共享秘密證書工件(artifact)導(dǎo)出的簽名協(xié)議而減少這些系統(tǒng)(和其它系統(tǒng))的負(fù)面影響,所述共享秘密證書工件可以用來證明認(rèn)證方具有共享秘密證書且因此可能被授權(quán)來獲得以工件簽名的請求中指定的訪問。在實施方案中,這些工件是通過配置認(rèn)證者計算機(jī)系統(tǒng)以接受至少部分基于共享證書的導(dǎo)出而不是共享證書本身的值作為簽名而獲得。共享證書的導(dǎo)出可能使得(如下文更完整描述)導(dǎo)出不允許實際確定共享證書。
[0038]例如,在實施方案中,認(rèn)證方能夠用以下項來對簽名進(jìn)行簽名,
[0039]HMAC (M, HMAC (X,credential))
[0040]其中M是消息,且HMAC (X,credential)是從共享秘密證書導(dǎo)出的工件。X的值可以是認(rèn)證方和認(rèn)證者雙方兩者已知的某個值,且可以公用。例如,X可以是以預(yù)定方式編碼的當(dāng)前日期,以保證由認(rèn)證方和認(rèn)證者始終計算HMAC (X, credential).作為另一實例,X可以是工件可用的服務(wù)的識別符。作為另一實例,X可以編碼多個語義意義且可以認(rèn)證方和認(rèn)證者雙方始終計算工件的方式提供。語義意義可以是密鑰的使用的限制,包括指示不應(yīng)使用形成密鑰的其它推導(dǎo)的意義。結(jié)合本段的先前實例,X可以編碼為“20110825/DDS”,其中斜線左邊的字符串表示日期且斜線右邊的字符串表示用X計算的工件可用的服務(wù)名。一般來說,X可以是始終編碼用于認(rèn)證方和認(rèn)證者兩者的任何值或任何值集合。應(yīng)注意,如下文討論可使用除了 HMAC函數(shù)以外的其它合適函數(shù)。
[0041]返回到利用HMAC的實例,在實施方案中,選取X值以提供額外優(yōu)點。如提及,X可以(但非必需)對應(yīng)于一個或多個語義意義。在實施方案中,使用諸如時戳、服務(wù)名、地區(qū)名等等的語義意義以提供其中根據(jù)本公開的技術(shù)產(chǎn)生的工件對由X導(dǎo)出的密鑰的使用提供對應(yīng)限制的系統(tǒng)。以此方式,即使所產(chǎn)生的密鑰泄露可以允許由不希望的多方認(rèn)證,用來編碼密鑰的限制仍允許在泄露密鑰時最小化不利影響。作為實例,用來導(dǎo)出密鑰的時間限制為系統(tǒng)提供了有效方式以核對所提交的簽名是否是以在簽名提交時有效的密鑰簽名。作為具體實例,如果當(dāng)前日期用來導(dǎo)出密鑰且認(rèn)證者系統(tǒng)只接受當(dāng)前日期提交的簽名,那么認(rèn)證者系統(tǒng)將確定使用以不同日期導(dǎo)出的密鑰產(chǎn)生的簽名是無效的。類似地,以特定服務(wù)的識別符導(dǎo)出的密鑰與另一服務(wù)一起使用時將是無效的。下文提供了其它實例。
[0042]如提及,本公開的各種技術(shù)允許使用多個參數(shù)導(dǎo)出密鑰。在實施方案中,密鑰是通過多重使用HMAC函數(shù)由多個參數(shù)而導(dǎo)出。例如,可以依據(jù)以下項計算密鑰:
[0043]Ks=HMAC (...HMAC (HMAC (HMAC (K, P1),P2),P3)...,Pn)
[0044]其中K是共享的秘密證書和Pi是參數(shù)。密鑰Ks可以用于產(chǎn)生簽名,諸如:
[0045]S=HMAC (Ks, M)
[0046]其中M是消息,其可以被規(guī)范化。以此方式,密鑰是以分層方式而導(dǎo)出,從而允許將密鑰的部分導(dǎo)出傳遞到分布式系統(tǒng)的各個組件。例如,Kpi=HMAC(K,P1)可以被計算并傳遞到分布式系統(tǒng)的一個或多個組件。接收Kpi的組件可以計算Kp2=HMAC (KP1,P2),其中P2對于每個組件而言可以相同或?qū)τ谝恍┗蛩薪M件而言可以不同。由各個組件計算的Kp2的值可以將計算傳遞到分布式系統(tǒng)中可以計算KP3=HMAC(KP2,P3)的其它組件。每個組件可以緩存其計算的結(jié)果和由其它組件計算的可能結(jié)果。以此方式,因為可以由分布式系統(tǒng)的其它組件執(zhí)行所導(dǎo)出密鑰的計算,所以可以對存儲共享的秘密密鑰的數(shù)據(jù)存儲裝置提供更高安全性。
[0047]本公開的技術(shù)也提供了會話的啟動。例如,如所討論,共享的秘密證書和一個或多個參數(shù)可以用來導(dǎo)出密鑰。因此,會話參數(shù)可以用于產(chǎn)生可以在會話期間使用的證書。證書可以由做出請求的用戶或(在一些實施方案中)由證書被傳遞至且已委托訪問一個或多個計算資源的用戶來使用。在這些實例中,因為這種訪問的受委托者使用從共享的秘密證書導(dǎo)出的密鑰但是沒有使用共享的秘密證書本身,所以維持高的安全級別且防止由受委托者未來使用而無需更迭共享的秘密證書。如下問更詳細(xì)討論,受委托者也可以成為使用本公開的技術(shù)的委托者,其中的許多技術(shù)在下文更詳細(xì)描述。
[0048]圖1示出了根據(jù)各個實施方案的實施本公開的各個方面的示例性環(huán)境100的各個方面。如應(yīng)明白,雖然出于解釋目的而使用基于網(wǎng)頁的環(huán)境,但是也可以酌情使用不同環(huán)境以實施各個實施方案。環(huán)境包括電子客戶端裝置102,其可以包括可操作來通過適當(dāng)?shù)木W(wǎng)絡(luò)104發(fā)送并接收請求、消息或信息且將信息傳達(dá)返回到裝置的用戶的任何適當(dāng)?shù)难b置。這些客戶端裝置的實例包括個人計算機(jī)、手機(jī)、手持通訊裝置、膝上型計算機(jī)、機(jī)頂盒、個人數(shù)據(jù)助理、電子書閱讀器等。網(wǎng)絡(luò)可包括任何適當(dāng)?shù)木W(wǎng)絡(luò),包括內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)、蜂窩網(wǎng)絡(luò)、局域網(wǎng)或任何其它這樣的網(wǎng)絡(luò)或其組合。用于這種系統(tǒng)的組件可至少部分取決于所選擇的網(wǎng)絡(luò)和/或環(huán)境的類型。用于經(jīng)由這種網(wǎng)絡(luò)進(jìn)行通信的協(xié)議和部件是眾所周知的且將不會在本文詳細(xì)討論。通過網(wǎng)絡(luò)進(jìn)行的通信可由有線或無線連接和其組合實現(xiàn)。在這個實例中,雖然當(dāng)環(huán)境包括用于接收請求并響應(yīng)于請求而服務(wù)于內(nèi)容的網(wǎng)頁服務(wù)器106時,網(wǎng)絡(luò)包括互聯(lián)網(wǎng),但是對于其它網(wǎng)絡(luò)而言,如本領(lǐng)域一般技術(shù)人員明白,也可使用服務(wù)于類似目的的替代裝置。
[0049]說明性環(huán)境包括至少一個應(yīng)用服務(wù)器108和數(shù)據(jù)存儲110。應(yīng)明白,可存在多個應(yīng)用服務(wù)器、層或其它元件、程序或組件,其可以被鏈接或以其它方式配置、可交互以執(zhí)行諸如從適當(dāng)?shù)臄?shù)據(jù)存儲獲得數(shù)據(jù)的任務(wù)。如本文使用,術(shù)語“數(shù)據(jù)存儲”是指能夠存儲、訪問和檢索數(shù)據(jù)的任何裝置或裝置組合,其可以包括以下各項的任何組合和任何數(shù)量的以下各項:任何標(biāo)準(zhǔn)、分布式或集群環(huán)境中的數(shù)據(jù)服務(wù)器、數(shù)據(jù)庫、數(shù)據(jù)存儲裝置和數(shù)據(jù)存儲介質(zhì)。應(yīng)用服務(wù)器可包括用于按需要與數(shù)據(jù)存儲集成以對客戶端裝置執(zhí)行一個或多個應(yīng)用的各個方面、為應(yīng)用處置大多數(shù)數(shù)據(jù)訪問和業(yè)務(wù)邏輯的任何適當(dāng)?shù)挠布蛙浖?。?yīng)用服務(wù)器與數(shù)據(jù)存儲合作提供訪問控制服務(wù)且能夠產(chǎn)生被傳送到用戶的內(nèi)容(諸如文本、圖形、音頻和/或視頻),其可以通過網(wǎng)頁服務(wù)器以肌11、XII或這個實例中的另一適當(dāng)?shù)慕Y(jié)構(gòu)化語言的形式而服務(wù)于用戶。所有請求和響應(yīng)和客戶端裝置102與應(yīng)用服務(wù)器108之間的內(nèi)容的傳遞的處置可由網(wǎng)頁服務(wù)器進(jìn)行處置。應(yīng)了解,因為可在如本文別處討論的任何適當(dāng)?shù)难b置或主機(jī)上執(zhí)行本文討論的結(jié)構(gòu)化代碼,所以網(wǎng)頁和應(yīng)用服務(wù)器并非必需且只是示例性組件。
[0050]數(shù)據(jù)存儲110可包括用于存儲與特定方面有關(guān)的數(shù)據(jù)的多個單獨的數(shù)據(jù)表、數(shù)據(jù)庫或其它數(shù)據(jù)存儲機(jī)制和介質(zhì)。例如,所示出的數(shù)據(jù)存儲包括用于存儲生產(chǎn)數(shù)據(jù)112和用戶信息116的機(jī)制,其可用來服務(wù)于生產(chǎn)方的內(nèi)容。數(shù)據(jù)存儲也被示為包括用于存儲日志數(shù)據(jù)114的機(jī)制,其可用于報告、分析或其它這樣的目的。應(yīng)了解,可存在可能需要存儲在數(shù)據(jù)存儲中的許多其它方面,諸如對于頁面圖像信息和訪問正確信息,其可酌情存儲在上文列出的機(jī)制中的任何一個或數(shù)據(jù)存儲110中的額外機(jī)制中。數(shù)據(jù)存儲110可通過與其相關(guān)聯(lián)的邏輯而操作來從應(yīng)用服務(wù)器108接收指令并響應(yīng)于接收指令而獲得、更新或以其它方式處理數(shù)據(jù)。在一個實例中,用戶可能提交對某種類型的項目的搜索請求。在這種情況下,數(shù)據(jù)存儲可能訪問用戶信息來驗證用戶的身份,且可訪問目錄細(xì)節(jié)信息以獲得關(guān)于所述類型的項目的信息。然后可以如在用戶能夠經(jīng)由用戶裝置102上的瀏覽器查看的網(wǎng)頁上列出的結(jié)果中將所述信息返回到用戶??稍跒g覽器的專用頁面和窗口中查看感興趣的特定項目的信息。
[0051]每個服務(wù)器通常將包括為所述服務(wù)器的一般管理和操作提供可執(zhí)行程序指令的操作系統(tǒng),且通常將包括存儲指令的計算機(jī)可讀存儲介質(zhì)(例如,硬盤、隨機(jī)存取存儲器、只讀存儲器等),指令當(dāng)由服務(wù)器的處理器執(zhí)行時允許服務(wù)器執(zhí)行其預(yù)期功能。尤其鑒于本文的公開,用于服務(wù)器的操作系統(tǒng)和一般功能的合適的實施方式是已知的或可商購,且由本領(lǐng)域一般技術(shù)人員來容易地實施。
[0052]在一個實施方案中,環(huán)境是利用經(jīng)由通信鏈路、使用一個或多個計算機(jī)網(wǎng)絡(luò)或直接連接而互連的多個計算機(jī)系統(tǒng)和組件的分布式計算環(huán)境。然而,本領(lǐng)域一般技術(shù)人員應(yīng)明白,這種系統(tǒng)同樣可在具有比圖1中示出的更少或更多數(shù)量的組件的系統(tǒng)中充分操作。因此,圖1中的系統(tǒng)100的描述在本質(zhì)上應(yīng)被視為是說明性的且不限制本公開的范圍。
[0053]圖2示出了根據(jù)至少一個實施方案的包括管理多個故障區(qū)204的計算資源供應(yīng)商202的環(huán)境200的說明性實例。在實施方案中,計算資源供應(yīng)商是代表一個或多個客戶206操作計算機(jī)硬件的組織。計算資源供應(yīng)商可以各種方式提供計算資源。例如,在一個實施方案中,計算資源供應(yīng)商202管理被配置由客戶206使用的硬件。計算資源供應(yīng)商202提供了允許客戶206使用硬件以編程方式配置計算資源的界面。例如,計算資源供應(yīng)商可以維持執(zhí)行由客戶以編程方式控制的虛擬計算機(jī)系統(tǒng)的硬件服務(wù)器。作為另一實例,計算資源供應(yīng)商202可以管理各種數(shù)據(jù)存儲以提供遠(yuǎn)程數(shù)據(jù)存儲解決方案,諸如高耐用性數(shù)據(jù)存儲和塊級數(shù)據(jù)存儲。
[0054]在實施方案中,故障區(qū)是由一個或多個故障邊界分離使得每個故障區(qū)容忍另一故障區(qū)的故障的計算資源的集合。作為實例,每個故障區(qū)204可以是單獨的數(shù)據(jù)中心。因此,如果一個數(shù)據(jù)中心可能由于斷電或其它破壞性事件而停止運行,那么其它數(shù)據(jù)中心可以繼續(xù)運行。故障區(qū)可以各自位于不同的地理位置且故障區(qū)的一些或所有可以由地理政治邊界分離。例如,故障區(qū)中的兩個或多個可以在不同國家。應(yīng)注意,出于說明目的,本公開提供了其中故障區(qū)是數(shù)據(jù)中心的許多實例。然而,故障區(qū)可以多種其它方式來定義。例如,相同數(shù)據(jù)中心中的單獨房間可以根據(jù)各個實施方案而被認(rèn)為是單獨的故障區(qū)。作為另一實例,相同位置中但由不同的備用發(fā)電機(jī)支持和/或由不同的網(wǎng)絡(luò)資源支持的計算資源可以被認(rèn)為是不同的故障區(qū)。作為又一實例,數(shù)據(jù)中心可以被群集使得數(shù)據(jù)中心的每個群集可以被認(rèn)為是故障區(qū)。此外,故障區(qū)可能出現(xiàn)故障的原因可能有許多,包括與電網(wǎng)操作、公共網(wǎng)絡(luò)操作、電力的策略主張有關(guān)的原因和其它原因。
[0055]在實施方案中,客戶206通過網(wǎng)絡(luò)208 (諸如互聯(lián)網(wǎng))與計算資源供應(yīng)商202通信??蛻?06可以具有配置在故障區(qū)204中的一個或多個中的資源,且可以通過發(fā)送電子消息(諸如調(diào)用計算資源供應(yīng)商的網(wǎng)頁服務(wù)應(yīng)用程序設(shè)計界面(API)的消息)與資源進(jìn)行通信以便配置并操作資源??蛻艨梢岳枚鄠€故障區(qū)中的資源以降低影響客戶資源的潛在故障的影響。利用計算資源供應(yīng)商202的資源以操作可公開訪問網(wǎng)站的客戶可以(例如)維持單獨故障區(qū)中的網(wǎng)頁和其它服務(wù)器使得如果一個故障區(qū)中服務(wù)器出現(xiàn)故障,那么公眾仍可以通過訪問另一故障區(qū)中的服務(wù)器來訪問網(wǎng)站。
[0056]圖3示出了故障區(qū)302內(nèi)部的環(huán)境300的說明性實例,所述故障區(qū)可以是如圖2中示出的計算資源供應(yīng)商的故障區(qū)。在實施方案中,故障區(qū)302包括用于代表客戶提供各種服務(wù)的計算資源。例如,如圖3中示出,故障區(qū)302包括用來提供可以代表客戶便宜且冗余地存儲相對大量數(shù)據(jù)的持久數(shù)據(jù)存儲服務(wù)的計算資源。當(dāng)需要大量數(shù)據(jù)存儲和/或安全性的數(shù)據(jù)存儲但是輸入/輸出性能不具有高優(yōu)先級時可以使用這種服務(wù)。故障區(qū)306也可以包括塊數(shù)據(jù)存儲服務(wù)306,其向客戶提供了塊級存儲裝置、物理裝置和/或虛擬裝置的使用??蛻艨梢詫?例如)塊級存儲裝置附接到也由客戶利用的計算機(jī)系統(tǒng)。本文還示出了可以為客戶提供計算服務(wù)的虛擬計算機(jī)系統(tǒng)服務(wù)308。在實施方案中,虛擬計算機(jī)系統(tǒng)服務(wù)308通過為客戶在由計算資源供應(yīng)商維護(hù)的物理服務(wù)器上實施虛擬計算機(jī)系統(tǒng)來提供計算服務(wù),但是可能存在變動,諸如其中物理計算機(jī)系統(tǒng)被分配給客戶以供客戶使用。在與虛擬計算機(jī)系統(tǒng)有關(guān)的實施方案中,客戶可以根據(jù)其需求而以編程方式管理虛擬計算機(jī)系統(tǒng)。例如,如圖3中示出,客戶可以將虛擬計算機(jī)系統(tǒng)服務(wù)308的虛擬計算機(jī)系統(tǒng)配置為虛擬計算服務(wù)供應(yīng)商的客戶的服務(wù)器客戶。虛擬計算機(jī)系統(tǒng)可以(例如)被配置來操作可公開訪問的網(wǎng)站。在各個實施方案中,虛擬計算資源供應(yīng)商的客戶和客戶的客戶兩者可以通過憑借網(wǎng)絡(luò)310 (其可以是上文結(jié)合圖2描述的網(wǎng)絡(luò)208)與服務(wù)通信來訪問在故障區(qū)302中操作的各種服務(wù)。
[0057]應(yīng)注意,正如附圖中示出且本文描述的所有說明性實施方案,圖3中示出的各個實施方案在本質(zhì)上是說明性的且變動被認(rèn)為在本公開的范圍內(nèi)。例如,除了示出的服務(wù)以外還可以在故障區(qū)302中提供不同于示出的所述服務(wù)的其它服務(wù),或可以在故障區(qū)302中提供不同于示出的所述服務(wù)的其它服務(wù)來代替示出的服務(wù)。如圖3中的橢圓形示出,例如,額外服務(wù)可以在故障區(qū)302中操作。此外,一些服務(wù)可以利用其它服務(wù)。例如,多個服務(wù)(例如,塊級數(shù)據(jù)存儲服務(wù)306和虛擬計算機(jī)系統(tǒng)服務(wù)308)可以被一起使用以提供其它服務(wù),諸如關(guān)系數(shù)據(jù)庫服務(wù)、電子郵件服務(wù)和一般來說可使用計算資源供應(yīng)商的資源提供的任何類型的計算服務(wù)。
[0058]如圖3中示出,計算資源供應(yīng)商的服務(wù)中每個可以包括單獨的驗證器312。驗證器可以是計算裝置、計算裝置的集合、應(yīng)用模塊或驗證由客戶和可能由其它計算機(jī)系統(tǒng)做出的各種證明的其它資源。如下文更詳細(xì)描述,在實施方案中,驗證器312中的每個驗證根據(jù)本文的各個實施方案產(chǎn)生且然后由客戶結(jié)合訪問計算資源的請求而提供的消息簽名。密鑰和其它相關(guān)信息可以被從中央密鑰授權(quán)傳播到驗證器以使驗證器能夠驗證信息。應(yīng)注意,具有驗證器的每個服務(wù)是特定實施方案的說明性實例,但是其它布置也在本公開的范圍內(nèi)。例如,單個驗證器可以支持多個服務(wù),甚至所有服務(wù)且甚至可以支持多個故障區(qū)。
[0059]圖4示出了根據(jù)至少一個實施方案的可用來支持環(huán)境(諸如圖3中示出的環(huán)境)的計算資源配置的說明性示例。圖4具體示出了其中圖3中的故障區(qū)是數(shù)據(jù)中心的具體的實例。因此,返回到圖4,數(shù)據(jù)中心402可以包括多個服務(wù)器機(jī)架404至406。數(shù)據(jù)中心402是可以用于本公開的各個實施方案的一個或多個數(shù)據(jù)中心(諸如圖4中示出的數(shù)據(jù)中心)的實例。服務(wù)器機(jī)架404與服務(wù)器機(jī)架406之間的省略號指示數(shù)據(jù)中心402可以包括任何合適數(shù)量的服務(wù)器機(jī)架,但是為了清楚起見圖4中只示出了兩個。每個服務(wù)器機(jī)架404至406可以參與維護(hù)服務(wù),諸如到多個服務(wù)器計算機(jī)408至414和416至422的電力和數(shù)據(jù)通信。此外,省略號指示服務(wù)器機(jī)架404至406可以包括任何合適數(shù)量的服務(wù)器計算機(jī)。例如,月艮務(wù)器計算機(jī)408至422可以包括一個或多個虛擬計算機(jī)系統(tǒng)(VCS)服務(wù)器和/或一個或多個數(shù)據(jù)存儲服務(wù)器。每個服務(wù)器408至422可以對應(yīng)于實施資源專用單元。
[0060]在圖4中,每個服務(wù)器機(jī)架404至406被描繪為包括一個機(jī)架交換機(jī)424至426。機(jī)架交換機(jī)424和426可以負(fù)責(zé)在其各自的服務(wù)器計算機(jī)組408至414和416至422之間來回交換數(shù)字?jǐn)?shù)據(jù)的數(shù)據(jù)包。機(jī)架交換機(jī)424至426可以通信地鏈接到數(shù)據(jù)中心交換結(jié)構(gòu)428,且然后鏈接到將數(shù)據(jù)中心402連接到包括互聯(lián)網(wǎng)的一個或多個其它計算機(jī)網(wǎng)絡(luò)的一組邊緣路由器430。交換結(jié)構(gòu)可以包括任何適當(dāng)?shù)木W(wǎng)絡(luò)組件集合,包括布置在一個或多個交換層中的一個或多個交換機(jī)類型的多個互連交換機(jī)432至438 (為清楚起見,圖4中只示出了四個)和路由器、網(wǎng)關(guān)、網(wǎng)橋、集線器、中繼器、防火墻、計算機(jī)和其合適的組合。在至少一個實施方案中,機(jī)架交換機(jī)424至426和邊緣路由器430被認(rèn)為是交換結(jié)構(gòu)428的部分。機(jī)架交換機(jī)424至426、邊緣路由器430和交換結(jié)構(gòu)428的組件是圖2的網(wǎng)絡(luò)硬件224的實例。
[0061]如上文提及,本公開的各個實施方案允許由于不同原因而被賦予各個授權(quán)等級。圖5是示出了根據(jù)至少一個實施方案的可以給參與計算環(huán)境的各個元件分配不同授權(quán)范圍的方式的示例性方式的圖。在圖5中,示出了計算資源供應(yīng)商502。在實施方案中,計算資源供應(yīng)商502的授權(quán)高于其資源,且如圖5中示出,計算資源供應(yīng)商502能夠在資源使用時將所述授權(quán)分配在各個參與者之間。應(yīng)注意,出于使說明和本文的其它說明和描述一致的目的,圖5示出了具有授權(quán)高于域的計算資源供應(yīng)商502。然而,本公開的實施方案也可適用于授權(quán)域的其它控制者。例如,授權(quán)的控制者可以是政府或政府組織、另一組織的子組織或一般來說授權(quán)高于某個域的任何實體。
[0062]返回到圖5的說明性實例,計算資源供應(yīng)商502通過允許不同子實體的授權(quán)高于不同子域來管理其授權(quán)。例如,如附圖中示出,計算資源供應(yīng)商的多個故障區(qū)504中的每個被提供計算資源供應(yīng)商502的域的對應(yīng)子域。因此,每個故障區(qū)的授權(quán)可以高于其本身的資源,但不會高于另一故障區(qū)的資源(但是,在一些情況下可以共享高于一些子域的授權(quán))。因此,根據(jù)實施方案,故障區(qū)可以提供對故障區(qū)中的計算資源的用戶訪問,但是沒有提供對另一故障區(qū)的計算資源的訪問。[0063]如上文提及,每個故障區(qū)可以包括一個或多個服務(wù)506。因此,如圖5中示出,每個服務(wù)可以負(fù)責(zé)對應(yīng)故障區(qū)506的域的子域。因此,在實施方案中,服務(wù)可提供對可由服務(wù)訪問的資源的訪問,但是沒有提供對其它服務(wù)的訪問。每個服務(wù)可以服務(wù)于一個或多個客戶508,且因此每個客戶可以負(fù)責(zé)對應(yīng)服務(wù)506的授權(quán)的子域。因此,在實施方案中,客戶可以提供對涉及對應(yīng)服務(wù)的其本身資源的訪問,但不會提供對另一客戶的服務(wù)的訪問。作為具體說明性實例,如果服務(wù)是虛擬計算資源服務(wù),那么客戶可以提供對其本身的虛擬計算機(jī)系統(tǒng)的訪問(諸如公共訪問),但不會在不被允許的情況下提供對其它客戶的虛擬計算機(jī)系統(tǒng)的訪問。
[0064]如提及,如圖5中示出的授權(quán)的特定分配是出于說明目的,且多種變動被認(rèn)為在本公開的范圍內(nèi)。如提及,本公開的實施方案可適用于由計算資源供應(yīng)商管理的域以外的授權(quán)的域,且可以根據(jù)特定需要和狀況確定子域。此外,圖5示出了虛擬資源供應(yīng)商中具有授權(quán)的最小子域的客戶。然而,本公開的技術(shù)可以允許將客戶域分成一個或多個子域。
[0065]本公開的各個實施方案涉及消息簽名。圖6是示出了根據(jù)至少一個實施方案的可以在消息簽名驗證過程中在參與者之間傳達(dá)信息的示例性方式的圖600。在實施方案中,密鑰源602將密鑰提供給消息提交器604和簽名驗證器606兩者。密鑰源可以是被配置來將密鑰提供給至少所述消息提交器604和簽名驗證器606的計算機(jī)系統(tǒng)。密鑰源也可以使用各種技術(shù)(包括本文描述的各個實施方案)產(chǎn)生密鑰或可以從另一源獲得所產(chǎn)生的密鑰。消息提交器604可以是被配置來將消息和簽名提交給簽名驗證器606的計算機(jī)系統(tǒng)或結(jié)合簽名驗證器606操作的其它組件。消息提交器604的計算機(jī)系統(tǒng)可以是(例如)計算資源供應(yīng)商的客戶的計算機(jī)系統(tǒng)。如下文討論,簽名驗證器606可以是被配置來接收消息和簽名并分析簽名以驗證消息是真實的計算機(jī)系統(tǒng)。簡單來說,簽名驗證器606可以分析所接收的簽名和消息以確定簽名是否是使用正確的密鑰X而產(chǎn)生。應(yīng)注意,雖然圖6示出了與消息提交器604和簽名驗證器606分離的密鑰源602,但是消息提交器或簽名驗證器中的任何一個也可能是密鑰源。例如,計算資源供應(yīng)商的客戶可以提供其本身的密鑰。然后客戶密鑰可以被提供給簽名驗證器以驗證簽名。此外,消息提交器604和簽名驗證器606可以每個從密鑰源602接收不同密鑰。例如,消息提交器604可以接收密鑰且簽名驗證器606可以接收使用本公開的各個實施方案從由消息提交器604接收的密鑰導(dǎo)出的密鑰。
[0066]如圖6中示出,簽名驗證器606從消息提交器604接收消息和對應(yīng)簽名。消息可以是(例如)訪問計算服務(wù)608的電子請求。消息可以(例如)編碼對網(wǎng)頁服務(wù)的仙I調(diào)用。如果簽名和消息的分析指示消息是真實的,那么簽名驗證器通知服務(wù)(或控制對服務(wù)的訪問的組件):消息提交器可具有所請求的訪問。例如,簽名驗證器可以將所接收的消息傳遞給服務(wù)以使服務(wù)能夠滿足所述請求。因此,服務(wù)可以是可操作以滿足請求的計算機(jī)系統(tǒng),諸如上文描述的各種服務(wù)。應(yīng)注意,雖然圖6的各個組件和其它組件的各種描述將組件描述為可能被實施為被配置來執(zhí)行某些行動的計算機(jī)系統(tǒng),但是組件也可以包括被共同地配置來執(zhí)行行動的多個計算裝置,諸如計算裝置的網(wǎng)絡(luò)。
[0067]圖7是示出了根據(jù)實施方案的用于簽名消息的過程700的說明性實例的流程圖。過程700 (或本文描述的任何其它過程或其變動和/或組合)中的一些或所有可以在以可執(zhí)行指令配置的一個或多個計算機(jī)系統(tǒng)的控制下而執(zhí)行且可以被實施為由硬件或其組合在一個或多個處理器上共同地執(zhí)行的代碼(例如,可執(zhí)行指令、一個或多個計算機(jī)程序或一個或多個應(yīng)用)。代碼可以(例如)計算機(jī)程序(包括可由一個或多個處理器執(zhí)行的多個指令)的形式存儲在計算機(jī)可讀存儲介質(zhì)上。計算機(jī)可讀存儲介質(zhì)可以是非瞬時性的。
[0068]在實施方案中,過程700包括獲得密鑰K (701)。密鑰可以任何合適的方式獲得。例如,密鑰可以由計算機(jī)系統(tǒng)執(zhí)行過程700而產(chǎn)生。密鑰可以由執(zhí)行過程700的計算機(jī)系統(tǒng)以電子形式接收。一般來說,可以任何合適的方式執(zhí)行獲得密鑰。密鑰可以是利用特定簽名算法的任何合適的密鑰。例如,如果使用基于哈希的消息認(rèn)證代碼(HMAC)方案和安全哈希算法(SHA)-256加密哈希函數(shù),那么密鑰可以是字節(jié)序列,諸如64或更少字節(jié)的序列。也可以使用不同加密哈希函數(shù),諸如SHA-224、SHA-384和SHA-512。
[0069]在實施方案中,所述過程也包括規(guī)范化消息M以形成規(guī)范化消息M。。規(guī)范化消息可以包括以允許驗證器驗證消息的簽名是否有效的格式布置消息中的信息。一般來說,許多信息通信協(xié)議轉(zhuǎn)換包括消息的位,同時使消息的語義相同。因此,兩個語義相同的消息可以包括不同的位集合,且因此可以產(chǎn)生不同簽名。因此,規(guī)范化允許保證可驗證簽名的簡單直接方式。然而,應(yīng)注意,本公開的一些實施方案無需消息規(guī)范化。例如,如果所利用的各種協(xié)議沒有產(chǎn)生包括不同的位集合的語義相同消息,那么規(guī)范化并不是必需的且可以省略。一般來說,在其中簽名驗證能夠成功進(jìn)行而無需操控簽名消息的任何情況下均可以省略規(guī)范化。
[0070]在實施方案中,通過計算HMAC (K,M。)產(chǎn)生簽名,其中HMACO是HMAC函數(shù),諸如上文描述的。HMAC函數(shù)具有使其尤其有用于本公開的各個實施方案的多個性質(zhì)。例如,HMAC函數(shù)可由計算機(jī)系統(tǒng)有效地執(zhí)行,從而使計算資源可用于其它任務(wù)。此外,HMAC函數(shù)具有抗原像性(不可逆)。例如,假設(shè)簽名S=HMAC(K,M),其中K是密鑰且M是消息,基本上不會獲得關(guān)于密鑰K的任何信息。例如,從S可知,由S確定K在計算上不可能或至少不切實際。HMAC函數(shù)也具有抗第二原像性。換句話說,假設(shè)S=HMAC (K,M)和M,確定不同于M的消息M’使得S=HMAC(K,M’)不可能或至少在計算上不切實際。此外,HMAC函數(shù)具有抗偽造性。例如,假設(shè)S=HMAC (K,M)的oracle數(shù)據(jù)庫,N次查詢oracle數(shù)據(jù)庫(N是正整數(shù))允許產(chǎn)生最多N個簽名消息對。換句話說,假設(shè)一組簽名消息對,確定密鑰或確定將產(chǎn)生不在所述組中的消息的正確簽名的函數(shù)是不可能的或在計算上不切實際。
[0071]雖然HMAC函數(shù)尤其有用于各個實施方案,但是也可使用其它函數(shù)。例如,可以使用具有HMAC函數(shù)的上述性質(zhì)的任何函數(shù)。此外,諸如在其中安全并不是主要問題和/或安全成問題但通過其它機(jī)制維持的狀況下可使用不一定具有所有(或任何)上述性質(zhì)的其它函數(shù)。應(yīng)注意,各個實施方案的各種說明示出了 HMAC函數(shù)的具體輸入,但是也可存在變動。例如,HMAC函數(shù)(或其它函數(shù))的輸入可以不同。如上文描述,例如,一個輸入是密鑰。然而,這個輸入可以由密鑰導(dǎo)出或以其它方式至少部分基于密鑰。作為說明性實例,輸入可以包括具有信息(諸如簽名方案識別符(可能是版本識別符))的密鑰,所述信息被添加給密鑰作為前綴、后綴或其它。作為另一實例,輸入可以是通過使用密鑰到信息(可以是另一密鑰)的映射而獲得的信息。類似地,示為消息的輸入可以由消息導(dǎo)出。作為另一實例,變動被認(rèn)為在本公開的范圍內(nèi),簽名可能不是HMAC函數(shù)的輸出,但可能是由HMAC函數(shù)(或其它合適的函數(shù))的輸出導(dǎo)出的一個或多個值。在一些實施方案中,密鑰和消息可以按相反次序被傳遞到函數(shù)中。
[0072]返回到圖7的描述,一旦通過計算HMAC(K,Mc)產(chǎn)生簽名,將簽名和消息M提供給接收器(708),其可以是驗證簽名的計算裝置或簽名驗證過程中涉及的另一計算裝置,諸如提供用于傳達(dá)消息和簽名的界面的計算裝置。正如本文明確描述的所有實施方案,變動被認(rèn)為在本公開的范圍內(nèi)。例如,可以將規(guī)范化消息Mc提供給接收器來代替消息M或除了消息M以外還將規(guī)范化消息Mc提供給接收器。此外,將消息M和簽名提供給接收器也可以包括提供其它信息,諸如密鑰識別符,其可以在使密鑰與密鑰識別符相關(guān)聯(lián)的數(shù)據(jù)存儲中用于識別。此外,諸如下文討論的編碼策略的參數(shù)的其它信息可以被提供有消息M和簽名。
[0073]圖8是示出根據(jù)至少一個實施方案的簽名驗證的過程800的說明性實例的流程圖。圖8中示出的過程800可以由如圖2中描述的驗證器執(zhí)行。此外,過程800可以響應(yīng)于收到簽名和消息(諸如響應(yīng)于另一計算機(jī)系統(tǒng)已執(zhí)行圖7的過程700)而被執(zhí)行。在實施方案中,過程800包括獲得密鑰K (802),諸如上文描述的。獲得密鑰K在各個實施方案中也可以包括其它行動。例如,如果過程800是由驗證從多個密鑰(諸如從計算資源供應(yīng)商的多個客戶)產(chǎn)生的簽名的計算機(jī)系統(tǒng)使用,那么獲得密鑰K可以包括從數(shù)據(jù)存儲中的多個密鑰選擇所述密鑰。數(shù)據(jù)存儲可以將各種密鑰與提交簽名以用于驗證的所述密鑰關(guān)聯(lián)。例如,計算資源供應(yīng)商的每個客戶可以具有用于參照數(shù)據(jù)存儲并識別適當(dāng)密鑰的密鑰識別符(或多個密鑰識別符)。密鑰識別符可以結(jié)合消息和其簽名的提交而提交,或可以其它方式而確定,諸如在提交登陸證書時被確定。密鑰識別符的接收器(例如,消息驗證器)可以參照數(shù)據(jù)存儲以確定對應(yīng)于所述密鑰識別符的密鑰是否在數(shù)據(jù)存儲中,且如果否,那么可以產(chǎn)生密鑰其自身,諸如通過使用本文描述的技術(shù)來從共享的秘密證書直接或間接導(dǎo)出密鑰。為實現(xiàn)此,接收器可以訪問密鑰導(dǎo)出路徑,其在實施方案中是編碼從接收器已經(jīng)具有的信息導(dǎo)出密鑰(例如,從共享的秘密證書導(dǎo)出的密鑰)所必需的信息的信息。這個信息可以被從具有簽名的消息的提交器提供到接收器,或可以其它方式提供給接收器。例如,接收器可以被編程來使用其指派地區(qū)和當(dāng)前日期的代碼而自動產(chǎn)生密鑰。一般來說,可使用獲得用于產(chǎn)生簽名的密鑰(或在一些實施方案中,可用于驗證簽名的另一密鑰)的任何方法。接收器也可能相對于手頭的請求或接收器已知的某種其它屬性實施關(guān)于允許和不允許的密鑰導(dǎo)出路徑的策略。
[0074]在實施方案中,接收簽名S和消息M (804)??梢詮奶峤黄?諸如執(zhí)行圖7的過程700的計算裝置)以電子形式接收簽名S和消息M。根據(jù)實施方案,然后規(guī)范化消息M以確定M。(806)。在各個實施方案中,消息M的規(guī)范化保證簽名S可被驗證。因此,在實施方案中,過程800包括通過計算HMAC(K,M。)而產(chǎn)生簽名S’(808)。在實施方案中,S’等于HMAC (K,M。),但是在各個實施方案中可由HMAC (K,Mc)導(dǎo)出S’。出于說明的目的,過程800的剩余部分將在S’ =HMAC(K1Mc)的假設(shè)下描述,但是許多變動是在本公開的范圍內(nèi)。
[0075]因此,在實施方案中,確定S’是否等于所接收的簽名S (810)。換句話說,例如確定所接收的簽名是否充分,因為其是使用密鑰K產(chǎn)生的簽名。因此,在實施方案中,如果確定S’與S不相等(810),那么簽名未驗證(812)。然而,如果S’等于S,那么驗證簽名(814)。取決于簽名是否被驗證,可以采取適當(dāng)行動。例如,如果消息是用于訪問計算資源的請求,那么所請求的訪問可以(至少暫時)被拒絕。類似地,如果消息是訪問計算資源的請求且簽名被驗證,那么所請求的訪問可以被授予。然而應(yīng)注意,在各個實施方案中將采取的適當(dāng)行動可取決于接收和驗證簽名的原因而廣泛地變化。
[0076]如上文提及,本公開的各個實施方案應(yīng)用到許多環(huán)境。在許多環(huán)境中,具有安全維護(hù)的各種方面的集中管理是有用的。例如,圖9是示出根據(jù)至少一個實施方案的分配密鑰的示例性方式的圖900。在圖9中,中央密鑰授權(quán)維護(hù)包括組織所利用的各種密鑰的一個或多個數(shù)據(jù)存儲(統(tǒng)稱為“數(shù)據(jù)存儲”)。密鑰可以(例如)對應(yīng)于組織的計算裝置的用戶。一組用戶中的每個用戶可以(例如)被指派一個或多個密鑰。在實施方案中,至少一些密鑰對應(yīng)于組織的客戶(和/或客戶的用戶)。例如,在實施方案中,組織是計算資源供應(yīng)商且所述計算資源供應(yīng)商的每個客戶對應(yīng)于允許客戶的用戶訪問由計算資源供應(yīng)商維護(hù)的計算資源的一個或多個密鑰。根據(jù)上文關(guān)于圖7描述的變動的圖8的過程800的其它改編也在本公開的范圍內(nèi)。
[0077]如圖9中示出,密鑰授權(quán)902將密鑰傳播到多個密鑰區(qū)904。密鑰區(qū)可以是所接收的密鑰有效的組織域。例如,參考圖2,每個密鑰區(qū)904可以對應(yīng)于故障區(qū),諸如數(shù)據(jù)中心。密鑰區(qū)可以(但并非必需)在地理上加以定義。例如,每個密鑰區(qū)可以對應(yīng)于國家、地區(qū)或其它地理上定義的地區(qū)。密鑰區(qū)也可以其它方式定義。例如,每個密鑰區(qū)可以對應(yīng)于由計算資源供應(yīng)商提供給組織的客戶等等的服務(wù)。雖然沒有這樣示出,但是密鑰區(qū)可以具有子區(qū)。例如,密鑰區(qū)可以對應(yīng)于國家。在國家內(nèi)可以具有多個地區(qū),每個對應(yīng)于密鑰區(qū)的子區(qū)。在這些實施方案中,密鑰可以被傳播到子區(qū)。
[0078]如圖9中示出,密鑰區(qū)904可以將密鑰傳播到密鑰區(qū)的一個或多個驗證器906。例如,如果密鑰區(qū)對應(yīng)于數(shù)據(jù)中心,那么數(shù)據(jù)中心的計算裝置可以為了由數(shù)據(jù)中心中的計算資源支持的多個服務(wù)的每個而將密鑰傳播到驗證器。以此方式,驗證器可用于驗證結(jié)合各種請求而提交的簽名。這使密鑰授權(quán)自身的計算資源擺脫驗證簽名,而且尤其在密鑰授權(quán)902在地理位置上遠(yuǎn)距進(jìn)行請求的服務(wù)的情況中減少了等待時間和帶寬需求。
[0079]密鑰傳播可以各種方式進(jìn)行。在實施方案中,密鑰在安全通道上分配到各種接收器。在一些實施方案中,密鑰授權(quán)將相同密鑰傳播到每個密鑰區(qū)。此外,一些密鑰可以用于多個密鑰區(qū)。密鑰授權(quán)902可以將多個密鑰區(qū)中可用的密鑰傳播到所述多個密鑰區(qū),同時抑制將所述密鑰傳播到密鑰不可使用的密鑰區(qū)。因此,在計算資源供應(yīng)商的實例中,密鑰授權(quán)902可以只將客戶的密鑰傳播到所述客戶能夠使用所述密鑰的所述密鑰區(qū),諸如用于維護(hù)所述客戶的計算資源的數(shù)據(jù)中心。
[0080]本公開的各個實施方案也以提供許多優(yōu)點的方式提供密鑰傳播。圖10是示出了根據(jù)至少一個實施方案的以提供各種授權(quán)范圍的方式分配密鑰的示例性方式的圖1000。正如圖10,圖1000包括具有密鑰K的密鑰授權(quán)1002,其中諸如根據(jù)結(jié)合圖9的上文描述,密鑰授權(quán)1002將密鑰直接或間接傳播到各種密鑰區(qū)1004和驗證器1006。雖然出于說明的目的結(jié)合單個密鑰K描述圖1000且由K導(dǎo)出密鑰,但是當(dāng)密鑰授權(quán)對許多密鑰執(zhí)行這些行動時本文描述的實施方案適用。
[0081]如圖10中示出,密鑰K用作從K導(dǎo)出的其它密鑰的基礎(chǔ)。例如,密鑰K1WK導(dǎo)出且傳播到第一密鑰區(qū)(密鑰區(qū)工)。因此,密鑰K1 (或從密鑰K1導(dǎo)出的密鑰)在第一密鑰區(qū)中可用,但是在不具有1 (或從密鑰K1導(dǎo)出的密鑰)的其它密鑰區(qū)中不可用。類似地,多個其它密鑰區(qū)中的每個接收從密鑰K導(dǎo)出的對應(yīng)不同密鑰。應(yīng)注意,雖然圖10示出從密鑰K導(dǎo)出的密鑰從密鑰授權(quán)1002傳播到對應(yīng)密鑰區(qū),但是也可存在變動。例如,密鑰K可以傳播到密鑰區(qū),且接收密鑰K的每個密鑰區(qū)可以使用密鑰K來導(dǎo)出一個或多個對應(yīng)密鑰。例如,標(biāo)為“密鑰區(qū)i”的密鑰區(qū)1004可以接收密鑰K并導(dǎo)出I。一般來說,密鑰導(dǎo)出和傳播中所涉及的各種任務(wù)可以不同于各個實施方案中示出的任務(wù)來執(zhí)行。
[0082]如圖10的說明性實例中示出,由密鑰區(qū)1004接收的密鑰用于導(dǎo)出進(jìn)一步傳播的密鑰。例如,參考標(biāo)為“密鑰區(qū)2”的密鑰區(qū)1004,從密鑰K導(dǎo)出的密鑰K2用于導(dǎo)出額外密鑰K2’和K2’ ’。密鑰K2’和K2’ ’傳播到對應(yīng)驗證器1006以由驗證器1006用于驗證簽名。因此,在實施方案中,接收Κ2’的驗證器將能夠驗證使用Κ2’產(chǎn)生的簽名,而不接收Κ2’的驗證器將不能驗證所述簽名。通過以圖9和圖10中圖示的方式(或其變動)傳播密鑰,實現(xiàn)了多個優(yōu)點。例如,通過將密鑰傳播到多個位置中的許多驗證器,而不是一個或多個集中化的驗證器,實現(xiàn)了更少的等待時間。此外,參考圖10,通過將導(dǎo)出的密鑰傳播到其它裝置,其它裝置然后又導(dǎo)出額外密鑰,在多個位置上的多個裝置上擴(kuò)展計算是可能的,從而允許更快的密鑰導(dǎo)出并增大容錯。
[0083]密鑰的導(dǎo)出可以許多方式執(zhí)行。圖11是示出根據(jù)至少一個實施方案的密鑰導(dǎo)出的過程1100的說明性實例的流程圖。在實施方案中,過程100包括諸如以上文描述的方式獲得密鑰1(1002)。密鑰Ki可以是任何合適的密鑰,諸如上文描述的。此外,密鑰Ki可以(但并非必需)從另一密鑰導(dǎo)出,諸如通過執(zhí)行過程1100或另一過程。在獲得密鑰Ki之后,從Ki導(dǎo)出新的密鑰。在圖11的說明性實例中,依據(jù)(或至少部分基于)HMAC(KpRf1)計算新的密鑰K Kf1,其中Ri+1是識別密鑰Ki+1上的一個或多個限制的信息。例如Ri+1可以是編碼指示密鑰Ki+1在何處可用的信息的位序列。例如,Ri+1可以編碼可以使用密鑰Ki+1之處的密鑰區(qū)。限制可以至少部分基于地理、時間、用戶身份、服務(wù)等等。在下文描述中提供示例性限制。
[0084]此外,如下文更多討論,可以多次使用過程1100以導(dǎo)出密鑰。例如,使用過程1100(或其變動)產(chǎn)生的密鑰可以用于使用相同或另一限制來產(chǎn)生另一密鑰。使用圖中的術(shù)語,Ri+1可以(例如)是編碼指示密鑰Ki+1何處可用的信息的位序列。對于過程的下一迭代,Ki+1將成為密鑰I。例如,如果過程1100用于基于地理限制產(chǎn)生密鑰,那么所產(chǎn)生的密鑰可以用于使用基于日期限制產(chǎn)生密鑰。可以多次利用這個過程以使用多重限制來導(dǎo)出密鑰。如下文更完整地討論,通過使用多重限制來導(dǎo)出密鑰,一個或多個驗證器可實施策略并同時驗證簽名。作為簡短的說明性實例,作為簽名驗證過程的部分,驗證器可以使用限制(諸如當(dāng)前日期的編碼)來確定預(yù)期簽名。根據(jù)實施方案,如果提供在不同日期產(chǎn)生的簽名,那么所述簽名的驗證將失敗。一般來說,根據(jù)各個實施方案,如果簽名的使用不遵守用于導(dǎo)出密鑰的限制,那么簽名驗證可能失敗。
[0085]圖12是示出了根據(jù)至少一個實施方案的使用多重限制導(dǎo)出密鑰的說明性實例的圖1200。在圖12中,使用多重限制導(dǎo)出密鑰。在這個實例中,密鑰和日期限制用于確定日期密鑰(圖中為Kdate)。在圖中,日期被編碼為20110715(對應(yīng)于2011年7月15日),但是日期可以不同地編碼,且一般來說,信息可以不同于圖中示出的信息來編碼。日期密鑰與地區(qū)限制一起用于導(dǎo)出地區(qū)密鑰Kregion。在這個實例中,地區(qū)是以地區(qū)識別符“USA-zone-l”編碼,其可以對應(yīng)于美國多個地區(qū)中的一個。密鑰Kregion與服務(wù)限制一起用于導(dǎo)出服務(wù)密鑰Kservice。在這個實例中,服務(wù)是虛擬計算機(jī)系統(tǒng)服務(wù)(其由其首字母縮略詞VCS編碼)。密鑰Kservice與請求識別符一起用于導(dǎo)出簽名密鑰,S卩,用于簽名對服務(wù)的請求的密鑰。在這個實例中,請求識別符是“vdrequest”,其可以對應(yīng)于可以提交到VCS服務(wù)的特定類型的請求。例如,“vcs_request”可以對應(yīng)于某個請求以提供、停止或以其它方式修改虛擬計算系統(tǒng)。使用簽名密鑰來產(chǎn)生可以與請求一起提交的簽名。簽名可以任何合適方式來產(chǎn)生,諸如上文描述的。
[0086]如圖12中示出,請求可以被規(guī)范化以形成消息M。,其作為到HMAC函數(shù)的輸入以產(chǎn)生簽名。當(dāng)然,可以根據(jù)各個實施方案利用變動,包括規(guī)范化并非必需之處以及使用除了HMAC函數(shù)以外的函數(shù)之處的變動。此外,圖12示出了根據(jù)實施方案的導(dǎo)出簽名的特定實例。然而,在導(dǎo)出簽名時可以使用更多或更少限制,且可以按不同于示出的次序使用限制。此外,雖然圖12示出簽名的導(dǎo)出,但是所述技術(shù)可以應(yīng)用于導(dǎo)出在所有應(yīng)用中可能不被認(rèn)為是簽名的其它對象。例如,一般來說圖12中(和別處)示出的技術(shù)可以用于導(dǎo)出密鑰。
[0087]圖13是根據(jù)至少一個實施方案的用于導(dǎo)出簽名的函數(shù)1300的說明性實例。如圖13中示出,依據(jù)以下項計算簽名:
[0088]HMAC(HMAC(HMAC(HMAC(HMAC(K, date), region), service), protocol), Me).[0089]在這個實例中,K是密鑰,“date”是日期的編碼,“region”是地區(qū)識別符的編碼,“service”是服務(wù)識別符的編碼,“protocol”對應(yīng)于特定消息編碼協(xié)議,且Mc是規(guī)范化消息。因此,如圖13中示出,通過多次計算相同HMAC函數(shù)來計算簽名,每次將不同限制輸入到HMAC函數(shù)。在這個實例中,簽名密鑰是:
[0090]HMAC(HMAC(HMAC(HMAC(K, date), region), service), protocol)
[0091]其本身是通過多次使用HMAC函數(shù)而導(dǎo)出,每次具有不同限制。
[0092]在圖13的實例中,各種限制每個定義域且所定義的域的交集定義其中以簽名密鑰產(chǎn)生的簽名將有效的 方式。在這個具體實例中,以圖13中示出的簽名密鑰產(chǎn)生的簽名在使用所指定協(xié)議指定的日期、指定的地區(qū)和指定的服務(wù)內(nèi)將有效。因此,如果使用簽名密鑰但在不同于由簽名密鑰的輸入指定的日期的日期內(nèi)簽名請求,那么即使對所指定服務(wù)和在所指定地區(qū)中做出所述請求,對所述請求的簽名仍然可能被認(rèn)為未驗證。
[0093]正如本文描述的其它實施方案,變動被認(rèn)為在本公開的范圍內(nèi)。例如,圖13示出了 HMAC函數(shù)的重復(fù)使用。多個函數(shù)可以用于導(dǎo)出簽名,且在一些實施方案中,HMAC函數(shù)沒有用于導(dǎo)出的每一部分。此外,如提及,各個實施方案中也可以使用不同限制和不同數(shù)量的限制。
[0094]可以根據(jù)各個實施方案以多種方式執(zhí)行密鑰導(dǎo)出。例如,根據(jù)一些實施方案,單個計算裝置可計算簽名密鑰。根據(jù)其它實施方案,多個計算裝置可以共同地計算簽名密鑰。作為具體說明性實例,參考圖13,一個計算機(jī)可以計算
[0095]Kregion=HMAC(HMAC(K, date), region)
[0096]且另一計算機(jī)可以計算
[0097]簽名密鑰=HMAC(Kregion, Service).[0098]作為另一實例,單獨計算機(jī)系統(tǒng)可以執(zhí)行計算簽名密鑰中的不同層。參考先前段落中的實例,一個計算機(jī)可以計算以下項來代替單個計算機(jī)計算Kregion
[0099]Kdate=HMAC(K, date)
[0100]且另一計算機(jī)可以計算
[0101]Kregion=HMAC(Kdate, region).[0102]圖14是根據(jù)至少一個實施方案的可以如何執(zhí)行并使用多密鑰導(dǎo)出的說明性實例。特別地,圖14示出了示例性圖1500,其示出了一組分布式計算機(jī)系統(tǒng)的成員共同地計算簽名密鑰(或在各個其它實施方案中,其它密鑰)。如圖14中示出,所述組的每個成員是產(chǎn)生密鑰并將所產(chǎn)生的密鑰提供給另一計算機(jī)系統(tǒng)的密鑰供應(yīng)商計算機(jī)系統(tǒng)1402。例如,標(biāo)記為密鑰供應(yīng)商i的密鑰供應(yīng)商(從另一來源或通過產(chǎn)生密鑰本身)獲得密鑰K,且使用密鑰和標(biāo)記為R1的限制以產(chǎn)生密鑰I。密鑰供應(yīng)商i將密鑰K1傳遞給密鑰供應(yīng)商2,其使用K2和另一限制R2以產(chǎn)生另一密鑰K2。密鑰供應(yīng)商2將密鑰K2傳遞給密鑰供應(yīng)商3,其使用K3和另一限制R3以產(chǎn)生另一密鑰Κ3。取決特定實施方案中的密鑰供應(yīng)商的數(shù)量,這個過程可以繼續(xù)進(jìn)行直到密鑰供應(yīng)商η將密鑰IV1傳遞給密鑰供應(yīng)商Ν為止,其使用Kim和另一限制Rn以產(chǎn)生另一簽名密鑰KN。然后將密鑰Kn傳遞給驗證者計算機(jī)系統(tǒng)1404。也可以通過(諸如)安全密鑰交換算法將密鑰K或從K導(dǎo)出的任何密鑰(在圖中一般稱為Ki)傳遞給簽名器計算機(jī)系統(tǒng)1406。
[0103]在各個實施方案中,例如如果簽名器和/或公開可使用限制R1-Rn,那么簽名器計算機(jī)系統(tǒng)1406也可以自身產(chǎn)生Kn。此外,在各個實施方案中,簽名器計算機(jī)系統(tǒng)1406可以只執(zhí)行用于自身導(dǎo)出Kn的過程的部分。例如,對于小于N的某個整數(shù)i和限制Ri+1至Rn,簽名器可以(可能從適當(dāng)?shù)拿荑€供應(yīng)商計算機(jī)系統(tǒng))獲得K”然后簽名器可以使用Ki和限制Ri+1至Rn以產(chǎn)生簽名密鑰KN。其它變動也被認(rèn)為在本公開的范圍內(nèi)。
[0104]簽名器計算機(jī)系統(tǒng)1406可以使用密鑰Kn以簽名將由驗證器1404驗證的消息。例如,如示出,簽名器1406計算簽名S=HMAC(KN,Mc),其中Mc是也被發(fā)送到驗證器的消息M的規(guī)范化版本。因為驗證器具有&,所以驗證器可獨立地規(guī)范化消息M并計算HMAC(Kn,Mc)以確定計算結(jié)果是否匹配所接收的簽名S。
[0105]應(yīng)注意,雖然圖14中示出的過程和本文描述的過程的變動被示為涉及HMAC函數(shù)的多次使用,但是可以使用多個不同函數(shù)來導(dǎo)出密鑰。例如,在導(dǎo)出密鑰的不同時刻可以使用不同類型的消息認(rèn)證代碼(MAC)函數(shù)。例如,一種類型的MAC函數(shù)的輸出可以被用作到另一類型的MAC函數(shù)的輸入的基礎(chǔ)。一般來說,在密鑰導(dǎo)出過程中可以使用其它類型的函數(shù)來代替HMAC函數(shù)和/或除了 HMAC函數(shù)以外還可以使用其它類型的函數(shù),且在各個實施方案中,沒有必要多次使用同一類型的函數(shù)來導(dǎo)出密鑰,但是每當(dāng)需要函數(shù)時可以使用不同函數(shù)。
[0106]圖15是示出了根據(jù)至少一個實施方案的可以使用多個限制導(dǎo)出密鑰的示例性方式的圖1500。圖15中示出的實例是指客戶,諸如計算資源供應(yīng)商的客戶。然而,如提及,可以在多種其它情境(context)使用本文描述的技術(shù)(包括結(jié)合圖15描述的技術(shù))。
[0107]如示出,客戶密鑰Krast是一組客戶長期密鑰的部分,其中的每個可以是由客戶在一段時間內(nèi)(諸如直到客戶更新密鑰、被指派新密鑰或以其它方式改變密鑰為止)使用的密鑰。密鑰也可以由一個或多個客戶無限制地使用??蛻裘荑€Krast用來導(dǎo)出一個或多個地區(qū)密鑰,諸如以上文示出的方式。例如,如圖15中示出,可以通過(諸如)計算HMAC(Kcust, USA-E-1)和 HMAC(Kcust, USA-N-1)產(chǎn)生兩個地區(qū)密鑰,其中 USA-E-1 和 USA-N-1是各自地區(qū)的識別符。類似地,地區(qū)密鑰可以用來導(dǎo)出日期密鑰,其的有效性可以受限于用來編碼日期密鑰的日期。日期密鑰中的每個可以用來導(dǎo)出服務(wù)密鑰,諸如以上文描述的方式。
[0108]在各個實施方案中,以此方式,服務(wù)密鑰和各自服務(wù)只可以在用來編碼密鑰的日期中和地區(qū)內(nèi)使用。每天可以產(chǎn)生新日期密鑰,而地區(qū)密鑰和客戶長期密鑰的產(chǎn)生頻率可能較低。諸如圖15和本公開中的別處示出的多限制密鑰導(dǎo)出提供多個優(yōu)勢。例如,如果簽名密鑰被泄漏(例如,由第三方惡意獲得)那么通過以結(jié)合圖15描述的方式導(dǎo)出密鑰,將安全漏洞限于特定地區(qū)、特定日期上且與特定服務(wù)相結(jié)合。其它服務(wù)將保持不受影響。可以用可導(dǎo)出密鑰的其它方式應(yīng)用類似優(yōu)勢。
[0109]例如,圖16是示出了根據(jù)至少一個實施方案的可以導(dǎo)出密鑰的另一示例性方式的圖1600。圖16以與圖16的方式類似的方式示出概念。然而,在圖16中,客戶長期密鑰用來導(dǎo)出日期密鑰。日期密鑰用來導(dǎo)出地區(qū)密鑰。地區(qū)密鑰用來導(dǎo)出服務(wù)密鑰??梢愿鶕?jù)本文描述的各個實施方案完成導(dǎo)出。
[0110]圖17是示出了根據(jù)至少一個實施方案的可以導(dǎo)出密鑰的又一示例性方式的圖1700。在圖17中,客戶長期密鑰用來導(dǎo)出月份密鑰。月份密鑰用來導(dǎo)出地區(qū)密鑰。地區(qū)密鑰用來導(dǎo)出日期密鑰。日期密鑰用來定義服務(wù)密鑰??梢耘c上文描述一致的方式來導(dǎo)出各種密鑰。
[0111]如討論,本公開的各種技術(shù)允許產(chǎn)生會話的新穎方式。會話可以是允許一個或多個行動的集合的時間段,其中會話的終結(jié)(或其它終止)造成不允許一個或多個行動的所述集合。圖18是示出了根據(jù)至少一個實施方案的用于啟動會話的過程1800的說明性實例的流程圖。過程1800可以由任何合適的計算裝置執(zhí)行或由計算裝置的任何合適集合共同地執(zhí)行。例如,過程1800可以由計算資源供應(yīng)商的客戶的客戶端裝置執(zhí)行。作為另一實例,在另一實施方案中,參考圖3,故障區(qū)的服務(wù)之一可以是會話服務(wù)且參與提供服務(wù)的一個或多個計算裝置可以執(zhí)行過程1800。
[0112]返回到圖18,在實施方案中,過程1800包括獲得密鑰K (1802)。密鑰K可以是任何合適的密鑰,諸如以上文描述的方式使用其它密鑰導(dǎo)出的密鑰。例如,密鑰K可以被傳播到參與執(zhí)行過程1800的計算裝置。在某個時刻(諸如當(dāng)獲得密鑰K時,如附圖中示出的),在實施方案中,可以接收啟動會話的請求(1804)。所述請求可以是電子請求,諸如上文描述的。此外,在實施方案中,使用本公開的各種技術(shù)簽名并驗證所述請求。再者,取決于用來實施過程1800的特定環(huán)境,所述請求可以是不同請求。例如,如果過程1800由客戶端裝置(諸如計算資源供應(yīng)商的客戶的客戶裝置)執(zhí)行以產(chǎn)生會話,那么可以由客戶端裝置的模塊接收啟動會話的請求。
[0113]在實施方案中,確定會話的會話參數(shù)(1806)。會話參數(shù)可以是指示對將產(chǎn)生的會話的一個或多個限制的信息。示例性參數(shù)包括(但不限于)持續(xù)時間、將要產(chǎn)生的會話密鑰的可接受用戶的識別符、其中產(chǎn)生的會話密鑰是可用的一個或多個服務(wù)、對可以使用會話密鑰執(zhí)行的行動的限制、上文描述的限制中的任何一個和其它。參數(shù)可以根據(jù)預(yù)定義格式化需求以電子形式編碼以保證涉及將產(chǎn)生的會話密鑰的計算是一致的。例如,可能需要以格式Y(jié)YYYMMDD來編碼日期。其它參數(shù)可以具有其本身的格式化需求。此外,可以各種方式執(zhí)行確定會話參數(shù)。例如,參數(shù)可以是會話的默認(rèn)參數(shù),使得會話密鑰只可用于會話啟動的請求器允許的行動范圍和預(yù)定義的時間段(諸如24小時周期)。作為另一實例,參數(shù)可以被提供作為所接收請求的部分或以其它方式結(jié)合所接收請求而提供。例如,參數(shù)可以根據(jù)來自請求器的用戶輸入而產(chǎn)生且根據(jù)預(yù)定義方案進(jìn)行編碼。
[0114]在實施方案中,一旦確定參數(shù),使用參數(shù)來計算會話密鑰Ks (1808)??梢远喾N方式執(zhí)行計算會話密鑰Ks。例如,在一個實施方案中,可以依據(jù)(或以其它方式至少部分基于)以下項來計算會話密鑰Ks
[0115]HMAC(K, Session_Parameters)
[0116]其中Session_Parameters 是已確定(1806)的參數(shù)的編碼。Session_Parameters可以用保證計算一致性的預(yù)定義方式進(jìn)行編碼。會話密鑰Ks也可以其它方式(諸如下文結(jié)合圖19描述的方式)計算。
[0117]在實施方案中,一旦計算會話密鑰Ks (1808),提供會話密鑰Ks以供使用。在各個實施方案中可以多種方式執(zhí)行提供會話密鑰。例如,可以將會話密鑰提供給請求器的模塊以使請求器能夠用會話密鑰簽名消息。也可以通過網(wǎng)絡(luò)將會話密鑰提供給另一裝置以使另一裝置能夠用會話密鑰簽名消息。例如,也可以將會話密鑰提供給啟動會話的受委托者。例如,請求器可以用啟動會話的請求或以其它方式結(jié)合啟動會話的請求指定受委托者??梢愿鶕?jù)由請求器(即,委托者)提供的信息(諸如電子郵件或其它電子地址)以電子形式提供會話密鑰。
[0118]如提及,圖19示出了根據(jù)實施方案的可用以產(chǎn)生簽名的過程1900的說明性實例??梢杂梢粋€或多個計算裝置(諸如執(zhí)行上文結(jié)合圖18描述的過程1800的一個或多個計算裝置)執(zhí)行過程1900。如圖19中示出,過程1900包括接收會話參數(shù),諸如上文描述的。在實施方案中,使用已獲得的會話參數(shù)依據(jù)以下項計算中間密鑰Ki+1 (1904):
[0119]K^1=HMAC (KilPi),
[0120]其中Ki可以是圖18的描述中用于首次計算Ki+1的密鑰K,且Pi是會話參數(shù)的第i個參數(shù)??梢愿鶕?jù)預(yù)定次序來排序會話參數(shù)以保證密鑰簽名的計算一致性。
[0121]在實施方案中,確定產(chǎn)生會話密鑰時是否使用額外參數(shù)(1906)。如果在實施方案中存在額外參數(shù),那么將索引i增加I (1908)且再次計算Ki+1 (1904)。然而,如果確定不存在額外參數(shù),那么將Ks設(shè)置成Ki+1的值(1910)。`
[0122]圖20是示出了根據(jù)至少一個實施方案的用于在會話期間獲得對一個或多個計算資源訪問的過程2000的說明性實例的流程圖。應(yīng)注意,雖然圖20呈現(xiàn)了用于獲得對一個或多個計算資源訪問的過程2000,但是正如本文描述的其它過程,還可以針對其中使用簽名過程的任何情況修改過程2000。過程2000可以由請求訪問一個或多個計算資源的用戶的計算機(jī)系統(tǒng)(諸如圖1中示出的客戶端計算機(jī)系統(tǒng)和/或本文別處描述的客戶計算機(jī)系統(tǒng))執(zhí)行。在實施方案中,過程2000包括獲得會話密鑰Ks??梢匀魏魏线m的方式(諸如在電子消息中)獲得會話密鑰??梢詮脑L問所述一個或多個計算資源的委托者的計算機(jī)系統(tǒng)或另一計算機(jī)系統(tǒng)(諸如結(jié)合執(zhí)行用于產(chǎn)生Ks的過程的所述一個或多個計算機(jī)系統(tǒng)操作的計算機(jī)系統(tǒng))獲得會話密鑰。
[0123]在實施方案中,產(chǎn)生請求R (2004)。請求R可以是消息,諸如上文描述的。然后在實施方案中規(guī)范化請求R (2006),且由規(guī)范化消息計算簽名(2008),諸如通過依據(jù)(或以其它方式至少部分基于)HMAC(Ks,Rc)計算簽名。當(dāng)產(chǎn)生簽名之后,提供簽名S和請求R(2010)。例如,如上文討論,可以電子形式將簽名S和請求R提供給參與管理請求和驗證簽名的計算機(jī)系統(tǒng)的界面。正如一般的簽名和消息,可以用單一通信、單獨通信或由多種通信共同地來一起提供簽名S和請求R。也可以結(jié)合簽名S和請求R提供其它信息。例如,可以提供識別信息以使驗證器能夠選擇用于產(chǎn)生簽名且用簽名來驗證所接收簽名的適當(dāng)密鑰。識別可以是(例如)應(yīng)用來產(chǎn)生簽名以進(jìn)行比較的密鑰的識別符。在各個實施方案中,也可以酌情提供并使用其它信息。
[0124]圖21是示出了根據(jù)至少一個實施方案的用于確定是否授予請求訪問一個或多個計算資源的過程2100的說明性實例的流程圖。如圖12中示出,過程2100包括獲得簽名密鑰化(2102).正如本文用來獲得簽名密鑰的其它敘述,可以各種方式(諸如通過從另一來源接收簽名密鑰、從存儲器檢索簽名密鑰、由可用信息計算簽名密鑰等)獲得簽名密鑰。
[0125]在實施方案中,規(guī)范化所接收的請求I?來形成%,諸如以上文描述的方式。應(yīng)注意,正如本文描述的其它過程,可能存在變動。例如,執(zhí)行過程2100 (或另一過程)的變動的計算機(jī)系統(tǒng)可能只接收規(guī)范化消息且可以由另一計算裝置執(zhí)行規(guī)范化。返回到圖21的描述,依據(jù)(或以其它方式至少部分基于)—計算簽名3’。比較所計算的簽名密鑰3’和所接收的簽名3 (2110)以確定所述兩個簽名是否相等。如果所述兩個簽名被確定不相等,那么確定會話無效(2112)且可以采取適當(dāng)行動(諸如拒絕請求如果所述兩個簽名被確定相等,那么會話有效(2114)且可以采取適當(dāng)行動(諸如授予訪問一個或多個計算資源兄
[0126]如提及,本公開的技術(shù)可以用來允許委托授權(quán)。圖22是示出了根據(jù)至少一個實施方案的用于委托授權(quán)的過程2200的說明性實例的流程圖。可以由計算裝置(諸如嘗試委托訪問一個或多個計算資源的用戶的計算裝置或計算資源供應(yīng)商的計算裝置或任何合適的計算裝置)執(zhí)行過程2200。如附圖中示出,過程2200包括獲得會話密鑰X# (2202).可以任何合適的方式(諸如其中描述獲得上述密鑰的方式)獲得所獲得的會話密鑰X#。此外,會話密鑰可以是已產(chǎn)生作為委托訪問一個或多個計算資源的過程的部分的密鑰。例如,可以通過執(zhí)行過程2200或其變動產(chǎn)生會話密鑰。
[0127]在實施方案中,確定會話參數(shù)(2004).可以任何合適的方式確定會話參數(shù),諸如上文結(jié)合圖18描述的。使用已確定(2004)的會話參數(shù),可以產(chǎn)生新會話密鑰1(3(1+1),諸如上文描述的,包括上文結(jié)合圖19描述的。一旦產(chǎn)生,可以將新會話密鑰提供給受委托者。例如,可以用電子消息將會話密鑰發(fā)送到受委托者。可以將會話密鑰直接或間接提供給受委托者。例如,會話密鑰可以被給予委托者,且委托者可以負(fù)責(zé)將會話密鑰提供給一個或多個受委托者。也可以將其它信息提供給受委托者。例如,可以將會話參數(shù)提供給受委托者以使受委托者能夠給會話參數(shù)提供簽名,從而使會話參數(shù)的接收器(例如,驗證器)產(chǎn)生預(yù)期簽名以驗證所提供簽名是否有效。例如,接收器可以使用參數(shù)以從秘密證書或從秘密證書導(dǎo)出的密鑰來產(chǎn)生會話密鑰且使用所述會話密鑰以產(chǎn)生對應(yīng)簽名消息的規(guī)范化版本的簽名。一般來說,參數(shù)可以任何合適的方式提供給簽名的接收器以使接收器能夠驗證消息簽名,且如果接收器獨立于受委托者訪問參數(shù),那么受委托者不一定需要訪問參數(shù)。
[0128]例如,圖23示出了圖2300,其示出了可以如何多次委托特權(quán)。委托者2302可以希望授予受委托者2304 —個或多個訪問特權(quán)。然而,在這個實例中,受委托者2304可以希望將一個或多個特權(quán)提供給另一受委托者2306。因此,在這個實例中,受委托者2304可以成為委托者。類似地,受委托者2306可以希望向另一受委托者提供訪問,且所述受委托者可以希望將訪問授予另一受委托者(以此類推)直到最終授予又一受委托者2308 —個或多個特權(quán)為止。
[0129]因此,在這個實例中,初始委托者2302提交對可以是故障區(qū)的服務(wù)的基于會話的認(rèn)證服務(wù)2310的委托請求,如上文描述的。在實施方案中,諸如上文結(jié)合圖22描述的,作為響應(yīng),基于會話的認(rèn)證服務(wù)產(chǎn)生會話密鑰并將會話密鑰提供給委托者2302。在實施方案中,委托者2302然后將接收自基于會話的認(rèn)證服務(wù)2310的會話密鑰提供給受委托者2304。受委托者2304可以將會話密鑰提供給另一受委托者2306。以此方式,受委托者2306將接收由受委托者2304接收的特權(quán)范圍,受委托者2304接收的特權(quán)范圍將與提供給受委托者2306的特權(quán)范圍相同。
[0130]然而,仍如圖23中示出,受委托者2304可以提交對基于會話的認(rèn)證服務(wù)2310的委托請求并接收響應(yīng)于委托請求而由基于會話的認(rèn)證服務(wù)2310產(chǎn)生的不同會話密鑰。受委托者2304可以將這個新會話密鑰提供給下一個受委托者2306。所述下一個受委托者2306可以將會話密鑰提供給又一受委托者,或如上文描述也可以提交對基于會話的認(rèn)證服務(wù)2310的委托請求,基于會話的認(rèn)證服務(wù)2310將然后產(chǎn)生會話密鑰并將會話密鑰提供給提交委托請求的受委托者2306。如圖23中指示,這可以繼續(xù)且受委托者中的一個或多個可以嘗試使用他或她已接收的會話密鑰。
[0131]在這個特定實例中,受委托者2308結(jié)合請求將會話密鑰提供給計算資源2312。如上文,雖然所述請求可以包括會話密鑰,但是會話密鑰可以獨立于所述請求而提供。計算資源2312可以是上文描述的計算資源中的任何一個或一般來說任何計算資源。策略管理服務(wù)2314可以包括驗證器,諸如上文描述,且當(dāng)請求計算資源時可以使確認(rèn)請求。雖然圖23中單獨示出,但是計算資源2312和策略管理服務(wù)2314也可以是單個組件。此外,雖然圖23示出了用來產(chǎn)生會話密鑰的單個基于會話的認(rèn)證服務(wù)2310,但是各個實施方案也可以使用不同的基于會話的認(rèn)證服務(wù)。
[0132]如上文提及,除了本文提供的說明性實例以外的多種變動被認(rèn)為在本公開的范圍內(nèi)。圖24示出表示根據(jù)實施方案的可以使用來自多次授權(quán)的密鑰導(dǎo)出密鑰的方式的說明性實例的圖2400。在圖23中,客戶密鑰Keust是來自由計算資源供應(yīng)商維持的一組客戶密鑰。正如上文描述的實施方案,雖然圖23結(jié)合計算資源供應(yīng)商討論了說明性實例,但是其它變動也被認(rèn)為在本公開的范圍內(nèi)。
[0133]在圖24中,維持一組授權(quán)密鑰,其中每個授權(quán)密鑰對應(yīng)于不同的授權(quán)域。從客戶密鑰Krast導(dǎo)出的每個授權(quán)密鑰可以(例如)傳播到不同故障區(qū),諸如上文描述的。故障區(qū)可以是(例如)不同策略管轄區(qū)中的數(shù)據(jù)中心。然而,應(yīng)注意,雖然圖24示出了每個分開的授權(quán)密鑰從單個客戶密鑰Krast導(dǎo)出,但是也可能存在變動。例如,可以獨立地導(dǎo)出分開的授權(quán)密鑰。作為另一實例,可以從公用密鑰導(dǎo)出一個或多個分開的授權(quán)密鑰,可以從另一公用密鑰導(dǎo)出一個或多個其它密鑰(等)。
[0134]在實施方案中,多次授權(quán)能夠組合授權(quán)以允許訪問一個或多個計算資源。例如,如圖24中示出,分開的授權(quán)密鑰的子集合可以用來導(dǎo)出其它密鑰。例如,如圖23中示出,標(biāo)記為Authl和Auth2的兩個授權(quán)密鑰用來導(dǎo)出合并的授權(quán)密鑰。在實施方案中,為了導(dǎo)出合并的授權(quán)密鑰,計算HMAC(f(Authl,Auth2),R)的值,其中R是某種限制,諸如上文描述的。在這個實例中,f是分開的授權(quán)密鑰的函數(shù),且可以是二維以上。例如,如圖23中示出,在函數(shù)f (AuthI, Auth2, Auth3)中使用三個分開的授權(quán)密鑰Authl、Auth2和Auth3以依據(jù)(或以其它方式至少部分基于)HMAC (f (AuthI, Auth2, Auth3),R)計算合并的授權(quán)密鑰。
[0135]從不同授權(quán)構(gòu)造密鑰的多種變動被認(rèn)為在本公開的范圍內(nèi)。例如,授權(quán)可以使用本公開的各個實施方案產(chǎn)生(或已產(chǎn)生)密鑰(κ_。)。每個授權(quán)Kspe??梢詫?yīng)于部分密鑰種子,其可以是用來產(chǎn)生其Kspe。的限制的可公開使用編碼(或以其它方式可用于消息簽名器和簽名驗證器的編碼)。例如,部分密鑰種子可以是(Kl/20110810/usa-east-l/DDS、K2/20110810/Org_name/jpl/DDS),其中斜線之間的每個字符串是限制。信息的這種編碼可以稱為密鑰路徑。作為更一般實例,部分密鑰種子可以是X1/./Xn,其中每個Xi (對于I與η之間的i)對應(yīng)于參數(shù),諸如上文描述的參數(shù)。來自可應(yīng)用授權(quán)的部分密鑰種子可以被編
碼為稱為密鑰種子的η元組。剛剛上面實例的η元組可以是(speCl、Spec2.....Specn),其
中每一項是對應(yīng)1(_。的密鑰路徑。應(yīng)注意,密鑰種子(和/或密鑰路徑)編碼密鑰持有人正通過產(chǎn)生簽名/密鑰而進(jìn)行授權(quán)的精確密鑰使用(所有被授權(quán)密鑰之間的全限制)。此外,由于部分密鑰種子可用于消息簽名器和簽名驗證器兩者,因為(例如)消息簽名器具有指定使用參數(shù)產(chǎn)生簽名密鑰的次序的信息且因此可產(chǎn)生密鑰并因此產(chǎn)生消息,所以用來產(chǎn)生密鑰和簽名的參數(shù)的任意排序是可能的。
[0136]然后可以針對可應(yīng)用授權(quán)中的每個(B卩,將產(chǎn)生密鑰的授權(quán))獲得或計算HMAC(Kspec,key-seed)的值。在各個實施方案中,這個值可以由獲得簽名密鑰以簽名消息的客戶端而計算或可以由另一裝置計算且隨后提供給客戶端。出于下列討論目的,可以將這些值中的每個稱作部分密鑰。在實施方案中,這些部分密鑰中的每個的語義是:它們只有在與下面的構(gòu)造(和下面的構(gòu)造的某些變動)相結(jié)合時才有效且當(dāng)結(jié)合時形成以密鑰種子編碼的專門化交集。
[0137]為了產(chǎn)生簽名密鑰以簽名消息,值是
[0138]Ks=HMAC (Partialkey1+...+partial_keyn, key-seed)
[0139]其中“ + ”可以指對公式中的該符號周圍的部分密鑰的某種關(guān)聯(lián)運算?!?+ ”符號可以是(例如)對包括部分密鑰的位的異或(XOR)運算?!?”符號也可以指某種其它合適的運算或函數(shù)。
[0140]為了驗證用來簽名消息的簽名,驗證器可以獲得每個部分密鑰、如上組合部分密鑰以形成簽名密鑰、簽名所接收的消息并比較該結(jié)果與預(yù)期結(jié)果以驗證簽名,諸如上文討論的。
[0141]本公開的實例實施方案可根據(jù)以下條款加以描述:
[0142]條款1.一種用于提供服務(wù)的計算機(jī)實施方法,其包括:
[0143]在以可執(zhí)行指令配置的一個或多個計算機(jī)系統(tǒng)的控制下,
[0144]從認(rèn)證方接收電子信息,所述電子信息編碼消息、所述消息的簽名和對從與所述認(rèn)證方共享的秘密證書導(dǎo)出的密鑰的一個或多個限制的集合,所述簽名可通過對所述消息、所述秘密證書和一個或多個限制的所述集合應(yīng)用基于哈希的消息認(rèn)證代碼函數(shù)而確定,而且在只具有基于哈希的消息認(rèn)證代碼函數(shù)而沒有一個或多個限制的所述集合時無法確定;
[0145]獲得至少部分使用一個或多個限制的所述集合的至少子集而產(chǎn)生的密鑰;
[0146]通過至少將以下項輸入至所述基于哈希的消息認(rèn)證代碼函數(shù)中而由所述一個或多個計算機(jī)系統(tǒng)計算基于哈希的消息認(rèn)證代碼函數(shù)的值:
[0147]至少部分基于所獲得的密鑰的第一輸入;和
[0148]至少部分基于一個或多個限制的所述集合的第二輸入;
[0149]由所述一個或多個計算機(jī)系統(tǒng)且至少部分基于所計算的值確定所述簽名是否有效;和[0150]在確定所述簽名有效時提供對一個或多個計算資源的訪問。
[0151]條款2.根據(jù)條款I(lǐng)所述的計算機(jī)實施方法,其中:
[0152]所述消息包括訪問所述一個或多個計算資源的請求;
[0153]所述方法還包括確定一個或多個限制的所述集合是否指示應(yīng)滿足所述請求;和
[0154]取決于確定限制指示應(yīng)滿足所述請求而提供對所述一個或多個計算資源的訪問。
[0155]條款3.根據(jù)條款2所述的計算機(jī)實施方法,其中編碼一個或多個限制的所述集合的所述信息由文檔加以編碼且其中確定限制的所述集合是否指示應(yīng)滿足所述請求包括針對接收所述請求的情境評估所述文檔。
[0156]條款4.根據(jù)條款I(lǐng)所述的計算機(jī)實施方法,其中:
[0157]所述消息包括訪問所述一個或多個計算資源的計算資源的請求;
[0158]編碼一個或多個限制的所述集合的所述信息包括指定所述計算資源的信息;和
[0159]提供對所述一個或多個計算資源的訪問包括在計算資源匹配所指定的計算資源時提供對所述計算資源的訪問。
[0160]條款5.根據(jù)條款I(lǐng)所述的計算機(jī)實施方法,其中:
[0161]編碼一個或多個限制的所述集合的所述消息對應(yīng)于所述消息有效的時間段;且
[0162]確定所述簽名是否有效的步驟至少部分基于在所述對應(yīng)時間段期間所述消息是否被提交。
[0163]條款6.根據(jù)條款I(lǐng)所述的計算機(jī)實施方法,其中:
[0164]編碼一個或多個限制的所述集合的所述消息對應(yīng)于至少部分基于位置的限制;且
[0165]確定所述簽名是否有效是至少部分基于所述一個或多個計算機(jī)中的至少一個的位置是否匹配對應(yīng)的位置。
[0166]條款7.—種用于提供服務(wù)的計算機(jī)實施方法,其包括:
[0167]在以可執(zhí)行指令配置的一個或多個計算機(jī)系統(tǒng)的控制下,
[0168]獲得編碼以下各項的電子信息:(i)消息;(ii)所述消息的第一簽名jP(iii)一個或多個參數(shù)的集合,所述第一簽名已經(jīng)至少部分基于(i)所述消息、(ii)秘密證書和
(iii)一個或多個參數(shù)的所述集合而產(chǎn)生,而且所述第一簽名在只具有所述消息和所述秘密證書而不具有一個或多個參數(shù)的所述集合時無法確定;
[0169]至少部分基于所述秘密證書和一個或多個參數(shù)的所述集合的至少子集導(dǎo)出第二證書;
[0170]至少部分基于所導(dǎo)出的第二證書產(chǎn)生第二簽名;
[0171]確定所述第一簽名是否匹配所述第二簽名;和
[0172]在所產(chǎn)生的第二簽名匹配所述第一簽名時提供對一個或多個計算資源的訪問。
[0173]條款8.根據(jù)條款7所述的計算機(jī)實施方法,其中導(dǎo)出所述第二證書包括將所述秘密證書和一個或多個參數(shù)的所述集合的所述至少子集輸入至函數(shù)中。
[0174]條款9.根據(jù)條款8所述的計算機(jī)實施方法,其中所述函數(shù)是對稱消息認(rèn)證函數(shù)。
[0175]條款10.根據(jù)條款9所述的計算機(jī)實施方法,其中所述對稱消息認(rèn)證函數(shù)是哈希函數(shù)。
[0176]條款11.根據(jù)條款9所述的計算機(jī)實施方法,其中,作為基于哈希的消息認(rèn)證代碼(HMAC)的部分,執(zhí)行將所述秘密證書和一個或多個參數(shù)的所述至少子集輸入至所述函數(shù)中。
[0177]條款12.根據(jù)條款8所述的計算機(jī)實施方法,其中產(chǎn)生所述第二簽名包括將所述函數(shù)的輸出和來自一個或多個參數(shù)的所述集合的參數(shù)兩者輸入至所述函數(shù)中。
[0178]條款13.根據(jù)條款7所述的計算機(jī)實施方法,其中編碼所述一個或多個參數(shù)的所述消息包括編碼一個或多個參數(shù)的所述集合的電子文檔。
[0179]條款14.根據(jù)條款8所述的計算機(jī)實施方法,其中:
[0180]產(chǎn)生所述第二簽名的步驟至少部分基于密鑰;
[0181]一個或多個參數(shù)的所述集合包括所述密鑰的使用上的一個或多個限制;和
[0182]根據(jù)所述一個或多個限制執(zhí)行提供對所述一個或多個計算資源的訪問。
[0183]條款15.根據(jù)條款14所述的計算機(jī)實施方法,其中所述密鑰至少部分基于將所述秘密證書輸入至函數(shù)中的結(jié)果。
[0184]條款16.—種具有存儲在其上的指令的非瞬時性計算機(jī)可讀存儲介質(zhì),所述指令在由計算機(jī)系統(tǒng)執(zhí)行時促使所述計算機(jī)系統(tǒng)至少進(jìn)行以下各項:
[0185]獲得從至少秘密證書和用于中間密鑰的一個或多個參數(shù)中導(dǎo)出的所述中間密鑰;
[0186]至少部分基于所獲得的中間密鑰來應(yīng)用產(chǎn)生消息的簽名的簽名產(chǎn)生過程的至少部分,所述簽名產(chǎn)生過程被配置成使得所述簽名對于具有所述消息、所述秘密證書和所述簽名但是缺少所述一個或多個限制的計算裝置而言是無法由所述簽名產(chǎn)生過程確定的;和
[0187]將所述消息、所述簽名和所述一個或多個參數(shù)提供給被配置來至少部分基于所述一個或多個參數(shù)和所述消息分析所述簽名的另一計算機(jī)系統(tǒng)以確定所述簽名是否有效。
[0188]條款17.根據(jù)條款16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中所述一個或多個參數(shù)編碼至少部分由所述另一計算機(jī)系統(tǒng)實施的所述中間密鑰的使用上的一個或多個限制。
[0189]條款18.根據(jù)條款16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中所述一個或多個限制對應(yīng)于所述中間密鑰可使用所在的時間段、所述中間密鑰可使用所在的位置和所述中間密鑰可用于獲得訪問的一個或多個服務(wù)中的至少一個。
[0190]條款19.根據(jù)條款16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中所述指令在由所述計算機(jī)系統(tǒng)執(zhí)行時使所述計算機(jī)系統(tǒng)能夠產(chǎn)生所述簽名而無需所述計算機(jī)系統(tǒng)具有對所述秘密證書的訪問。
[0191]條款20.根據(jù)條款19所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中在具有一個或多個參數(shù)的所述集合的情況下,所述簽名可使用所述共享秘密證書或所述中間密鑰由所述簽名產(chǎn)生過程確定。
[0192]條款21.根據(jù)條款19所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中獲得所述中間密鑰包括執(zhí)行算法,在所述算法中將哈希函數(shù)的至少一個輸出和所述參數(shù)中的至少一個輸入至所述哈希函數(shù)中。
[0193]條款22.—種計算機(jī)系統(tǒng),其包括:
[0194]一個或多個處理器;和
[0195]包括指令的存儲器,所述指令在由計算機(jī)系統(tǒng)的一個或多個處理器執(zhí)行時促使所述計算機(jī)系統(tǒng)至少進(jìn)行以下各項:[0196]接收一個或多個電子通信,所述一個或多個電子通信共同地編碼消息、所述消息的簽名和一個或多個參數(shù),所述簽名是至少部分基于所述秘密證書和所述一個或多個參數(shù)而產(chǎn)生的;
[0197]至少部分基于所述一個或多個參數(shù)和中間證書來分析所述消息和所述簽名以確定所述簽名是否有效,其中,從所述一個或多個參數(shù)的至少部分和所述秘密證書,但是在沒有所述秘密證書的情況下,導(dǎo)出所述中間證書;和
[0198]取決于確定所述簽名是有效的而采取一個或多個行動。
[0199]條款23.根據(jù)條款22所述的計算機(jī)系統(tǒng),其中:
[0200]所述存儲器和所述一個或多個處理器是第一地理位置中的第一服務(wù)器系統(tǒng)的部分;
[0201]所述計算機(jī)系統(tǒng)包括第二地理位置中的第二服務(wù)器系統(tǒng),所述第二服務(wù)器系統(tǒng)被配置來至少部分基于所述秘密證書產(chǎn)生不同的簽名;
[0202]所述第一服務(wù)器系統(tǒng)和所述第二服務(wù)器系統(tǒng)均缺少所述秘密證書;
[0203]分析所述消息和所述簽名包括將所述一個或多個參數(shù)的所述至少部分和所述中間證書輸入至函數(shù)中;和
[0204]所述第一服務(wù)器系統(tǒng)和所述第二服務(wù)器系統(tǒng)各自缺少信息,從所述信息可使用所述函數(shù)從所述消息中產(chǎn)生相同簽名。
[0205]條款24.根據(jù)條款22所述的計算機(jī)系統(tǒng),其中:
[0206]所述計算機(jī)系統(tǒng)對應(yīng)于服務(wù);且
[0207]所述一個或多個行動包括提供對所述服務(wù)的訪問。
[0208]條款25.根據(jù)條款24所述的計算機(jī)系統(tǒng),其中所述一個或多個參數(shù)限制使用所述中間證書用于訪問所述服務(wù)。
[0209]條款26.根據(jù)條款22所述的計算機(jī)系統(tǒng),其中:
[0210]分析所述消息和所述簽名包括對所述中間證書應(yīng)用哈希函數(shù);
[0211]所述一個或多個參數(shù)包括所述中間證書的使用上的多個限制;且
[0212]其中所述計算機(jī)系統(tǒng)被配置來實施所述限制。
[0213]條款27.根據(jù)條款22所述的計算機(jī)系統(tǒng),其中:
[0214]分析所述消息和所述簽名包括對從所述秘密證書導(dǎo)出的密鑰應(yīng)用哈希函數(shù);且
[0215]所述指令在由所述計算機(jī)系統(tǒng)的所述一個或多個處理器執(zhí)行時促使所述計算機(jī)系統(tǒng)進(jìn)一步從密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰。
[0216]條款28.根據(jù)條款27所述的計算機(jī)系統(tǒng),其中促使所述計算機(jī)系統(tǒng)進(jìn)一步從所述密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰的所述指令促使所述計算機(jī)系統(tǒng)在接收所述消息之前從所述密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰。
[0217]條款29.根據(jù)條款22所述的計算機(jī)系統(tǒng),其中所述中間證書由不同于所述計算機(jī)系統(tǒng)的另一計算機(jī)系統(tǒng)確定。
[0218]各個實施方案還可以在各種各樣的操作環(huán)境中實施,在一些情況中所述操作環(huán)境可包括可用于操作任何數(shù)量的應(yīng)用的一個或多個用戶計算機(jī)、計算裝置或處理裝置。用戶或客戶端裝置可包括任何數(shù)量的通用個人計算機(jī),諸如運行標(biāo)準(zhǔn)操作系統(tǒng)的桌上型或膝上型計算機(jī)和運行移動軟件且能夠支持多種聯(lián)網(wǎng)和消息傳遞協(xié)議的蜂窩裝置、無線裝置和手持裝置。這種系統(tǒng)也可包括運行任何種類的商購操作系統(tǒng)和其它已知應(yīng)用的多個工作站以用于諸如研發(fā)和數(shù)據(jù)庫管理的目的。這些裝置也可包括其它電子裝置,諸如虛擬終端、瘦客戶端、游戲系統(tǒng)和能夠經(jīng)由網(wǎng)絡(luò)進(jìn)行通信的其它裝置。
[0219]大部分實施方案利用為本領(lǐng)域一般技術(shù)人員所熟悉的用于支持使用任何種類的商購協(xié)議(諸如TCP/IP、OS1、FTP、UPnP, NFS、CIFS和AppleTalk)進(jìn)行通信的至少一個網(wǎng)絡(luò)。網(wǎng)絡(luò)可能是(例如)局域網(wǎng)、廣域網(wǎng)、虛擬專用網(wǎng)絡(luò)、互聯(lián)網(wǎng)、內(nèi)部網(wǎng)、外部網(wǎng)、公用電話交換網(wǎng)、紅外線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)和其任何組合。
[0220]在利用網(wǎng)頁服務(wù)器的實施方案中,網(wǎng)頁服務(wù)器可運行任何種類的服務(wù)器或中間層應(yīng)用,包括HTTP服務(wù)器、FTP服務(wù)器、CGI服務(wù)器、數(shù)據(jù)服務(wù)器、Java服務(wù)器和商用服務(wù)器。服務(wù)器也可以能夠響應(yīng)于來自用戶裝置的請求而執(zhí)行程序或腳本,諸如通過執(zhí)行一個或多個網(wǎng)頁應(yīng)用,所述網(wǎng)頁應(yīng)用可以被實施為以任何編程語言(諸如Javal1、C、C#或C++)或任何腳本語言(諸如Perl、Python或TCL)和其組合寫入的一個或多個腳本或程序。服務(wù)器也可以包括數(shù)據(jù)庫服務(wù)器,包括(不限于)從Oracle' Microsoft' 3丫匕336@和13^'1<商購的服務(wù)器。
[0221]如上文討論,所述環(huán)境可包括各種數(shù)據(jù)存儲和其它存儲器和存儲介質(zhì)。這些可駐留在各個位置中,諸如近距計算機(jī)中的一個或多個(和/或駐留在計算機(jī)中的一個或多個中)或跨網(wǎng)絡(luò)遠(yuǎn)距計算機(jī)中的任何一個或所有的存儲介質(zhì)上。在特定的實施方案集中,信息可以駐留在本領(lǐng)域一般技術(shù)人員所熟悉的存儲區(qū)域網(wǎng)(“SAN”)中。類似地,可以酌情地本地和/或遠(yuǎn)程存儲用于執(zhí)行專屬于計算機(jī)、服務(wù)器或其它網(wǎng)絡(luò)裝置的功能的任何必要文件。如果系統(tǒng)包括計算化裝置,那么每個這樣的裝置可包括可以經(jīng)由總線電耦接的硬件元件,所述元件包括(例如)至少一個中央處理單元(CPU)、至少一個輸入裝置(例如,鼠標(biāo)、鍵盤、控制器、觸摸屏或小鍵盤)和至少一個輸出裝置(例如,顯示裝置、打印機(jī)或揚聲器)。這樣的系統(tǒng)也可以包括一個或多個存儲裝置,諸如硬盤驅(qū)動器、光學(xué)存儲裝置和固態(tài)存儲裝置,諸如隨機(jī)存取存儲器(“RAM”)或只讀存儲器(“ROM”)和可移除介質(zhì)裝置、存儲卡、快閃等。
[0222]這些裝置也可包括如上文描述的計算機(jī)可讀存儲介質(zhì)閱讀器、通信裝置(例如,調(diào)制解調(diào)器、網(wǎng)卡(無線或有線)、紅外線通信裝置等)和工作存儲器。計算機(jī)可讀存儲介質(zhì)閱讀器可鏈接或被配置來接收計算機(jī)可讀存儲介質(zhì),其表示遠(yuǎn)程、本地、固定和/或可移除存儲裝置和用于瞬時和/或更永久地包括、存儲、傳輸和檢索計算機(jī)可讀信息的存儲介質(zhì)。系統(tǒng)和各種裝置通常也將包括多種軟件應(yīng)用、模塊、服務(wù)或位于至少一個工作存儲器裝置內(nèi)的其它元件(包括操作系統(tǒng)和應(yīng)用程序,諸如客戶端應(yīng)用或網(wǎng)頁瀏覽器)。應(yīng)明白,替代實施方案可以具有自上文描述的多種變動。例如,也可能使用定制硬件和/或可能在硬件、軟件(包括便攜式軟件、諸如小應(yīng)用)或兩者中實施特定元件。此外,可以采用到其它計算裝置的連接,諸如網(wǎng)絡(luò)輸入/輸出裝置。
[0223]用于包括代碼或代碼部分的存儲介質(zhì)和計算機(jī)可讀介質(zhì)可包括本領(lǐng)域中已知或使用的任何適當(dāng)?shù)慕橘|(zhì),包括存儲介質(zhì)和通信介質(zhì),諸如(但不限于)以任何方法或技術(shù)實施的用于存儲和/或傳輸信息(諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù))的易失性和非易失性、可移動和不可移動介質(zhì)(包括RAM、R0M、EEPR0M、快閃存儲器或其它存儲器技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其它光學(xué)存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲裝置或可用來存儲所希望的信息并可由系統(tǒng)裝置訪問的任何其它介質(zhì))?;诒疚奶峁┑墓_和教學(xué),本領(lǐng)域一般技術(shù)人員應(yīng)明白實施各個實施方案的其它方式和/或方法。
[0224]說明書和附圖因此被視為具有說明性意義而不是限制性意義。然而,明顯的是,可以在不違背如權(quán)利要求中陳述的本發(fā)明的更廣泛精神和范圍的情況下作出各種修改和改變。
[0225]其它變動是在本公開的精神內(nèi)。因此,雖然所公開的技術(shù)可具有各種修改和替代結(jié)構(gòu),但是也在附圖中示出了且在上文詳細(xì)描述了其某些示出的實施方案。然而,應(yīng)了解,不旨在將本發(fā)明限于所公開的一種或多種具體形式,反而本發(fā)明旨在涵蓋落在如隨附權(quán)利要求中定義的本發(fā)明的精神和范圍內(nèi)的所有修改、替代結(jié)構(gòu)和等效物。
[0226]除非本文另有指示或上下文明顯矛盾,否則術(shù)語“a (—)”和“an (—個)”和“the(所述)”和描述公開實施方案的上下文(尤其是下列權(quán)利要求的上下文)中的類似參考符號的使用均被解釋為涵蓋單數(shù)和復(fù)數(shù)兩者。除非另有提及,否則術(shù)語“comprising (包括)”、“having (具有)”、“including (包括)”和“containing (包括)”均被解釋為開放式術(shù)語(即,意指“包括但不限于”)。即使存在某種干預(yù),術(shù)語“connected (已連接)”仍被解釋為部分或全部包括在內(nèi)、附接到或連結(jié)在一起。除非本文另有指示,否則本文的值范圍的敘述只旨在用作個別參考落在所述范圍內(nèi)的每個單獨值的速記方法,且每個單獨值如同其在本文被個別敘述一樣而合并在說明書中。除非本文另有指示或上下文明顯矛盾,否則本文描述的所有方法均以任何合適的次序加以執(zhí)行。除非另有說明,否則本文提供的任何和所有實例或示例性語言(例如,“諸如”)的使用只旨在更好地闡述本發(fā)明的實施方案且沒有強加限制本發(fā)明的范圍。說明書中應(yīng)沒有任何語言被解釋為指示實踐本發(fā)明所必需的任何未說明元件。
[0227]本文描述了本公開的優(yōu)選實施方案,包括
【發(fā)明者】已知用于實行本發(fā)明的最佳模式。本領(lǐng)域一般技術(shù)人員在閱讀前文描述之后可以更加明白所述優(yōu)選實施方案的變動。
【發(fā)明者】希望本領(lǐng)域一般技術(shù)人員酌情采用這些變動,且
【發(fā)明者】希望以其它方式而不是如本文具體描述般實踐本發(fā)明。因此,本發(fā)明包括隨附于本發(fā)明的權(quán)利要求中敘述且適用法律允許的主題的所有修改和等效物。此外,除非本文另有指示或上下文明顯矛盾,否則本發(fā)明的所有可能變動中的上述元件的任何組合包括在本發(fā)明中。
[0228]本文敘述的所有參考物(包括出版物、專利申請和專利)以引用的方式以與每個參考被個別且具體指示成以引用方式并入且在本文全部陳述的相同程度并入本文。
【權(quán)利要求】
1.一種用于提供服務(wù)的計算機(jī)實施方法,其包括: 在以可執(zhí)行指令配置的一個或多個計算機(jī)系統(tǒng)的控制下, 從認(rèn)證方接收電子信息,所述電子信息編碼消息、所述消息的簽名和對從與所述認(rèn)證方共享的秘密證書導(dǎo)出的密鑰的一個或多個限制的集合,所述簽名可通過對所述消息、所述秘密證書和一個或多個限制的所述集合應(yīng)用基于哈希的消息認(rèn)證代碼函數(shù)而確定,而且在只具有基于哈希的消息認(rèn)證代碼函數(shù)而沒有一個或多個限制的所述集合時無法確定; 獲得至少部分使用一個或多個限制的所述集合的至少子集而產(chǎn)生的密鑰; 通過至少將以下項輸入至所述基于哈希的消息認(rèn)證代碼函數(shù)中而由所述一個或多個計算機(jī)系統(tǒng)計算基于哈希的消息認(rèn)證代碼函數(shù)的值: 至少部分基于所獲得的密鑰的第一輸入;和 至少部分基于一個或多個限制的所述集合的第二輸入; 由所述一個或多個計算機(jī)系統(tǒng)且至少部分基于所計算的值確定所述簽名是否有效;和 在確定所述簽名有效時提供對一個或多個計算資源的訪問。
2.根據(jù)權(quán)利要求1所述的計算機(jī)實施方法,其中: 所述消息包括訪問所述一個或多個計算資源的請求; 所述方法還包括確定一個或多個限制的所述集合是否指示應(yīng)滿足所述請求;和 取決于確定限制指示應(yīng)滿足所述請求而提供對所述一個或多個計算資源的訪問。
3.根據(jù)權(quán)利要求2所述的計算機(jī)實施方法,其中編碼一個或多個限制的所述集合的所述信息由文檔加以編碼且其中確定限制的所述集合是否指示應(yīng)滿足所述請求包括針對接收所述請求的情境評估所述文檔。
4.根據(jù)權(quán)利要求1所述的計算機(jī)實施方法,其中: 所述消息包括訪問所述一個或多個計算資源的計算資源的請求; 編碼一個或多個限制的所述集合的所述信息包括指定所述計算資源的信息;和提供對所述一個或多個計算資源的訪問包括在計算資源匹配所指定的計算資源時提供對所述計算資源的訪問。
5.根據(jù)權(quán)利要求1所述的計算機(jī)實施方法,其中: 編碼一個或多個限制的所述集合的所述消息對應(yīng)于所述消息有效的時間段;且確定所述簽名是否有效的步驟至少部分基于在所述對應(yīng)時間段期間所述消息是否被提交。
6.根據(jù)權(quán)利要求1所述的計算機(jī)實施方法,其中: 編碼一個或多個限制的所述集合的所述消息對應(yīng)于至少部分基于位置的限制;且確定所述簽名是否有效是至少部分基于所述一個或多個計算機(jī)中的至少一個的位置是否匹配所述對應(yīng)的位置。
7.一種用于提供服務(wù)的計算機(jī)實施方法,其包括: 在以可執(zhí)行指令配置的一個或多個計算機(jī)系統(tǒng)的控制下, 獲得編碼以下各項的電子信息:(i )消息;(ii )所述消息的第一簽名;和(iii ) 一個或多個參數(shù)的集合,所述第一簽名已經(jīng)至少部分基于(i)所述消息、(ii)秘密證書和(iii)一個或多個參數(shù)的所述集合而產(chǎn)生,而且所述第一簽名在只具有所述消息和所述秘密證書而不具有一個或多個參數(shù)的所述集合時無法確定;至少部分基于所述秘密證書和一個或多個參數(shù)的所述集合的至少子集導(dǎo)出第二證書; 至少部分基于所導(dǎo)出的第二證書產(chǎn)生第二簽名; 確定所述第一簽名是否匹配所述第二簽名;和 在所產(chǎn)生的第二簽名匹配所述第一簽名時提供對一個或多個計算資源的訪問。
8.根據(jù)權(quán)利要求7所述的計算機(jī)實施方法,其中導(dǎo)出所述第二證書包括將所述秘密證書和一個或多個參數(shù)的所述集合的所述至少子集輸入至函數(shù)中。
9.根據(jù)權(quán)利要求8所述的計算機(jī)實施方法,其中所述函數(shù)是對稱消息認(rèn)證函數(shù)。
10.根據(jù)權(quán)利要求9所述的計算機(jī)實施方法,其中所述對稱消息認(rèn)證函數(shù)是哈希函數(shù)。
11.根據(jù)權(quán)利要求9所述的計算機(jī)實施方法,其中,作為基于哈希的消息認(rèn)證代碼(-0的部分,執(zhí)行將所述秘密證書和所述一個或多個參數(shù)的所述至少子集輸入至所述函數(shù)中。
12.根據(jù)權(quán)利要求8所述的計算機(jī)實施方法,其中產(chǎn)生所述第二簽名包括將所述函數(shù)的輸出和來自一個或多個參數(shù)的所述集合的參數(shù)兩者輸入至所述函數(shù)中。
13.根據(jù)權(quán)利要求7所述的計算機(jī)實施方法,其中編碼所述一個或多個參數(shù)的所述消息包括編碼一個或多個參數(shù)的所述集合的電子文檔。
14.根據(jù)權(quán)利要求8所述的計算機(jī)實施方法,其中: 產(chǎn)生所述第二簽名的步驟至少部分基于密鑰; 一個或多個參數(shù)的所述集合包括所述密鑰的使用上的一個或多個限制;和 根據(jù)所述一個或多個限制執(zhí)行提供對所述一個或多個計算資源的訪問。
15.根據(jù)權(quán)利要求14所述的計算機(jī)實施方法,其中所述密鑰至少部分基于將所述秘密證書輸入至函數(shù)中的結(jié)果。
16.—種非瞬時性計算機(jī)可讀存儲介質(zhì),所述非瞬時性計算機(jī)可讀存儲介質(zhì)具有在所述非瞬時性計算機(jī)可讀存儲介質(zhì)上存儲的指令,所述指令在由計算機(jī)系統(tǒng)執(zhí)行時促使所述計算機(jī)系統(tǒng)至少進(jìn)行以下各項: 獲得從至少秘密證書和用于中間密鑰的一個或多個參數(shù)中導(dǎo)出的所述中間密鑰; 至少部分基于所獲得的中間密鑰來應(yīng)用產(chǎn)生消息的簽名的簽名產(chǎn)生過程的至少部分,所述簽名產(chǎn)生過程被配置成使得所述簽名對于具有所述消息、所述秘密證書和所述簽名但是缺少所述一個或多個限制的計算裝置而言是無法由所述簽名產(chǎn)生過程確定的;和 將所述消息、所述簽名和所述一個或多個參數(shù)提供給被配置來至少部分基于所述一個或多個參數(shù)和所述消息分析所述簽名的另一計算機(jī)系統(tǒng)以確定所述簽名是否有效。
17.根據(jù)權(quán)利要求16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中所述一個或多個參數(shù)編碼至少部分由所述另一計算機(jī)系統(tǒng)實施的所述中間密鑰的使用上的一個或多個限制。
18.根據(jù)權(quán)利要求16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中所述一個或多個限制對應(yīng)于所述中間密鑰可使用所在的時間段、所述中間密鑰可使用所在的位置,和所述中間密鑰可用于獲得訪問的一個或多個服務(wù)中的至少一個。
19.根據(jù)權(quán)利要求16所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中在由所述計算機(jī)系統(tǒng)執(zhí)行時所述指令使所述計算機(jī)系統(tǒng)能夠產(chǎn)生所述簽名而無需所述計算機(jī)系統(tǒng)具有對所述秘密證書的訪問。
20.根據(jù)權(quán)利要求19所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中在具有一個或多個參數(shù)的所述集合的情況下,所述簽名可使用所述共享秘密證書或所述中間密鑰由所述簽名產(chǎn)生過程確定。
21.根據(jù)權(quán)利要求19所述的非瞬時性計算機(jī)可讀存儲介質(zhì),其中獲得所述中間密鑰包括執(zhí)行算法,在所述算法中將哈希函數(shù)的至少一個輸出和所述參數(shù)中的至少一個輸入至所述哈希函數(shù)中。
22.—種計算機(jī)系統(tǒng),其包括: 一個或多個處理器;和 包括指令的存儲器,所述指令在由計算機(jī)系統(tǒng)的一個或多個處理器執(zhí)行時促使所述計算機(jī)系統(tǒng)至少進(jìn)行以下各項: 接收一個或多個電子通信,所述一個或多個電子通信共同地編碼消息、所述消息的簽名和一個或多個參數(shù),所述簽名是至少部分基于所述秘密證書和所述一個或多個參數(shù)而產(chǎn)生的; 至少部分基于所述一個或多個參數(shù)和中間證書來分析所述消息和所述簽名以確定所述簽名是否有效,其中,從所述一個或多個參數(shù)的至少部分和所述秘密證書,但在沒有所述秘密證書的情況下,導(dǎo)出所述中間證書;和 取決于確定所述簽名是有效的而采取一個或多個行動。
23.根據(jù)權(quán)利要求22所述的計算機(jī)系統(tǒng),其中: 所述存儲器和所述一個或多個處理器是第一地理位置中的第一服務(wù)器系統(tǒng)的部分;所述計算機(jī)系統(tǒng)包括第二地理位置中的第二服務(wù)器系統(tǒng),所述第二服務(wù)器系統(tǒng)被配置來至少部分基于所述秘密證書產(chǎn)生不同的簽名; 所述第一服務(wù)器系統(tǒng)和所述第二服務(wù)器系統(tǒng)均缺少所述秘密證書; 分析所述消息和所述簽名包括將所述一個或多個參數(shù)的所述至少部分和所述中間證書輸入至函數(shù)中;和 所述第一服務(wù)器系統(tǒng)和所述第二服務(wù)器系統(tǒng)各自缺少信息,由所述信息可使用所述函數(shù)從所述消息中產(chǎn)生相同簽名。
24.根據(jù)權(quán)利要求22所述的計算機(jī)系統(tǒng),其中: 所述計算機(jī)系統(tǒng)對應(yīng)于服務(wù);且 所述一個或多個行動包括提供對所述服務(wù)的訪問。
25.根據(jù)權(quán)利要求24所述的計算機(jī)系統(tǒng),其中所述一個或多個參數(shù)限制使用所述中間證書用于訪問所述服務(wù)。
26.根據(jù)權(quán)利要求22所述的計算機(jī)系統(tǒng),其中: 分析所述消息和所述簽名包括對所述中間證書應(yīng)用哈希函數(shù); 所述一個或多個參數(shù)包括所述中間證書的使用上的多個限制;且 其中所述計算機(jī)系統(tǒng)被配置來實施所述限制。
27.根據(jù)權(quán)利要求22所述的計算機(jī)系統(tǒng),其中: 分析所述消息和所述簽名包括對從所述秘密證書導(dǎo)出的密鑰應(yīng)用哈希函數(shù);且所述指令在由所述計算機(jī)系統(tǒng)的所述一個或多個處理器執(zhí)行時促使所述計算機(jī)系統(tǒng)進(jìn)一步從密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰。
28.根據(jù)權(quán)利要求27所述的計算機(jī)系統(tǒng),其中促使所述計算機(jī)系統(tǒng)進(jìn)一步從所述密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰的所述指令促使所述計算機(jī)系統(tǒng)在接收所述消息之前從所述密鑰授權(quán)計算機(jī)系統(tǒng)接收所導(dǎo)出的密鑰。
29.根據(jù)權(quán)利要求22所述的計算機(jī)系統(tǒng),其中所述中間證書由不同于所述計算機(jī)系統(tǒng)的另一計算機(jī) 系統(tǒng)確定。
【文檔編號】G06F15/16GK103842984SQ201280047625
【公開日】2014年6月4日 申請日期:2012年9月28日 優(yōu)先權(quán)日:2011年9月29日
【發(fā)明者】G·B·羅斯, B·J·貝姆, E·D·克拉恩, C·M·伊拉茨, N·R·費奇, E·J·布蘭德懷恩, K·R·奧尼爾 申請人:亞馬遜技術(shù)股份有限公司