TW201816603A - 判定填補操作的狀態 - Google Patents
判定填補操作的狀態 Download PDFInfo
- Publication number
- TW201816603A TW201816603A TW106133571A TW106133571A TW201816603A TW 201816603 A TW201816603 A TW 201816603A TW 106133571 A TW106133571 A TW 106133571A TW 106133571 A TW106133571 A TW 106133571A TW 201816603 A TW201816603 A TW 201816603A
- Authority
- TW
- Taiwan
- Prior art keywords
- message
- padding
- instruction
- operand
- computer
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Power Engineering (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
本發明執行一種待用以產生一訊息之一訊息摘要的指令。在執行中,檢查該指令之一填補狀態控制項以判定是否已對該訊息執行填補。若該檢查指示已執行填補,則執行一第一動作;且若該檢查指示尚未執行填補,則執行不同於該第一動作之一第二動作。
Description
一或多個態樣大體上係關於運算環境內之處理,且特定而言,係關於與安全訊息傳輸相關聯之處理。
電子資訊處理情形中之安全訊息傳輸涉及訊息之加密及解密以及鑑認。訊息在傳輸之前藉由發送者加密以確保對經加密訊息之檢驗不向第三方顯露其真實內容。另一方面,訊息由接收者解密以顯露原始內容。另外,訊息鑑認確保由發送者提供之訊息之內容在傳輸期間尚未被意外或惡意地變更。因此,所接收之訊息實際上與所發送內容相同。 鑑認常常藉由以下操作執行:檢查訊息之位元;及使用雜湊演算法以自經檢查位元產生訊息摘要(有時被稱作鑑認標籤或簡單地稱作雜湊)。雜湊演算法之安全性強度(亦即,演算法對碰撞、原像及次要原像攻擊之抵抗性)由所產生之訊息摘要之大小指示。 國家標準與技術研究所(NIST,在美國)採用安全雜湊演算法之兩個系列的標準:SHA-1:160個位元之摘要長度;及SHA-2:224、256、384及512個位元之摘要長度(及其組合)。 SHA-1及SHA-2演算法以被稱作初始鏈結值(ICV)之判定性非零雜湊標籤開始,該標籤由訊息之每一連續區塊(訊息區塊之大小為64或128個位元組)重複地置換。每一置換產生用作後續置換之ICV的輸出鏈結值(OCV)。當訊息之所有完整區塊已被處理時,將最終短區塊(若無短區塊剩餘,則空區塊)填補直至全訊息長度,且最後區塊用以最後一次置換ICV以產生所得訊息摘要(亦即,標籤)。對訊息執行填補一次。 由於填補將執行一次,因此將促進與此填補相關聯之處理。
經由提供用於促進運算環境中之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。該電腦程式產品包含可藉由處理電路讀取且儲存供處理電路執行以用於執行方法之指令的儲存媒體。舉例而言,該方法包括獲得指令以供執行。該指令待用以產生訊息之訊息摘要。該執行包括檢查該指令之填補狀態控制項以判定是否已對訊息執行填補。基於指示已執行填補之檢查而執行第一動作。基於指示尚未執行填補之檢查而執行不同於第一動作之第二動作。 促進與鑑認相關聯之處理,藉此改良運算環境內之處理。 在一個實施例中,該第一動作包括執行擴展輸出函式處理以執行與訊息摘要相關聯之進一步處理。該執行擴展輸出函式處理包括(例如)對訊息摘要之至少一部分進行重新雜湊以產生額外輸出。 另外,在一個實施例中,該第二動作包括執行訊息之至少一部分的填補以形成具有選擇大小之訊息區塊。該執行填補包括(例如)將填補位元新增至訊息之至少一部分的選擇部位。在一個實施例中,該第二動作進一步包括設定填補狀態控制項以指示已對訊息執行填補。該填補狀態控制項位於(例如)供指令使用之暫存器中。在另一實例中,該填補狀態控制項位於指令可存取之記憶體中。 此外,在一個實施例中,該執行進一步包括基於指示已執行填補之填補狀態控制項且基於指令開始執行而判定訊息之長度是否為非零,且若為非零,則指示例外狀況。 作為一個實例,該指令為計算最後訊息摘要指令,其用以處理訊息之一或多個最後區塊以產生待用於訊息之鑑認中的訊息摘要。 該訊息可儲存於記憶體中,且該指令提供記憶體中之位址以定位訊息。 本文中亦描述及主張與一或多個態樣有關之方法及系統。另外,本文中亦描述及可能主張與一或多個態樣有關之服務。 經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之一部分。
根據一或多個態樣,提供用於判定是否已對指令(諸如,產生訊息摘要之可中斷指令)執行填補操作以判定如何繼續進行處理的能力。在一個實例中,此填補操作係藉由用以產生訊息摘要之計算最後訊息摘要指令執行,如下文所描述。儘管本文中參考產生訊息摘要之指令描述實例,但該等實例可與其他指令及/或其他處理一起使用。 參看圖1A描述併有及使用本發明之一或多個態樣的運算環境之一個實施例。在一個實例中,運算環境係基於由紐約阿蒙克市之國際商業機器公司供應之z/架構(z/Architecture)。z/架構之一個實施例描述於2015年3月之IBM公開案第SA22-7832-10號「z/Architecture Principles of Operation」中,該公開案特此以全文引用的方式併入本文中。Z/架構(Z/ARCHITECTURE)為美國紐約阿蒙克市之國際商業機器公司之註冊商標。 在另一實例中,運算環境係基於由紐約阿蒙克市之國際商業機器公司供應之電源架構(Power Architecture)。電源架構之一個實施例描述於2015年4月9日國際商業機器公司之「PowerISA™
Version 2.07B」中,該案特此以全文引用的方式併入本文中。電源架構(POWER ARCHITECTURE)為美國紐約阿蒙克市之國際商業機器公司之註冊商標。 運算環境亦可基於其他架構,包括但不限於INTEL x86架構。亦存在其他實例。 如圖1A中所展示,運算環境100包括(例如)電腦系統/伺服器12,該電腦系統/伺服器可包括但不限於一或多個處理器或處理單元16、系統記憶體28及匯流排18,該匯流排將包括系統記憶體28之各種系統組件耦接至處理器16。 匯流排18表示若干種類型之匯流排結構中之任一者中的一或多者,包括記憶體匯流排或記憶體控制器、周邊匯流排、加速圖形埠及處理器或使用多種匯流排架構中之任一者之區域匯流排。以實例說明而非限制,此等架構包括工業標準架構(ISA)匯流排、微通道架構(MCA)匯流排、增強型ISA (EISA)匯流排、視訊電子標準協會(VESA)區域匯流排及周邊組件互連(PCI)匯流排。 電腦系統/伺服器12通常包括多種電腦系統可讀媒體。此等媒體可為可由電腦系統/伺服器12存取之任何可用媒體,且其包括揮發性及非揮發性媒體兩者、抽取式及非抽取式媒體兩者。 系統記憶體28可包括呈揮發性記憶體之形式的電腦系統可讀媒體,諸如隨機存取記憶體(RAM) 30及/或快取記憶體32。電腦系統/伺服器12可進一步包括其他抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。僅以實例說明,可提供儲存系統34以用於自非抽取式、非揮發性磁性媒體(未展示且通常稱為「硬碟機」)讀取且寫入至非抽取式、非揮發性磁性媒體。儘管未展示,但可提供用於自抽取式、非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式、非揮發性磁碟之磁碟機,及用於自抽取式、非揮發性光碟(諸如,CD-ROM、DVD-ROM或其他光學媒體)讀取及寫入至抽取式、非揮發性光碟之光碟機。在此等情況下,每一者可藉由一或多個資料媒體介面連接至匯流排18。如下文將進一步描繪及描述,記憶體28可包括至少一個程式產品,其具有經組態以進行本發明之實施例之功能的一組(例如,至少一個)程式模組。 以實例說明而非限制,具有一組(至少一個)程式模組42之程式/公用程式40以及作業系統、一或多個應用程式、其他程式模組及程式資料可儲存於記憶體28中。作業系統、一或多個應用程式、其他程式模組及程式資料或其某一組合中之每一者可包括網路連接環境之實施。程式模組42通常進行如本文中所描述之本發明之實施例的功能及/或方法。 電腦系統/伺服器12亦可與以下各者通信:諸如鍵盤、指標裝置、顯示器24等之一或多個外部裝置14;使得使用者能夠與電腦系統/伺服器12互動之一或多個裝置;及/或使得電腦系統/伺服器12能夠與一或多個其他運算裝置通信之任何裝置(例如,網路卡、數據機等)。此通信可經由輸入/輸出(I/O)介面22發生。再另外,電腦系統/伺服器12可經由網路配接器20與諸如區域網路(LAN)、通用廣域網路(WAN)及/或公用網路(例如,網際網路)之一或多個網路通信。如所描繪,網路配接器20經由匯流排18與電腦系統/伺服器12之其他組件通信。應理解,儘管未展示,但可結合電腦系統/伺服器12使用其他硬體及/或軟體組件。實例包括但不限於:微碼、裝置驅動程式、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。 在一個實例中,處理器16包括用以執行指令之複數個功能組件。如圖1B中所描繪,此等功能組件包括(例如):指令提取組件120,其用以提取待執行之指令;指令解碼單元122,其用以解碼所提取指令且用以獲得經解碼指令之運算元;指令執行組件124,其用以執行經解碼指令;記憶體存取組件126,其用以在必要時為指令執行存取記憶體;及寫回組件130,其用以提供經執行指令之結果。根據本發明之態樣,此等組件中之一或多者可用以判定填補操作之狀態(136),如本文中所描述。 在一個實施例中,處理器16亦包括待由功能組件中之一或多者使用的一或多個暫存器140。 參看圖2A描述併有及使用一或多個態樣之運算環境之另一實施例。在此實例中,運算環境200包括(例如)原生中央處理單元(CPU) 202、記憶體204及一或多個輸入/輸出裝置及/或介面206,前述各者經由(例如)一或多個匯流排208及/或其他連接件而彼此耦接。作為實例,運算環境200可包括:由紐約阿蒙克市之國際商業機器公司供應之PowerPC處理器或pSeries伺服器;由加州帕洛阿爾托之惠普公司供應的具有Intel Itanium II處理器之HP Superdome;及/或基於由國際商業機器公司、惠普公司、因特爾公司、甲骨文公司或其他公司供應之架構的其他機器。 原生中央處理單元202包括一或多個原生暫存器210,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示環境在任何特定時間點之狀態的資訊。 此外,原生中央處理單元202執行儲存於記憶體204中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體204中之仿真器程式碼212。此程式碼使得在一個架構中組態之運算環境能夠仿真另一架構。舉例而言,仿真器程式碼212允許基於除z/架構外之架構之機器(諸如,PowerPC處理器、pSeries伺服器、HP Superdome伺服器或其他者)仿真z/架構且執行基於z/架構開發之軟體及指令。 參看圖2B描述與仿真器程式碼212有關之其他細節。儲存於記憶體204中之客體指令250包含經開發以在除原生CPU 202之架構外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令250可已經設計以在z/架構處理器16上執行,但替代地在可為(例如)Intel Itanium II處理器之原生CPU 202上仿真。在一個實例中,仿真器程式碼212包括指令提取常式252,以自記憶體204獲得一或多個客體指令250且視情況提供對所獲得指令之本端緩衝。該仿真器程式碼亦包括指令轉譯常式254,以判定已獲得之客體指令的類型且將該客體指令轉譯成一或多個對應的原生指令256。此轉譯包括(例如)識別待藉由客體指令執行之功能及選取原生指令以執行彼功能。 另外,仿真器212包括仿真控制常式260以使得執行原生指令。仿真控制常式260可使原生CPU 202執行仿真一或多個先前所獲得之客體指令之原生指令的常式且,在此執行結束時,將控制傳回至指令提取常式以仿真下一客體指令或客體指令群組之獲得。原生指令256之執行可包括將資料自記憶體204載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算(如藉由轉譯常式判定)。 每一常式係(例如)以軟體實施,該軟體儲存於記憶體中且藉由原生中央處理單元202執行。在其他實例中,一或多個常式或操作係以韌體、硬體、軟體或其某一組合實施。可使用原生CPU之暫存器210或藉由使用記憶體204中之部位來仿真該仿真處理器之暫存器。在實施例中,客體指令250、原生指令256及仿真器程式碼212可駐留於同一記憶體中或可分配於不同記憶體裝置當中。 如本文中所使用,韌體包括(例如)處理器之微碼、毫碼(millicode)及/或巨集碼。韌體包括(例如)用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括(例如)專屬碼,該專屬碼通常作為包括受信任軟體之微碼或特定於基礎硬體之微碼遞送,且控制作業系統對系統硬體之存取。 在一個實例中,所獲得、經轉譯及經執行之客體指令250為本文中所描述之計算最後訊息摘要指令。將具有一種架構(例如,z/架構)之指令自記憶體提取、轉譯及表示為具有另一架構(例如,PowerPC、pSeries、Intel等)之原生指令256之序列。接著執行此等原生指令。 在一個實例中,計算最後訊息摘要(KLMD)指令與計算中間訊息摘要(KIMD)指令一起使用以產生用於鑑認之訊息摘要,該兩個指令定義於(例如)z/架構中。當訊息之全長不可得(例如,訊息自網路配接器或磁碟機可能以片段之形式到達)時,意欲使用KIMD;且KLMD意欲用於處理最終訊息區塊,包括在必要時執行任何填補。 KIMD及KLMD兩者對記憶體中之訊息操作,該訊息在本文中被稱作指令之第二運算元。訊息之最左位元組的記憶體位址係藉由偶數奇數通用暫存器對之偶數編號暫存器指明,且訊息之長度係藉由該對之奇數編號暫存器指明。 KIMD及KLMD兩者定義為在CPU判定數目個訊息位元組已被處理,但更多訊息位元組剩餘之情況下設定條件碼;此條件被稱作部分完成且導致設定條件碼(例如,3)。當所有訊息位元組已被成功地處理時,設定替代條件碼(此條件被稱作完全完成,且設定條件碼(例如,0)。對於部分或完全完成,訊息之位址(在偶數編號暫存器中)藉由經處理位元組之數目更新,且訊息之剩餘長度(在奇數編號暫存器中)遞減相同量。若發生部分完成,則程式可簡單地沿分支返回至KIMD或KLMD指令以繼續處理。當發生完全完成時,第二運算元之奇數編號暫存器中的剩餘長度為零。對於任何個別訊息,在此實施例中,對訊息執行填補一次,而不管處理是否需要重複執行指令(亦即,歸因於部分完成)。因此,在此實施例中,當處理最終短區塊或空區塊時,藉由KLMD指令執行填補。 KIMD及KLMD指令經組態以支援SHA-1及SHA-2雜湊技術兩者。另外,根據本發明之態樣,KIMD及KLMD指令亦經組態以支援被稱作SHA-3之另一安全雜湊技術。在2015年8月5日,NIST公開了SHA-3標準之官方採用版本。SHA-3標準提供224、256、384及512個位元(與SHA-2相同)之摘要長度,且經設計以提供等於或超過SHA-2之安全性強度的安全性強度。SHA-3使用被稱作Keccak之置換演算法,其不同於SHA-2演算法且可提供優良效能。Keccak描述於FIPS PUB 202中:聯邦資訊處理標準公開案,SHA-3標準:基於置換之雜湊及可擴展輸出函式。 在Keccak之情況下,Keccak假設用於訊息之初始鏈結值(ICV)為零,而非以判定性非零ICV開始。SHA-3使用Keccak之一版本(被稱作Keccak[c]),其中每一訊息區塊之大小為128個位元(16個位元組)。Keccak函式被稱作海綿函式,此係因為訊息之置換類似於將訊息吸收至海綿中,且結果之產生類似於擠壓海綿。 SHA-3標準亦定義使用(例如) 128個位元或256個位元之摘要長度的兩個可擴展輸出函式(XOF)。亦被稱作SHAKE函式(對於SHA KEccak)之此等XOF函式與非SHAKE函式類似之處在於其自輸入訊息形成雜湊值。然而,不同於僅可產生固定長度訊息摘要之SHA-3函式,SHAKE函式可經由使用Keccak對摘要區塊進行重新雜湊以產生後續輸出區塊之回饋機制來產生具有不定長度之擴展輸出。此等後續輸出區塊可用於額外處理,諸如偽隨機數字產生器。 各種演算法之一個特性為可處理空(亦即,零長度)訊息。因此,根據本發明之態樣,對於(例如) KLMD SHAKE函式之任何個別執行,當訊息之長度為零時,該指令將能夠判定是否已執行填補。對於任何個別訊息,填補將發生(例如)僅一次。當第二運算元最初為零時,該指令將區分兩個其他方面相同之條件:(a)第一執行,其中尚未執行填補;對比(b)後續執行(例如,在條件碼3之後),其中已執行填補。 為支援SHA-3標準,將新函式碼及新雜湊演算法描述新增至定義於(例如)z/架構中之KIMD及KLMD指令。另外,在一個實例中,對於KLMD SHAKE函式,定義指令之額外輸出運算元(被稱作第一運算元)。類似於第二運算元,第一運算元指定擴展輸出函式(XOF)資料之記憶體部位及長度。如同第二運算元,KLMD指令可產生CPU判定數目個XOF位元組,基於所產生XOF位元組之數目而更新其第一運算元暫存器,且接著藉由設定條件碼(例如,CC3)而指示部分完成。程式可隨後重新執行指令直至其指示成功完成(例如,CC0)。 KIMD及KLMD函式中之任一者的初始第二運算元長度可為零,其中空訊息經填補。該填補操作基於正執行之函式而不同(對於SHA-1及SHA-2,該填補為訊息長度;對於SHA-3及SHAKE函式,該填補為可預測位元序列)。在一個實例中,XOF處理不開始直至整個第二運算元已被處理,包括將發生一次之填補操作。 因此,當第二運算元長度為零時,存在KLMD指令可開始執行之兩種方式: 1. 指定空的第二運算元訊息,但尚未執行填補。此可以兩種方式發生: a. 發佈指令之程式有意地指定為零之初始訊息長度。 b. 程式已處理多個訊息區塊,最後區塊含有區塊大小之整數倍,且在執行填補之前,指令以部分完成結束。 2. 該指令已執行填補,且其在先前部分完成(例如,CC3)之後以XOF產生繼續。 因此,根據本發明之態樣,提供在指令執行開始時區分此等兩種條件之能力。填補狀態(PS)控制項係定義為至(例如) KLMD SHAKE處理之輸入。在一個實施例中,PS為(例如)通用暫存器(在此狀況下,亦含有指令之函式碼的通用暫存器0)中之位元。值零指示尚未執行填補,且值一指示已執行填補。程式供應初始值零,且CPU基於對訊息執行填補而將此位元設定為1。 參看圖3A至圖3H描述經組態以使用填補狀態控制項之計算最後訊息摘要(KLMD)指令之一個實施例。如所展示,該指令具有複數個欄位,且一欄位可具有與其相關聯之下標編號。與指令之欄位相關聯的下標編號指示該欄位應用於之運算元。舉例而言,與通用暫存器R1
相關聯之下標編號1指示R1
與第一運算元相關聯。 在一個實例中,參看圖3A,計算最後訊息摘要(KLMD)指令300包括:作業碼欄位302 (例如,位元0至15),其具有用以指示計算最後訊息摘要操作之作業碼 (operation code/opcode);第一暫存器欄位304 (例如,位元24至27),其用以指明偶數奇數暫存器對,其中R1
將指明偶數編號暫存器,除0以外;及第二暫存器欄位306 (例如,位元28至31),其用以指明偶數奇數暫存器對,其中R2
將指明偶數編號暫存器,除0以外。在一個實例中,藉由R1
欄位及R2
欄位指明的偶數奇數暫存器對之內容分別含有第一運算元及第二運算元之位址及長度。在一個實例中,欄位304至306中之每一者與作業碼欄位分離且獨立於作業碼欄位。另外,在一個實施例中,該等欄位彼此分離且獨立;然而,在其他實施例中,可組合大於一個欄位。 除編碼於指令中之R1
及R2
外,指令之一個實施亦使用一或多個隱含的暫存器,包括(例如)通用暫存器0 (GR0)及通用暫存器1 (GR1)。下文參看圖3B至圖3G進一步描述該等暫存器中之每一者。 最初參看圖3B,描述通用暫存器0 (320)之格式的一個實施例。在一個實例中,通用暫存器0包括填補狀態(PS)控制項322 (例如,位元55),及函式碼(FC)欄位326 (例如,位元57至63)。在一個實例中,通用暫存器0之位元56將為零;否則在一個實例中,辨識到規格例外狀況。在此實例中,忽略通用暫存器0之所有其他位元。 下文進一步描述通用暫存器0之欄位中之每一者: 填補狀態控制項(PS) 322:對於KLMD-SHAKE函式,通用暫存器0之位元55為填補狀態;在此實例中,對於其他函式,忽略該暫存器之位元55。 函式碼(FC) 326:通用暫存器0之位元位置57至63含有函式碼。用於計算最後訊息摘要操作之所指派函式碼的實例包括: 碼 函式 參數區塊大小(位元組)) 資料區塊大小1
(位元組) 0 KLMD-Query 16 -- 1 KLMD-SHA-1 28 64 2 KLMD-SHA-256 40 64 3 KLMD-SHA-512 80 128 32 KLMD-SHA3-224 200 144 33 KLMD-SHA3-256 200 136 34 KLMD-SHA3-384 200 104 35 KLMD-SHA3-512 200 72 36 KLMD-SHAKE-128 200 168 37 KLMD-SHAKE-256 200 136 解釋: -- 不適用1
對於所有資料區塊,除最後區塊以外。最後資料區塊之大小的範圍為0至比所展示值小一。 在此實例中,未指派所有其他函式碼。 如圖3C中所展示,通用暫存器1 (330)含有儲存器中之參數區塊的最左位元組之邏輯位址332,其進一步描述於下文中。在24位元定址模式中,通用暫存器1之位元位置40至63的內容構成位址,且忽略位元位置0至39之內容。在31位元定址模式中,通用暫存器1之位元位置33至63的內容構成位址,且忽略位元位置0至32之內容。在64位元定址模式中,通用暫存器1之位元位置0至63的內容構成位址。 參看圖3D,第一運算元之最左位元組的部位342係藉由R1
通用暫存器304之內容指定。另外,參看圖3E,於通用暫存器R1
+1 (350)中指定第一運算元部位中之位元組之數目(亦即,長度) 352。在此實施例中,第一運算元僅可適用於KLMD-SHAKE函式,且對於其他函式,可忽略第一運算元。 參看圖3F,第二運算元之最左位元組的部位362係藉由R2
通用暫存器306之內容指定。另外,參看圖3G,於通用暫存器R2
+1 (370)中指定第二運算元部位中之位元組之數目(亦即,長度) 372。 在KLMD指令之一個實施例的操作中,查詢功能提供指示其他函式之可用性的手段。對於查詢功能,忽略通用暫存器R1
、R1
+1、R2
及R2
+1之內容。 對於其他函式,第二運算元(例如,在使用R2
中指定之位址所指定之部位處的值)係如藉由函式碼使用下文所描述之參數區塊中之初始鏈結值指定而處理,且結果替換鏈結值。對於SHA-1、SHA-256及SHA-512函式,操作亦使用參數區塊中之訊息位元長度。操作繼續進行直至到達第二運算元部位之結尾或CPU判定數目個位元組已被處理(無論哪個首先發生)。 對於KLMD-SHAKE函式,當到達第二運算元之結尾時,將擴展輸出函式(XOF)摘要儲存於第一運算元部位(例如,於R1
中指定)處。操作接著繼續進行直至到達第一運算元部位之結尾或CPU判定數目個位元組已儲存(無論哪個首先發生)。 結果以條件碼指示。 作為操作之部分,通用暫存器R2
中之位址遞增自第二運算元處理之位元組之數目,且通用暫存器R2
+1中之長度遞減相同數目。位址及長度之形成及更新取決於定址模式。 舉例而言,在24位元定址模式中,通用暫存器R2
之位元位置40至63的內容構成第二運算元之位址,且忽略位元位置0至39之內容;經更新位址之位元40至63替換通用暫存器R2
中之對應位元,忽略經更新位址之位元位置40的進位輸出,且通用暫存器R2
之位元位置32至39的內容設定為零。在31位元定址模式中,通用暫存器R2
之位元位置33至63的內容構成第二運算元之位址,且忽略位元位置0至32之內容;經更新位址之位元33至63替換通用暫存器R2
中之對應位元,忽略經更新位址之位元位置33的進位輸出,且通用暫存器R2
之位元位置32的內容設定為零。在64位元定址模式中,通用暫存器R2
之位元位置0至63的內容構成第二運算元之位址;經更新位址之位元0至63替換通用暫存器R2
之內容,且忽略位元位置0之進位輸出。 在24位元定址模式及31位元定址模式兩者中,通用暫存器R2
+1之位元位置32至63的內容形成32位元無正負號二進位整數,其指定第二運算元中之位元組之數目;且經更新值替換通用暫存器R2
+1之位元位置32至63的內容。在64位元定址模式中,通用暫存器R2
+1之位元位置0至63的內容形成64位元無正負號二進位整數,其指定第二運算元中之位元組之數目;且經更新值替換通用暫存器R2
+1之內容。 在24位元或31位元定址模式中,通用暫存器R2
及R2
+1之位元位置0至31的內容保持不變。 對於兩個KLMD-SHAKE函式(例如,函式碼36、37),以下情形適用: • 通用暫存器0之位元55為填補狀態(PS)控制項。值(例如)零指示尚未執行第二運算元之填補。值(例如)一指示已執行第二運算元之填補。 當填補狀態為一且通用暫存器R2
+1中之第二運算元長度在指令開始時為非零時,辨識到規格例外狀況且抑制操作。 當剩餘第二運算元長度為零時,CPU檢驗填補狀態以判定是否將執行第二運算元之填補。當已執行第二運算元之填補時,由CPU將填補狀態設定為一。 • R1
欄位指明通用暫存器之偶數奇數對,且將指明除通用暫存器0外及除暫存器R2
外之偶數編號暫存器;否則在一個實例中,辨識到規格例外狀況。 • 第一運算元之最左位元組之部位係藉由通用暫存器R1
之內容指定。於通用暫存器R1
+1中指定第一運算元部位中之位元組之數目。 • 作為操作之部分,通用暫存器R1
中之位址遞增儲存至第一運算元中之位元組之數目,且通用暫存器R1
+1中之長度遞減相同數目。位址及長度之形成及更新取決於定址模式。 • 通用暫存器R1
之定址模式特性及通用暫存器R1
+1之長度特性分別與通用暫存器R2
及R2
+1之彼等特性相同,如上文所描述。 在此實施例中,對於除兩個KLMD-SHAKE函式外之函式,忽略通用暫存器0之位元55及指令之R1
欄位。在此狀況下,第一運算元並不存在,且通用暫存器R1
及R1
+1未經修改。 在存取暫存器模式中,存取暫存器1及R2
分別指定含有參數區塊及第二運算元之位址空間。對於KLMD-SHAKE函式,存取暫存器R1
指定含有第一運算元之位址空間。 仿似處理在第二運算元之左端處開始且逐區塊向右繼續而獲得結果。對於除KLMD-SHAKE函式外之所有函式,當第二運算元中之所有源位元組已被處理(被稱作正常完成)時或當小於第二運算元之長度的CPU判定數目個區塊已被處理(被稱作部分完成)時,操作結束。區塊之CPU判定數目取決於模型,且在指令每次執行時可為不同數目。區塊之CPU判定數目通常為非零。在某些異常情形中,此數目可為零,且條件碼(例如,3)可在不前進情況下被設定。然而,CPU防止此不前進狀況之無限復發。 當鏈結值欄位(例如,在參數區塊中)與第一或第二運算元之任何部分重疊時,鏈結值欄位中之結果係不可預測的。 對於KLMD-SHA-1、KLMD-SHA-256及KLMD-SHA-512函式,在如通用暫存器R2
+1中所指定之第二運算元中的所有位元組已被處理之後,執行填補操作,對經填補區塊執行最終雜湊運算,且接著發生正常完成。對於KLMD-SHA3及KLMD-SHAKE函式,在第二運算元之所有完整區塊已被處理之後,對剩餘部分區塊或對空區塊執行填補操作,且對經填補區塊執行最終雜湊運算。對於KLMD-SHA3函式,接著發生正常完成。 對於KLMD-SHAKE函式,根據本發明之態樣,當已執行填補時,填補狀態在通用暫存器0中設定為一,且擴展輸出函式(XOF)訊息摘要儲存至第一運算元部位中。當第一運算元之全部已儲存(被稱作正常完成)時或當小於第一運算元之長度的CPU判定數目個區塊已儲存(被稱作部分完成)時,XOF訊息摘要產生結束。區塊之CPU判定數目取決於模型,且在指令每次執行時可為不同數目。區塊之CPU判定數目通常為非零。在某些異常情形中,此數目可為零,且條件碼(例如,3)可在不前進情況下被設定。然而,CPU防止此不前進狀況之無限復發。 當操作歸因於正常完成而結束時,條件碼(例如,0)經設定,通用暫存器R2
中之第二運算元位址經更新,且通用暫存器R2
+1中之第二運算元長度為零;對於KLMD-SHAKE函式,通用暫存器R1
中之第一運算元位址經更新,且通用暫存器R1
+1中之第二運算元長度為零。 當操作歸因於部分完成而結束時,條件碼(例如,3)經設定。對於除KLMD-SHAKE函式外之函式,通用暫存器R2
+1中之所得值為非零。對於KLMD-SHAKE函式,若第二運算元尚未完全被處理,則通用暫存器R2
+1中之所得值為非零,且若第一運算元尚未完全被處理,則通用暫存器R1
中之所得值為非零。 當第二運算元長度最初為零時,並不存取第二運算元,通用暫存器R2
及R2
+1中之第二運算元位址及第二運算元長度分別不變,且條件碼(例如,0)經設定。然而,執行空白區塊(L=0)狀況填補操作,且將結果儲存至參數區塊中。 對於KLMD-SHAKE函式,當第一運算元長度最初為零時,並不存取第一運算元,且通用暫存器R1
及R1
+1中之第一運算元位址及第一運算元長度分別不變。然而,甚至在第一運算元長度最初為零時,亦更新參數區塊。 對於參數區塊之部分及所儲存之第一運算元部位(在適用時),可辨識到PER儲存更改事件。對於第一運算元部位(在適用時)、對於第二運算元部位及對於參數區塊,可辨識到PER零位址偵測事件。當針對大於一個部位偵測到PER事件時,在PER存取識別(PAID)及PER ASCE ID (AI)中識別到哪一部位係不可預測的。 如由此CPU、其他CPU及通道程式觀察到,對於參數區塊及儲存運算元之參考可為多重存取參考,對於此等儲存部位之存取未必係區塊並行的,且此等存取或參考之序列係不確定的。 對於第一運算元(在適用時)及第二運算元之比單一指令執行中所處理部分大的部分,可報告存取例外狀況;然而,對於超出第一或第二運算元之長度的部位及對於與正經處理之當前部位相差大於4K位元組的部位,皆未辨識到存取例外狀況。 如上文所指示,計算最後訊息摘要指令經組態以執行複數個函式。下文描述此等函式中之兩者:KLMD-SHAKE-128及KLMD-SHAKE-256函式。在描述此等函式時,符號xp<n>指由SHAKE函式使用之n個填補位元組。填補之最左位元組的位元位置3至7含有二進位1,且最右填補位元組之位元位置0含有二進位1。(此用於位元組由大到小順序(big endian)格式,且對於其他格式(作為實例,比如位元組由小到大順序(little endian))可不同。)在一個實例中,所有其他位元為零。舉例而言,當填補狀態(PS,通用暫存器0之位元55)為零且剩餘第二運算元長度小於資料區塊大小時,執行用於SHAKE函式之填補。KLMD-SHAKE-128 ( KLMD 函式碼 36 )
在此函式之情況下,在一個實例中,參看圖3H,使用包括鏈結值382之參數區塊380。最初,鏈結值382包括初始鏈結值(ICV)。初始鏈結值表示(例如)由實施SHA-3及SHAKE演算法之Keccak[c]函式使用的1600位元狀態陣列。 在此函式之操作中,當通用暫存器R2
+1中之第二運算元的長度大於或等於168個位元組時,使用Keccak[c]演算法與參數區塊380中之200位元組初始鏈結值針對運算元2中之168位元組訊息區塊產生200位元組中間訊息摘要。亦被稱作輸出鏈結值(OCV)之所產生的中間訊息摘要替換參數區塊之鏈結值382。 在一個實例中,對於SHA3及SHAKE函式,Keccak[c]演算法使用參數區塊中之1,600位元狀態陣列。該狀態陣列包含各自具有64個位元之25個通道。狀態陣列之位元係自0編號至1,599,且每一通道之位元係自0編號至63。 在參數區塊中,狀態陣列之位元組自左向右以升序呈現;但在每一位元組內,位元自左向右以降序呈現。亦即,參數區塊之位元組0含有(自左向右)狀態陣列之位元7、6、5、4、3、2、1及0;位元組1含有狀態陣列之位元15、14、13、12、11、10、9及8;等等。當表示於記憶體中時,狀態陣列之任何個別通道的位元位置對應於2之冪。(在其他實施例中,排序可不同。) 上文所描述之參數區塊的位元排序亦適用於第二運算元之訊息位元組。對於KLMD-SHAKE函式,儲存於第一運算元中之結果與參數區塊之結果類似之處在於每一位元組內之位元的自左向右排序為7、6、5、4、3、2、1及0。 另外,在操作中,當剩餘第二運算元長度小於完整區塊(例如,168個位元組)時,處理如下文所描述。 當填補狀態(通用暫存器0之位元55)為零(指示尚未執行填補)時,發生填補,如下文且參看圖4所描述: • 如針對符號「xp<n>」所描述,在右側(402)填補第二運算元400之任何剩餘位元組以形成168位元組訊息區塊404。甚至在第二運算元中不存在剩餘位元組且不更改第二運算元之內容時,亦可發生填補。 • 填補狀態控制項設定為一,指示已執行填補。 • 通用暫存器R2
中之第二運算元位址遞增經處理訊息位元組之數目,且通用暫存器R2
+1中之第二運算元長度設定為零。 • 168位元組經填補訊息404與狀態陣列408之內容(來自參數區塊中之ICV或來自由先前區塊之處理產生的OCV)進行互斥或(406)以形成用於擴展輸出函式(XOF)處理中之輸出鏈結值410。 取決於在填補完成時經處理之第二運算元區塊之數目,(a)輸出鏈結值儲存至參數區塊中,且指令藉由設定條件碼(例如,3) (部分完成)而完成,或(b)操作以擴展輸出函式(XOF)處理繼續,如下文所描述。 當填補狀態為一(指示已藉由當前或先前指令執行對訊息執行填補)時,執行擴展輸出函式(XOF)處理,如下文參看圖5所描述。 1. 若通用暫存器R1
+1中之第一運算元長度為零,則輸出鏈結值儲存至參數區塊500中,且指令以條件碼(例如,0)完成。若第一運算元長度在指令開始時為零,則ICV是否自參數區塊提取且作為OCV未修改地儲存回係模型相依的。 2. 使用先前輸出鏈結值(OCV)作為輸入且替換輸出鏈結值來叫用Keccak[c]函式502。 3. 通用暫存器R1
含有第一運算元之當前位址,且通用暫存器R1
+1含有第一運算元之剩餘長度。待儲存之位元組之數目n為剩餘第一運算元長度或168 (無論哪個較小)。 輸出鏈結值之前n個位元組儲存於第一運算元部位處。 通用暫存器R1
中之第一運算元位址遞增n,且通用暫存器R1
+1中之第一運算元長度遞減n。 重複此處理程序之步驟1至3,直至第一運算元長度變為零(在該狀況下,指令以條件碼(例如,0)完成)或直至CPU判定數目個位元組已儲存(在該狀況下,指令以條件碼(例如,3)完成)。輸出鏈結值510儲存至參數區塊之位元組0至199中,而不管條件碼0抑或3經設定。KLMD-SHAKE-256 ( KLMD
函式碼37 )
對於此函式,所使用之參數區塊亦包括鏈結值382,如圖3H中所展示。 在此函式之操作中,當通用暫存器R2
+1中之第二運算元的長度大於或等於136個位元組時,使用Keccak[c]演算法與參數區塊中之200位元組初始鏈結值針對運算元2中之136位元組訊息區塊產生200位元組中間訊息摘要。亦被稱作輸出鏈結值(OCV)之所產生的中間訊息摘要替換參數區塊之鏈結值。參數區塊及第二運算元中之位元之編號與狀態陣列中之位元之編號的比較係如上文所描述。此操作繼續進行直至第二運算元之長度小於136個位元組,此時操作如下文所描述繼續。 當填補狀態(通用暫存器0之位元55)為零(指示尚未執行填補)時,填補發生,如下文且參看圖6所描述: • 如針對符號「xp<n>」所描述,在右側(602)填補第二運算元600之任何剩餘位元組以形成136位元組訊息區塊604。甚至在第二運算元中不存在剩餘位元組且不更改第二運算元之內容時,亦可發生填補。 • 填補狀態控制項設定為一,指示已執行填補。 • 通用暫存器R2
中之第二運算元位址遞增經處理訊息位元組之數目,且通用暫存器R2
+1中之第二運算元長度設定為零。 • 136位元組經填補訊息604與狀態陣列608之內容(來自參數區塊中之ICV或來自由先前區塊之處理產生的OCV)進行互斥或(606)以形成用於擴展輸出函式(XOF)處理中之輸出鏈結值610。 取決於在填補完成時經處理之第二運算元區塊之數目,(a)輸出鏈結值儲存至參數區塊中,且指令藉由設定條件碼(例如,3) (部分完成)而完成,或(b)操作以擴展輸出函式(XOF)處理繼續,如下文所描述。 當填補狀態為一(指示已藉由當前或先前指令執行對訊息執行填補)時,執行擴展輸出函式(XOF)處理,如下文參看圖7所描述。 1. 若通用暫存器R1
+1中之第一運算元長度為零,則輸出鏈結值儲存至參數區塊700中,且指令以條件碼0完成。若第一運算元長度在指令開始時為零,則ICV是否自參數區塊提取且作為OCV未修改地儲存回係模型相依的。 2. 使用先前輸出鏈結值(OCV)作為輸入且替換輸出鏈結值來叫用Keccak[c]函式702。 3. 通用暫存器R1
含有第一運算元之當前位址,且通用暫存器R1
+1含有第一運算元之剩餘長度。待儲存之位元組之數目n為剩餘第一運算元長度或136 (不管哪個較小)。 輸出鏈結值之前n個位元組儲存於第一運算元部位704處。 通用暫存器R1
中之第一運算元位址遞增n,且通用暫存器R1
+1中之第一運算元長度遞減n。 重複此處理程序之步驟1至3,直至第一運算元長度變為零(在該狀況下,指令以條件碼(例如,0)完成)或直至CPU判定數目個位元組已儲存(在該狀況下,指令以條件碼(例如,3)完成)。輸出鏈結值710儲存至參數區塊之位元組0至199中,而不管條件碼0抑或3經設定。KLMD 指令之特殊條件:
在一個實例中,若以下各者中之任一者發生,則辨識到規格例外狀況且不採取其他動作: • 通用暫存器0之位元56並非零。 • 通用暫存器0之位元57至63指定未指派或未安裝之函式碼。 • R2
欄位指明奇數編號暫存器或通用暫存器0。 • 對於KLMD-SHAKE函式,以下情況中之任一者為真: - R1
欄位指明奇數編號暫存器、通用暫存器0或暫存器R2
。 - 第二運算元長度為非零,且填補狀態為一。所得條件碼 :
0 正常完成 1 -- 2 -- 3 部分完成 在一個實施例中: • 對於KLMD-SHAKE函式,當在XOF處理期間設定條件碼3時,通用暫存器R1
及R1
+1中之第一運算元位址及長度分別經更新以使得程式可沿分支返回至指令以繼續操作。 對於異常情形,CPU防止此不前進狀況之無限復發。因此,無論何時設定條件碼3,程式皆可安全地沿分支返回至指令,而不曝露於無限迴路。 • 計算最後訊息摘要指令並不需要第二為資料區塊大小之倍數。其首先處理完整區塊,且可在處理所有區塊之前設定條件碼(例如,3)。在處理所有完整區塊之後,其接著執行填補操作,包括第二運算元之剩餘部分。此可使用所指明區塊摘要演算法之一個或兩個反覆。 • 計算最後訊息摘要指令對長度為八個位元之倍數的訊息提供SHA填補。若SHA函式將應用於並非八個位元之倍數的位元串,則程式將執行SHA填補且使用計算中間訊息摘要指令。 • 對於KLMD-SHAKE函式,在一個實例中,以下情況適用: a. 在對訊息第一次執行KLMD時,填補狀態(通用暫存器0之位元55)將設定為零,且對於同一訊息之任何後續KLMD執行,填補狀態不由程式變更直至正常完成發生。 b. 若在第一運算元長度為零時執行第二運算元之最終(短或空)區塊之填補,則經填補區塊與狀態陣列之內容進行互斥或,結果作為輸出鏈結值儲存於參數區塊中,且指令以條件碼0完成。在此狀況下,不叫用Keccak[c]函式。 • 在一個態樣中,根據最終NIST SHA-3規格,KLMD SHA-3及SHAKE函式執行填補(例如,使用指定位元序列)。SHA-3規格之較早版本使用不同的填補位元序列。若軟體執行最後訊息區塊之填補,則根據較早SHA-3規格設計之軟體仍可受益於KIMD SHA-3及SHAKE函式。 如本文中所描述,計算最後訊息摘要指令之一或多個函式執行填補操作。然而,在一個實施例中,此填補操作將執行一次,且因此執行某些處理。參看圖8描述關於此處理之額外細節。此處理藉由至少一個處理器執行。 參看圖8,最初,基於輸入訊息之最終區塊的處理,作出關於第二運算元之長度是否等於指定值(例如,0)之判定(詢問800)。若該長度不等於零,則對最終(短)區塊執行填補,使用Keccak演算法對經填補區塊進行雜湊,暫存器R2
中之第二運算元位址遞增經處理位元組之數目,且通用暫存器R2
+1中之第二運算元長度設定為零(步驟806)。填補狀態控制項設定為一(步驟808),且接著擴展輸出函式處理開始(步驟802)。上文描述此處理之實例。 返回至詢問800,若第二運算元之長度等於指定值,則執行對填補狀態控制項之檢查(詢問804)。若填補狀態控制項設定為一以指示先前已對此訊息執行填補,則擴展輸出函式處理開始或繼續(步驟802)。然而,返回至詢問804,若填補狀態控制項設定為零以指示尚未對此訊息執行填補,則如本文中所描述執行填補,使用Keccak演算法對經填補區塊進行雜湊,暫存器R2
中之第二運算元位址遞增經處理位元組之數目,且通用暫存器R2
+1中之第二運算元長度設定為零(步驟806)。填補狀態控制項設定為一(步驟808),且擴展輸出函式處理開始(步驟802)。此完成處理。 如本文中所描述,提供在指令執行開始時區分多個條件之能力,多個條件包括是否已指定空的第二運算元訊息或是否已執行填補。藉由提供此控制項,促進運算環境內之處理,包括資料鑑認以及其他處理。因此,本發明之態樣不可避免地與計算技術相關。 參看圖9A至圖9B描述關於促進運算環境內之處理的其他細節,包括執行指令及使用填補控制項。 參看圖9A,獲得待用以產生訊息之訊息摘要的指令(步驟900),且藉由至少一個處理器執行該指令(步驟902)。舉例而言,該執行包括:檢查指令之填補狀態控制項以判定是否已對訊息執行填補(步驟904);基於指示已執行填補之檢查而執行第一動作(步驟906);及基於指示尚未執行填補之檢查而執行不同於第一動作之第二動作(步驟908)。 作為實例,該第一動作包括執行擴展輸出函式處理以執行與訊息摘要相關聯之進一步處理(步驟910)。該執行擴展輸出函式處理包括(例如)對訊息摘要之至少一部分進行重新雜湊以產生額外輸出(步驟912)。 另外,作為實例,該第二動作包括執行訊息之至少一部分的填補以形成具有選擇大小之訊息區塊(步驟914)。該執行填補包括(例如)將位元零填補至訊息之至少一部分的選擇部位(步驟916)。另外,該第二動作包括設定填補狀態控制項以指示已對訊息執行填補(步驟918)。 參看圖9B,作為實例,填補狀態控制項位於由指令使用之暫存器中(920),或填補狀態控制項位於指令可存取之記憶體中(922)。 在一個實例中,該指令為計算最後訊息摘要指令,其用以處理訊息之一或多個最後區塊以產生待用於訊息之鑑認中的訊息摘要(924)。 訊息(例如)儲存於記憶體中,且指令提供記憶體中之位址以定位訊息(926)。 在一個實施例中,該執行進一步包括:基於指示已執行填補之填補狀態控制項且基於指令開始執行而判定訊息之長度是否為非零;及基於判定指示長度為非零、填補狀態控制項指示已執行填補及指令開始執行而指示例外狀況(步驟928)。 儘管本文中提供各種實施例及實例,但許多變化係可能的。舉例而言,包括於暫存器中之值及/或由指令使用之欄位在其他實施例中可在諸如記憶體部位等之其他部位中。另外,可使用額外或較少欄位或暫存器或其他大小。許多變化係可能的。舉例而言,可使用隱含的暫存器而非明確指定的暫存器或欄位。另外,本發明之一或多個態樣可與其他雜湊演算法及/或其他技術或處理程序一起使用。其他變化亦係可能的。 本發明可為任何可能的技術細節整合層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。 電腦可讀儲存媒體可為有形裝置,其可持留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟碟、經機械編碼裝置(諸如,上面記錄有指令之打孔卡或凹槽中之凸起結構)及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由電線傳輸之電信號。 本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理裝置內之電腦可讀儲存媒體中。 用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路系統之組態資料,或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者之電腦上執行、部分地在使用者之電腦上執行、作為獨立套裝軟體執行、部分地在使用者之電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後一種情形中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括(例如)可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路系統可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。 本文中參考根據本發明之實施例的方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。 可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理設備之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作的手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,以使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之態樣的指令。 電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在電腦、其他可程式化設備或其他裝置上執行以產生電腦實施之處理程序,以使得在電腦、其他可程式化設備或其他裝置上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。 諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提到之功能可能不以諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,連續展示之兩個區塊實際上可實質上同時執行,或該等區塊可有時以相反次序執行。亦將注意,可藉由執行指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統來實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。 除上述情形之外,亦可藉由供應對消費者環境之管理之服務提供者來提供、供應、部署、管理、服務(等)一或多個態樣。舉例而言,服務提供者可建立、維持、支援(等)電腦程式碼及/或執行用於一或多個消費者之一或多個態樣之電腦基礎架構。作為回報,服務提供者可根據訂用及/或收費協議接收來自消費者之付款(作為實例)。另外或替代地,服務提供者可接收來自向一或多個第三方出售廣告內容之付款。 在一個態樣中,可部署一應用程式用於執行一或多個實施例。作為一個實例,應用程式之部署包含提供可操作以執行一或多個實施例之電腦基礎架構。 作為另一態樣,可部署運算基礎架構,包含將電腦可讀程式碼整合至運算系統中,其中程式碼結合運算系統能夠執行一或多個實施例。 作為又一態樣,可提供一種用於整合運算基礎架構之處理程序,包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含電腦可讀媒體,其中電腦媒體包含一或多個實施例。程式碼結合電腦系統能夠執行一或多個實施例。 儘管上文描述各種實施例,但此等實施例僅為實例。舉例而言,其他架構之運算環境可用以併有及使用一或多個實施例。另外,可使用不同指令、指令格式、指令欄位及/或指令值。許多變化係可能的。 另外,其他類型之運算環境可為有益的且可加以使用。作為一實例,可使用適合於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括(例如)在實際執行程式碼期間使用之本端記憶體、大容量儲存器,及提供對至少某一程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。 輸入/輸出或I/O裝置(包括但不限於鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟(thumb drive)及其他記憶體媒體等)可直接或經由介入之I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變成經由介入之私用網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網卡僅為幾個可用類型之網路配接器。 本文中所使用之術語僅出於描述特定實施例的目的且並不意欲為限制性的。如本文中所使用,除非上下文另有清晰地指示,否則單數形式「一」及「該」意欲亦包括複數形式。應進一步理解,術語「包含(comprises及/或comprising)」在用於本說明書中時指定所陳述特徵、整體、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或新增。 以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。對於一般熟習此項技術者而言,許多修改及變化將為顯而易見的。選取及描述實施例以便最佳地解釋各種態樣及實際應用,且使得一般熟習此項技術者能夠理解具有如適於所預期之特定用途之各種修改的各種實施例。
12‧‧‧電腦系統/伺服器
14‧‧‧外部裝置
16‧‧‧處理器或處理單元/z/架構處理器
18‧‧‧匯流排
20‧‧‧網路配接器
22‧‧‧輸入/輸出(I/O)介面
24‧‧‧顯示器
28‧‧‧系統記憶體
30‧‧‧隨機存取記憶體(RAM)
32‧‧‧快取記憶體
34‧‧‧儲存系統
40‧‧‧程式/公用程式
42‧‧‧程式模組
100‧‧‧運算環境
120‧‧‧指令提取組件
122‧‧‧指令解碼單元
124‧‧‧指令執行組件
126‧‧‧記憶體存取組件
130‧‧‧寫回組件
136‧‧‧填補操作狀態判定組件
140‧‧‧暫存器
200‧‧‧運算環境
202‧‧‧原生中央處理單元(CPU)
204‧‧‧記憶體
206‧‧‧輸入/輸出裝置及/或介面
208‧‧‧匯流排
210‧‧‧原生暫存器
212‧‧‧仿真器程式碼/仿真器
250‧‧‧客體指令
252‧‧‧指令提取常式
254‧‧‧指令轉譯常式
256‧‧‧原生指令
260‧‧‧仿真控制常式
300‧‧‧計算最後訊息摘要(KLMD)指令
302‧‧‧作業碼欄位
304‧‧‧第一暫存器欄位
306‧‧‧第二暫存器欄位
320‧‧‧通用暫存器0
322‧‧‧填補狀態(PS)控制項
326‧‧‧函式碼(FC)欄位
330‧‧‧通用暫存器1
332‧‧‧邏輯位址
342‧‧‧部位
350‧‧‧通用暫存器R1+1
352‧‧‧位元組之數目(亦即,長度)
362‧‧‧部位
370‧‧‧通用暫存器R2+1
372‧‧‧位元組之數目(亦即,長度)
380‧‧‧參數區塊
382‧‧‧鏈接值
400‧‧‧第二運算元
404‧‧‧168位元組經填補訊息區塊
408‧‧‧狀態陣列
410‧‧‧輸出鏈結值
500‧‧‧參數區塊
502‧‧‧Keccak[c]函式
510‧‧‧輸出鏈結值
600‧‧‧第二運算元
604‧‧‧136位元組經填補訊息區塊
608‧‧‧狀態陣列
610‧‧‧輸出鏈結值
700‧‧‧參數區塊
702‧‧‧Keccak[c]函式
704‧‧‧第一運算元部位
710‧‧‧輸出鏈結值
802‧‧‧步驟
806‧‧‧步驟
808‧‧‧步驟
900‧‧‧步驟
902‧‧‧步驟
904‧‧‧步驟
906‧‧‧步驟
908‧‧‧步驟
910‧‧‧步驟
912‧‧‧步驟
914‧‧‧步驟
916‧‧‧步驟
918‧‧‧步驟
928‧‧‧步驟
14‧‧‧外部裝置
16‧‧‧處理器或處理單元/z/架構處理器
18‧‧‧匯流排
20‧‧‧網路配接器
22‧‧‧輸入/輸出(I/O)介面
24‧‧‧顯示器
28‧‧‧系統記憶體
30‧‧‧隨機存取記憶體(RAM)
32‧‧‧快取記憶體
34‧‧‧儲存系統
40‧‧‧程式/公用程式
42‧‧‧程式模組
100‧‧‧運算環境
120‧‧‧指令提取組件
122‧‧‧指令解碼單元
124‧‧‧指令執行組件
126‧‧‧記憶體存取組件
130‧‧‧寫回組件
136‧‧‧填補操作狀態判定組件
140‧‧‧暫存器
200‧‧‧運算環境
202‧‧‧原生中央處理單元(CPU)
204‧‧‧記憶體
206‧‧‧輸入/輸出裝置及/或介面
208‧‧‧匯流排
210‧‧‧原生暫存器
212‧‧‧仿真器程式碼/仿真器
250‧‧‧客體指令
252‧‧‧指令提取常式
254‧‧‧指令轉譯常式
256‧‧‧原生指令
260‧‧‧仿真控制常式
300‧‧‧計算最後訊息摘要(KLMD)指令
302‧‧‧作業碼欄位
304‧‧‧第一暫存器欄位
306‧‧‧第二暫存器欄位
320‧‧‧通用暫存器0
322‧‧‧填補狀態(PS)控制項
326‧‧‧函式碼(FC)欄位
330‧‧‧通用暫存器1
332‧‧‧邏輯位址
342‧‧‧部位
350‧‧‧通用暫存器R1+1
352‧‧‧位元組之數目(亦即,長度)
362‧‧‧部位
370‧‧‧通用暫存器R2+1
372‧‧‧位元組之數目(亦即,長度)
380‧‧‧參數區塊
382‧‧‧鏈接值
400‧‧‧第二運算元
404‧‧‧168位元組經填補訊息區塊
408‧‧‧狀態陣列
410‧‧‧輸出鏈結值
500‧‧‧參數區塊
502‧‧‧Keccak[c]函式
510‧‧‧輸出鏈結值
600‧‧‧第二運算元
604‧‧‧136位元組經填補訊息區塊
608‧‧‧狀態陣列
610‧‧‧輸出鏈結值
700‧‧‧參數區塊
702‧‧‧Keccak[c]函式
704‧‧‧第一運算元部位
710‧‧‧輸出鏈結值
802‧‧‧步驟
806‧‧‧步驟
808‧‧‧步驟
900‧‧‧步驟
902‧‧‧步驟
904‧‧‧步驟
906‧‧‧步驟
908‧‧‧步驟
910‧‧‧步驟
912‧‧‧步驟
914‧‧‧步驟
916‧‧‧步驟
918‧‧‧步驟
928‧‧‧步驟
在本說明書之結尾處之申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容以及物件、特徵及優點自結合隨附圖式進行之以下詳細描述顯而易見,其中: 圖1A描繪併有及使用本發明之一或多個態樣的運算環境之一個實例; 圖1B描繪圖1A之處理器的其他細節; 圖2A描繪併有及使用本發明之一或多個態樣的運算環境之另一實例; 圖2B描繪圖2A之記憶體之其他細節; 圖3A描繪根據本發明之態樣的計算最後訊息摘要指令之格式的一個實施例; 圖3B描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令之一或多個態樣使用的通用暫存器(通用暫存器0 (GR0))之內容的一個實例; 圖3C描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令使用的另一通用暫存器(通用暫存器1 (GR1))之內容的一個實例; 圖3D描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令用於一或多個態樣中的暫存器R1
之內容的一個實例; 圖3E描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令用於一或多個態樣中的暫存器R1
+1之內容的一個實例; 圖3F描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令用於一或多個態樣中的暫存器R2
之內容的一個實例; 圖3G描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令用於一或多個態樣中的暫存器R2
+1之內容的一個實例; 圖3H描繪根據本發明之態樣的待由圖3A之計算最後訊息摘要指令用於一或多個態樣中的參數區塊之一個實例; 圖4描繪根據本發明之態樣的由計算最後訊息摘要指令使用之填補操作的一個實例; 圖5描繪根據本發明之態樣的圖3A之計算最後訊息摘要指令的擴展輸出函式處理之一個實例; 圖6描繪根據本發明之態樣的藉由圖3A之計算最後訊息摘要指令進行之填補的另一實例; 圖7描繪根據本發明之態樣的圖3A之計算最後訊息摘要指令的擴展輸出函式處理之另一實施例; 圖8描繪根據本發明之態樣的使用填補狀態控制項之一個實例;及 圖9A至圖9B描繪根據本發明之態樣的促進運算環境中之處理的一個實例,其包括執行使用填補操作之指令。
Claims (20)
- 一種用於促進一運算環境中之處理的電腦程式產品,該電腦程式產品包含: 一電腦可讀儲存媒體,其可由一處理電路讀取且儲存供該處理電路執行以用於執行一方法之指令,該方法包含: 獲得一指令以供執行,該指令待用以產生一訊息之一訊息摘要;及 執行該指令,該執行包含: 檢查該指令之一填補狀態控制項以判定是否已對該訊息執行填補; 基於指示已執行填補之該檢查而執行一第一動作;及 基於指示尚未執行填補之該檢查而執行不同於該第一動作之一第二動作。
- 如請求項1之電腦程式產品,其中該第一動作包含執行擴展輸出函式處理以執行與該訊息摘要相關聯之進一步處理。
- 如請求項2之電腦程式產品,其中該執行擴展輸出函式處理包括對該訊息摘要之至少一部分進行重新雜湊以產生額外輸出。
- 如請求項1之電腦程式產品,其中該第二動作包含執行該訊息之至少一部分的填補以形成具有一選擇大小之一訊息區塊。
- 如請求項4之電腦程式產品,其中該執行填補包含將填補位元新增至該訊息之該至少一部分的一選擇部位。
- 如請求項4之電腦程式產品,其中該第二動作進一步包含設定該填補狀態控制項以指示已對該訊息執行填補。
- 如請求項1之電腦程式產品,其中該填補狀態控制項位於由該指令使用之一暫存器中。
- 如請求項1之電腦程式產品,其中該填補狀態控制項位於該指令可存取之記憶體中。
- 如請求項1之電腦程式產品,其中該指令包含一計算最後訊息摘要指令,其用以處理該訊息之一或多個最後區塊以產生待用於該訊息之鑑認中的該訊息摘要。
- 如請求項1之電腦程式產品,其中該訊息儲存於記憶體中,且其中該指令提供記憶體中之一位址以定位該訊息。
- 如請求項1之電腦程式產品,其中該執行進一步包含: 基於該填補狀態控制項指示已執行填補且基於該指令開始執行而判定該訊息之一長度是否為非零;及 基於該判定指示該長度為非零、該填補狀態控制項指示已執行填補及該指令開始執行而指示一例外狀況。
- 一種用於促進一運算環境中之處理的電腦系統,該電腦系統包含: 一記憶體;及 一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含: 獲得一指令以供執行,該指令待用以產生一訊息之一訊息摘要;及 執行該指令,該執行包含: 檢查該指令之一填補狀態控制項以判定是否已對該訊息執行填補; 基於指示已執行填補之該檢查而執行一第一動作;及 基於指示尚未執行填補之該檢查而執行不同於該第一動作之一第二動作。
- 如請求項12之電腦系統,其中該第一動作包含執行擴展輸出函式處理以執行與該訊息摘要相關聯之進一步處理。
- 如請求項12之電腦系統,其中該第二動作包含執行該訊息之至少一部分的填補以形成具有一選擇大小之一訊息區塊。
- 如請求項12之電腦系統,其中該執行進一步包含: 基於該填補狀態控制項指示已執行填補且基於該指令開始執行而判定該訊息之一長度是否為非零;及 基於該判定指示該長度為非零、該填補狀態控制項指示已執行填補及該指令開始執行而指示一例外狀況。
- 一種促進一運算環境中之處理的電腦實施方法,該電腦實施方法包含: 藉由至少一個處理器獲得一指令以供執行,該指令待用以產生一訊息之一訊息摘要;及 執行該指令,該執行包含: 檢查該指令之一填補狀態控制項以判定是否已對該訊息執行填補; 基於指示已執行填補之該檢查而執行一第一動作;及 基於指示尚未執行填補之該檢查而執行不同於該第一動作之一第二動作。
- 如請求項16之電腦實施方法,其中該第一動作包含執行擴展輸出函式處理以執行與該訊息摘要相關聯之進一步處理。
- 如請求項16之電腦實施方法,其中該第二動作包含執行該訊息之至少一部分的填補以形成具有一選擇大小之一訊息區塊。
- 如請求項16之電腦實施方法,其中該指令包含一計算最後訊息摘要指令,其用以處理該訊息之一或多個最後區塊以產生待用於該訊息之鑑認中的該訊息摘要。
- 如請求項16之電腦實施方法,其中該執行進一步包含: 基於該填補狀態控制項指示已執行填補且基於該指令開始執行而判定該訊息之一長度是否為非零;及 基於該判定指示該長度為非零、該填補狀態控制項指示已執行填補及該指令開始執行而指示一例外狀況。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/281,631 US10348506B2 (en) | 2016-09-30 | 2016-09-30 | Determination of state of padding operation |
US15/281,631 | 2016-09-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201816603A true TW201816603A (zh) | 2018-05-01 |
Family
ID=60117634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106133571A TW201816603A (zh) | 2016-09-30 | 2017-09-29 | 判定填補操作的狀態 |
Country Status (11)
Country | Link |
---|---|
US (1) | US10348506B2 (zh) |
EP (1) | EP3520013B1 (zh) |
JP (1) | JP6986556B2 (zh) |
CN (1) | CN109844750B (zh) |
AU (1) | AU2017333398B2 (zh) |
CA (1) | CA3036118A1 (zh) |
HU (1) | HUE057302T2 (zh) |
IL (1) | IL265552B (zh) |
PL (1) | PL3520013T3 (zh) |
TW (1) | TW201816603A (zh) |
WO (1) | WO2018060236A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2583738B (en) * | 2019-05-07 | 2021-05-05 | Arm Ip Ltd | Content distribution integrity control |
CN113126879B (zh) * | 2019-12-30 | 2022-11-29 | 中国移动通信集团四川有限公司 | 一种数据存储方法、装置和电子设备 |
US11902414B2 (en) * | 2021-12-31 | 2024-02-13 | Huawei Technologies Co., Ltd. | Low-latency pipeline and method for use of a low latency pipeline in homomorphic encryption |
US11784787B2 (en) * | 2022-02-01 | 2023-10-10 | Synamedia Limited | Streaming with low latency encryption ready packaging |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL128609A0 (en) * | 1999-02-18 | 2000-01-31 | Nds Ltd | Identification protocols |
US6829355B2 (en) * | 2001-03-05 | 2004-12-07 | The United States Of America As Represented By The National Security Agency | Device for and method of one-way cryptographic hashing |
US20030002666A1 (en) | 2001-06-13 | 2003-01-02 | Takahashi Richard J. | Method and apparatus for creating a message digest using a parallel, one-way hash algorithm |
US7360076B2 (en) * | 2001-06-13 | 2008-04-15 | Itt Manufacturing Enterprises, Inc. | Security association data cache and structure |
US7213148B2 (en) * | 2001-06-13 | 2007-05-01 | Corrent Corporation | Apparatus and method for a hash processing system using integrated message digest and secure hash architectures |
US7249255B2 (en) * | 2001-06-13 | 2007-07-24 | Corrent Corporation | Apparatus and method for a hash processing system using multiple hash storage areas |
US7266703B2 (en) * | 2001-06-13 | 2007-09-04 | Itt Manufacturing Enterprises, Inc. | Single-pass cryptographic processor and method |
US7248585B2 (en) | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
US7151829B2 (en) | 2002-04-22 | 2006-12-19 | International Business Machines Corporation | System and method for implementing a hash algorithm |
US7703128B2 (en) | 2003-02-13 | 2010-04-20 | Microsoft Corporation | Digital identity management |
US7159122B2 (en) * | 2003-05-12 | 2007-01-02 | International Business Machines Corporation | Message digest instructions |
US8977859B2 (en) * | 2004-05-04 | 2015-03-10 | Elsevier, Inc. | Systems and methods for data compression and decompression |
JP4337675B2 (ja) | 2004-07-23 | 2009-09-30 | ソニー株式会社 | 暗号処理装置および暗号処理方法 |
US7447908B2 (en) * | 2005-05-09 | 2008-11-04 | Silverbrook Research Pty Ltd | Method of authenticating a print medium offline |
US8514894B2 (en) * | 2005-08-02 | 2013-08-20 | Elliptic Technologies Inc. | Method for inserting/removal padding from packets |
US20070168669A1 (en) * | 2006-01-13 | 2007-07-19 | Lockheed Martin Corporation | Anti-tamper system |
JP2008022373A (ja) * | 2006-07-13 | 2008-01-31 | Canon Inc | 改竄検知情報生成装置、撮像装置、改竄検知情報生成方法、プログラムおよび記憶媒体 |
WO2008105343A1 (ja) * | 2007-02-28 | 2008-09-04 | Nec Corporation | メッセージ認証装置 |
US8363827B2 (en) * | 2007-12-03 | 2013-01-29 | Intel Corporation | Method and apparatus for generic multi-stage nested hash processing |
US8275125B2 (en) * | 2008-04-21 | 2012-09-25 | Tata Consultancy Services Ltd | Method for designing a secure hash function and a system thereof |
JP5156540B2 (ja) * | 2008-08-22 | 2013-03-06 | 株式会社日立製作所 | ハッシュ値生成装置 |
JP5241475B2 (ja) * | 2008-12-24 | 2013-07-17 | 三菱電機株式会社 | ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム |
JP2011254440A (ja) * | 2010-06-04 | 2011-12-15 | Toshiba Corp | 情報処理装置 |
US9851969B2 (en) * | 2010-06-24 | 2017-12-26 | International Business Machines Corporation | Function virtualization facility for function query of a processor |
JP5641133B2 (ja) * | 2011-03-25 | 2014-12-17 | 富士通株式会社 | 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム |
EP2691906B1 (en) * | 2011-03-31 | 2018-12-26 | Irdeto B.V. | Method and system for protecting execution of cryptographic hash functions |
GB2497070B (en) | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
US8873750B2 (en) * | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
-
2016
- 2016-09-30 US US15/281,631 patent/US10348506B2/en active Active
-
2017
- 2017-09-27 EP EP17784566.6A patent/EP3520013B1/en active Active
- 2017-09-27 HU HUE17784566A patent/HUE057302T2/hu unknown
- 2017-09-27 AU AU2017333398A patent/AU2017333398B2/en active Active
- 2017-09-27 CA CA3036118A patent/CA3036118A1/en active Pending
- 2017-09-27 JP JP2019516158A patent/JP6986556B2/ja active Active
- 2017-09-27 CN CN201780060816.5A patent/CN109844750B/zh active Active
- 2017-09-27 WO PCT/EP2017/074478 patent/WO2018060236A1/en unknown
- 2017-09-27 PL PL17784566T patent/PL3520013T3/pl unknown
- 2017-09-29 TW TW106133571A patent/TW201816603A/zh unknown
-
2019
- 2019-03-22 IL IL265552A patent/IL265552B/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP3520013B1 (en) | 2021-11-24 |
US10348506B2 (en) | 2019-07-09 |
IL265552B (en) | 2021-02-28 |
HUE057302T2 (hu) | 2022-05-28 |
EP3520013A1 (en) | 2019-08-07 |
US20180097632A1 (en) | 2018-04-05 |
CA3036118A1 (en) | 2018-04-05 |
CN109844750A (zh) | 2019-06-04 |
AU2017333398A1 (en) | 2019-04-04 |
WO2018060236A1 (en) | 2018-04-05 |
IL265552A (en) | 2019-05-30 |
JP6986556B2 (ja) | 2021-12-22 |
JP2019533359A (ja) | 2019-11-14 |
PL3520013T3 (pl) | 2022-02-07 |
AU2017333398B2 (en) | 2020-07-23 |
CN109844750B (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI642294B (zh) | 具有鑑認指令之密碼訊息之電腦程式產品、系統及方法 | |
US10846090B2 (en) | Instruction for performing a pseudorandom number generate operation | |
JP6395737B2 (ja) | 擬似乱数シード操作を実施するための命令 | |
TWI773960B (zh) | 用於以加密金鑰指令計算數位簽章驗證標記之電腦程式產品、電腦系統及電腦實施方法 | |
TW201816603A (zh) | 判定填補操作的狀態 | |
TWI650708B (zh) | 用於提供真實隨機數字之指令之電腦程式產品、電腦系統及電腦實施方法 | |
TWI743654B (zh) | 用於計算數位簽章認證驗證指令之電腦程式產品、電腦系統及電腦實施方法 | |
TWI354929B (en) | Method and computer program product for executing | |
TWI811514B (zh) | 用於計算數位簽章認證標記指令之電腦程式產品、電腦系統及電腦實施方法 |