提供安全密碼散列回合功能的指令和邏輯的制作方法
【專利說明】提供安全密碼散列回合功能的指令和還輯
[0001] 對相關申請的交叉引用 本申請設及在2012年12月29日提交的標題為"InstructionandLogictoProvide SIMDSe州re化shingRoundSliceFunctionality"的申請系列號13/731, 004,代理人 檔案號P45164;并且設及在2012年3月30日提交的標題為"MethodandApparatusto ProcessSHA-2Secure化shingAlgorithm"的國際申請號PCT/US2012/031632,代理人檔 案號P38728PCT。
技術領域
[0002] 本公開設及處理邏輯、微處理器和關聯的指令集架構的領域,當其由處理器或其 他處理邏輯執行時執行邏輯的、數學的或其他功能操作。特別地,本公開設及提供安全密碼 散列回合(round)功能的指令和邏輯。
【背景技術】
[0003] 散列函數可W用于許多目的:例如散列表中的數據編索弓I、用于指紋分析 (finge巧rinting)、用于負載平衡分布,查找數據庫中的數據、檢測復制的數據或唯一地標 識文件,并且作為校驗和來檢測意外的數據不純(corruption)。例如,在負載平衡分布應用 中,散列算法可W使用客戶端的因特網協議(IP)地址或客戶端的介質訪問控制(MC)地址 或HTTP報頭的值等作為服務器選擇的基礎。在運樣的應用中,相同的客戶端甚至在可用服 務器的列表在客戶端的會話期間被修改時可W由相同的服務器服務。運樣的性質還可W使 該算法對需要諸如cookie的服務器側狀態信息的存儲的應用有用。
[0004] 術語"一致性散列"指在Web服務器的改變群體之中分布請求的方式。然后每個 槽(slot)由分布式系統中的節點表示。節點的添加(加入)和移除(離開/失效)要求在槽 /節點的數量改變時重新混洗(re-shuffle)項目。散列函數可W不保留結構。理想地,針 對每個輸入數據,獲取可能的輸出數據中的任何輸出數據的可能性應該相等。在輸入數據 的頻率分布中的任何不相等被變換成輸出數據的統一分布。
[0005] 然而,由于意外化及故意可能存在問題。意外地,用戶可W由不同的組組成,W不 同的程度請求對資源的訪問。如果運些組被不幸地平衡,則通過散列函數引導到某資源的 用戶可WW比其他用戶更大程度地請求對資源的訪問。該某資源然后遭受比其他資源更大 的負載,導致資源之間的偏置的負載平衡。
[0006] 有意地,所謂的"散列攻擊"可能發生,其意圖引起資源之間的偏置的負載平衡。散 列攻擊一般可能由具有關于系統的充足知識的攻擊者和/或利用從包括資源的系統輸出 的信息的攻擊者做出。攻擊者然后留意到在通過散列函數時針對資源的每個請求被引導到 同一個資源。該資源然后遭受不尋常地高負載,并且然后或多或少低效率地運轉,運可W導 致所謂的"服務的拒絕",其中資源不再接受用戶。該服務的拒絕可W影響整個系統的服務 效率。
[0007] 密碼散列函數是散列函數,即采用數據的任意塊并且返回固定大小的位串,(密 碼)散列值,使得對數據的(意外的或有意的)改變將(W非常高的概率)改變散列值的算法。 將被編碼的數據經常被稱作"消息",并且散列值有時被稱作消息摘要或"摘要"。
[000引密碼散列函數特別地在數字簽名、消息認證代碼(MAC)W及其他形式的認證中具 有許多信息安全應用。它們還可W被用作普通的散列函數W對散列表中的數據編索引用于 指紋分析、檢測復制的數據或唯一地標識文件,并且被用作校驗和來檢測意外的數據不純。 在信息安全上下文中,密碼散列值有時被稱作(數字)指紋分析、校驗和或就是散列值,即使 所有運些術語代表具有相當不同的性質和目的功能。
[0009]最有名的密碼散列函數中的一個是由Ronald化vest開發的MD5 (消息-摘要算 法5)算法。其他常見算法是由國家標準和技術研究所(NIST)公布的SHA-I(安全散列算 法1)W及變型SHA-2和SHA-3作為美國聯邦信息處理標準(FIPS)。
[0010] 如果密碼散列函數基于某些數學函數,則其仍可W變得易受服務拒絕攻擊,因為 在某些情況下其可W遭受所謂的"齊普夫定律"、"幕定律"或"帕累托分布"中的一個,其中 某些特定的資源遭受不尋常地高負載。該性質或類似的性質可W被惡意利用W引起資源之 間的偏置的負載平衡,由此導致服務拒絕。
[0011] 針對執行查找的散列中的一類,在散列函數中的兩個重要折衷是:(1)計算的復 雜性對速度一-過于簡單并且散列容易被打破、過于復雜并且散列花費過長的時間來計 算;W及(2)摘要分布和雪崩性質一一輸入中的單個位改變將使得散列摘要輸出值中的n 位改變,最強的是n是散列摘要輸出的大小的大約一半。
[0012] 某些已經提出的能夠執行整個安全散列算法的處理器(例如美國專利號 8, 225, 702)或協處理器(例如美國專利號7, 240, 203)。運樣的方法的一個缺點是在不特別 考慮諸如中斷的特別處理或其他指令的并發超標量執行的事情的情況下不容易符合現代 微處理器的標準執行管線(pipeline)。與標準執行管線的另一失配是用于執行整個安全散 列算法需要的等待時間。
[0013] 現代處理器經常包括如下指令,所述指令用W提供是計算密集的但提供通過使用 諸如例如單指令多數據(SIMD)向量寄存器之類的各種數據存儲設備的高效實現可W采用 的高水平的數據并行性的操作。中央處理單元(CPU)然后可W提供并行硬件來支持處理向 量。向量是保持多個連續的數據元素的數據結構。大小M的向量寄存器可W包含大小0的 N個向量元素,其中N=M/0。例如,64字節向量寄存器可W被劃分成(a) 64個向量元素,每 個元素保持占用1個字節的數據項目,(b) 32個向量元素,每個保持占用2個字節(或一個 "字")的數據項目,(C)16個向量元素,每個保持占用4個字節(或一個"雙字")的數據項 目,或(d)8個向量元素,每個保持占用8個字節(或一個"四倍字")的數據項目。SIMD向量 寄存器中的并行性的本質可W良好地適合用于安全散列算法的處理。
[0014]至今,對運樣的復雜性、失配、性能限制問題W及其他瓶頸的潛在解決方案尚未被 充分地探索。
【附圖說明】
[0015] 本發明通過示例的方式被闡明并且不限于附圖中的圖中。
[0016]圖IA是執行提供安全密碼散列回合功能的指令的系統的一個實施例的框圖。
[0017] 圖IB是執行提供安全密碼散列回合功能的指令的系統的另一實施例的框圖。
[0018] 圖IC是執行提供安全密碼散列回合功能的指令的系統的另一實施例的框圖。
[0019] 圖2是執行提供安全密碼散列回合功能的指令的處理器的一個實施例的框圖。
[0020] 圖3A圖示了根據一個實施例的打包的數據類型。
[0021] 圖3B圖示了根據一個實施例的打包的數據類型。
[0022] 圖3C圖示了根據一個實施例的打包的數據類型。
[0023] 圖3D圖示了根據一個實施例的提供安全密碼散列回合功能的指令編碼。
[0024] 圖3E圖示了根據另一實施例的提供安全密碼散列回合功能的指令編碼。
[0025] 圖3F圖示了根據另一實施例的提供安全密碼散列回合功能的指令編碼。
[0026] 圖3G圖示了根據另一實施例的提供安全密碼散列回合功能的指令編碼。
[0027] 圖3H圖示了根據另一實施例的提供安全密碼散列回合功能的指令編碼。
[0028] 圖4A圖示了執行提供安全密碼散列回合功能的指令的處理器微架構的一個實施 例的元素。
[0029] 圖4B圖示了執行提供安全密碼散列回合功能的指令的處理器微架構的另一實施 例的元素。
[0030] 圖5是執行提供安全密碼散列回合功能的指令的處理器的一個實施例的框圖。
[0031] 圖6是執行提供安全密碼散列回合功能的指令的計算機系統的一個實施例的框 圖。
[0032] 圖7是執行提供安全密碼散列回合功能的指令的計算機系統的另一實施例的框 圖。
[0033] 圖8是執行提供安全密碼散列回合功能的指令的計算機系統的另一實施例的框 圖。
[0034] 圖9是執行提供安全密碼散列回合功能的指令的片上系統的一個實施例的框圖。
[0035] 圖10是執行提供安全密碼散列回合功能的指令的處理器的實施例的框圖。
[0036] 圖11是提供SIMD安全散列回合片功能的IP核開發系統的一個實施例的框圖。
[0037] 圖12圖示了提供SIMD安全散列回合片功能的架構仿真系統的一個實施例。
[0038] 圖13圖示了翻譯提供安全密碼散列回合功能的指令的系統的一個實施例。
[0039] 圖14圖示了用于提供安全密碼散列回合功能的指令的執行的裝置的一個實施例 的圖。
[0040] 圖15圖示了用于提供安全密碼散列回合功能的指令的執行的裝置的替代實施例 的圖。
[0041] 圖16圖示了提供安全密碼散列回合功能的過程的實施例的流程圖。
[0042] 圖17圖示了提供安全密碼散列回合功能的過程的另一實施例的流程圖。
【具體實施方式】
[0043] W下描述公開了提供安全密碼散列算法回合功能的指令和處理邏輯。某些實施例 包括處理器,所述處理器包括:對用于安全密碼散列算法的指令解碼的解碼級,第一指令指 定源數據和一個或多個密鑰操作數。處理器執行單元響應于被解碼的指令使用一個或多個 密鑰操作數在源數據上執行一個或多個安全密碼散列算法回合迭代,并且將指令的結果存 儲在目的地寄存器中。指令的一個實施例指定使用諸如DES(數據加密標準)或TDES(S 重DES)之類的化istel密碼算法的安全密碼散列算法回合迭代。替代實施例可W使用其他 密碼算法,例如諸如:Blowfish、SAFER(安全和快速加密例程(routine))K-64、(Carlisle Adams和StaffordTavares的)CASTS、陽AL(快速數據加密(Encipherment)算法)等。在 一個實施例中,可W在根據用于跨處理資源的集合的負載平衡請求的請求生成資源分派中 使用指令的結果。某些實施例可W指定(例如在立即操作數中)用于執行安全密碼散列算法 的回合數的范圍。例如,在一個實施例中,在立即字節操作數中的十六進制范圍OxOF可W 指示指令將執行密碼散列算法的所有十六(16)迭代,而立即字節操作數中的十六進制范圍 OxFF可W指示指令將執行僅一個回合十六(16)迭代,或者立即字節操作數中的十六進制 范圍OxFS可W指示指令將在密碼散列算法的解密模式中執行回合十六(16)到回合九(9) 的迭代。將理解,采用密碼作為散列算法的一個意外收益相對于單向散列算法是其是可逆 的,運可W輔助用于提供期望特性(例如持續性和/或一致性散列)的負載平衡而允許新的 密鑰的插入W阻曉攻擊(例如諸如服務拒絕攻擊)的密鑰的設計。執行作為散列算法的密碼 的僅指定數量的迭代的另一意外收益是不同集合的密鑰可W被用于回合迭代的每個回合 或范圍,其提供使用標準子密鑰調度不可能的密鑰結果。
[0044] 將理解,如在本文中描述的實施例中的用于采用安全密碼散列算法的指令可W被 用來在諸如在用于提供負載平衡分布的那些應用中之類的應用中提供安全散列功能,和/ 或抵制服務拒絕攻擊等,而不需要計算的過度復雜性或不可接受的延遲,但仍慮及良好選 擇的調整W阻曉攻擊,并仍沒有降低過程中期望的服務質量。
[0045] 在W下描述中,記載了許多具體細節,諸如處理邏輯、處理器類型、微-架構條件、 事件、使能機制等,W便提供對本發明的實施例的更徹底理解。然而,本領域技術人員將理 解本發明可W在沒有運樣的具體細節的情況下被實現。另外,某些公知的結構、電路等未被 詳細示出W避免不必要地模糊本發明的實施例。
[0046] 盡管參考處理器描述了W下實施例,但其他實施例適用于其他類型的集成電路和 邏輯設備。本發明實施例的類似技術和教導可W被應用于可W受益于較高的管線吞吐量和 改進的性能的其他類型的電路或半導體設備。本發明的實施例的教導適用于執行數據操縱 的任何處理器或機器。然而,本發明不限于執行512位、256位、128位、64位、32位或16位 數據操作的處理器或機器并且可W被應用于其中執行數據的操縱或管理的任何處理器和 機器。此外,出于闡明的目的,W下描述提供示例并且附圖示出各種示例。然而,運些示例 不應該在限制性的意義上被解釋,因為它們僅意圖提供本發明的實施例的示例而不意圖提 供本發明的實施例的所有可能實現的窮舉列表。
[0047] 盡管下文的示例描述了在執行單元和邏輯電路的上下文中的指令處理和分發,但 可W通過被存儲在機器可讀有形的介質上的數據和/或指令的方式來完成本發明的其他 實施例,所述數據和/或指令當由機器執行時使得機器執行與本發明的至少一個實施例一 致的功能。在一個實施例中,與本發明的實施例相關聯的功能被具體化在機器可執行指令 中。指令可W用來使得利用指令編程的通用或專用處理器執行本發明的步驟。本發明的實 施例可W被提供為計算機程序產品或軟件,其可W包括具有被存儲在其上的指令的機器或 計算機可讀介質,所述指令可W被用來對計算機(或其他電子設備)編程W執行根據本發明 的實施例的一個或多個操作。替代地,本發明的實施例的步驟可能由包含用于執行步驟的 固定功能邏輯的具體硬件部件或被編程的計算機部件與固定功能硬件部件的任何組合執 行。
[0048]被用來對邏輯編程W執行本發明的實施例的指令可W被存儲在系統中的存儲器 內,存儲器諸如DRAM、高速緩存、閃存或其他記憶裝置。更進一步地,指令可W經由網絡或 通過其他計算機可讀介質的方式被分發。因此,計算機可讀介質可W包括用于存儲或傳輸 機器(例如計算機)可讀的形式的信息的任何機制,但不限于軟盤、光盤、壓縮盤、只讀存儲 器(CD-ROM)和磁光盤、只讀存儲器(ROM)、隨機訪問存儲器(RAM)、可擦除可編程只讀存儲 器(EPROM)、電可擦除可編程只讀存儲器(EEPR0M)、磁或光卡、閃存或經由電的、光的、聲學 的或其他形式的傳播信號(例如,載波、紅外信號、數字信號等)在因特網上的信息的傳輸中 使用的有形的機器可讀記憶裝置。因此,計算機可讀介質包括適合用于存儲或傳輸機器(例 如,計算機)可讀的形式的電子指令或信息的任何類型的有形機器可讀介質。
[0049] 設計可W經歷從創建到仿真到制造的各種階段。表示設計的數據可WW多種方式 表示設計。首先,因為在仿真中是有用的,所W硬件可W使用硬件描述語言或另一功能描述 語言來表示。另外,可W在設計過程的某些階段處產生具有邏輯和/或晶體管口的電路級 模型。更一步地,大部分設計在某些階段處達到表示硬件模型中的各種設備的物理布局的 數據的水平。在其中使用常規半導體制造技術的情況下,表示硬件模型的數據可W是指定 在用于被用來生產集成電路的掩膜(mask)的不同掩膜層上的各種特征的存在或不存在的 數據。在設計的任何表示中,數據可W被存儲在任何形式的機器可讀介質中。諸如盤之類 的存儲器或磁或光記憶裝置可W是機器可讀介質W存儲經由被調制或另外生成W傳輸信 息的光或電波傳輸的運樣的信息。當指示或攜帶代碼或設計的電載波被傳輸到電信號的拷 貝、緩沖或重傳被執行的程度時,制做新的副本。因此,通信提供者或網絡提供者可W在有 形機器可讀介質上至少暫時地存儲諸如被編碼到載波中的信息的制品(article),使本發 明的實施例的技術具體化。
[0050]在現代處理器中,多個不同的執行單元被用來處理和執行多種代碼和指令。并非 所有的指令被創建成相等的,因為某些較快完成而其他可W花費多個時鐘周期來完成。指 令的吞吐量越快,處理器的總的性能就越好。因此,使盡可能多的指令盡可能快地執行將是 有利的。然而,存在具有較大的復雜性并且在執行時間和處理器資源方面需要更多的某些 指令。例如,存在浮點指令、加載/存儲操作、數據移動等。
[0051] 隨著在互聯網、文本和多媒體應用中使用更多的計算機系統,附加的處理器支持 已經隨著時間被引入。在一個實施例中,指令集可W與包括數據類型、指令、寄存器架構、尋 址模式、存儲器架構、中斷和異常處理W及外部輸入和輸出(I/O)的一個或多個計算機架構 相關聯。
[0052]在一個實施例中,指令集架構(ISA)可W由一個或多個微架構來實現,其包括被用 來實現一個或多個指令集的處理器邏輯和電路。因此,具有不同的微架構的處理器可W共 享公共指令集的至少部分。例如,Intel?Pentium4處理器、Intel?Core?處理器W及來 自加州森尼韋爾的AdvancedMicroDevices公司的處理器實現幾乎相同版本的x86指令 集(具有已經被添加有較新版本的某些擴展),但具有不同的內部設計。類似地,由諸如AMR 控股有限