從單個數據緩沖器生成多個安全散列的制作方法
【專利說明】從單個數據緩沖器生成多個安全散列
[0001 ] 領域
[0002]本公開涉及散列并且更具體地涉及從單個數據緩沖器生成多個安全散列。
[0003]背景
[0004]密碼散列算法經常以鏈式相關方式在單個數據緩沖器(例如,消息)上起作用。數據緩沖器被劃分為塊,這些塊的大小由散列算法(例如,SHA-1、SHA-256等等)定義。然后根據標準規范串行地處理這些塊。所處理的每個塊的輸出是用作處理緩沖器中的后續數據塊的輸入(即,初始摘要)的散列摘要,因此串行鏈式約束。以此方式處理塊直到已經處理了數據緩沖器的每個塊。與結合處理結果的串行性質執行散列算法相關聯的計算強度導致生成密碼散列的相對長的時間。
[0005]密碼散列可用于例如當需要認證文件時安全地加載文件。當操作系統可運行時,這種安全加載可例如在引導序列期間或者在引導序列之后發生但是以限制方式(例如,單線程)。當確定密碼散列時的串行鏈式約束可因此導致與在引導序列期間認證這種文件相關聯的不可接受的長持續時間。
[0006]單指令多數據(snrn)技術可用于加速例如SHA-256散列,但是這種技術通常使用可要求多線程環境的多個獨立數據緩沖器。這種多線程環境可于是要求生產者-消費者隊列和/或應用和處理流程的通常在例如引導序列期間不可行的顯著再架構。
[0007]附圖簡要說明
[0008]所要求保護的主題的特征和優點將從與其一致的實施例的以下詳細說明中變得明顯,應當參照附圖來考慮該說明書,在附圖中:
[0009]圖1示出根據本公開的各個實施例的計算設備的功能框圖;
[0010]圖2示出將多個數據元素序列分派給S個區段;
[0011]圖3示出可從對經分派的數據元素的區段并行地并且根據SHA-256進行散列所導致的區段摘要;
[0012]圖4是根據本公開的各個實施例的散列操作的流程圖;
[0013]圖5是根據本公開的各個實施例的基于散列的消息認證碼(HMAC)操作的流程圖;以及
[0014]圖6是根據本公開的一個實施例的基于散列的消息認證碼(HMAC)操作的一個示例的流程圖。
[0015]盡管將參考說明性實施例進行以下詳細說明,其許多替代、修改和變化將對本領域普通技術人員明顯。
[0016]詳細描述
[0017]通常,本公開涉及散列和消息認證碼方法(及系統),其被配置成用于使用單個數據緩沖器并且利用計算設備的snro(單指令多數據)架構確定散列摘要和/或基于散列的消息認證碼(HMAC)。如在此所使用的,“散列摘要”包括區段摘要、消息摘要和/或其他散列摘要。區段摘要對應于區段的散列摘要。消息摘要對應于消息的散列摘要。可至少部分地基于多個區段摘要確定消息摘要。可并行地計算多個區段摘要。為了從與并行地計算區段摘要相關聯的減少的處理時間受益,該多個區段摘要可被存儲和/或可用于進一步處理。該多個區段摘要然后可用于例如在存儲在數據緩沖器內的消息上生成HMAC。如在此所使用的,“消息”是可對應于數據、命令、文本、應用、所接收的比特流等等中的一個或多個的具有任意長度的數據字節序列。消息的散列摘要(即,消息摘要)是唯一地表示該消息的固定長度比特串。消息認證碼(MAC)是使用該消息和被配置成用于允許認證消息的對稱密碼密鑰生成的認證標簽。MAC通常附接到該消息并且接收方可然后通過確定使用所接收的消息和對稱密鑰確定的接收方生成的MAC是否匹配與該消息一起接收的MAC來認證該消息。
[0018]使用該消息和一個或多個密碼密鑰生成HMAC。在HMAC中,對這些密碼密鑰與該消息一起進行散列并且可再次用相同的或不同的密碼密鑰對所得消息摘要進行散列。使用一個或多個密碼密鑰對多個時間進行散列被配置成用于增強HMAC的安全性。
[0019]系統和方法被配置成用于將消息的至少一部分分派給多個區段。該消息可包括多個數據元素序列。數據元素大小(即,數據元素中的比特數量)可與特定的散列算法(例如,SHA-256字長)和/或處理器架構(例如,SMD寄存器的寬度)相關。數據元素序列可被分派,從而使得數據元素與區段數量S相關的交織周期進行交織。可至少部分地基于與被配置成用于確定消息摘要的處理器和/或處理器核相關聯的SMD寄存器的寬度確定區段數量。區段數量S可進一步至少部分地基于特定的散列(和/或HMAC)算法的字長。然后并行地使用SHffi功能處理這些區段以便為每個區段生成對應的區段摘要。
[0020]散列算法包括但不限于MD5和/或SHA族(例如,SHA-l、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和3骱-512/256)。10)5算法可符合或兼容由互聯網工程任務小組(IETF)發布的標題為“MD5消息摘要算法”的與1992年4月發布的請求注解(RFC)1321和/或該規范的稍后版本。SHA算法可符合或兼容由美國國家標準技術研究所(NIST)信息技術市實驗(ITL)發布的標題為“安全散列標準(SHS)”的發布與2012年3月的
[0021]聯邦信息處理標準(FIPS)公開本180-4和/或該標準的稍后版本。HMAC協議可符合或兼容由NIST ITL發布的標題為“密鑰散列消息認證碼(HMAC)”的發布于2022年3月6日的FIPS公開本190和/或該標準的稍后版本,例如,發布于2008年7月的FIPS公開本198-1。當然,在其他實施例中,安全散列協議和/或HMAC協議可包括定制和/或專用安全散列和/或HMAC協議。
[0022]為了處理,可將每個區段劃分為塊,其中,并行地處理每組塊。可基于所使用的特定密碼算法確定塊的大小,例如,SHA-256,塊大小為64字節。消息可通常具有任意長度。因此,消息長度(以及相關聯的數據緩沖器大小)可或可不是區段數量乘以塊大小的整數倍。該消息可包括余數(即,R個字節),該余數包括未均勻地適配到所定義的區段塊中的數據比特和/或數據元素。可如在此所描述的那樣處理余數以便產生與余數相關的附加消息摘要。
[0023]因此,對于長度為L的消息(以及相關聯的數據緩沖器),其包括N個區段塊(S卩,區段數量S乘以與散列算法相關聯的塊大小B)加上數據緩沖器中的未包括在區段塊中的余數R個字節,可為該消息確定S+1個散列摘要。可然后存儲S+1個散列摘要。生成并存儲S+1個散列摘要被配置成用于為速度折中存儲。換言之,當S+1個散列摘要可自身被散列到單個消息摘要中時,附加處理操作可添加到整體處理時間,由此降低操作速度。雖然存儲S+1個散列摘要可消耗更多存儲,由于散列摘要是受比特限制的,例如128比特,所使用的附加存儲可相對于避免對S+1個散列摘要進行散列以便產生單個消息摘要所實現的處理時間節省相對較小。
[0024]圖1示出根據本公開的各個實施例的計算設備100的功能框圖。計算設備100通常包括處理器110、網絡控制器115以及存儲器120。計算設備100可包括但不限于移動計算設備(例如,膝上計算機、筆記本計算機、平板計算機、特征電話、智能電話、桌上計算機、服務器)和/或被配置成用于認證消息和/或數據的另一個計算設備。網絡控制器115被配置成用于管理計算設備100和網絡和/或其他計算設備之間的通信。
[0025]處理器110包括一個或多個核112a.....112m、一個或多個通用寄存器114a.....114η、一個或多個SIMD寄存器116a.....116p、和/或一個或多個其他寄存器118a.....118q。每個核(例如,核112a)被配置成用于執行與計算設備100的上電序列相關聯的操作,填充消息和/或生成一個或多個散列摘要和/或一個或多個消息認證碼,如在此所描述的。每個通用寄存器(例如,通用寄存器114a)被配置成支持例如基本整數算數和/或比特和字節串操作。例如,通用寄存器114a可被配置成用于保持邏輯和算數運算的操作數、地址計算的操作數和/或存儲器指針。其他寄存器118a.....118q可包括例如標志寄存器和/或程序計數器。每個SMD寄存器(例如,SMD寄存器116a)被配置成用于支持在整數和/或浮點值上執行單指令多數據操作。例如,SMD寄存器116a.....116p可包括一個或多個64比特MMX寄存器、一個或多個128比特XMM寄存器和/或一個或多個256比特YMM寄存器。
[0026]每個5頂0寄存器116&.....116p具有相應的寄存器大小并且被配置成在對應的執行元件中保存至少一個數據元素。執行元件的大小可對應于數據元素類型,即,字節、字、雙字(“dword”)或四字。例如,128比特寄存器可包括:16個8比特執行元件,每個執行元件對應于字節數據元素類型;8個16比特執行元件,每個執行元件對應于字數據類型;4個32比特執行元件,每個執行元件對應于數據類型dword;對應于數據類型四字的兩個數據元素的2個64比特執行元件;對應于數據類型雙四字的一個數據元素的I個128比特執行元件。因此,單個SMD指令可被配置成用于在保持在對應的執行元件中的至少一個數據元素上操作。例如,對于被配置成用于在4個32比特執行元件上操作的單個SMD指令而言,相應的128比特SIMD寄存器可保持4個32比特dword(每個dword對應于執行元件)。在本示例中,4個32比特dword可然后并行地由單個SIMD指令操作。
[0027]存儲器120包括被配置成管理計算設備100的操作的操作系統OS121 AS