TW201812637A - 低成本之密碼加速器 - Google Patents
低成本之密碼加速器 Download PDFInfo
- Publication number
- TW201812637A TW201812637A TW106129644A TW106129644A TW201812637A TW 201812637 A TW201812637 A TW 201812637A TW 106129644 A TW106129644 A TW 106129644A TW 106129644 A TW106129644 A TW 106129644A TW 201812637 A TW201812637 A TW 201812637A
- Authority
- TW
- Taiwan
- Prior art keywords
- cryptographic
- accelerator
- crya
- data
- program
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- 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
-
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本發明揭示一種加速一密碼程序之內迴圈之低成本密碼加速器。該密碼加速器對由實施一軟體密碼程序之一中央處理單元(CPU)提供之密碼資料執行若干操作以產生一組合式硬體與軟體密碼程序,從而得到比僅軟體密碼程序或僅硬體密碼程序具一較低成本之安全通信解決方案。在一實施例中,一種密碼加速器包括:一介面,其經組態以接收密碼資料,該密碼資料指示將對該密碼資料執行之一特定密碼程序;變換邏輯,其經組態以根據該密碼程序對該密碼資料執行一密碼操作,該變換邏輯包含用於執行複數個不同密碼程序之密碼操作之邏輯;及一狀態暫存器,其經組態以用於儲存該密碼操作之一結果。
Description
本發明一般而言係關於供在安全通信中使用之微控制器。
微控制器愈來愈多地用於需要安全通信之系統中,該等系統通常依賴於進階加密標準(AES)來進行加密且依賴於安全雜湊演算法2 (SHA2)來進行訊息完整性檢查。近期,伽羅瓦計數器模式(Galois Counter Mode ;GCM)擴展至AES亦變得受歡迎,以允許在一個遍次中完成加密及鑑認。此等密碼演算法可實施於軟體中,但此通常極慢且可需要一大程式碼大小。亦可在硬體中支援該等演算法,然而對於小微控制器單元(MCU),該等演算法之成本係昂貴的,該等小微控制器單元可僅接受幾千個邏輯閘及幾千位元組之程式碼來支援密碼程式庫。至少出於此等原因,密碼特徵通常僅可在較高成本之MCU上獲得。
所揭示實施例藉由使用軟體與硬體之一組合來促進密碼演算法之加速,該組合提供優於僅軟體實施方案之經改良效能且帶來一最小硬體成本。在一實施例中,一中央處理單元(CPU)將n個資料位元(例如,32個資料位元)移動至硬體加速器以進行處理,且然後在一後續循環中讀取傳回之經處理結果。該加速器能夠對傳入資料執行一系列低位準操作及/或變換。該加速器含有一或多個暫存器,且可使用一別名暫存器映射來允許操作之位址指示將要執行之操作。該別名暫存器映射避免了花費一額外循環來將一命令暫存器裝載於加速器中。在一實施例中,狀態向量及控制流受CPU管理,且密碼操作在硬體加速器中執行。 所揭示實施例允許在不受成本約束限制之情況下在多種MCU (例如,多種32位元MCU)上支援標準密碼演算法,藉此打開具有密碼演算法支援之低成本n位元MCU之一潛在巨大市場。藉由將一硬體加速器設計為使密碼演算法之中央處理單元(CPU)執行加速而非設計用於獨立密碼操作之專用硬體模組而實現低成本。 所揭示實施例假設,CPU在執行時可完全用於密碼操作,但在某些實施方案中,中斷得到支援。所揭示實施例亦假設,一次執行一個密碼演算法,從而允許在適用之情況下共用邏輯及暫存器。 在一實施例中,加速器經最佳化用於與至CPU (例如,見於ARM之Cortex-M0+及Grebe處理器中)之一單循環匯流排介面(例如,ARM Inc.之單循環IOBUS介面)一起使用,但同樣適用於一共處理器介面(例如,ARM之Teal處理器)。所揭示實施例亦可與存在於任一MCU中之任一習用系統匯流排一起使用,但循環計數在CPU具有對加速器暫存器之單循環存取之情況下係最佳的。 在一實施例中,一種系統包括:一中央處理單元(CPU);記憶體,其儲存指令,該等指令在由該CPU執行時致使該CPU執行包括以下各項之操作:獲得密碼資料,該密碼資料指示將對該密碼資料執行之一特定密碼程序;根據該密碼程序對該密碼資料執行一第一密碼操作;將該密碼資料發送至一硬體加速器;及自該硬體加速器接收由該硬體加速器根據該密碼程序使用一第二密碼操作變換之密碼資料,該第二密碼操作不同於該第一密碼操作。 在一實施例中,一種密碼加速器包括:一介面,其經組態以接收密碼資料,該密碼資料指示將對該密碼資料執行之一特定密碼程序;變換邏輯,其經組態以根據該密碼程序對該密碼資料執行一密碼操作,該變換邏輯包含用於執行複數個不同密碼程序之密碼操作之邏輯;及一狀態暫存器,其經組態以用於儲存該密碼操作之一結果。 其他實施例針對於方法及非暫時性電腦可讀儲存媒體。在附圖及以下說明中陳述標的物之一或多個實施方案之細節。標的物之其他特徵、態樣及優點將依據說明、圖式及申請專利範圍而變得顯而易見。
概述
CRYA模組加速GCM之AES、SHA-256及GF (2128
)乘法之內迴圈,從而允許此等密碼演算法之具有一最小閘計數之高效硬體;軟體(HW-SW)實施方案。在以下闡述中,此等密碼演算法將各自簡要地呈現,後續接著CRYA模組之具體要求,後續接著對CRYA模組之總體架構及金鑰要求之一闡述,後續接著對一具體實施例之詳細架構之一闡述。以下揭示內容假設,CRYA模組經開發以用於具有單循環I/O埠之CPU,例如ARM Cor-tex-M0+或Grebe處理器,此乃因此等處理器最可能係嵌入CRYA模組之一系統中之主機CPU。然而,CRYA模組可匯流排映射至任一CPU。密碼演算法概述 : AES
AES創建大小為128個位元之一純文字區塊之一加密文字。金鑰為128個位元、192個位元或256個位元。用以將一128位元純文字區塊P加密為一128位元經加密區塊C之基本演算法步驟如下: ● AddRoundKey :金鑰與狀態之XOR ● Loop 1...9 (對於128個位元。對於192位元迴圈到11且對於256位元迴圈到13) o ShiftRows :移項:使位元組循環移位 o SubBytes :查找表或計算 o MixColumn :藉助多項式進行GF (28
)乘法 o AddRoundKey :金鑰與狀態之XOR ● ShiftRows ● SubBytes ● AddRoundKey 在此AES演算法中,每一AddRoundKey操作使用一唯一128位元、192位元或256位元金鑰,該金鑰係自一初始金鑰導出。 將一128位元加密區塊C解密為一128位元純文字區塊P以類似方式進行: ● AddRoundKey :金鑰與狀態之XOR ● Inverse ShiftRows ● Inverse SubBytes ● Loop 1...9 (對於128個位元。對於192位元迴圈至11且對於256位元迴圈至13) o AddRoundKey :金鑰與狀態之XOR o Inverse MixColumn :藉助多項式進行GF (28
)乘法 o Inverse ShiftRows :移項:使位元組循環移位 o Inverse SubBytes :查找表或計算 o AddRoundKey 圖1係根據一實施例之圖解說明AES操作之資料流之一流程圖。加密資料流在左側,且解密資料流在右側。AES加密包含加密輪101及最後加密輪102。AES解密包含解密輪103及最後解密輪104。對於AES加密,CRYA模組將使用硬體加速來進行KeySchedule、SubBytes及MixColumns操作,且使用硬體與軟體之一組合來進行ShiftRows操作。對於AES解密,CRYA模組將使用硬體加速來進行KeySchedule、InvSubBytes及InvMixColumns操作,且使用硬體與軟體之一組合來進行InvShiftRows操作。 輪金鑰可在加密之前預先計算得出或在每一輪中即時產生。在一實施例中,輪金鑰可使用一Rijndael金鑰排程即時產生,該Rijndael金鑰排程由CRYA模組中之硬體加速。Rijndael金鑰排程將一短金鑰擴展為若干個單獨輪金鑰。存在三個AES變體,該三個AES變體中之每一者具有不同數目個輪。每一變體對於每一輪需要一單獨128位元輪金鑰,另外再多出一個128位元輪金鑰。Rijndael金鑰排程依據一初始金鑰產生所需輪金鑰。密碼演算法概述 : SHA-256
SHA-256係創建一資料區塊之一256位元雜湊之一密碼雜湊函數。資料區塊在512個位元之組塊中進行處理。對於每一512位元組塊,存在兩個處理輸入資料及當前雜湊之迴圈:訊息擴展(48次反覆)及壓縮函數(64次反覆)。在一實施例中,CRYA模組加速訊息擴展迴圈及壓縮函數迴圈,如下文進一步詳細闡述。密碼演算法概述 : GCM
GCM係伽羅瓦/計數器模式,即組合CTR (計數器)操作模式與一鑑認雜湊函數之一AES操作模式。大部分GCM可易於實施於軟體中,但GCM亦包含對於在軟體中進行計算緩慢之GF (2128
)中之一有限域乘法。在一實施例中,CRYA模組用於以一低成本實施方案加速此乘法。CRYA架構中之乘法器需要2 × 32位元+ 16位元暫存器且針對一128×128 GF (2128
)乘法使用320個循環。GF (2128
)乘法之演算法可在伽羅瓦 / 計數器操作模式
(The Galois/Counter Mode of Operation
)中找到為演算法1。該演算法使用其中最低有效位元(LSB)為位元127且最高有效位元(MSB)為0之一位元反轉表示法。在以下揭示內容中,將使用標準Verilog®表示法進行位元排序。模組架構 ; 模組要求
CRYA支援AES及SHA-256。對於AES,CRYA模組適應以下操作模式:ECB、CBC、CFB、OFB、CTR、CCM/CCM*及GCM。CRYA模組加速GCM操作模式之雜湊函數,而其他操作模式利用軟體程式庫而實施。AES加密支援128位元、192位元及256位元金鑰長度。除加密之外,CRYA模組亦支援經加速AES解密。CRYA模組經組態以使用(舉例而言)一Grebe CPU之I/O埠與一CPU介接。在一實施例中,CRYA模組可重新使用用於支援不同密碼演算法之暫存器,使得所有所支援密碼演算法使用相同狀態暫存器。在一實施例中,用於每一密碼演算法之密碼加速器同時實施。在一實施例中,CRYA模組包含抵抗側通道攻擊之對策,如下文進一步詳細闡述。在一實施例中,CRYA模組閘計數為約5.5千個閘。CRYA模組經組態以實施圖5中所展示之表1中概括之所有功能,其中指定了程式碼大小、循環計數及閘計數約束。硬體 / 軟體介面概念
加速器之基本原理係將一字組自CPU暫存器檔案寫入至加速器中之狀態暫存器,等待一個循環,且然後讀取自加速器狀態暫存器傳回至CPU暫存器檔案之一經變換值。取決於經選擇用於寫入之位址,將對狀態暫存器執行一組所定義之加速功能。下文闡述資料流之兩個不同架構。稱為REG至REG之第一架構用於AES及GCM加速。稱為REGIN之第二架構用於SHA加速。 圖2係根據一實施例之暫存器至暫存器(REG至REG)加速器架構200之一方塊圖。架構200包含位址解碼器201、命令暫存器202、狀態暫存器203、變換邏輯204、AND閘205及多工器206。I/O位址(IOADDR)經解碼以將一命令提供於命令暫存器202中。儲存於命令暫存器202中之命令提供用於選擇至多工器206中之兩個輸入中之一者之一選擇信號。至多工器206中之一第一輸入係AND閘205之輸出,且至多工器206中之第二輸入係變換邏輯204之輸出。AND閘205接收IODATA及位址解碼器201之輸出作為輸入。多工器206之輸出儲存於狀態暫存器203中。 在REG至REG架構200中,輸入/輸出(I/O)埠時序獨立於變換邏輯深度。為進行此,使用命令暫存器202,使得命令在資料寫入期間基於I/O埠位址而暫存。此確保變換邏輯204中之任何深層邏輯獨立於I/O埠時序,使得僅存在以下時序路徑: ● REGIN: CPU_IR->I/O Port->address decode-> register ● REG to REG: register->transformation logic->register ● REGOUT: register->I/O Port->CPU_RF 圖3係根據一實施例之進入暫存器(REGIN)加速器架構300之一方塊圖。架構300包含位址解碼器301、變換邏輯302a至302c、多工器303及狀態暫存器304。IOADDR由位址解碼器301解碼以提供用於選擇至多工器303中之三個輸入中之一者之一選擇信號。至多工器303中之一第一輸入係變換邏輯302a (T1)之輸出,至多工器303中之第二輸入係變換邏輯302b (T2)之輸出,且至多工器303中之第三輸入係變換邏輯302c (T3)之輸出。多工器303之輸出儲存於狀態暫存器304中。 REGIN在具有淺邏輯深度之變換上使用,例如將一字組寫入至狀態暫存器304。資料在暫存於加速器中之前在同一循環中進行變換。然後,讀取自加速器狀態暫存器304傳回之經變換值。CRYA模組已經設計以確保時序路徑不受限於綜合結果品質(QoR)。加速器硬體實施方案
圖4係根據一實施例之CRYA模組400之一方塊圖。CRYA模組400包含SHA加速器401、AES加速器402及GFACC 403。使用CPU暫存器檔案作為一工作狀態會減少CRYA模組中之資料暫存器之數目。AES加速器402需要一個32位元暫存器404。SHA加速器401需要一個32位元暫存器404。GFACC加速器403 (GCM GF (2128
)乘法運算子)需要兩個32位元暫存器404、405及一個16位元暫存器406,16位元暫存器406設定CRYA模組400之一下限。由於CRYA模組400中支援GCM,因此SHA加速器401亦可使用額外32位元暫存器404來減小軟體部分中之循環計數。圖4中圖解說明此暫存器共用,其中暫存器405之state2_r由GFACC加速器403及SHA加速器401之ch/maj使用。 在一實施例中,上文所闡述之加速器401、402、403集成至一個硬體周邊模組中。在使演算法循環計數最小化時閘計數應儘可能小。CRYA模組400含有一I/O埠介面(未展示)、一位址解碼器(未展示)、兩個32位元暫存器404、405及一個16位元暫存器406 (用於GCM)。此等暫存器可由SHA加速器401及AES加速器402重新使用。 在一實施例中,CRYA模組400使用圖5及圖6中分別展示之寫入及讀取位址映射。圖5中之表1展示一寫入位址映射,該寫入位址映射包含儲存位址偏移之一第一行、指示哪一(哪些)加速器正執行操作之一第二行及闡述加速器所執行之操作之一第三行。圖6中之表2展示一讀取位址映射,該讀取位址映射包含儲存位址偏移之一第一行、指示哪一(哪些)加速器將執行一操作之一第二行及指示所讀取之暫存器之行3。注意,在表1及表2中,位址偏移亦指示將要執行之操作(即,一別名暫存器映射)。加速器硬體 : Cortex-M0+/Grebe 系統之集成
在一實施例中,CRYA模組可與由美國加利福尼亞州聖荷西市之ARM Inc.開發之Cortex-M0或Grebe處理器集成在一起。在此實施例中,硬體CRYA模組共用時脈且利用Grebe HCLK及HRESETn埠進行重設。CRYA模組使用Grebe I/O埠來介接。CRYA模組不需要保持於待機模式中。CRYA模組不使用中斷,因為CRYA模組係完全CPU驅動的。對於Grebe,當CRYA模組藉由一周邊存取控制器(PAC)組態為安全時,不可藉由非安全存取而存取該CRYA模組來進行讀取及寫入。舉例而言,PAC (例如,由Atmel Inc.開發之一AT03229: SAM D/R/L/C PAC)可用於透過至CRYA模組所使用之暫存器之AMBA高效能匯流排(AHB)而約束對CRYA模組之寫入存取,從而使暫存器為不可寫入的。 CRYA模組使用I/O埠信號IONONSEC來識別非安全存取。CRYA模組使用PAC信號apb_secure來判定模組受PAC保護。當一存取不安全且模組PAC受保護時,讀取資料匯流排應讀取所有0。當一存取不安全且模組PAC受保護時,寫入操作無效。當存取不安全且模組PAC受保護時,CRYA_pslverr可針對一個時脈循環或多個時脈循環經確證。CRYA模組由一啟用位元進行時脈閘控,使得在不啟用CRYA模組時,無邏輯進行雙態切換。此可藉由僅在設定啟用位元時才更新所有暫存器(啟用暫存器除外)使用自動時脈閘插入而進行。CRYA模組亦可使用一按需時脈。此方法將一clk_req信號連接至系統時脈控制器及CRYA模組中之一IOTRANS事件,條件係時脈請求之時序路徑不受限。加速器軟體實施方案 : SHA 軟體
在一實施例中,至一CRYA SHA軟體程式庫之輸入可係至一512位元資料區塊之一指標、至將要更新之一雜湊位置之一指標或至暫時記憶體緩衝暫存區(例如,256位元組之RAM)之一指標。CRYA SHA軟體程式庫可基於512位元資料而更新雜湊值。在一實施例中,已針對SHA演算法對訊息進行了適當地預先處理,使得用於SHA之CRYA軟體交付可直接在512位元組塊上工作。在一實施例中,CRYA SHA軟體程式庫在使用CRYA模組進行加速之情況下實施。在一實施例中,每反覆18次循環之一訊息排程迴圈及每反覆21次循環之一壓縮迴圈由CRYA模組實施。加速器軟體實施方案 : AES 軟體
至CRYA AES軟體例程之輸入應為至將要加密之一128位元資料區塊之一指標、一128位元、192位元或256位元金鑰以及至輸出資料之預期位置之一指標。CRYA AES軟體例程之輸出應為儲存於由調用函數指向之位置處之128位元經加密資料。CRYA AES軟體例程應使用CRYA AES硬體加速來將循環計數減小至儘可能少之循環。在參考實施方案中,AES重複迴圈之一次反覆採取48次循環。加速器軟體實施方案 : GCM 軟體
在一實施例中,CRYA模組加速GCM操作模式之GF (2128
)乘法。可交付之軟體輸入可係將相乘之至128位元資料區塊之兩個指標及至用於儲存結果之一位置之一指標。一CRYA軟體程式庫可使用CRYA GCM硬體加速來執行此乘法。在一實施例中,針對一GF (2128
)乘法之循環計數係320次循環,其中一程式碼大小為240個位元組。側通道攻擊防護
密碼實施方案對於例如時序攻擊及功率分析攻擊等側通道攻擊係敏感的。為防止洩漏時序側通道上之資訊,密碼演算法在恆定時間內實施而不依賴於輸入資料/金鑰係重要的。在一實施例中,CRYA模組在恆定時間內實施。 對於AES,不洩漏關於純文字資料或金鑰之資訊係重要的。在一實施例中,CRYA模組使用遮蔽法實施對抗功率分析攻擊之側通道保護。在一實施例中,遮蔽法在硬體中實施為XOR運算。舉例而言,可使用一經遮蔽S盒實施方案。經遮蔽S盒使用針對每一16B區塊可重新產生之兩個隨機且獨立8位元遮罩。在調用低位準CRYA軟體之前,可使用一較高位準軟體功能來設置CRYA模組中之隨機遮罩。 對於SHA,不洩漏關於正進行雜湊之訊息資料之資訊係重要的。在一實施例中,此藉由一上覆之安全程式碼函數而進行,SHA之CRYA部分將不受側通道保護影響。 對於GF (2128
)乘法,不需要側通道保護機制。實例性 AES 架構
如參考圖1先前所揭示,以下AES操作可由CRYA模組加速: ● SubBytes/InvSubBytes ● MixColumn/InvMixColumn ● KeySchedule ● ShiftRows AES演算法之主要部分由以下序列組成:ShiftRows->SubBytes->MixColumns。CRYA模組架構保持CPU暫存器檔案(例如,Grebe暫存器)中之AES資料狀態(128位元)且使用密碼加速器一次變換32位元。128位元資料區塊可被視為位元組之一4×4矩陣,其中每一行係CPU暫存器檔案中之一32位元暫存器。 圖7圖解說明根據一實施例之一AES移位列操作。CRYA模組需要來自行中之每一者之資料形成新狀態矩陣之第一列,因此需要四個儲存操作: str r0, [r7, #0x10] str r1, [r7, #0x14] str r2, [r7, #0x18] str r3, [r7, #0x1c] nop // Required when using REG to REG transformation ldr r4, [r7, #0x10] //New state 0 is now in r4 在「nop」循環期間,CRYA亦執行SubBytes及MixColumns,且然後讀取傳回至Grebe暫存器檔案之經變換資料。對於128位元資料區塊,在旋轉源暫存器時四次執行此指令序列。以下程式碼展示下一序列,且從中可看出型式: str r1, [r7, #0x10] str r2, [r7, #0x14] str r3, [r7, #0x18] str r0, [r7, #0x1c] nop // Required when using REG to REG transformation ldr r5, [r7, #0x10] //New state 1 is now in r5 對於每一儲存循環,僅保持8個位元。此意指,在不丟失任何循環之情況下可四次使用一8位元S盒。在完整32位元資料上並行使用四個8位元S盒將實現一較簡單之實施方案,但一個S盒之區域可超過500個閘,因此僅舉例說明一個S盒係合意的。此可藉由實施一控制暫存器以選擇S盒之輸入而進行。在一實施例中,使用一2位元計數器。 根據AES演算法,對於所產生之每個新128位元狀態,在AddRoundKey操作(其為金鑰與狀態之一簡單XOR運算)中可創建及使用一新金鑰。使用Rijndael金鑰排程,創建一新金鑰需要一32位元SubBytes (S盒)變換。 如果使用四個8位元S盒,那麼軟體將如下所示: str r3, [r1, #0x28] //Store word 3 of previous key nop // Required for REG to REG transformation ldr r3, [r1, #0x10] //Load S-box transformed 4-byte word 僅使用一個8位元S盒給出 str r3, [r1, #0x28] //Store word 3 of previous key nop // S-box of 1st byte nop // S-box of 2nd byte nop // S-box of 3rd byte nop // S-box of 4th byte ldr r3, [r1, #0x10] //Load S-box transformed 4-byte word 幸運地,後面之指令不具有任何資料相依性,因而可填入具有有用指令之nop,使得不會丟失任何循環: str r7, [r5, #0x28] // Store word 3 of previous key mov r6, r10 //Key2 to r2 (Filler instruction for S-box of 1st byte) eors r2, r6 //r2 = NextState2 (Filler instruction for S-box of 2nd byte) eors r3, r7 //r3 = Nextstate3 (Filler instruction for S-box of 3rd byte) mov r4, r8 //Key 0 to r0 (Filler instruction for S-box of 4th byte) ldr r5, [r5, #0x10] //Load the S-box data back Rijndael金鑰排程亦包含一位元組左旋轉及與Rcon之一XOR運算,此需要u額外8位元暫存器。Rcon針對每一新金鑰而變換,其中Rcon1
係Rcon-1
之一函數。 考量整個AES演算法,存在類似之三種不同操作,但該等操作全部共用SubBytes步驟: 1. Main loop ShiftRows->SubBytes->MixCol 2. KeySchedule ByteRotate->SubBytes->Rcon 3. Final step (After loop) ShiftRows->SubBytes 由於通過SubBytes及MixCol之延遲需要使用一REG至REG架構,因此在這三種情形中,使用單獨「命令」暫存器來選擇正確操作。操作選擇無法直接取決於I/O埠位址。在一實施例中,使用三個此類暫存器,但可使用兩個暫存器。 解密期間包含反向執行SubBytes及MixCol操作,此意指將一信號傳遞至硬體區塊。解密亦改變Rcon之方向。此需要具有用以指示將執行一AES解密操作之一暫存器。此位元可在開始一解密時自軟體設定且在開始一加密時經清空。 圖8中展示CRYA模組之AES部分800之一方塊圖。AES部分800包含位址解碼器801、狀態暫存器802 (state_r)、暫存器803 (rcon_r)、命令暫存器/計數器804、暫存器805 (inv)、MixCol邏輯806、AND閘807、多工器808、多工器809、多工器810及S盒811。 在一實施例中,狀態暫存器802為32位元且用作所有變換之來源及目的地。然後在I/O埠上讀取狀態暫存器802。資料流上之注釋展示正執行哪一變換序列,且以草書字體展示其表示演算法之哪個部分。舉例而言,進入狀態多工器808之一行資料流係SubBytes (ShiftRows)Encrypt Final
。此意指,此資料流在加密演算法之最後步驟中起作用,在該迴圈之後,進行ShiftRows,且然後進行SubBytes。多工器809、810分別受命令/計數器暫存器804及反相暫存器805控制。實例性 AES 側通道攻擊保護
圖9係根據一實施例之圖解說明經遮蔽S盒使用之一方塊圖。在一實施例中,S盒900係一「經遮蔽」S盒。此實施例能夠支援一經遮蔽AES實施方案,這使得其針對使用差動功率分析進行之側通道攻擊更具抵抗力。在一實施例中,CRYA模組使用加性遮蔽,此意指對值與一遮罩進行XOR運算。一經遮蔽值可用於AES中之所有步驟(其等係線性的)中,且然後使用一新XOR傳回解除遮蔽之資料。 然而,S盒900係一非線性變換。在一實施例中,S盒900取得三個輸入,亦即將被替代之資料位元組、及具一位元組大小之輸入遮罩及具一位元組大小之輸出遮罩。首先以作為輸入給予S盒900之同一遮罩遮蔽進入S盒900中之資料,且以作為輸出遮罩給予S盒900之同一遮罩將S盒900之資料輸出解除遮蔽。由於MixColumns操作係線性的,因此可在MixColumns操作後進行輸出遮蔽。 在一實施例中,最佳區域及程式碼大小可藉由在S盒900之輸入處進行輸入遮蔽且在I/O讀取路徑中進行輸出遮蔽而獲得: CRYA_iordata = state_r ^ {4{sbox_out_mask}}; 注意,此讀取與CRYA模組之其他部分所使用之state_r讀取不同,且一位址解碼器用於基於I/O位址而選擇此讀取資料。 金鑰排程亦使用S盒900。此部分將以與資料相同之方式進行遮蔽。舉例而言,遮蔽在S盒輸入處進行,且解除遮蔽在I/O讀取路徑中進行。輸入及輸出遮罩「sbox_in_mask [7:0]」及「sbox_out_mask [7:0]」儲存於state2_r中,否則,state2_r不用於CRYA之AES部分中。 輸入及輸出遮罩之選擇應係隨機且彼此獨立的。對於將要加密之每個16B資料區塊,可使用一對新輸入及輸出遮罩。CRYA模組可使用state2_r [7:0]暫存器用於輸入遮罩及使用state2_r [15:8]暫存器用於輸出遮罩,但CRYA軟體不應實施將遮罩寫入至CRYA模組中。CRYA軟體應假設,state2_r中存在一有效隨機數對,且在對一16B資料區塊執行CRYA軟體之前將數目寫入至CRYA state2_r中係一較高位準軟體例程之責任。實例性 SHA 架構
先前闡述了SHA-256演算法,且此處重印虛擬程式碼作為參考。 Message expansion: for i from 16 to 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10) w[i] := w[i-16]+
s0+
w[i-7]+
s1 Compression function main loop: for i from 0 to 63 S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch := (e and f) xor ((not e) and g) temp1 := h + S1 + ch + k[i] + w[i] S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj := (a and b) xor (a and c) xor (b and c) temp2 := S0 + maj h := g g := f f := e e := d + temp1 d := c c := b b := a a := temp1 + temp2 以上SHA演算法包含:執行邏輯操作(s0、s1、S0、S1、ch、maj);及將結果與來自經擴展訊息之字組(w[i])及來自SHA常數表格之字組(k[i])加在一起。實例性壓縮函數
在一實施例中,SHA常數表格為64個字組,針對壓縮迴圈之每一反覆皆有一個字組。經擴展訊息亦為64個字組。壓縮迴圈之每一反覆用掉稱為w[i]及k[i]之一訊息字組及一常數字組。SHA工作變數a、b、c、d、e、f、g、h針對壓縮迴圈之每一反覆而更新及循環。在CRYA模組中,軟體保持CPU暫存器檔案中之工作變數且將該等工作變數寫入至CRYA模組中以用於演算法決定之變換。CRYA模組包含兩個32位元狀態暫存器state_r及state2_r以及一32位元加法器。CRYA模組亦包含作為一硬體查找表之全SHA常數表格K。 使用此等資源,軟體實施方案需要: 1) 載入來自RAM之w[i] 2) 將w[i]寫入至CRYA模組 3) 將用於變換之工作變數寫入至CRYA模組 4) 載入來自CRYA模組之經變換資料 5) 管理暫存器檔案中之工作變數 以下虛擬程式碼闡述CRYA模組中之資料累積。每一行對應於一時脈循環。 state_r = ch state_r = ch + k[i] state_r = ch + k[i] + w[i] state_r = ch + k[i] + w[i] + S1 = temp1 Load state_r to register file, state_r freed state2_r = maj state_r = S0 + maj state_r = S0 + maj + temp1 Load state_r to register file, state_r freed 圖10係根據一實施例之圖解說明SHA ch及maj計算之一方塊圖。maj及ch計算使用三個運算元。軟體首先經由多工器1000之輸出將運算子1儲存至暫存器1002 (state_r),然後將運算子2儲存至暫存器1001 (state2_r),然後直接使用下一儲存,使得:state_r = ch/maj (state_r, state2_r, iowdata)。 圖11中展示加法器架構1100之一實例性實施例。加法器將暫存器1102 (state_r)之內容與由耦合至多工器1105之命令暫存器1104 (sha_cmd_r)選擇之另一運算元加在一起。由於穿過加法器架構1100之長時序路徑,因此運算元及選擇兩者皆獨立於匯流排(IOWDATA/IOADDR)係重要的。在圖中,K係常數查找表、藉由暫存器1101中之索引計數器進行索引(k_index_cnt_r)。計數器針對每一壓縮函數反覆而遞增,使得使用新k[i]值。命令暫存器1104基於用於寫入之位址而更新。該命令暫存器連同去往暫存器1102 (state_r)及暫存器1103 (state2_r)之寫入資料一起更新。實例性訊息擴展
訊息擴展迴圈與壓縮函數使用相同原理,變換及累積所儲存值: State_r = s0 State_r = s0 + s1 State_r = s0 + s1 + w[i-7] State_r = s0 + s1 + w[i-16] Load state_r to register file 圖12圖解說明訊息擴展變換中所使用之一REGIN時序模型。該模型包含SHA變換1200、多工器1202、位址解碼器1201、多工器1202及狀態暫存器1203。圖11中所展示之加法器結構用於REGIN變換之後之循環中。實例性 GCM 架構
在一實施例中,CRYA模組加速GCM操作模式之GF (2128
)乘法。下文利用位元排序表示法重新生成依據伽羅瓦 / 計數器操作模式
(The Galois/Counter Mode of Operation
)之乘法演算法(演算法1),使得LSB為位元0且MSB為位元127,此與標準Verilog®表示法一致。 1: R←{128’b11100001, {120{1’b0}}} 2: Z←0, V←A, X←B 3: for i = 0 to 127 do 4: if x[127-i] == 1 then 5: Z ← Z ⊕ V 6: endif 7: if v[0] == 0 then 8: V ← rightshift (V) 9: else 10: V ← rightshift (V) ⊕ R 11: endif 12: end for 13: return Z 考量A [127:0]與B [127:0]之GF (2128
)中之一乘法,結果為RES [127:0]。對於減小之閘計數,將運算元及結果保持在CPU暫存器檔案及RAM中,且依序與一組較小資料一起使用。可將128位元運算元A及B視為16位元寬之半字組集合,使得 V0
= A [15:0],V1
= A [31:16],針對n=0…7,Vn
= A[16*(n+1)-1:16*n]。 X0
= B[15:0],X1
= B[31:16],針對n=0...7,Xn
= B[16*(n+1)-1:16*n]。 結果係: Z0
= RES [15:0]。Z1
= RES [31:15],針對n=0...7,Zn
= RES[16*(n+1)-1:16*n]。 CRYA GCM加速器之核心係一運算子GFACC (圖13),其中輸入v對應於來自如上文所定義之運算元A之兩個串連V半字組{Vn+1
, Vn
},及輸入x對應於來自運算元B之一個Xn
半字組。GFACC包含多工器1301、狀態暫存器1302 (state1_r)、狀態暫存器1303 (state2_r)、GFACC 1304、暫存器1305 (mode_r)及暫存器1306 (res_r)。 GFACC運算子根據以下虛擬程式碼更新res_new及v_new輸出:
模式輸入選擇用於運算子之操作模式。清空模式對應於「模式0」,設定模式對應於「模式1」。首先將以「模式1」組態闡述GFACC運算子。然後將以「模式0」組態闡述GFACC運算子。模式 1 : 計算部分結果 Z0 至 Z6
16位元結果暫存器(res_r)對應於GF (2128
)乘法之最終128位元結果Zn
之16個位元。對於每一時脈循環,GFACC利用res_r值與v之16個經移位版本之XOR運算(圖15)而更新res_r暫存器。此本質上係一常規乘法,惟其係以有限域算術進行除外,因此用XOR替換加法。可將GFACC模式1虛擬程式碼與原始演算法(參考演算法1)進行比較。雖然原始演算法反覆128次且對整個A運算元進行移位並對A運算元與Z進行XOR運算,但GFACC運算子僅反覆16次,因而針對每一單循環操作進行16次移位。 圖16及圖17中圖解說明GFACC方法與原始演算法之間差異。在圖16中,每一16位元部分Zn
結果係B運算元及A運算元中以An
開始之部分之一函數。GFACC之V輸入始終需要為32個位元,因為移位將16個新V位元推入至在XOR運算中使用之下部16個位元中。此單循環操作需要用不同資料執行八次以完成演算法決定之128次反覆。res_r在此等循環之間保持不變,因此res_r可被視為一128位元經移位乘法,但該res_r僅產生結果之16個位元。為產生結果之最下部16個位元,x [15:0]應含有運算元B (X7
)之最高有效半字組。v [31:0]應含有運算元A (V1
, V0
)之最下部32位元字組。在x寫入之後之循環中執行16位元乘法(移位與xor)。此將用一中間結果來更新res_r。 然後,需要將新x及v值呈現給GFACC。為產生第二中間結果,需要X6
及V2
、V1
。XOR運算使用res_r中之中間結果來執行。重複此操作直至X0
及V8
、V7
已由GFACC處理且res_r含有結果(Z0
)之最下部16個位元為止。以相同方式計算Z1
,但此次,使V輸入循環。圖18中之表3及表4展示用於Z0
及Z1
計算之每一循環之V及X輸入。結果Z2
-Z6
之V輸入可見於圖19中所展示之表5中,且Z7
係一特殊情形,稍後將對其進行闡述。由於每一Zn
計算使用運算子中之8次循環,因此計算Z0
-Z6
使用運算子中之8×7=56次循環。模式 0 : V 擴展及 Z7
已將V7
、…、V0
闡述為輸入運算元A之半字組片,但如自Z計算可見,需要將V擴展至最多V14
。此擴展來自演算法中之行10: 10: V ← rightshift (V) ⊕ R 右移位不僅將0推入V中,而且對V之上部位元與R進行XOR運算。由於演算法反覆128次,因此產生128個新V位元(8個半字組)。此對應於V8
至V14
。此外,V7
藉由「⊕ R」操作而更新。此V擴展在清空模式位元(即,「模式0」(參考圖21及演算法2))時藉由GFACC運算子進行。在8次運算子循環中執行模式0。其產生經擴展V7
、…、V14
及最上部Z位元Z7
。作為輸入,模式0使用作為初始資料之V7
、呈一LSB至MSB次序之V0
至V6
及呈MSB至LSB次序之X7
至X0
。圖11之v_new輸出用於將經修改V回饋至運算子中。圖20中所展示之表6中闡述模式0之逐循環資料輸入。 對於每一運算子循環,一經擴展V需要由CPU自CRYA讀取。經擴展V應儲存於RAM中以供在模式1中使用。在8次運算子循環之後,Z7
可經讀出且儲存於最終結果目的地位址處。實際上,Z7
無法連同GFACC運算子中之Z0
至Z6
一起計算,因為Z7
係取決於V擴展「⊕ R」操作之中間值。時序路徑考量因素
CRYA GCM架構構建於一REG至REG路徑時序模型上。此意指,res_r及state_r更新(參考圖21中所展示之GFACC方塊圖)應獨立於I/O埠信號(IOWDATA、IOADDR)。為允許此,參考實施方案包含兩個命令暫存器gcm_cmd_r及gcm_cmd2_r。該等命令暫存器在將新資料寫入至state_r或state2_r時經設定,如先前章節中所闡述。state_r及res_r暫存器將僅在cmd暫存器經設定且針對一個循環保持為高時經更新。具有兩個cmd位元之原因係使至GFACC之資料輸入交替,如先前所闡述。實例性 CRYA 軟體
CPU (例如,ARM Grebe CPU)具有可使用之暫存器r0至r12 (暫存器r13至r15係鏈路、堆疊指標及PC)。極重要之一額外約束係僅暫存器r0至r7可用於邏輯上及載入/儲存指令。暫存器r8至12可僅與MOV及ADD指令一起使用。此意指,暫存器r0至r7需要用作工作暫存器以及指向RAM/Flash及周邊設備之指標暫存器。實例性 CRYA 軟體 : AES
AES狀態係4×32個位元。在一實施例中,暫存器r0至r3利用輸入資料而初始化。在第一ShiftRows(SubBytes(MixCol))操作之後,新狀態將處於暫存器r4至r7中。然後,將r0至r3用作工作暫存器來創建下一RoundKey並對暫存器r4-r7進行AddRoundKey操作。然後,對暫存器r4至r7進行ShiftRows(SubBytes(MixCol)),且將新狀態傳回暫存器r0至r3中。此序列迴圈若干次。 以下虛擬程式碼圖解說明此方法。 r0-r3:= inData LOOP: r4-r7 :=ShiftRows(SubBytes(MixCol(r0-r3))) r4-r7 :=AddRoundKey(r4-r7) r0-r3 :=ShiftRows(SubBytes(MixCol(r4-r7))) goto LOOP 對於AES解密,操作之排序係不同的且需要一單獨軟體例程。實例性 CRYA 軟體 : SHA
對於SHA,r0至r7工作暫存器之Grebe約束仍較具限制性。SHA演算法保持8×32位元工作狀態,且針對壓縮迴圈中之每一輪而旋轉暫存器: h := g g := f f := e e := d+
temp1 d := c c := b b := a a := temp1+
temp2 為了避免此旋轉及免除循環,CRYA軟體實施方案使用一半迴圈展開法,其中重複壓縮迴圈6次且使輸入資料交替。在一實施例中,一組合巨集經使用且旋轉輸入因數: SHACOMP_MACRO r0, r1, r2, r4, r5, r6, r7, r10, r8, r3, r12, r11, r9 SHACOMP_MACRO r6, r0, r1, r2, r4, r5, r7, r11, r8, r3, r12, r10, r9 SHACOMP_MACRO r5, r6, r0, r1, r2, r4, r7, r10, r8, r3, r12, r11, r9 SHACOMP_MACRO r4, r5, r6, r0, r1, r2, r7, r11, r8, r3, r12, r10, r9 SHACOMP_MACRO r2, r4, r5, r6, r0, r1, r7, r10, r8, r3, r12, r11, r9 SHACOMP_MACRO r1, r2, r4, r5, r6, r0, r7, r11, r8, r3, r12, r10, r9 在六輪之後,暫存器返回其初始位置中,且可使用一迴圈將此程序反覆所需次數。實例性 CRYA 軟體 : GCM
GCM軟體由兩部分組成:模式0及模式1。模式0僅進行一次,但比模式1之一次反覆需要更多次循環。在執行模式0之後,V14
、...、V8
以及Z7
處於RAM中。然後,針對Z0
、…、Z6
,在一迴圈中執行模式1。當計算Z0
至Z6
時,最佳效能藉由為每一循環供應32位元資料而達成。針對IOBUS上之每一次儲存,產生一經更新中間res_r (一個運算子循環)。由於每一運算元(A、B)將係依序位於記憶體中之128個資料位元,因此達成此之最快方式係在儲存運算元A之32個位元與儲存運算元B之32個位元之間進行交替: str r4, [r7, #0x40] //Store V1, V0 to state_r str r0, [r7, #0x58] //Store X1, X0 to state2_r 每一V儲存將把32位元V資料放置於state_r中,且同時將state_r之上半部複製至state2_r之上半部中並將state2_r之上半部移位至下半部中(參考章節2.3中之記憶體映射;位址偏移0x50)。此方式可使暫存器之量最小化同時使效能最佳化。 圖16中圖解說明此概念,其中使用state_r [31:0]及state2_r [15:0]之先前值在第三儲存操作之後可獲得第一結果。下一循環使至GFACC之資料輸入交替,使得v為{state_r [15:0], state2_r [31:16]}。 為產生Z0
,輸入資料為V7
、V6
、V5
、V4
、V3
、V2
、V1
、V0
。(參考表格5)。對於Z1
,不使用V0
,因此輸入資料為V8
、V7
、V6
、V5
、V4
、V3
、V2
、V1
。由於每一Vn
均係一16位元數,因此關於每一奇數Zn
都會遇到一未對準問題。如果V1
、V0
儲存於記憶體位置0x0000處且V3
、V2
儲存於0x0004處,那麼儲存{V2
, V1
}需要載入這兩個記憶體位置並在儲存至state_r之前在同一暫存器中將這兩個記憶體位置對準。為避免此,在CRYA中進行未對準資料處置之部分。不同儲存操作係針對不同位址偏移而定義,使得可儲存{V1
, V0
}後續接著{V3
, V2
},且具有作為{V2
, V1
}之所得state_r。表1中可看到此等變換。 對於經對準資料(Zn
,其中n為偶數)之情形,軟體程式碼將如下所示: ldr r4, [r6, #0x00] //Load V str r4, [r7, #0x50] //Store V1, V0 to state_r str r0, [r7, #0x54] //Store X1, X0 to state2_r 對於未對準資料(Zn
,其中n為奇數),軟體程式碼將如下所示: ldm r6!, {r3, r4} str r3, [r7, #0x58] //Store V1, V0 str r4, [r7, #0x5C] //Store V3, V2 //state_r is now V2, V1 str r0, [r7, #0x54] //Store X1, X0 to X 由於偶數及奇數Zn
必須以不同方式進行處置,因此為計算結果部分Z0
至Z6
,模式1迴圈將僅反覆3 ½次。以下虛擬程式碼展示模式1之迴圈結構。 r0-r3 := Operand B LOOP: GFACC (V, r0-r3) ldr GFACC res //Even Z str GFACC res to mem (Z) if MEMPOINTER=END goto END GFACC (Vmisaligned
, r0-r3) ldr GFACC res //Odd Z str GFACC res to mem (Z) goto LOOP 雖然此文件含有許多具體實施方案細節,但此等細節不應解釋為對可主張之內容之範圍之限制,而是應解釋為可為特定實施例特有之特徵之說明。在單獨實施例之上下文中在本說明書中闡述之特定特徵亦可以組合方式實施於一單個實施例中。相反地,在一單個實施例之上下文中闡述之各種特徵亦可單獨地或以任何適合子組合方式實施於多個實施例中。此外,儘管上文可將特徵闡述為以特定組合起作用且甚至最初係如此主張的,但來自一所主張組合之一或多個特徵在某些情形中可自該組合去除,且該所主張組合可針對於一子組合或一子組合之變化形式。
101‧‧‧加密輪
102‧‧‧最後加密輪
103‧‧‧解密輪
104‧‧‧最後解密輪
200‧‧‧暫存器至暫存器加速器架構/架構/暫存器至暫存器架構
201‧‧‧位址解碼器
202‧‧‧命令暫存器
203‧‧‧狀態暫存器
204‧‧‧變換邏輯
205‧‧‧AND閘
206‧‧‧多工器
300‧‧‧進入暫存器加速器架構/架構
301‧‧‧位址解碼器
302a‧‧‧變換邏輯
302b‧‧‧變換邏輯
302c‧‧‧變換邏輯
303‧‧‧多工器
304‧‧‧狀態暫存器
400‧‧‧CRYA模組
401‧‧‧SHA加速器/加速器
402‧‧‧AES加速器/加速器
403‧‧‧GFACC/GFACC加速器/加速器
404‧‧‧32位元暫存器
405‧‧‧32位元暫存器/暫存器
406‧‧‧16位元暫存器
800‧‧‧AES部分
801‧‧‧位址解碼器
802‧‧‧狀態暫存器
803‧‧‧暫存器
804‧‧‧命令暫存器/計數器
805‧‧‧暫存器/反相暫存器
806‧‧‧MixCol邏輯
807‧‧‧AND閘
808‧‧‧多工器/狀態多工器
809‧‧‧多工器
810‧‧‧多工器
811‧‧‧S盒
900‧‧‧S盒
1000‧‧‧多工器
1001‧‧‧暫存器
1002‧‧‧暫存器
1100‧‧‧加法器架構
1101‧‧‧暫存器
1102‧‧‧暫存器
1103‧‧‧暫存器
1104‧‧‧命令暫存器
1105‧‧‧多工器
1200‧‧‧SHA變換
1201‧‧‧位址解碼器
1202‧‧‧多工器
1203‧‧‧狀態暫存器
1301‧‧‧多工器
1302‧‧‧狀態暫存器
1303‧‧‧狀態暫存器
1304‧‧‧GFACC
1305‧‧‧暫存器
1306‧‧‧暫存器
102‧‧‧最後加密輪
103‧‧‧解密輪
104‧‧‧最後解密輪
200‧‧‧暫存器至暫存器加速器架構/架構/暫存器至暫存器架構
201‧‧‧位址解碼器
202‧‧‧命令暫存器
203‧‧‧狀態暫存器
204‧‧‧變換邏輯
205‧‧‧AND閘
206‧‧‧多工器
300‧‧‧進入暫存器加速器架構/架構
301‧‧‧位址解碼器
302a‧‧‧變換邏輯
302b‧‧‧變換邏輯
302c‧‧‧變換邏輯
303‧‧‧多工器
304‧‧‧狀態暫存器
400‧‧‧CRYA模組
401‧‧‧SHA加速器/加速器
402‧‧‧AES加速器/加速器
403‧‧‧GFACC/GFACC加速器/加速器
404‧‧‧32位元暫存器
405‧‧‧32位元暫存器/暫存器
406‧‧‧16位元暫存器
800‧‧‧AES部分
801‧‧‧位址解碼器
802‧‧‧狀態暫存器
803‧‧‧暫存器
804‧‧‧命令暫存器/計數器
805‧‧‧暫存器/反相暫存器
806‧‧‧MixCol邏輯
807‧‧‧AND閘
808‧‧‧多工器/狀態多工器
809‧‧‧多工器
810‧‧‧多工器
811‧‧‧S盒
900‧‧‧S盒
1000‧‧‧多工器
1001‧‧‧暫存器
1002‧‧‧暫存器
1100‧‧‧加法器架構
1101‧‧‧暫存器
1102‧‧‧暫存器
1103‧‧‧暫存器
1104‧‧‧命令暫存器
1105‧‧‧多工器
1200‧‧‧SHA變換
1201‧‧‧位址解碼器
1202‧‧‧多工器
1203‧‧‧狀態暫存器
1301‧‧‧多工器
1302‧‧‧狀態暫存器
1303‧‧‧狀態暫存器
1304‧‧‧GFACC
1305‧‧‧暫存器
1306‧‧‧暫存器
圖1係根據一實施例之圖解說明AES操作及CRYA加速之資料流之一流程圖。 圖2係根據一實施例之一暫存器至暫存器(REG至REG)加速器架構之一方塊圖。 圖3係根據一實施例之一進入暫存器(REGIN)加速器架構之一方塊圖。 圖4係根據一實施例之一密碼加速器(CRYA)模組之一方塊圖。 圖5係根據一實施例之圖解說明一CRYA位址映射之一表格。 圖6係根據一實施例之圖解說明一CRYA讀取位址映射之一表格。 圖7圖解說明根據一實施例之一AES移位列操作。 圖8係根據一實施例之一CRYA模組之一方塊圖。 圖9係根據一實施例之圖解說明經遮蔽S盒使用之一方塊圖。 圖10係根據一實施例之圖解說明SHA ch及maj計算之一方塊圖。 圖11係根據一實施例之圖解說明一SHA加法器使用操作之一方塊圖。 圖12係根據一實施例之圖解說明SHA訊息擴展操作之一方塊圖。 圖13係根據一實施例之圖解說明一GFACC操作之一方塊圖。 圖14係根據一實施例之圖解說明GFACC虛擬程式碼之一表格。 圖15圖解說明根據一實施例之一GCM 16位元XOR乘法。 圖16圖解說明根據一實施例之GF (2128
)平行乘法。 圖17圖解說明根據一實施例之GFACC半字組乘法。 圖18含有根據一實施例之分別圖解說明Z0
及Z1
計算之X及V輸入之表格。 圖19係根據一實施例之圖解說明部分Z計算之一V輸入之一表格。 圖20係根據一實施例之圖解說明一模式0 (x及v輸入)之一表格。 圖21圖解說明根據一實施例之GCM資料儲存及內移位操作。
Claims (20)
- 一種系統,其包括: 一中央處理單元(CPU); 記憶體,其儲存指令,該等指令在由該CPU執行時致使該CPU執行包括以下各項之操作: 獲得密碼資料,該密碼資料指示將對該密碼資料執行之一特定密碼程序; 根據該密碼程序對該密碼資料執行一第一密碼操作; 將該密碼資料發送至一硬體加速器;及 自該硬體加速器接收由該硬體加速器根據該密碼程序使用一第二密碼操作變換之密碼資料,該第二密碼操作不同於該第一密碼操作。
- 如請求項1之系統,其中該密碼程序來自包括以下各項之一密碼程序群組:進階加密標準(AES)、安全雜湊演算法(SHA)或伽羅瓦計數器模式(GCM)。
- 如請求項1之系統,其中該密碼資料包含該密碼操作之一位址,且該位址根據一別名暫存器映射而指示該密碼操作。
- 如請求項1之系統,其中該CPU中含有狀態向量及控制流。
- 如請求項1之系統,其中該密碼程序係AES,且該第二密碼操作包含使用一金鑰排程來計算輪金鑰。
- 如請求項1之系統,其中該密碼程序係AES,且該第二密碼操作係以下各項中之一者:SubBytes、Inverse SubBytes、ShiftRows、Inverse ShiftRows、MixColumn或Inverse MixColumn操作。
- 如請求項1之系統,其中該密碼程序係SHA,且該第二密碼操作係以下各項中之一者:訊息擴展迴圈及壓縮函數迴圈。
- 如請求項1之系統,其中該密碼程序係GCM,且該第二密碼操作係GF (2128 )中之一有限域乘法。
- 如請求項1之系統,其中將該密碼資料發送至一硬體加速器進一步包括: 在一寫入循環期間,將該密碼資料自一CPU暫存器寫入至該硬體加速器中之一狀態暫存器。
- 如請求項9之系統,其中該密碼資料在該寫入循環期間在被寫入至該狀態暫存器之前在該硬體加速器中經變換。
- 一種密碼加速器,其包括: 一介面,其經組態以接收密碼資料,該密碼資料指示將對該密碼資料執行之一特定密碼程序; 變換邏輯,其經組態以根據該密碼程序對該密碼資料執行一密碼操作,該變換邏輯包含用於針對複數個不同密碼程序執行密碼操作之邏輯;及 一狀態暫存器,其經組態以用於儲存該密碼操作之一結果。
- 如請求項11之密碼加速器,其中該密碼程序來自包括以下各項之一密碼程序群組:進階加密標準(AES)、安全雜湊演算法(SHA)或伽羅瓦計數器模式(GCM)。
- 如請求項11之密碼加速器,其中該介面包含一位址解碼器,且該密碼資料包含該密碼操作之一位址,該位址根據用於該密碼加速器之一別名暫存器映射而指示該密碼操作。
- 如請求項13之密碼加速器,其進一步包括用於儲存經解碼位址且用於控制該密碼操作之一命令暫存器。
- 如請求項11之密碼加速器,其中該密碼程序係AES,且該第二密碼操作包含使用一金鑰排程來計算輪金鑰。
- 如請求項11之密碼加速器,其中該密碼程序係AES,且該第二密碼操作係以下各項中之一者:SubBytes、Inverse SubBytes、ShiftRows、Inverse ShiftRows、MixColumn或Inverse MixColumn操作。
- 如請求項11之密碼加速器,其中該密碼程序係SHA,且該第二密碼操作係以下各項中之一者:訊息擴展迴圈及壓縮函數迴圈。
- 如請求項11之密碼加速器,其中該密碼程序係GCM,且該第二密碼操作係GF (2128 )中之一有限域乘法。
- 如請求項11之密碼加速器,其中將該密碼資料發送至一硬體加速器進一步包括: 在一寫入循環期間,將該密碼資料自一CPU暫存器寫入至該硬體加速器中之一狀態暫存器。
- 如請求項19之密碼加速器,其中該密碼資料在該寫入循環期間在被寫入至該狀態暫存器之前在該硬體加速器中經變換。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201662382703P | 2016-09-01 | 2016-09-01 | |
| US62/382,703 | 2016-09-01 | ||
| US15/679,134 | 2017-08-16 | ||
| US15/679,134 US10783279B2 (en) | 2016-09-01 | 2017-08-16 | Low cost cryptographic accelerator |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201812637A true TW201812637A (zh) | 2018-04-01 |
Family
ID=61167226
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106129644A TW201812637A (zh) | 2016-09-01 | 2017-08-31 | 低成本之密碼加速器 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US10783279B2 (zh) |
| CN (2) | CN116527234A (zh) |
| DE (1) | DE102017215331A1 (zh) |
| TW (1) | TW201812637A (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI785952B (zh) * | 2021-12-30 | 2022-12-01 | 新唐科技股份有限公司 | 密碼加速器以及加解密運算的差分故障分析方法 |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109804596B (zh) * | 2016-12-09 | 2023-05-09 | 密码研究公司 | 具有加掩码的输入的可编程块密码器 |
| CN109635586B (zh) * | 2018-12-13 | 2021-07-06 | 苏州科达科技股份有限公司 | 媒体文件加密密钥管理方法、系统、设备及存储介质 |
| KR102460248B1 (ko) * | 2019-02-21 | 2022-10-31 | 한국전자통신연구원 | 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 |
| US11303429B2 (en) * | 2019-06-28 | 2022-04-12 | Intel Corporation | Combined SHA2 and SHA3 based XMSS hardware accelerator |
| JP7383985B2 (ja) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
| US11368305B2 (en) * | 2020-05-11 | 2022-06-21 | Mastercard Technologies Canada ULC | Hardware security module extension |
| FR3111440B1 (fr) * | 2020-06-16 | 2024-02-16 | St Microelectronics Rousset | Protection d'un algorithme de chiffrement |
| EP4117223A1 (en) * | 2021-07-05 | 2023-01-11 | Terra Quantum AG | Method for determining a cryptographic key, computer program, and data processing system |
| DE102023001381B3 (de) | 2023-04-06 | 2024-06-27 | Sebastian Hilscher | Gerät mit flexibler Kommunikationsstruktur für echtzeitfähige Netzwerkanwendungen mit hoher Datensicherheit, insbesondere Automatisierungsgerät, und Verfahren zu dessen Konfiguration |
| CN118349215B (zh) * | 2024-06-17 | 2024-08-30 | 芯思原微电子有限公司 | 一种高度灵活的随机数熵源 |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7376967B1 (en) * | 2002-01-14 | 2008-05-20 | F5 Networks, Inc. | Method and system for performing asynchronous cryptographic operations |
| US7082477B1 (en) * | 2002-04-30 | 2006-07-25 | Cisco Technology, Inc. | Virtual application of features to electronic messages |
| US7376826B2 (en) * | 2002-05-31 | 2008-05-20 | Broadcom Corporation | Methods and apparatus for performing encryption and authentication |
| US7200868B2 (en) * | 2002-09-12 | 2007-04-03 | Scientific-Atlanta, Inc. | Apparatus for encryption key management |
| US20050149744A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Network processor having cryptographic processing including an authentication buffer |
| DE102004004799B4 (de) * | 2004-01-30 | 2010-02-18 | Advanced Micro Devices, Inc., Sunnyvale | Hardware/Software-Partitionierung für verschlüsselte WLAN-Verbindungen |
| US7543158B2 (en) * | 2004-03-23 | 2009-06-02 | Texas Instruments Incorporated | Hybrid cryptographic accelerator and method of operation thereof |
| US7554288B2 (en) * | 2006-03-10 | 2009-06-30 | Atmel Corporation | Random number generator in a battery pack |
| JP2007328461A (ja) * | 2006-06-06 | 2007-12-20 | Matsushita Electric Ind Co Ltd | 非対称マルチプロセッサ |
| WO2008128212A1 (en) * | 2007-04-12 | 2008-10-23 | Ncipher Corporation Ltd. | Method and system for identifying and managing encryption keys |
| US7970128B2 (en) * | 2007-07-20 | 2011-06-28 | Freescale Semiconductor, Inc. | Systems and methods for efficient generation of hash values of varying bit widths |
| CN101478311B (zh) * | 2009-01-22 | 2010-10-20 | 浙江大学 | bzip2压缩算法硬件加速实现方法 |
| US8949578B2 (en) * | 2009-04-27 | 2015-02-03 | Lsi Corporation | Sharing of internal pipeline resources of a network processor with external devices |
| US8930713B2 (en) * | 2010-03-10 | 2015-01-06 | Dell Products L.P. | System and method for general purpose encryption of data |
| US9135471B2 (en) * | 2010-03-10 | 2015-09-15 | Dell Products L.P. | System and method for encryption and decryption of data |
| EP2458522A1 (en) * | 2010-11-30 | 2012-05-30 | Nxp B.V. | Electronic component with configurable functionality |
| FR2985624B1 (fr) * | 2012-01-11 | 2014-11-21 | Inside Secure | Procede de chiffrement protege contre des attaques par canaux auxiliaires |
| ES2836139T3 (es) * | 2013-11-19 | 2021-06-24 | Circle Line International Ltd | Procedimientos y aparatos de minería de bloques |
| US9960909B2 (en) * | 2014-12-08 | 2018-05-01 | Open-Silicon Inc. | High speed and low power hashing system and method |
| US9503256B2 (en) * | 2014-12-24 | 2016-11-22 | Intel Corporation | SMS4 acceleration hardware |
| EP3086503B1 (en) * | 2015-04-23 | 2018-06-06 | Inside Secure | Fault detection for systems implementing a block cipher |
| US10212138B1 (en) * | 2015-06-19 | 2019-02-19 | Amazon Technologies, Inc. | Hardware security accelerator |
| US10313129B2 (en) * | 2015-06-26 | 2019-06-04 | Intel Corporation | Keyed-hash message authentication code processors, methods, systems, and instructions |
| US10126952B2 (en) * | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
| US10020934B2 (en) * | 2015-11-05 | 2018-07-10 | Intel Corporation | Hardware accelerator for cryptographic hash operations |
| US10103873B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
| US9910792B2 (en) * | 2016-04-11 | 2018-03-06 | Intel Corporation | Composite field scaled affine transforms-based hardware accelerator |
| US10033527B2 (en) * | 2016-06-30 | 2018-07-24 | Fortinet, Inc. | Dual-mode processing of cryptographic operations |
| US10218497B2 (en) * | 2016-08-31 | 2019-02-26 | Intel Corporation | Hybrid AES-SMS4 hardware accelerator |
-
2017
- 2017-08-16 US US15/679,134 patent/US10783279B2/en active Active
- 2017-08-31 CN CN202310501832.0A patent/CN116527234A/zh active Pending
- 2017-08-31 CN CN201710774916.6A patent/CN107800532B/zh active Active
- 2017-08-31 TW TW106129644A patent/TW201812637A/zh unknown
- 2017-09-01 DE DE102017215331.8A patent/DE102017215331A1/de active Pending
-
2020
- 2020-09-21 US US16/948,480 patent/US11841981B2/en active Active
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI785952B (zh) * | 2021-12-30 | 2022-12-01 | 新唐科技股份有限公司 | 密碼加速器以及加解密運算的差分故障分析方法 |
| US12425213B2 (en) | 2021-12-30 | 2025-09-23 | Nuvoton Technology Corporation | Cipher accelerator and differential fault analysis method for encryption/decryption operation |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116527234A (zh) | 2023-08-01 |
| US20180089467A1 (en) | 2018-03-29 |
| DE102017215331A1 (de) | 2018-03-01 |
| US20210004497A1 (en) | 2021-01-07 |
| US10783279B2 (en) | 2020-09-22 |
| CN107800532A (zh) | 2018-03-13 |
| CN107800532B (zh) | 2023-05-23 |
| US11841981B2 (en) | 2023-12-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11841981B2 (en) | Low cost cryptographic accelerator | |
| US10313107B2 (en) | Flexible architecture and instruction for advanced encryption standard (AES) | |
| CN103975302B (zh) | 矩阵乘法累加指令 | |
| US8417961B2 (en) | Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC) | |
| US8913740B2 (en) | Method and apparatus for generating an Advanced Encryption Standard (AES) key schedule | |
| CN118740368A (zh) | 密码替换盒操作中的错误检测 | |
| Fournier et al. | A Vectorial Approach to Cryptography Implementation | |
| Shamsuddin | A comparative study of AES implementations on ARM processors | |
| Botros et al. | Optimizing NORX for Atmel 8-bit AVR microcontrollers |