用于硬件安全模塊的批量密碼術的制作方法
用于硬件安全模塊的批量密碼術
相關申請的交叉引用
1.本技術是2020年12月11日提交的美國專利申請no.17/119,342的繼續申請,其要求2020年3月10日提交的美國臨時專利申請no.62/987,595的優先權,公開內容通過引用并入本文。
背景技術:
2.硬件安全模塊(hardware security module,hsm)是可以存儲加密密鑰(cryptographic key)并且可以使用這些密鑰對明文或密文數據執行加密操作(cryptographic operation)的設備。例如,公共密鑰基礎設施環境中的認證機構和注冊機構可以使用hsm來提供某種程度的公共保證,即加密密鑰對應于其正確所有者。作為另一個示例,hsm也可以被卡支付系統使用,作為在網絡設備之間安全地傳輸用戶信用卡信息的一部分。
3.hsm可以被設計和構造成具有一個或多個物理安全措施以提供保護或抵抗篡改。例如,hsm可以被配置為在檢測到實際或嘗試物理突破進入hsm的外殼時使其不可操作或不可訪問其存儲的密鑰。可以將一個或多個hsm實施為對較大安全網絡的物理安全層的一部分,較大安全網絡可以包括各種硬件和軟件組件。
4.hsm可能是昂貴的,通常是由于實施一個或多個物理安全措施以及包括一個或多個專用的密碼處理器,以及由于認證hsm用于加密的過程。密碼處理器是專門配置用于執行一些加密操作的處理單元,例如加密,解密或初始化隨機或偽隨機值,作為使用hsm實現加密框架的一部分。加密處理器可以被實施為與一個或多個通用處理單元,例如一個或多個中央處理單元(cpu)一起的協處理器(co-proesssor)。hsm可以具有多個加密處理器,這些加密處理器被劃分和配置為執行硬件加速。到hsm的輸入可以分布在每個密碼處理器之間進行處理。例如,hsm通常具有單個接口以允許訪問其多個加密處理器。然而,該接口可能不允許hsm在其最充分的處理能力下使用,例如在接收加密小明文的請求時。
5.本公開提供了向hsm添加新的應用編程接口(api)集合,應用編程接口(api)集合在到hsm的單個消息中處理一批類似請求。新api集合可以包括加密api。加密api可以接受:(1)密鑰的標識符;以及(2)明文數組(array),并返回密文數組。新api集合可以包括解密api。解密api可以接受:(1)密鑰的標識符;以及(2)密文數組,并返回明文數組。在一些實施方式中,新api集合可以包括用于執行其它加密操作的其它api,諸如本文描述的sign,verify,mac。不同定義的api還可以根據特定的加密框架來定義加密操作,例如對定義高級加密標準(advanced encryption standard,aes)加密和解密的hsm的api,其可以進一步定義不同的操作模式,例如伽羅瓦/計數器(galois/counter)模式(gcm)。
6.hsm供應商將在其設備中實現功能,使得主處理器同時作用于整個批量。例如,處理器可以驗證所有明文,將所有驗證的明文傳遞給協處理器,然后將所有明文返回給用戶。hsm中的主處理器將把該批量傳送到加密處理器,加密處理器將解包(unpack)數組,分別處理每個操作,并將結果打包成另一批量。主處理器將把該批量復制回hsm用戶。
7.這具有顯著減少用于小明文加密操作的每操作(per-operation)開銷的優點,其中每個操作的恒定成本占主導地位。例如,可以將小(32字節)明文的吞吐量從每秒幾千個請求(requests-per-second,rps)的量級增加到幾百萬個rps的量級。
技術實現要素:
8.本發明的一個方面提供一種硬件安全模塊(hsm),包括多個處理器,所述處理器被配置為:接收執行一個或多個加密操作的請求,所述請求包括存儲多個數據元素的第一批量數據結構。所述多個處理器進一步經配置為根據接收的請求和所述一個或多個加密操作來處理所述第一批量數據結構。為了處理所述第一批量數據結構,所述多個處理器被配置為:對所述多個數據元素進行解批量處理,對所述多個數據元素執行所述一個或多個加密操作以生成多個輸出,以及生成存儲所述多個輸出的輸出批量數據結構。
9.所述請求可以是第一請求,所述一個或多個加密操作可以是一個或多個第一加密操作,以及所述多個數據元素可以是多個第一數據元素。所述多個處理器可進一步經配置以:在耦合到所述hsm的存儲器中保存一個或多個加密密鑰,接收第二請求,以對第二批量數據結構執行一個或多個第二加密操作,其中所述第二批量數據結構包括密鑰標識符和多個第二數據元素。所述多個處理器可進一步經配置以確定所述密鑰標識符是否對應于所述一個或多個加密密鑰中的一個加密密鑰,且以及響應于確定所述密鑰標識符對應于一個識別的加密密鑰,根據所述第二請求處理梭梭樹第二批量數據結構,并使用所述識別的加密密鑰作為對所述一個或多個第二加密操作的輸入。
10.硬件安全模塊可以包括第一處理器和第二處理器,其中所述第一處理器被配置為:接收所述批量處理數據結構作為輸入,對所述批量數據結構執行一個或多個預處理操作,確定所述批量處理數據結構對于處理是否有效,以及響應于確定所述批量數據結構對于處理有效,將驗證的批量數據結構發送到所述第二處理器。
11.所述第一處理器可以是通用處理器,所述第二處理器可以是密碼處理器,其被配置為對經預處理的所述批量數據結構執行所述一個或多個加密操作。所述請求和所述批量數據結構是根據批量hsm應用程序接口(api)的相應定義來形成的。
12.所述hsm被配置成執行的所述一個或多個加密操作是根據所述批量hsm api定義的。
13.所述批量hsm api定義一個或多個api,每個api定義相應的加密框架,包括定義一個或多個相應的數據結構和用于執行所述相應的加密框架的一個或多個相應的加密操作。
14.所述加密操作包括用于加密、解密、密鑰生成、簽名生成、簽名驗證、隨機數生成、或消息認證的操作。
15.所述請求可以是第一請求,所述hsm可以耦合到計算設備,以及所述多個處理器進一步經配置以接收和處理包括第二批量數據結構的第二請求,所述第二批量數據結構包括由所述計算裝置批量處理的數據元素。
16.前述方面的其它實施方式可以包括記錄在一個或多個計算機可讀存儲介質上的計算機實現的方法、裝置和計算機程序。
附圖說明
17.圖1是與耦合到實施一個或多個批量hsm api的hsm的服務器計算設備通信的用戶計算設備的框圖。
18.圖2是示出使用硬件安全模塊來執行批量加密的示例性過程的流程圖。
19.圖3是示出根據接收到的請求和一個或多個加密操作來處理批量數據結構的示例性過程的流程圖。
20.圖4是說明在hsm上執行的示例批量加密過程的流程圖。
21.圖5是說明在hsm上執行的示例批量解密過程的流程圖。
22.圖6是說明在hsm上執行的示例批量簽名過程的流程圖。
23.圖7是說明在hsm上執行的示例批量驗證過程的流程圖。
24.圖8是說明在hsm上執行的示例mac過程的流程圖。
25.圖9是用于hsm的代理批量處理請求的示例性過程的流程圖。
具體實施方式
26.本公開提供了用于在硬件安全模塊(hsm)上執行批量加密的方法、系統、裝置、和包括計算機可讀存儲介質和設備。hsm可以被配置為接收對hsm執行加密操作的批量請求。hsm不是接收對有效載荷(payload)進行操作的單獨請求,而是可以被配置為接收用于在一批中執行相同操作的批量數據。例如,不同于hsm接收用加密密鑰來加密明文的多個單獨請求,hsm可以被配置為在單個請求中接收批量明文,以用加密密鑰對該批中的每個請求加密。
27.例如,hsm可以實施用于執行不同操作的多個處理器,不同操作與對hsm執行批量處理加密操作有關。第一處理器可以接收包括待處理的數據元素的批量數據結構的批量處理請求。批量數據結構可以是單個數據元素的數組或向量,例如分別用于加密和解密的明文或密文。第一處理器可以對批量數據結構執行預處理操作,例如輸入驗證,并且在驗證時將批量數據結構發送到第二處理器。第二處理器可以是專門配置成執行批量請求中指定的加密操作的密碼處理器。作為一個示例,第二處理器可以解包批量數據結構、對批量數據結構的每個單獨數據元素執行每個操作、并且將執行操作的結果打包到另一個批量數據結構中。
28.第一處理器可經配置以將輸出批量數據結構發送到將批量請求發送到hsm的請求計算裝置。從請求計算設備的角度來看,可以以不透明的方式執行批量處理,因為可以向hsm發送批量數據,并且可以響應于輸入從hsm接收批量輸出數據,而不需要向hsm指定如何處理批量數據的請求計算設備。
29.批量數據結構可以被hsm分成多個子批量,并且分布在由hsm實施的多個密碼處理器上。密碼處理器(cryptoprocessor)可以包括多個處理核,并且在一些實施方式中,hsm可以將收到的批量數據分給密碼處理器的每個核進行處理。
30.hsm和請求設備可以根據一個或多個批量處理hsm應用程序接口(api)執行操作。根據本公開的方面,批量hsm api可以定義一個或多個由hsm被配置為執行的操作組成的批量函數。批量hsm api可以為各種不同的加密基元(cryptographic primitive)中的任何一個定義批量函數和批量數據結構。例如,批量hsm api可以定義批量加密、批量解密、和批量
密鑰生成的批量處理函數,分別作為由hsm執行的用于加密,解密和密鑰生成的各個操作的組合。
31.耦合到hsm的計算設備可以實現批量邏輯以批量處理請求并將批量請求發送到hsm用于批量處理。以這種方式,hsm可以要求例如由hsm供應商進行最小的修改,以便實現根據本公開的方面的批量密碼術。此外,可以增加hsm上的處理吞吐量并且可以降低每個操作的開銷,特別是在請求計算設備發送許多請求來處理小數據元素(例如加密小明文)的使用情況下。例如,可以減少由hsm執行的用于執行預處理操作以及用于在hsm的處理器或處理核之間傳送數據的操作,至少因為用于處理的數據元素被成批地一起發送,而不是被單獨地發送。
32.圖1是與耦合到hsm 105的服務器計算設備115通信的用戶計算設備110的框圖,hsm 105實現用于一個或多個批量hsm api 100的批量處理邏輯。用戶計算設備110可以被配置為通過網絡125與服務器計算設備115通信。用戶計算設備110可以是各種不同類型的設備中的任何一種,能夠處理指令并將數據傳輸至人和其它計算機或從人和其它計算機接收數據,例如膝上型計算機、臺式計算機、諸如電話或平板電腦的移動設備、視頻游戲控制臺、tv機頂盒、缺少本地存儲能力的網絡計算機、或用于佩戴的設備,例如手表、耳塞等。
33.服務器計算設備115可以是單個設備,或者可以是數據中心的一部分,數據中心本身可以是云計算平臺的一部分。云計算平臺可以包括多個數據中心,數據中心包括多個服務器計算設備,例如服務器計算設備115。在一些實施方式中,用戶計算設備110耦合到hsm 105,例如因為hsm 105作為物理組件安裝在用戶計算設備110上。用戶計算設備110和hsm 105也可以通過例如總線或電線的物理連接耦合。
34.設備110,115能夠通過網絡125進行直接和間接通信。例如,使用因特網套接字(socket),用戶計算設備110可以通過因特網協議連接到在服務器計算設備115上運行的服務。服務器計算設備115可以建立可以接受用于發送和接收信息的發起連接的監聽套接字。網絡125本身可以包括各種配置和協議,包括因特網,萬維網,內聯網,虛擬專用網絡,廣域網,局域網和使用一個或多個公司專有的通信協議的專用網絡。網絡125可沿著各種不同帶寬支持各種短程和長程連接,帶寬例如通常與bluetooth標準相關聯的2.402ghz至2.480ghz、通常與wi-fi通信協議相關聯的2.4ghz和5ghz、或與例如無線寬帶通信的lte標準相關聯的各種通信標準。另外或可選地,網絡125還可以支持設備110,115之間的有線連接,包括各種類型的以太網連接。
35.hsm 105可以是實現用于執行加密操作和存儲一個或多個加密密鑰的一個或多個物理安全措施的計算設備。hsm 105可以是耦合到服務器計算設備115的單獨的計算設備,例如通過網絡125或通過單獨的連接。連接可以是有線的或無線的。例如,hsm 105可以通過一個或多個物理電纜,或者通過hsm和服務器計算設備115之間的總線接口耦合到服務器計算設備115。在一些實施方式中,hsm 105是可以直接插入到服務器計算設備115中的卡或其它物理模塊。
36.hsm 105可以構造有防篡改或抗篡改外殼。作為示例,hsm 105可以被配置為檢測hsm 105的外殼的破壞或嘗試破壞,并且作為響應可以使其自身不可操作或其存儲的密鑰不可用。hsm 105可以實現各種不同的物理安全措施中的任何一種。
37.hsm 105可以包括一個或多個密碼處理器254。密碼處理器可以是被配置用于執行
加密操作的處理單元。在一些設備上,密碼處理器可以被實施為另一種類型的處理單元的協處理器,例如另一個密碼處理器或通用cpu。一個或多個密碼處理器254可以被配置用于在執行至少一些類型的加密操作時加速硬件。例如,密碼處理器可以是加密加速器并且被配置用于有效地執行加密操作,包括與諸如aes的不同類型的加密框架相關聯的操作。
38.hsm 105可以是產生對hsm 105執行加密操作的請求的許多計算設備的大型網絡的一部分。網絡125可以具有少量的計算設備,例如由hsm 105服務的小型企業網絡。其它網絡可以具有大量的計算設備,例如計算平臺的數千個設備。每個計算設備可以生成用于對例如明文或密文的某些數據執行加密操作的多個請求。
39.由hsm 105管理的加密密鑰的數量可以變化。hsm 105可以實現密鑰分層(hierarchy),其中存儲在hsm 105上的一個或多個根密鑰被用于加密和/或解密存儲在hsm 105的其它地方的設備上的密鑰。hsm 105可以被選擇作為網絡125上的安全系統的一部分,用于存儲一個或多個根加密密鑰作為附加的安全措施,至少因為hsm105可以實施一個或多個物理安全措施,一個或多個物理安全措施不是在參與密碼安全通信的網絡125的其它設備上實現的。
40.作為通信吞吐量(throughput)的示例,網絡125的計算設備可以向hs105發送1,000rps(每秒請求)的數量。根據流量模式和其它條件,hsm 105可以接收比平均流量流高幾個數量級的流量突發。例如,網絡125可以向hsm 105發送1,000rps,偶爾會有高達150,000rps的突發。
41.作為一個示例,與hsm 105通信的網絡125的設備110,115可以包括被配置為安全地傳送敏感數據的自動柜員機或信用卡亭。作為另一個示例,網絡125的設備可以包括與hsm 105通信的設備,用于例如在認證機構處驗證經認證實體的憑證。
42.每個單獨的請求可以包括數據元素,數據元素是要由hsm 105處理的數據。作為處理請求的一部分發送給hsm 105的每個單獨數據元素的大小可以有很大的變化。例如,hsm 105可以接收對明文進行加密的請求,明文小到32字節或更小,或者大到128千字節或更大。
43.可以由hsm 105執行的加密操作可以包括加密,解密,密鑰生成,隨機或偽隨機數生成,簽名,簽名驗證,消息認證等。在本說明書中,加密(enc(
·
))和解密(dec(
·
))通常是指用于將明文消息m加密為密文c并將密文c解密為明文m的各種不同技術中的任一種。作為示例,明文m可以是字符串,例如作為原始字節的字符串、或符號或字母數字字符的字符串。明文m也可以是具有表示明文的元素的數據結構,例如字符串數組。加密和解密可以指私鑰或公鑰密碼術(cryptography)。
44.加密框架或函數可以指以定義的序列執行的一個或多個加密操作,例如一個或多個加密操作和一個或多個解密操作。框架的不同操作可以在不同的時間點發生,并且以不同的順序發生。hsm 105可以被配置為執行對應于加密框架的操作。
45.在許多框架中,通常假定用戶私鑰的知識僅與用戶共存。加密框架可以包括用于偶爾生成新密鑰的操作,以減輕惡意的一方竊取另一方的密鑰的機會。hsm 105可以被配置為生成和周期性地刷新加密密鑰,作為確保由hsm 105實施的加密框架的安全性的一部分。
46.示例性加密框架還可以包括流密碼(cipher)或分組密碼(block cipher)。其它框架包括同態加密和解密、閾值密碼或秘密共享、rsa、或橢圓曲線密碼學。可以實施的分組密碼的示例包括高級加密標準(aes)、以及aes或其它分組密碼可以在其中操作的各種模式,
例如伽羅瓦/計數器模式(gcm)、電子密碼本(ecb)、或密碼分組鏈接(cbc)。
47.一些加密框架可能需要初始化向量(initialization vector,iv)或其它一些隨機或偽隨機輸入的來源作為密鑰生成或加密的一部分。加密框架可以包括生成純隨機或偽隨機值的操作,作為實現該框架的一部分。hsm 105可以被配置用于隨機或偽隨機數的生成。作為示例,hsm 105可以實現專用于偽隨機或隨機數生成的組件,并且在hsm 105執行加密操作的同時根據需要調用該組件。
48.hsm 105可以實現的另一類加密操作包括用于消息認證的加密框架,例如消息認證碼(message authentication code,mac)系統。mac系統可以包括用于簽名(sign(*))、驗證(verify(
·
))和生成密鑰(keygen(
·
))的函數。sign(*)可以是一類加密操作,用于一方(alice)簽署消息,這樣以使另一方(bob)可以驗證消息源自alice。作為一個示例,sign
key
(ma)可以表示來自alice的消息ma,其已經被使用僅對alice已知的私鑰簽名。sign
key
(ma)可以等效于使用私鑰key的ma加密。
49.在該示例中,alice可以向hsm 105發送對消息ma進行簽名的請求。如本文所述,從alice發送的請求可以從用戶計算設備110發送,作為根據批量hsm api 100定義的多個請求的一部分。bob可以接收來自alice的簽名的消息加上明文消息(sign
key
(ma),ma)的副本。bob可以通過將alice的簽名消息、明文消息和alice的公鑰傳遞到hsm 105來向hsm 105發送運行請求:verify(sign
key
(ma),ma)。在該mac系統中,hsm 105是附加的保護層,其可以存儲在通信部分之間使用的密鑰。sign
key
(ma)可以表示作為執行mac系統的一部分而生成的mac值。
50.mac值也可被稱為加密標簽,或僅稱為標簽。消息可以在網絡之間傳輸,并且接收設備可以發送請求以對照所接收的消息來驗證與消息一起接收的特定mac值,從而確定消息是否由發送方撰寫(authored)。
51.hsm 105可以執行的另一類加密操作包括密碼散列函數。密碼散列函數是具有一個或多個密碼期望質量的散列函數,例如確定性行為、快速和有效的計算、以及具有兩個輸入字符串將散列到相同輸出散列值的低或零的可能性。hsm 105還可以被配置為作為一個或多個加密協議的一部分執行加密操作,例如作為傳輸層安全(transport layer security,tls)的一部分的操作。
52.如本文所述,用戶計算設備110、服務器計算設備115、和hsm 105可以執行與批量hsm api 100相對應的一個或多個指令。通常,api可以定義用于與設備或程序通信的函數和數據結構。api可以被實施用于與硬件通信,硬件例如為hsm 105、軟件、或兩者的組合。api可以被實施為硬件或軟件組件,其可以被硬編碼,例如通過使用一個或多個電路,或者使用各種不同的編程語言中的任何一種來編程。例如,api可以定義一個或多個函數,這些函數在被執行時使得例如hsm 105的硬件組件執行一個或多個操作。可以通過發送到設備的請求來調用api的函數,以執行由所調用的函數定義的一個或多個操作。
53.批量hsm api 100可以定義一個或多個api,這些api進一步定義與執行不同密碼任務有關的框架或函數。作為示例,批量hsm api 100可以包括批量加密api,批量加密api定義了由hsm 105對明文進行批量加密的操作。批量hsm api 100還可以包括批量解密api,批量解密api定義了由hsm 105對密文進行批量解密的操作。此外,批量hsm api 100可以定義由hsm 105執行其它加密函數的其它api,例如簽名和驗證消息、生成mac值或加密標簽、
或執行隨機或偽隨機數生成。在一些實施方式中,批量hsm api 100可以將加密操作定義為單個api,而不是多個單獨的api。
54.批量hsm api 100可以定義用于批量處理(batching)數據和解批量處理(unbatching)數據的一個或多個數據結構和操作。所討論的數據可以是明文,例如由用戶計算設備110接收的明文。數據也可以是密文,例如從密文和存儲在hsm 105上的密鑰生成的密文。
55.批量處理數據的一個示例性數據結構可以包括數組,例如向量、或數組。數組中的每個元素可以表示單獨的明文/密文、或其它類型的待批量處理的數據。此外,批量數據結構還可以包括存儲密鑰標識符的字段。密鑰標識符可以對應于用戶的密鑰,用戶發送根據批量hsm api 100處理數據的請求。密鑰可以是存儲在hsm 105上的密鑰,并且hsm 105可以被配置為識別存儲的密鑰,存儲的密鑰與批量數據結構中的密鑰標識符相對應。
56.用于批量處理和處理數據的一個或多個示例可以接收密鑰標識符和多個待批量處理的數據元素,作為輸入。當調用函數來對某些數據執行一個或多個加密操作時,一個或多個加密操作和數據一起形成請求。可以從請求計算設備向hsm 105發送請求,請求設備例如為用戶計算設備110和/或服務器計算設備115。如本文所述,hsm 105被配置為接收根據批量hsm api 100定義的請求。
57.在一些實施方式中,被配置成根據密鑰標識符和多個待批量處理的數據元素來生成批量請求的計算設備,可以根據每批量的預定數量的元素來生成批量請求。在一些示例中,諸如服務器計算設備115的計算設備可以接收參數值,參數值更新用于生成批量請求的預定數量的元素。在該示例中,由服務器計算設備115生成的后續批量請求可以包括與更新的參數值相等的多個元素。在一些實施方式中,每個批量請求包括參數值,該參數值指定將多少個單獨的元素作為請求的一部分進行批量處理。
58.批量hsm api 100的示例函數定義和數據結構如下。可以理解,批量hsm api100和相應的批量處理邏輯可以根據各種不同的技術和以一種或多種編程語言來實現。下面的表1-9說明了偽代碼,并被解釋為如何實施批量hsm api 100的示例。類似地,如本文所述,其它加密基元可具有一個或多個批量hsm api,例如一個或多個批量解密api、一個或多個批量簽名api、和一個或多個批量驗證api。
59.表1示出了根據批量hsm api 100的密文的示例性定義。1struct ciphertext{2string ciphertext;3string iv;4string tag;5}表1
60.1-5行定義了被稱為密文(ciphertext)的數據結構。密文可以包括表示密文的密文字段、表示由hsm 105用于加密密文的初始化向量的iv字段、以及表示用于驗證由密文加密的消息的作者的標簽或簽名消息的標簽字段。
61.表2示出了根據批量hsm api 100的加密輸出的示例性定義。
表2
62.hsm 105可以響應于加密明文來生成加密結果(encryptresult)數據結構。表2的第2行中的error_code可以是對應于在加密期間可能發生的不同錯誤的數值。在一些實施方式中,表2的第3行中的密文僅在error_code指示沒有發生錯誤的情況下被填充,這可以例如由error_code值0來表示。
63.表3示出了根據批量hsm api 100的解密密文的示例性定義。1struct decryptresult{2int error_code;3string plaintext;4}表3
64.hsm 105可以生成解密結果(decryptresult)數據結構以解密密文。類似于表2的第2行中的error_code,表3的第2行中的error_code可以是對應于在解密期間可能發生的不同錯誤的數值。在一些實施方式中,表3的第3行中的明文僅在error_code指示未發生錯誤的情況下被填充,這可例如由error_code值0來表示。
65.表4示出了根據批量hsm api 100的用于生成批量數據結構的批量hsm api函數的示例定義,批量數據結構存儲批量加密數據。1vector《encryptresult》batchencrypt(2int key_identifer,3vector《string》plaintexts4);表4
66.批量加密(batchencrypt)在表4中被定義為返回encryptresult類型的向量的函數。在這里描述的各個表中的示例中使用的向量可以指通常以不同編程語言定義的向量,然而批量hsm api也可以定義數組的數據結構,或用于存儲多個元素的其它類型的數據結構。字段key_identifier存儲密鑰標識符,該密鑰標識符標識存儲在hsm 105上的用于加密明文的加密密鑰。hsm 105可以接收包括多個明文和key_identifier的批量處理數據結構,該數據結構被hsm 105作為輸入處理以執行batchencrypt。
67.表5示出了根據批量hsm api 100的用于生成批量數據結構的批量hsm api函數的示例定義,批量數據結構存儲批量解密數據。1vector《decryptresult》batchdecrypt(2int key_identifer,3vector《ciphertext》ciphertexts
4);表5
68.批量解密(batchdecrypt)在表5中被定義為返回decryptresult類型的向量的函數。key_identifier字段存儲密鑰標識符,該密鑰標識符標識存儲在hsm 105上的用于解密密文的加密密鑰。在表4和表5之間,key_identifier可以是相同的,例如在對稱密鑰加密框架中。
69.包括批量數據結構的請求在本說明書中被稱為批量請求。hsm 105可以被配置為接收包括調用一個或多個批量hsm api函數的批量請求,如batchencrypt或batchdecrypt。批量請求的被調用的函數等同于請求hsm 105執行定義批量hsm api100中的被調用的函數的一個或多個加密操作。
70.批量hsm api 100可以將批量hsm api函數定義為預定的加密操作集合。例如,通過調用batchencrypt向hsm 105發送請求可以使hsm 105對作為請求的一部分包括的批量處理數據結構執行rsa加密。批量hsm api 100可以定義批量處理這里描述的batchencrypt和其它批量處理函數的不同變體。作為示例,批量hsm api 100可以定義batchrsaencrypt和batcheciesencrypt,分別用于執行rsa和橢圓曲線集成加密框架。
71.耦合到hsm 105的服務器計算設備115可以實施這里描述的用于生成批量請求的批量處理邏輯。特別地,服務器計算設備115可以被配置為生成包括數據元素的批量數據結構和密鑰標識符的請求,以及批量hsm api 100中所定義的批量函數的調用,使得hsm 105執行與所調用的函數相對應的一個或多個加密操作。
72.批量hsm api 100可以進一步定義批量數據結構和其它密碼任務的函數,例如密鑰生成或簽名和驗證。表6-9示出批量hsm api 100中的示例定義,用于在hsm 105上批量簽名和批量驗證。表6-9中所示的函數和數據結構可以被定義為一個或多個批量hsm api的一部分,例如批量處理符號api或批量驗證api。
73.表6示出了根據批量hsm api 100的簽名結果的示例性定義。1struct signresult{2int error_code;3string signature;4}表6
74.表6中定義的簽名結果(signresult)數據結構可以包括表示已簽名消息或標簽的簽名字段,以及指示錯誤(如果有的話)的error_code字段。hsm 105可以響應于執行一個或多個用于簽署某種輸入的加密操作的請求而生成signresult數據結構。
75.表7示出了根據批量hsm api 100的驗證簽名的示例性定義。1struct verifyinput{2string signature;3string message;4}表7
76.驗證輸入(verifyinput)數據結構可以包括存儲已簽名消息的簽名字段,以及存
儲已簽名消息的消息字段。如這里所描述的,hsm 105可以執行用于執行驗證的一個或多個加密操作,例如,通過在將發送設備的用戶的公鑰應用到已簽名的消息之后,確定已簽名的消息與消息相匹配。
77.表8示出了批量hsm api函數的示例定義,用于對批量hsm api 100所定義的批量消息進行簽名。消息進行簽名。表8
78.批量簽名(batchsign)可以如表8所示定義為返回signresult類型的向量的批量處理函數。key_identifier字段存儲密鑰標識符,該密鑰標識符標識存儲在hsm 105上的密鑰,該密鑰用于對表8的第3行中的消息數據結構中存儲的消息進行簽名。hsm105可以接收包括待簽署的消息的批量數據結構的批量請求,以及調用batchsign函數以使hsm 105簽署批量數據結構中的每個消息。
79.表9示出了批量數據結構的示例定義,該批量數據結構存儲由批量hsm api100定義的已簽署消息的批量數據結構。1vector《boolean》batchverify(2int key_identifer,3vector《verifyinput》inputs4);表9
80.批量驗證(batchverify)可以定義為表9中的批量函數,其返回例如真/假或1/0的布爾值的向量,這取決于用于實現批量hsm api 100的編程語言。key_identifier字段存儲識別加密密鑰的密鑰標識符,用于驗證向量輸入中的verifyinput類型的數據元素。回想表7,verifyinput類型的每個數據元素包括表示已簽名消息的簽名字段、和表示已簽名消息的消息字段。hsm 105可以接收批量請求,包括對批量處理函數batchverify的調用和輸入的批量處理數據結構,每個輸入都包括已簽名消息和用于比較的消息。
81.輸出布爾向量可以是輸出批量結構,批量結構中的每個單獨輸出對應于請求的批量數據結構中的簽名消息是否有效的確定。hsm 105可以被配置為生成輸出批量結構的數據元素的順序,以匹配相應的輸入數據元素的順序。
82.hsm 105可以被配置為使用特定算法來執行驗證,例如使用存儲在hsm 105上并由key_identifier字段標識的rsa和加密密鑰。在一些實施方式中,批量hsm api100可以定義batchsign和batchverify的不同變體,例如batchrsasign和batchrsaverify。
83.設備110,115可以實施用于接收和批量處理請求的批量處理邏輯,以對諸如單個明文或密文的單個數據元素執行加密操作。接收各個請求的設備可以將請求批量在一起,并利用存儲各個請求的數據元素的相應批量數據結構生成批量請求。如這里參考圖1和9所
描述的那樣,耦合到hsm 105的計算設備可以被配置為緩沖對hsm105的各個請求,并且根據一個或多個條件來緩沖那些請求,以生成相應的批量請求。
84.hsm 105可以包括多個處理器252和一個或多個密碼處理器254,被配置用于處理由批量hsm api 100定義的批量數據結構。作為示例,hsm 105可以被配置為在處理器252處接收批量數據結構,處理器252可以包括通用處理器,例如中央處理單元(cpu)。通用處理器可以被配置為執行預處理操作,例如對批量數據結構的每一數據元素的輸入驗證。由通用處理器執行的批量操作可以指通用處理器接收批量處理數據結構而不是單獨的數據元素,作為輸入,并且對整個批量執行一個或多個操作,例如輸入驗證,而不是對單獨的數據元素逐個執行的操作。
85.輸入驗證可以指驗證數據元素是否被適當地格式化以供hsm 105處理。作為示例,hsm 105可以對照由批量hsm api 100定義的數據結構列表來驗證數據元素,以確定數據元素是否根據這些數據結構之一來定義。如果不是,則hsm 105可以向耦合到hsm 105的請求計算設備和/或服務器計算設備115發送錯誤代碼。
86.在一些實施方式中,除對批量數據結構整體上執行輸入驗證之外,或作為對批量數據結構整體上執行輸入驗證的替代,通用處理器單獨地對批量數據結構的每個數據元素執行輸入驗證。
87.可以由通用處理器執行的預處理操作的另一個示例是確定批量數據結構的輸入元素的大小是否適合于由密鑰標識符標識的密鑰的密鑰類型,和/或是否適合于請求在輸入元素上執行的加密操作的類型。如果輸入元件的大小或其它特征不合適,則通用處理器可以被配置為拒絕批量請求,并且可選地將拒絕的指示發送到請求計算設備。
88.可以由通用處理器執行的預處理操作的另一個示例是確定批量處理數據結構的輸入元素的大小是否適合于密碼處理器。密碼處理器可以對接收到的用于處理的數據的大小或格式有規范,因此通用處理器可以拒絕具有不滿足大小或格式的單獨元素的批量請求。
89.處理器252的通用處理器可以向密碼處理器254的一個或多個密碼處理器發送經驗證的批量請求。hsm 105可以實施執行加密操作的單個密碼處理器,或多個密碼處理器,每個密碼處理器具有一個或多個處理核。在一些實施方式中,hsm 105實施用于不同操作的不同密碼處理器,例如因為一些密碼處理器被配置用于硬件加速。密碼處理器254可以被配置為接收批量數據結構作為輸入,并且處理批量數據結構的每個數據元素以生成相應的結果。批量hsm api 100可以根據在hsm 105上實施的緩存空間來定義批量數據結構的最大或最小尺寸。
90.例如,密碼處理器可以被配置為一次性加密x千字節的明文數據。因此,在一些實施方式中,批量hsm api 100可以為x千字節定義批量處理數據結構的最大批量處理尺寸。批量hsm api 100可以定義不同的批量數據結構尺寸,從而可以在密碼處理器上同時處理多個結構,例如每一個都具有千字節的兩個數據結構,或者每一個都具有千字節的四個數據結構。在一些實施方式中,被配置成接收各個請求并將各個請求批量處理成批量請求的計算設備可以根據一個或多個條件來這樣做。當滿足條件時,如本文參考圖4-8更詳細地描述的,然后計算設備可以被配置為發送具有某種尺寸的批量數據結構的批量請求,某種尺寸可以是與批量hsm api 100指定的最大尺寸相同的大小或小于最大尺寸。
91.在一些實施方式中,可以修改hsm以實施根據本文描述的本公開的各方面的批量操作。例如,hsm可以已經被配置為對輸入執行加密操作,例如加密或解密,但輸入不一定是批量輸入。在一些實施方式中,耦合到hsm的計算設備可以被配置為以格式來發送批量數據結構,從hsm的角度看,該格式似乎是用于處理的單個數據元素。例如,批量hsm api 100可以定義代表多個單獨數據元素的級聯(concatenation)的批量處理數據結構。在該示例中實施批量hsm api 100的計算設備可以生成批量數據結構,作為多個數據元素的級聯,并將該批量數據結構發送到hsm。hsm可以處理和輸出相應結果,該相應結果表示在批量數據結構中級聯的每個輸入數據元素的各個結果的級聯。
92.耦合到hsm的計算設備可以被配置為解析來自級聯輸出的各個結果,例如因為每個輸出已知為固定大小或者被編碼以預定的格式結束。然后,計算設備可以根據需要在解析的輸出上執行進一步的處理,和/或將解析的輸出發送到先前請求單個數據元素由hsm處理的請求計算設備。
93.如圖1所示,服務器計算設備115可以耦合到一個或多個存儲設備230。存儲設備230可以是易失性和非易失性存儲器的組合,并且可以位于與服務器計算設備115相同或不同的物理位置。例如,存儲設備230可以包括能夠存儲信息的任何類型的非暫態計算機可讀介質,諸如硬盤驅動、固態驅動、磁帶驅動、光存儲、存儲卡、rom、ram、dvd、cd-rom、可寫和只讀存儲器。存儲設備230可以存儲例如數據文件,文檔,代碼,模式,應用,或通常存儲在數據庫中的各種其它信息或工具中的任一種。
94.服務器計算設備115可以包括一個或多個處理器212和存儲器214。存儲器214可以存儲處理器212可訪問的信息,包括可以由處理器212執行的指令216。存儲器214還可包括可由處理器212檢索,操縱或存儲的數據218。存儲器214可以是能夠存儲處理器212可訪問的信息的一種類型的非暫態計算機可讀介質,例如易失性和非易失性存儲器。處理器212可以包括一個或多個中央處理單元(cpu)、圖形處理單元(gpu)、現場可編程門陣列(fpga)、和例如向量處理單元(tpu)的專用集成電路(asic)。
95.指令216可以是一個或多個指令,其在由處理器212執行時使處理器212執行由指令定義的動作。指令216可以以目標代碼格式存儲,以便由處理器212直接處理,或者以其它格式存儲,包括可解釋的腳本或按需解釋的或預先編譯的獨立源代碼模塊的集合。在這點上,術語“指令”、“步驟”和“程序”在此可以互換使用。
96.指令216包括用于實施批量hsm api 100的指令。用于實施批量hsm api 100的指令可以包括指令,當由處理器212執行時該指令可以使處理器212能夠執行諸如接收來自請求計算設備的各個請求以對hsm 105執行加密操作的操作,請求計算設備例如為用戶計算設備110。如這里參考圖4-8所描述的那樣,服務器計算設備115可以被配置為從請求計算設備發送的各個請求生成批量請求、向hsm 105發送批量請求、并響應于所發送的批量請求從hsm 105接收輸出批量數據結構。
97.數據218可由處理器212根據指令216檢索、存儲、或修改。數據218可以存儲在計算機寄存器中,在關系或非關系數據庫中作為具有多個不同字段和記錄的表,或者作為json、yaml、proto、或xml文檔。數據218也可以被格式化為計算機可讀格式,例如但不限于二進制值、ascii、或unicode。此外,數據218可以包括足以識別相關信息的信息,諸如數字,描述性文本,專有代碼,指針,對存儲在其它存儲器(包括其它網絡位置)中的數據的引用,或者由
函數用來計算相關數據的信息。
98.用戶計算設備110也可以被配置為類似于服務器計算設備115,具有一個或多個處理器213、存儲器221、指令217、和數據219。用戶計算設備110還可以包括用戶輸入224和用戶輸出225。用戶輸入224可以包括用于接收來自用戶的輸入的任何合適的機制或技術,諸如鍵盤,鼠標,機械執行器,軟執行器,觸摸屏,麥克風和傳感器。
99.服務器計算設備115可以被配置為向用戶計算設備110傳送數據,并且用戶計算設備110可以被配置為在顯示器222上顯示所接收的數據的至少一部分,該顯示器222可以被實施為用戶輸出225的一部分。用戶輸出225還可以用于顯示用戶計算設備110和服務器計算設備115之間的接口。用戶輸出225可替換地或附加地包括一個或多個揚聲器、換能器或其它音頻輸出、觸覺接口或其它觸覺反饋,其向用戶計算設備110的平臺用戶提供非視覺和非聽覺信息。
100.用戶計算設備110還可以被配置為生成由批量hsm api 100定義的在hsm 105上處理數據的請求。用戶計算設備110可以被配置為生成請求,以由hsm 105對輸入數據執行加密操作,并將該請求發送到服務器計算設備115。在一些實施方式中,如這里參考圖4-8所描述的,用戶計算設備110可以被配置為生成批量請求,向服務器計算設備115發送批量請求,并且接收對應于所發送的批量請求的輸出批量數據結構。
101.hsm 105還可以配置有一個或多個處理器252,一個或多個密碼處理器254,存儲器256,指令258和數據260。如這里參考圖1所描述的,一個或多個處理器252可以包括通用處理器,其被配置為執行預處理操作,例如批量處理,解批量處理和輸入驗證。
102.盡管圖1示出處理器212,213和存儲器214,221在計算裝置110,115內,但本說明書中所描述的包括處理器212,213和存儲器214,221的組件可包括可在不同物理位置且不在同一計算裝置內操作的多個處理器和存儲器。例如,指令216,217和數據218,219中的一些可存儲在可拆卸cd-rom上,而其它可存儲在只讀計算機芯片內。指令和數據中的一些或全部可存儲在物理上遠離處理器212,213但仍可由處理器212,213存取的位置中。類似地,處理器212,213可包括可執行并發和/或順序操作的處理器的集合。計算設備110,115中的每一個都可以包括提供定時信息的一個或多個內部時鐘,定時信息可以用于由計算設備110,115運行的操作和程序的時間測量。
103.此外,盡管參考單個用戶計算設備110,服務器計算設備115和hsm105進行了描述,但是應當理解,本公開的各方面可以由多個設備和hsm來例如順序地或并發地實施。網絡125可以是用于設備的分布式系統的網絡,其中多個設備和hsm根據本公開的方面處理數據和通信。
104.服務器計算設備115、hsm 105、用戶計算設備110、以及可選地耦合到網絡125的一個或多個其它設備一起可以至少部分地實現多種架構和技術中的任何一種,包括但不限于直接附接存儲(das)、網絡附接存儲(nas)、存儲區域網絡(san)、光纖信道(fc)、以太網光纖信道(fcoe)、混合體系結構網絡等。此外,在一些示例中,由網絡125耦合的設備可以至少部分地實現虛擬化或容器化環境。例如,服務器計算設備115和/或用戶計算設備110可以包括在宿主機器上運行的一個或多個虛擬機。
105.圖2是流程圖,示出了使用硬件安全模塊執行批量加密的示例性過程200。過程200被描述為由根據本公開的方面配置的hsm執行。例如,適當配置的hsm 105可以執行過程
200。過程200的步驟可以以不同的順序執行,也可增加附加的步驟或刪除過程200中所示的一些步驟。
106.hsm接收205執行一個或多個加密操作的請求。如這里參考圖1所描述的,請求可以包括存儲多個數據元素的第一批量數據結構。每個數據元素可以是要由hsm使用一個或多個加密操作來處理的一些數據。例如,數據元素可以是明文,并且一個或多個操作可以是加密明文的操作。請求還可以包括密鑰標識符,標識存儲在耦合到hsm的存儲器上的密鑰,供hsm在執行一個或多個加密操作時使用。
107.hsm根據所接收的請求和一個或多個加密操作來處理210第一批量數據結構。hsm可以讀取由批量請求指定的一個或多個加密操作,并執行指定的操作。這里,圖3描述了用于處理批量處理數據結構的示例性過程。響應于接收到的請求,hsm傳送215輸出批量處理數據結構。
108.圖3是示出示例性過程300的流程圖,用于根據接收到的請求和一個或多個加密操作來處理批量數據結構。hsm可以從第一批量數據結構中解批315多個數據元素。如這里參考圖1-8所描述的那樣,hsm可以被配置成從接收的批量數據結構中解批數據元素。
109.在一些實施方式中,hsm可以將接收到的批量細分為較小的子批量,例如,將批量數據結構劃分為多個密碼處理器、或一個或多個密碼處理器的相應處理核進行處理。
110.hsm可以包括通用處理器,通用處理器被配置為接收批量數據結構,并執行諸如數據驗證這樣的預處理操作,以確保數據元素的格式是hsm被配置來處理的。在對數據元素進行解包之后,通用處理器可將數據元素傳遞到第二處理器以執行320一個或多個加密操作。第二處理器可以是專門配置用于執行一個或多個加密操作的密碼處理器。在一些實施方式中,hsm實施單個處理器,其被配置為預處理批量處理數據結構,例如驗證和解包數據元素,然后對預處理后的數據元素執行320一個或多個加密操作。
111.第二處理器可以從批量處理數據結構中解批量數據元素,并如批量處理請求所指定的那樣對數據元素執行一個或多個加密操作。例如,第二處理器可以從接收到的批量處理數據結構中解批量明文,并且根據加密函數和加密密鑰對每個明文加密,加密函數是由批量處理請求指定的,加密密鑰對應于作為批量請求的一部分接收到的密鑰標識符。同樣作為處理210的一部分,hsm可產生325輸出批量數據結構,輸出批量數據結構存儲通過對多個數據元素執行320一個或多個加密操作而產生的多個輸出。處理各個數據元素的第二處理器可以將輸出批量數據結構發送回第一處理器,第一處理器可以被配置為將數據傳送到hsm外部的設備。
112.返回參考圖2,響應于請求,hsm傳送215輸出批量處理數據結構。hsm可以向耦合到hsm的服務器計算設備傳送輸出批量處理結構,服務器計算設備又可以向請求用戶計算設備發送輸出批量處理結構。服務器計算設備可以將輸出批量處理結構作為批量發送到用戶計算設備,或者服務器計算設備可以將輸出單獨地發送到用戶計算設備。
113.在一些實施方式中,耦合到hsm的服務器計算設備或一些其它計算設備發送請求。在那些實施方式中,hsm可以通過向耦合到hsm的請求設備發送215輸出批量處理數據結構來應答請求。
114.圖4-8示出了由hsm進行批量處理的示例方法,例如批量加密和解密以及其它功能。雖然可以以特定的順序描述包括在每個方法中的操作,但是應當理解,可以以不同的順
序或同時執行操作。此外,可以添加或刪除操作。
115.圖4是說明在hsm上執行的示例批量處理加密過程400的流程圖。hsm接收410標識存儲在hsm上的加密密鑰的密鑰標識符。hsm接收420批量處理數據結構,批量處理數據結構包括使用由密鑰標識符標識的密鑰的、在hsm上加密的多個明文。作為批量請求的一部分,hsm可以接收密鑰標識符和批量數據結構。批量請求可以根據批量加密api來形成,批量加密api可以形成一個或多個批量hsm api的一部分。hsm將明文的批量處理數據結構中的每個明文加密430為密文的輸出批量處理結構的相應密文。作為示例,批量數據結構可以是向量或數組。hsm返回440批量輸出數據結構,例如向發送密鑰標識符和明文的批量數據結構的請求計算設備,或者耦合到hsm的服務器計算設備。
116.圖5是說明在hsm上執行的示例批量解密過程500的流程圖。如圖5所示,hsm接收510標識存儲在hsm上的加密密鑰的密鑰標識符。hsm接收520批量數據結構,該結構包括用于使用由密鑰標識符標識的加密密鑰在hsm上解密的多個密文。作為批量請求的一部分,hsm可以接收密鑰標識符和批量數據結構。批量請求可以根據批量解密api形成,批量解密api可以形成一個或多個批量hsm api的一部分。hsm將密文批量處理數據結構的每個密文解密530為明文輸出批量處理結構的相應明文。作為示例,批量數據結構可以是向量或數組。hsm返回540批量輸出數據結構,例如向發送明文的密鑰標識符和批量數據結構的請求計算設備,或者耦合到hsm的服務器計算設備。
117.圖6是說明在hsm上執行的示例批量簽名過程600的流程圖。hsm接收610標識存儲在hsm上的加密密鑰的密鑰標識符。hsm接收620批量數據結構,該批量數據結構包括用于由hsm使用由密鑰標識符標識的加密密鑰進行簽名的多個數據元素。作為批量請求的一部分,hsm可以接收密鑰標識符和批量數據結構。批量請求可以根據批量簽名api來形成,批量簽名api可以形成一個或多個批量hsm api的一部分。hsm簽署630批量數據結構的每個數據元素,以生成簽名的輸出批量結構的相應簽名。作為示例,批量數據結構和輸出批量數據結構可以是向量或數組。hsm返回640批量輸出數據結構,例如發送密鑰標識符和數據元素的批量數據結構以簽名的請求計算設備,或者耦合到hsm的服務器計算設備。
118.圖7是說明在hsm上執行的示例批量驗證過程700的流程圖。hsm接收710標識存儲在hsm上的加密密鑰的密鑰標識符。hsm接收720批量數據結構,該批量數據結構包括使用由密鑰標識符標識的密鑰、由hsm進行簽名的多個數據元素。作為批量請求的一部分,hsm可以接收密鑰標識符和批量數據結構。批量請求可以根據批量驗證api來形成,批量驗證api可以形成一個或多個批量hsm api的一部分。hsm驗證730批量數據結構的每個數據元素,以生成驗證的輸出批量結構的相應驗證,該驗證可以被表示為例如布爾值的數組,每個值對應于批量結構的相應簽名是否被成功驗證。hsm返回740批量輸出數據結構,例如返回到發送密鑰標識符和待簽名的數據元素的批量數據結構的請求計算設備,或者返回到耦合到hsm的服務器計算設備。
119.圖8是說明在hsm上執行的示例mac過程800的流程圖。hsm接收810標識存儲在hsm上的加密密鑰的密鑰標識符。hsm接收820批量數據結構,批量數據結構包括用于由hsm使用由密鑰標識符標識的加密密鑰生成加密標簽的多個數據元素。作為批量請求的一部分,hsm可以接收密鑰標識符和批量數據結構。數據元素可以是消息,并且所生成的標簽可以用作驗證框架的一部分,以驗證所標記的消息的作者是與密鑰標識符所標識的密鑰相對應的作
者。批量請求可以根據批量mac api形成,批量mac api可以形成一個或多個批量hsm api的一部分。hsm為批量數據結構的每個數據元素計算830標簽,以為標簽的輸出批量結構生成相應的標簽。根據批量請求中標識的mac框架生成標簽。在一些實施方式中,輸出批量數據結構中的每個元素可以包括標簽以及被標記的消息。作為示例,批量數據結構和輸出批量數據結構可以是向量或多維數組。hsm返回840批量輸出數據結構,例如返回到發送密鑰標識符和數據元素的批量數據結構以生成mac值的請求計算設備,或者耦合到hsm的服務器計算設備。
120.圖9是用于hsm的代理批量處理請求的示例性過程900的流程圖。過程900被描述為由耦合到hsm的服務器計算設備執行。例如,適當編程的服務器計算設備115可以執行過程900。雖然以特定順序描述了過程900的操作,但是它們可以以不同的順序執行,并且可以添加或省略操作。
121.代理批量請求對于管理到hsm的流量是有利的。例如,耦合到hsm的服務器計算設備可以管理進入的流量,以便批量地發送去往hsm的輸出流量,而不是單獨的請求。在這種情況下,服務器計算設備可以控制向hsm發送請求的速度,特別是在高容量或突發業務期間。
122.服務器計算設備接收910各個請求。各個請求可以是處理各個數據元素的請求,各個數據元素例如為各個明文或密文。如果需要存儲在hsm上的相應加密密鑰來執行所請求的操作,則單個請求可以包括密鑰標識符。
123.服務器計算設備緩沖920類似的接收到的請求,該請求在耦合到服務器計算設備的存儲器中的一個或多個緩沖器的第一緩沖器中。如果每個請求包括用于存儲在hsm中的密鑰的相同密鑰標識符,則兩個請求可以被認為是類似的。作為另一個示例,如果請求來自相同的請求計算設備,例如計算設備,并且指定對hsm執行相同的加密操作,則可以認為請求類似。
124.作為代理批量請求的一部分,服務器計算設備可以維護一個或多個緩沖器。每個緩沖器可以在耦合到服務器計算設備的存儲器中實施,并且定義一個或多個數據結構,用于將來自多個請求的數據元素存儲在每個緩沖器中。服務器計算設備可以為在例如,5毫秒的預定緩沖周期期間接收的每個唯一密鑰標識符生成緩沖器。作為另一個示例,服務器計算設備可以根據從不同的請求計算設備接收的請求生成單獨的緩沖器。當服務器計算設備接收請求時,該設備可以確定是否已經為類似的請求生成了緩沖器。如果服務器計算設備確定已經存在用于類似請求的緩沖器,則該設備可以將請求的數據元素存儲在所標識的緩沖器中。否則,服務器計算設備可以為接收到的請求生成新的緩沖器,并且可以添加類似于接收到的請求的后續請求。
125.甚至在諸如5毫秒的小緩沖周期上緩沖內容可以提高到hsm 105的吞吐量。例如,假設服務器計算設備被配置為在5毫秒的緩沖周期內批量處理從用戶計算設備和/或其它請求計算設備接收的請求,并且進一步假設服務器計算設備接收請求的平均速率是5,000rps(請求/每秒)。在該示例中,服務器計算設備在經過緩沖周期之后為每個緩沖器的內容生成批量請求。
126.在緩沖周期結束時的平均內容大小可以是25個數據元素(5,000rps*.005seconds=25requests)。如果每個數據元素是32字節,則每個緩沖器的平均內容大小可以是800字
節。然后服務器計算設備可以為hsm生成并發送批量請求,以一次處理800字節的數據,與在相同的緩沖周期期間單獨處理每個請求相比,這可以具有較少的計算開銷,如這里參考圖1所描述的。緩沖器周期的長度可以基于在緩沖器周期結束時每個緩沖器的內容的平均大小以及hsm可以一次處理的最大數據量來確定。
127.服務器計算設備確定930第一緩沖器是否滿足從第一緩沖器的內容生成批量請求的一個或多個條件。如果不是,則服務器計算設備可以繼續從單獨的數據請求接收910數據和緩沖920數據,直到滿足一個或多個條件。如果服務器計算設備確定930已經滿足一個或多個條件,則服務器計算設備將存儲在第一緩沖器中的數據元素批量處理940成單個批量請求。
128.一個或多個條件可以是多種不同條件中的任一種,當滿足這些條件時,使得服務器計算設備從滿足一個或多個條件的緩沖器的內容生成批量請求。作為示例,一個或多個條件可以包括指定在經過緩沖周期之后生成批量請求的條件。例如,如果緩沖器周期是5毫秒,則服務器計算設備可以被配置為對于每個非空緩沖器生成相應的批量請求,其批量數據結構具有包括非空緩沖器的內容。此外,除了指定在經過緩沖周期之后生成批量請求的條件之外,也可以應用其它條件,或作為條件的替代。
129.作為一個示例,當存儲在緩沖器中的數據元素滿足預定的最大年齡(age)時,一個或多個條件可以包括指定生成批量請求的條件。數據元素的年齡可以被定義為在將數據元素添加到緩沖器的時間,和服務器計算設備可以連續維護的當前時間之間的時間。如果數據元素的年齡滿足預定的最大年齡,則服務器計算設備可以生成具有批量處理數據結構的批量處理請求,該批量處理數據結構包括在滿足條件時緩沖器的內容。
130.作為在此描述的其它條件之外或作為替換的另一個示例,一個或多個條件可以包括這樣的條件,當存儲在緩沖器中的數據元素的數量滿足數據元素的預定最大數量時,該條件指定生成批量請求。預定的最大數量可以是,例如,hsm可以一次處理的數據量的函數。在這里參考圖1描述的示例中,hsm 105能夠一次處理x千字節的數據。因此,數據元素的預定最大數量可以是共同表示數據的x千字節的數據元素的數量。如果緩沖器滿足數據元素的最大數量,則服務器計算設備可以生成具有批量處理數據結構的批量處理請求,該批量處理數據結構包括在滿足條件時緩沖器的內容。
131.作為在此描述的其它條件之外或作為替換的另一個示例,一個或多個條件可以包括這樣的條件,當請求計算設備發送的并發請求的數量下降到低于預定閾值速率時,該條件指定生成批量請求。服務器計算裝置115可被配置為測量請求計算裝置,例如用戶計算裝置110,向服務器計算裝置115發送單個請求的速率。該速率可以例如作為每秒的請求來測量。預定閾值速率可以作為所有請求的計算設備的平均rps的函數來確定。如果用戶計算設備110的當前速率低于平均值,則這可以是請求正在減慢的指示,并且服務器計算設備115應該批量處理并發送當前緩沖的請求,而不是等待更多的請求到達。如果來自用戶計算設備110的請求的當前速率低于預定閾值速率,則服務器計算設備115可以生成具有批量數據結構的批量請求,該批量數據結構包括在滿足條件時緩沖器的內容。
132.接收輸出批量數據結構的設備可以將輸出批量數據結構轉發到請求計算設備,該請求計算設備生成被發送到hsm的各個請求。接收輸出批量數據結構的設備可以是從其它請求計算設備接收請求并將請求轉發到hsm的設備。如果耦合到hsm的設備接收到來自另一
請求設備的各個請求,則耦合到hsm的設備可以向請求設備發送輸出批量數據結構。在一些實施方式中,服務器計算設備在將輸出發送到請求計算設備之前對來自輸出批量數據結構的各個輸出進行解批。
133.在本說明書中描述的主題可以被實現,以便實現以下優點或技術效果中的一個或多個。硬件安全模塊(hsm)可以根據定義由hsm實現的加密操作和數據結構的api來處理多批操作。通過批量處理用于執行相同的加密操作的請求,或者通過批量處理共享信息的請求,例如用于存儲在hsm上的相同加密密鑰的標識符,hsm可以以減少的計算開銷來執行。
134.對hsm消耗的批量處理數據可以顯著地提高hsm的吞吐量,特別是當批量處理的數據元素是小明文和/或密文時。由hsm執行的每個操作可以具有固定的計算成本以執行操作。因此,根據本公開的各方面實施的hsm可以有效地處理每個操作的更多數據,這可以導致許多請求被作為批量處理,而不是單獨接收和處理每個請求。通過應用根據本公開的各方面的技術,hsm可以從每秒處理數千個請求到每秒處理更高數量級的請求。
135.通過對這種性質的請求進行批量處理,hsm可以至少通過減少一次發送到hsm的數據量來減少歸因于網絡通信的固定計算開銷。例如,可以至少減少開銷,因為可以為多個請求發送單個密鑰標識符,而不是為流向hsm的多個請求發送密鑰標識符的單獨副本。
136.hsm可以被配置為使用通用處理器和密碼處理器兩者對接收到的批量執行批量操作。在這種情況下,hsm可以保留在專門密碼處理器處理的專用操作,專門密碼處理器專門配置用于處理加密操作,同時保留由hsm的通用處理器執行的諸如輸入確認的操作。通用處理器和密碼處理器可以被配置用于批量操作,包括對批量數據進行解包以便由密碼處理器進行處理。然而,從耦合到hsm的計算設備的角度來看,hsm可以批量地接收和傳送輸入和輸出,這可以簡化hsm和計算設備之間的整體交互。
137.hsm可以被配置為根據hsm的操作容量來處理批量請求。換句話說,除了處理更多的請求之外,還可以管理hsm以避免由于在網絡業務的突發周期期間接收到太多請求而導致的hsm過載。耦合到hsm的計算設備可以根據一個或多個條件接收和代理批量請求,這可以減輕或防止實現hsm的網絡的安全的關鍵組件過載。
138.本公開的各方面可以在數字電路、計算機可讀存儲介質、作為一個或多個計算機程序、或一個或多個前述的組合中實現。計算機可讀存儲介質可以是非暫態的,例如,作為可由云計算平臺執行并且存儲在有形存儲設備上的一個或多個指令。
139.計算機程序可以用任何類型的編程語言來編寫,并且根據任何編程范例,例如聲明式、程序式、匯編式,面向對象,面向數據,功能式或命令式。可以編寫計算機程序以執行一個或多個不同的功能并且在計算環境內操作,例如在物理設備,虛擬機上或跨多個設備。計算機程序還可以實現本說明書中描述的由系統,引擎,模塊或模型執行的功能。
140.在本說明書中,短語“被配置為”被用于與計算機系統、硬件或計算機程序的一部分相關的不同上下文中。當系統被說成被配置為執行一個或多個操作時,這意味著系統具有安裝在系統上的適當的軟件、固件和/或硬件,當運行時,使得該系統執行一個或多個操作。當一些硬件被說成被配置成執行一個或多個操作時,這意味著該硬件包括一個或多個電路,該電路在運行時接收輸入并根據輸入和對應于該一個或多個操作產生輸出。當計算機程序被說成被配置成執行一個或多個操作時,這意味著該計算機程序包括一個或多個程序指令,當該一個或多個程序指令被一個或多個計算機執行時,使得該一個或多個計算機
執行一個或多個操作。
141.除非另有說明,否則上述替代示例不是相互排斥的,而是可以以各種組合來實現,以實現獨特的優點。由于在不脫離由權利要求限定的主題的情況下,可以利用以上討論的特征的這些和其它變化和組合,因此實施例的上述描述應當以說明的方式而不是以對由權利要求限定的主題的限制的方式來進行。此外,提供本文所述的示例,以及措辭為“諸如”、“包括”等的條款,不應被解釋為將權利要求的主題限制為具體示例;相反,這些示例僅用于說明許多可能的實施例中的一個。此外,不同附圖中的相同附圖標記可以標識相同或相似的元件。
技術特征:
1.一種硬件安全模塊(hsm),其特征在于,包括多個處理器,所述多個處理器被配置為:接收執行一個或多個加密操作的請求,所述請求包括存儲多個數據元素的第一批量數據結構;以及根據接收的請求和所述一個或多個加密操作來處理所述第一批量數據結構,其中,為了處理所述第一批量數據結構,所述多個處理器被配置為:對所述多個數據元素進行解批量處理,對所述多個數據元素執行所述一個或多個加密操作以生成多個輸出,以及生成存儲所述多個輸出的輸出批量數據結構。2.根據權利要求1所述的硬件安全模塊,其特征在于,所述請求是第一請求,所述一個或多個加密操作是一個或多個第一加密操作,以及所述多個數據元素是多個第一數據元素,并且所述多個處理器還被配置為:在耦合到所述hsm的存儲器中保存一個或多個加密密鑰,接收第二請求,以對第二批量數據結構執行一個或多個第二加密操作,其中所述第二批量數據結構包括密鑰標識符和多個第二數據元素,確定所述密鑰標識符是否對應于所述一個或多個加密密鑰中的一個加密密鑰,以及響應于確定所述密鑰標識符對應于一個識別的加密密鑰,根據所述第二請求處理所述第二批量數據結構,并使用所述識別的加密密鑰作為對所述一個或多個第二加密操作的輸入。3.根據權利要求1或2所述的硬件安全模塊,其特征在于,所述多個處理器包括第一處理器和第二處理器,其中所述第一處理器被配置為:接收所述批量處理數據結構作為輸入,對所述批量數據結構執行一個或多個預處理操作,確定所述批量處理數據結構對于處理是否有效,以及響應于確定所述批量數據結構對于處理有效,將驗證的批量數據結構發送到所述第二處理器。4.根據權利要求3所述的硬件安全模塊,其特征在于,所述第一處理器是通用處理器,所述第二處理器是密碼處理器,所述密碼處理器被配置為對經預處理的所述批量數據結構執行所述一個或多個加密操作。5.根據權利要求1至4中任一項所述的硬件安全模塊,其特征在于,所述請求和所述批量數據結構是根據批量hsm應用程序接口(api)的相應定義來形成的。6.根據權利要求5所述的硬件安全模塊,其特征在于,所述hsm被配置成執行的所述一個或多個加密操作是根據所述批量hsm api定義的。7.根據權利要求5或權利要求6所述的硬件安全模塊,其特征在于,所述批量hsm api定義一個或多個api,每個api定義相應的加密框架,包括定義一個或多個相應的數據結構和用于執行所述相應的加密框架的一個或多個相應的加密操作。8.根據權利要求7所述的硬件安全模塊,其特征在于,所述相應的加密操作包括用于加密、解密、密鑰生成、簽名生成、簽名驗證、隨機數生成、或消息認證的操作。9.根據權利要求1至8中任一項所述的硬件安全模塊,其特征在于,
所述請求是第一請求,其中,所述hsm耦合到計算設備,以及其中,所述多個處理器還被配置為接收和處理包括第二批量數據結構的第二請求,所述第二批量數據結構包括由所述計算裝置批量處理的數據元素。10.一種系統,其特征在于,包括:計算設備,包括多個處理器并耦合到硬件安全模塊,其中所述多個處理器被配置為:接收在每個請求的一個或多個相應數據元素中執行一個或多個加密操作的多個請求,將每個請求的所述一個或多個相應的數據元素批量處理成第一批量數據結構,將所述第一批量數據結構作為批量請求的一部分發送到所述硬件安全模塊,以對所述第一批量數據結構的第一數據元素執行所述一個或多個加密操作,以及響應于所述批量請求,接收輸出批量數據結構,所述輸出批量數據結構包括由所述硬件安全模塊作為輸出生成的輸出數據元素,所述硬件安全模塊對所述第一批量數據結構的所述數據元素執行所述一個或多個加密操作。11.根據權利要求10所述的系統,其特征在于,其中,所述多個請求中的每一個對應于第一密鑰標識符,以及其中,所述批量請求還包括所述第一密鑰標識符。12.根據權利要求11所述的系統,其特征在于,其中所述計算設備是第一計算設備,并且其中所述多個處理器還被配置為:從耦合到所述計算設備的一個或多個請求計算設備接收請求,其中從所述一個或多個請求計算設備接收的所述請求中的每個請求是執行一個或多個相應的加密操作的請求,并且所述每個請求包括相應的密鑰標識符;在耦合到所述計算設備的存儲器中的一個或多個緩沖器的第一緩沖器中存儲類似的接收的請求的數據元素,其中如果兩個請求中的每一個包括相同的密鑰標識符或者從相同的源設備獲得,則所述兩個請求是類似的;確定所述第一緩沖器是否滿足一個或多個條件,以向所述硬件安全模塊發送所述第一緩沖器中存儲的所述類似的接收的請求的數據元素;以及響應于確定所述第一緩沖器滿足所述一個或多個條件,批量處理所述第一緩沖器中的每個數據元素,并將包括第一緩沖器中的每個數據元素的批量處理數據結構作為第二請求的一部分發送到所述硬件安全模塊。13.根據權利要求12所述的系統,其特征在于,所述多個處理器還被配置成:對于作為從所述一個或多個請求計算設備接收的所述請求的一部分而接收的每個唯一密鑰標識符,將所述唯一密鑰標識符分配給相應的緩沖器,以及將對應于包括第一密鑰標識符的接收的請求的數據元素存儲在分配有所述第一密鑰標識符的緩沖器中。14.根據權利要求12或13所述的系統,其特征在于,在所述第一緩沖器中發送數據元素的所述一個或多個條件包括存儲在所述第一緩沖器中的數據元素滿足預定的最大年齡,其中從所述數據元素存儲在所述第一緩沖器中的時間到所述當前時間來測量所述數據元素的年齡。15.根據權利要求12至14中的任一項所述的系統,其特征在于,在所述第一緩沖器中發
送數據元素的所述一個或多個條件包括存儲在所述第一緩沖器中的數據元素滿足預定的最大數量。16.根據權利要求10至15中任一項所述的系統,其特征在于,來自所述一個或多個請求計算設備的請求和所述第一批量數據結構是根據批量hsm應用程序接口(api)形成的。17.根據權利要求16所述的系統,其特征在于,所述一個或多個加密操作是根據所述批量hsm api定義的。18.根據權利要求16或17所述的系統,其特征在于,所述批量hsm api定義一個或多個api,每個api定義相應的加密框架,包括定義一個或多個相應的數據結構和用于執行所述相應的加密框架的一個或多個相應的加密操作。19.一種計算機實現的方法,其特征在于,包括:硬件安全模塊接收執行一個或多個加密操作的請求,所述請求包括存儲多個數據元素的第一批量數據結構;以及所述硬件安全模塊根據接收的請求和一個或多個加密操作來處理第一批量數據結構,其中,處理第一批量數據結構包括:對所述多個數據元素進行解批量處理,對所述多個數據元素執行所述一個或多個加密操作以生成多個輸出,以及生成存儲所述多個輸出的輸出批量數據結構。20.根據權利要求19所述的方法,其特征在于,所述一個或多個加密操作包括用于加密、解密、密鑰生成、簽名生成、簽名驗證、隨機數生成、或消息認證的操作。
技術總結
用于在硬件安全模塊上執行批量加密的方法、系統和裝置,包括計算機存儲介質和硬件安全模塊。硬件安全模塊可接收執行一個或多個加密操作的請求。請求可以包括存儲多個數據元素的批量數據結構。硬件安全模塊可以對多個數據元素進行解批量處理,對多個數據元素執行一個或多個加密操作以生成多個輸出,生成存儲多個輸出的輸出批量數據結構,并響應于請求傳送輸出批量數據結構。可以根據由硬件安全模塊實現的批量硬件安全模塊應用程序接口(API)來形成請求和批量數據結構。請求和批量數據結構。請求和批量數據結構。
