TWI835601B - 資料加密的回合密鑰擴展裝置及方法 - Google Patents
資料加密的回合密鑰擴展裝置及方法 Download PDFInfo
- Publication number
- TWI835601B TWI835601B TW112110163A TW112110163A TWI835601B TW I835601 B TWI835601 B TW I835601B TW 112110163 A TW112110163 A TW 112110163A TW 112110163 A TW112110163 A TW 112110163A TW I835601 B TWI835601 B TW I835601B
- Authority
- TW
- Taiwan
- Prior art keywords
- key
- circuit
- output
- parity
- bit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 36
- 238000012545 processing Methods 0.000 claims abstract description 86
- 238000004364 calculation method Methods 0.000 claims abstract description 16
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 8
- 230000011218 segmentation Effects 0.000 claims description 7
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000009434 installation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 42
- 238000006467 substitution reaction Methods 0.000 description 19
- 238000001514 detection method Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000006073 displacement reaction Methods 0.000 description 9
- 238000001727 in vivo Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004242 micellar liquid chromatography Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004809 thin layer chromatography Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本發明涉及一種資料加密的回合密鑰擴展裝置,包含:寄存器;鑰字處理電路;第一至第四互斥或閘。寄存器包含儲存八個雙字的組件,其中的第四個到第七個雙字的組件的輸出分別耦接到第零個到第三個雙字的組件的輸入。鑰字處理電路耦接寄存器的最後一個雙字的組件的輸出,設置以交錯運行在第一模式和第二模式;在第一模式時,依據最後一個雙字計算相應於偶數回合密鑰的第一中間運算結果;以及在所述第二模式時,依據最後一個雙字計算相應於奇數回合密鑰的第二中間運算結果。第一互斥或閘設置以對第零個雙字和鑰字處理電路的輸出進行逐位元邏輯互斥或運算,並且輸出第一運算結果至寄存器中的用於儲存所述第四個雙字的組件。第二互斥或閘設置以對第一個雙字和第一互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第二運算結果至寄存器中的用於儲存第五個雙字的組件。第三互斥或閘設置以對第二個雙字和第二互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第三運算結果至寄存器中的用於儲存第六個雙字的組件。第四互斥或閘設置以對第三個雙字和第三互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第四運算結果至寄存器中的用於儲存第七個雙字的組件。通過鑰字處理電路的設置,可較先前實施方式減少資料加密的回合密鑰擴展裝置的面積。
Description
本發明涉及資料加密,尤指一種資料加密的回合密鑰擴展裝置及方法。
由於現在的儲存裝置(例如,NAND閃存)常用來儲存系統程式碼、應用程式碼、驅動程式和使用者的隱私資料等,因此資料安全性是重要議題。高級加密標準(Advanced Encryption Standard,AES)是目前由美國聯邦政府採用的一種區塊加密標準,並且已經被多方驗證且廣為採用。然而,AES運作的過程中可能遭到惡意的攻擊,而讓AES編碼器錯誤的產生運算結果。或者是,晶片製作過程中有些暇疵,使得AES編碼器在運行一段時間後會產生不預期的運算結果。或者是,儲存裝置處在惡劣的環境下,讓AES編碼器中的部分元件失能而產生不預期的運算結果。錯誤的加密過程將使原始的使用者資料無法回復,造成巨大的損失。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種資料加密的回合密鑰擴展裝置,包含:寄存器;鑰字處理電路;第一至第四互斥或閘。寄存器包含儲存八個雙字的組件,其中的第四個到第七個雙字的組件的輸出分別耦接到第零個到第三個雙字的組件的輸入。鑰字處理電路耦接寄存器的最後一個雙字的組件的輸出,設置以交錯運行在第一模式和第二模式;在第
一模式時,依據最後一個雙字計算相應於偶數回合密鑰的第一中間運算結果;以及在所述第二模式時,依據最後一個雙字計算相應於奇數回合密鑰的第二中間運算結果。第一互斥或閘設置以對第零個雙字和鑰字處理電路的輸出進行逐位元邏輯互斥或運算,並且輸出第一運算結果至寄存器中的用於儲存所述第四個雙字的組件。第二互斥或閘設置以對第一個雙字和第一互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第二運算結果至寄存器中的用於儲存第五個雙字的組件。第三互斥或閘設置以對第二個雙字和第二互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第三運算結果至寄存器中的用於儲存第六個雙字的組件。第四互斥或閘設置以對第三個雙字和第三互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第四運算結果至寄存器中的用於儲存第七個雙字的組件。
上述實施例的優點之一,通過以上所述鑰字處理電路的設置,可較先前實施方式減少資料加密的回合密鑰擴展裝置的面積。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
132:匯流排
134:處理單元
136:隨機存取記憶體
137:高級加密標準編碼器
138:直接記憶體存取控制器
139:閃存介面
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
R#0:初始回合
R#1~R#9:中間回合
R#10:最終回合
S310#1~S310#10:替代位元組步驟
S320#1~S320#10:位移列步驟
S330#1~S330#9:混合行步驟
S340#1~S340#10:加上回合密鑰步驟
S350:擴展密鑰步驟
w[0,3]:基礎密鑰
w[4,7],w[36,39],w[40,43]:擴展後的密鑰
400:AES編碼器
410,430:AES編碼電路
450:比較器
500:AES編碼器
510:AES編碼電路
530:錯誤偵測電路
550:冗餘資料產生電路
570:冗餘密鑰產生電路
S0~S15:體
P0~P15:體內奇偶校驗位元
Q0~Q3:跨體奇偶校驗9位元
k0~k31:小鑰
R0~R31:小鑰內奇偶校驗位元
V0~V7:跨小鑰奇偶校驗9位元
810:AES資料處理電路
813:編碼電路
815:編碼錯誤檢查電路
830:AES密鑰排程電路
833:密鑰產生電路
835:密鑰錯誤檢查電路
850:或閘
870:控制器
912:資料寄存器
914:奇偶校驗碼寄存器
920:增強型替代位元組電路
930:位移列電路
940:混合行電路
950:加上回合密鑰電路
960:奇偶校驗檢查電路
970:奇偶校驗預測電路
980:多工器
1010:體內奇偶校驗位元預測電路
1030:跨體奇偶校驗9位元預測電路
1110:體內奇偶校驗位元產生電路
1120:位移列預測電路
1130:混合行預測電路
1140:多工器
1150:加上回合密鑰預測電路
1160:位移列電路
1210:多工器
1230:體內互斥或閘
1310:跨體奇偶校驗位元組產生電路
1330:跨小鑰奇偶校驗位元組分割電路
1350:跨體奇偶校驗位元組預測電路
1370:跨體奇偶校驗1位元預測電路
1390:跨體奇偶校驗9位元合併電路
1410:跨體奇偶校驗位元組分割電路
1430#0~1430#15,1430#i:增強型查表電路
1450:跨體奇偶校驗位元組合併電路
1510,2210:搜索電路
1530,2230:替代校驗電路
1610:計算電路
1630:乘法器
1650:比較器
1710,1750:密鑰分割電路
1712,1714:寄存器
1720,1730:鑰字處理電路
1725,1727,1729:互斥或閘
1742,1744:密鑰奇偶校驗碼產生電路
1752,1754,1782,1784:寄存器
1762,1764:密鑰奇偶校驗檢查電路
1772,1774:密鑰奇偶校驗預測電路
1810:鑰字分割電路
1820:旋轉鑰字電路
1830:替代鑰字電路
1840:捨去常數電路
1850:鑰字合併電路
1860:鑰字奇偶校驗產生電路
1870:鑰字奇偶校驗預測電路
1880:鑰字跨奇偶校驗預測電路
1890:鑰字奇偶校驗9位元合併電路
1930#0~1930#3:增強型查表電路
2010:互斥或閘
2110:鑰字分割電路
2130:替代鑰字電路
2150:鑰字合併電路
2160:鑰字奇偶校驗產生電路
2180:鑰字跨奇偶校驗預測電路
2190:鑰字奇偶校驗9位元合併電路
2300,2400:8轉14位元查找表
2500:AES密鑰排程電路
2520:鑰字處理電路
2521,2523,2525,2527:互斥或閘
2610:鑰字分割電路
2620:旋轉鑰字電路
2630,2680:多工器
2640:替代鑰字電路
2650:解多工器
2662,2664:奇偶校驗補償電路
2670:捨去常數電路
2690:鑰字合併電路
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為以128位元密鑰使用10個回合的演算法的高階示意圖。
圖4為依據一些實施方式的高級加密標準(Advanced Encryption Standard,AES)編碼器的方塊圖。
圖5為依據本發明實施例的AES編碼器的方塊圖。
圖6為依據本發明實施例的體、體內奇偶校驗位元和跨體奇偶校驗9位元的示意圖。
圖7為依據本發明實施例的小鑰、小鑰內奇偶校驗位元和跨小鑰奇偶校驗9位元的示意圖。
圖8為依據本發明實施例的AES編碼器的方塊圖。
圖9為依據本發明實施例的AES資料處理電路的方塊圖。
圖10為依據本發明實施例的奇偶校驗預測電路的方塊圖。
圖11為依據本發明實施例的體內奇偶校驗位元預測電路的方塊圖。
圖12為依據本發明實施例的體內奇偶校驗位元產生電路的方塊圖。
圖13為依據本發明實施例的跨體奇偶校驗9位元預測電路的方塊圖。
圖14為依據本發明實施例的增強型替代位元組電路的方塊圖。
圖15為依據本發明實施例的增強型查表電路的方塊圖。
圖16為依據本發明實施例的替代校驗電路的方塊圖。
圖17為依據本發明實施例的AES密鑰排程電路的方塊圖。
圖18為依據本發明實施例的鑰字處理電路的方塊圖。
圖19為依據本發明實施例的替代鑰字電路的方塊圖。
圖20為依據本發明實施例的捨去常數電路的示意圖。
圖21為依據本發明實施例的鑰字處理電路的方塊圖。
圖22為依據本發明實施例的增強型查表電路的方塊圖。
圖23和圖24為依據本發明實施例的8轉14位元查找表的示意圖。
圖25為依據本發明實施例的AES密鑰排程電路的方塊圖。
圖26為依據本發明實施例的雙模鑰字處理電路的方塊圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的「包含」、「包括」等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如「第一」、「第二」、「第三」等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,
或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為「連接」或「耦接」至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為「直接連接」或「直接耦接」至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如「介於」相對於「直接介於」,或者是「鄰接」相對於「直接鄰接」等等。
參考圖1。電子裝置10包含主機端(Host Side)110、閃存控制器130及閃存模組150,並且閃存控制器130及閃存模組150可合稱為裝置端(Device Side)。電子裝置10可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機、智慧型電視、智慧型電冰箱、車用電子系統(Automotive Electronics System)等電子產品之中。主機端110與閃存控制器130的主機介面(Host Interface)137可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)、通用快閃記憶儲存(Universal Flash Storage UFS)、嵌入式多媒體卡(Embedded Multi-Media Card eMMC)等通訊協定彼此溝通。閃存控制器130的閃存介面(Flash Interface)139與閃存模組150可以雙倍資料率(Double Data Rate DDR)通訊協定彼此溝通,例如,開放NAND快閃(Open NAND Flash Interface ONFI)、雙倍資料率開關(DDR Toggle)或其他通訊協定。閃存控制器130包含處理單元134,可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功
能。處理單元134通過主機介面131接收主機命令,例如讀取命令(Read Command)、寫入命令(Write Command)、抹除命令(Erase Command)等,排程並執行這些命令。閃存控制器130另包含隨機存取記憶體(Random Access Memory,RAM)136,可實施為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)或上述兩者的結合,用於配置空間作為資料緩衝區,儲存從主機端110讀取並即將寫入閃存模組150的主機資料,以及從閃存模組150讀取並即將輸出給主機端110的主機資料。隨機存取記憶體136另可儲存執行過程中需要的資料,例如,變數、資料表、主機-閃存對照表(Host-to-Flash H2F Table)、閃存-主機對照表(Flash-to-Host F2H Table)等。閃存介面139包含NAND閃存控制器(NAND Flash Controller NFC),提供存取閃存模組150時需要的功能,例如命令序列器(Command Sequencer)、低密度奇偶校驗(Low Density Parity Check LDPC)等。
閃存控制器130中可配置匯流排架構(Bus Architecture)132,用於讓元件之間彼此耦接以傳遞資料、位址、控制訊號等,這些元件包含主機介面131、處理單元134、RAM 136、高級加密標準(Advanced Encryption Standard,AES)編碼器137、直接記憶體存取(Direct Memory Access,DMA)控制器138、閃存介面139等。DMA控制器138可依據處理單元134的指令,通過匯流排架構132在元件間遷移資料,例如,將RAM 136的特定資料緩存器中的資料搬到AES編碼器137的特定寄存器(Register),將AES編碼器137的特定寄存器中的資料搬到RAM 136的特定資料緩存器等。
閃存模組150提供大量的儲存空間,通常是數百個千兆位元組(Gigabytes,GB),甚至是數個萬億位元組(Terabytes,TB),用於儲存大量的主機資料,例如高解析度圖片、影片等。閃存模組
150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可在抹除後組態為單層式單元(Single Level Cells,SLCs)、多層式單元(Multiple Level Cells,MLCs)三層式單元(Triple Level Cells,TLCs)、四層式單元(Quad-Level Cells,QLCs)或上述的任意組合。處理單元134通過閃存介面139寫入主機資料到閃存模組150中的指定位址(目的位址),以及從閃存模組150中的指定位址(來源位址)讀取主機資料。閃存介面139使用數個電子訊號來協調閃存控制器130與閃存模組150間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(Clock Signal)與控制訊號(Control Signal)。資料線可用於傳遞命令、位址、讀出及寫入的資料;控制訊號線可用於傳遞晶片致能(Chip Enable,CE)、位址提取致能(Address Latch Enable,ALE)、命令提取致能(Command Latch Enable,CLE)、寫入致能(Write Enable,WE)等控制訊號。
參考圖2,閃存模組150中的介面151可包含四個輸出入通道(I/O channels,以下簡稱通道)CH#0至CH#3,每個通道連接四個NAND閃存單元,例如,通道CH#0連接NAND閃存單元153#0、153#4、153#8及153#12。每個NAND閃存單元可封裝為獨立的芯片(Die)。閃存介面139可通過介面151發出致能訊號CE#0至CE#3中的一個來致能NAND閃存單元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接著以並行的方式從致能的NAND閃存單元讀取主機資料,或者寫入主機資料至致能的NAND閃存單元。
AES編碼器137實施一種Rijndael的變形演算法,其中使用固定的128位元大小的塊和128、192或256位元大小的基礎密鑰。AES編碼器137針對4x4以行為主的有序陣列(4x4 Column-major Order Array)的位元組進行操作,每個位元組稱為體(State)。大部分的AES計算都是在特定有限域(Finite Field)中完成的。例如,16個體S0、S1到S15可用以下二維陣列(Two-dimensional Array)表示:
AES加密中使用的密鑰大小決定了轉換回合的數目,此加密用以將輸入訊息(稱為明文)轉換成為最後輸出(稱為密文)。例如,128位元密鑰使用10個回合(n=10)加密,192位元密鑰使用12個回合(n=12)加密,256位元密鑰使用14個回合(n=14)加密。每個回合包含數個處理步驟(或者稱為操作),其中包含一個取決於加密密鑰本身的步驟。參考圖3所示的以128位元密鑰使用10個回合的演算法的高階示意圖。演算法使用擴展密鑰的步驟S350(也稱為AES密鑰排程),根據128位元基礎密鑰(Root Key)w[0,3]來擴展出多個回合所需要的密鑰。初始回合包含加上回合密鑰(Add-Round-Key)的步驟S340#0,用於加上回合密鑰,每個體使用逐位元的XOR運算合併上基礎密鑰w[0,3]中的相應位元組。接下來的9個回合,每個回合包含替代位元組(Substitute-Bytes)的步驟S310#i、位移列(Shift-Rows)的步驟S320#i、混合行(Mix-Columns)的步驟S330#i、加上回合密鑰的步驟S340#i,其中i為1到9之間的任意正整數。步驟S310#i是一個非線性替代的步驟,根據查找表(又可稱為Rijndael S-box)將每個體的值替換為另一個值,其中的查找表使用以下公式建立:SBi=Affine((i)-1)
SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。步驟S320#i是一個調換位置的步驟,將下面三列的每一者向左或向右循環位移指定步數。步驟S330#i執行線性混合操作,作用於行,用於將每一行的四個體進行合併。步驟S340#i用於加上回合密鑰,每個體使用逐位元的XOR運算合併上基礎密鑰w[i*4,i*4+3]
中的相應位元組。最後回合(也就是第10回合)包含步驟S310#10、S320#10、S340#10,其功能分別類似於步驟S310#i、S320#i、S340#i。雖然圖3只介紹了128位元密鑰使用10個回合的演算法,所屬技術領域人員理解192位元密鑰使用12個回合及256位元密鑰使用14個回合的演算法的技術細節,可從美國國家標準與技術研究院(National Institute of Standard and Technology,NIST)發表的標準文件中獲取。
由於在遭遇惡意攻擊、晶片瑕疵、惡劣環境等情況時,AES加密的過程中會發生錯誤而造成使用者資料無法回復的重大傷害。參考圖4,在一些實施方式的AES編碼器400中,包含兩套相同的用於實現如上所示演算法的AES編碼電路410和430。AES編碼器400另設置比較器450,用於從AES編碼電路410接收每個體的密文C#1,從AES編碼電路430接收每個體的密文C#2,並且比較兩者是否相同。如果相同,則比較器450輸出密文C#1和加密成功的訊息。如果不同,則比較器450輸出加密失敗的訊息,用於通知處理單元中運行的韌體,需要執行錯誤管理程序。然而,以上實施方式的AES編碼器400的面積大於兩套AES編碼電路的面積,造成製造成本上升。
為了讓AES編碼器的面積小於兩套AES編碼電路的面積,從一個方面來說,參考圖5,本發明實施例提出在AES編碼器500中除了設置用於實現如上所示演算法的AES編碼電路510之外,還設置面積較一套完整的AES編碼電路510更小的錯誤偵測電路530來完成加密過程是否發生錯誤的偵測。在每個體的加密過程中,錯誤偵測電路530使用比16個體及其所屬的回合密鑰更少的資訊來判斷整個加密過程中是否發生錯誤。如果判定沒有任何錯誤,則錯誤偵測電路530可輸出加密成功訊息。如果判定發生錯誤,則錯誤偵測電路530輸出加密失敗的訊息,用於通知處理單元中運行的韌體,需要執行錯誤管理程序。
冗餘資料產生電路550可在16個體附加上用於讓錯誤偵測電路530判斷加密過程中是否發生錯誤的冗餘資料,而冗餘資料是一種根據16個體中的值或者中間加密結果和AES加密演算法的預測結果。參考圖6,在一些實施例中,冗餘資料產生電路(Redundant-data Generation Circuitry)550可預測一個體內奇偶校驗位元(In-state Parity Bit),並且將體內奇偶校驗位元(當作第8個位元)附加在體(第0~7個位元)之後。需要注意的是,所屬技術領域人員不應依據上述的附加操作解讀為8位元的體和1位元的體內奇偶校驗位元實際儲存於9位元的連續空間,不同但等同的資料結構都是允許的。例如,冗餘資料產生電路550可預測體S0的體內奇偶校驗位元P0,預測體S1的體內奇偶校驗位元P1,依此類推。體和相應體內奇偶校驗位元之間的匹配可使用以下範例公式表示:
Pi代表第i個體的體內奇偶校驗位元的值,Si,j代表第i個體中的第j個位元的值,i為從0到15的正整數。當公式的兩邊相等時,代表第i個體和第i個體內奇偶校驗位元是匹配的。否則,代表兩者間不匹配。冗餘資料產生電路550可預測相應於每行的體的值及其體內奇偶校驗位元的一個跨體奇偶校驗9位元(Across-state Parity 9-bit)。例如,冗餘資料產生電路550可預測相應於體S0及其體內奇偶校驗位元P0、體S1及其體內奇偶校驗位元P1、體S2及其體內奇偶校驗位元P2和體S3及其體內奇偶校驗位元P3的跨體奇偶校驗9位元Q0,依此類推。每個行的多個體及其體內奇偶校驗位元和相應跨體奇偶校驗9位元之間的匹配可使用以下範例公式表示:
Q0,j代表第0個跨體奇偶校驗9位元的第j個位元的值,Q1,j代表第1個跨體奇偶校驗9位元的第j個位元的值,Q2,j代表第2個跨體奇偶校驗9位元的第j個位元的值,Q3,j代表第3個跨體奇偶校驗9位元的第j個位元的值,Si,j代表第i個體中的第j個位元的值,j為從0至8的任意整數。當第i個跨體奇偶校驗9位元中的每個位元等於第i行中的相應位元的加總(或者互斥或運算的結果)時,代表第i行的體及體內奇偶校驗位元和第i個跨體奇偶校驗9位元之間是匹配的。否則,代表兩者間不匹配。
從一個方面來說,AES編碼電路510和冗餘資料產生電路550是獨立且並行運行的,兩者之間不會進行資料和訊息交換。冗餘資料產生電路550使用冗餘資料更新演算法來產生預測冗餘資料,而冗餘資料更新演算法是從AES加密演算法推導出來的,使得AES編碼電路510產生的中間加密結果和冗餘資料產生電路550預測的冗餘資料能夠在加密明文過程中的每個特定中間點,在沒有發生錯誤的情況下,都能維持指定的數學關係。
冗餘密鑰產生電路(Redundant-key Generation Circuitry)570在每個基礎密鑰或者回合密鑰附加上用於讓錯誤偵測電路530判斷密鑰產生過程中是否發生錯誤的冗餘資料,而冗餘資料是一種根據基礎密鑰或者回合密鑰中的值和AES密鑰排程演算法的預測結果。參考圖7,以256位元基礎密鑰為例,冗餘密鑰產生電路570可先將基礎密鑰依序切分為32個位元組(每個位元組可稱為小鑰,Subkey),並組織為8行4列的矩陣。冗餘密鑰產生電路570可預測一個小鑰內奇偶校驗位元(In-subkey Parity Bit),並且將小鑰內奇偶校驗位元(當作第8個位元)附加在小鑰(第0~7個位元)之後。需要注意的是,所屬技術領域人員不能夠依據上述的附加操作解讀為8位元的小鑰和1位元的小鑰內奇偶校驗位元實際儲存於9位元的連續空間,不同但等同的資料結構都是允許的。例如,冗餘密鑰產生電路570
可預測小鑰k0的小鑰內奇偶校驗位元R0,預測小鑰k1的小鑰內奇偶校驗位元R1,依此類推。小鑰和小鑰內奇偶校驗位元之間的匹配可使用以下範例公式表示:
Ri代表第i個小鑰的小鑰內奇偶校驗位元的值,ki,j代表第i個小鑰中的第j個位元的值,i為從0到15的正整數。當公式的兩邊相等時,代表第i個小鑰和第i個小鑰內奇偶校驗位元是匹配的。否則,代表兩者間不匹配。冗餘密鑰產生電路570可預測相應於每行的小鑰的值及其小鑰內奇偶校驗位元的一個跨小鑰奇偶校驗9位元(Across-subkey Parity 9-bit)。例如,冗餘密鑰產生電路570可預測相應於小鑰k0及其小鑰內奇偶校驗位元R0、小鑰k1及其小鑰內奇偶校驗位元R1、小鑰k2及其小鑰內奇偶校驗位元R2和小鑰k3及其小鑰內奇偶校驗位元R3的跨小鑰奇偶校驗9位元V0,依此類推。每個行的多個小鑰及其小鑰內奇偶校驗位元和相應跨小鑰奇偶校驗9位元之間的匹配可使用以下範例公式表示:
V0,j代表第0個跨小鑰奇偶校驗9位元的第j個位元的值,V1,j代表第1個跨小鑰奇偶校驗9位元的第j個位元的值,V2,j代表第2個跨小鑰奇偶校驗9位元的第j個位元的值,V3,j代表第3個跨小鑰奇偶校驗9位元的第j個位元的值,V4,j代表第4個跨小鑰奇偶校驗9位元的第j個位元
的值,V5,j代表第5個跨小鑰奇偶校驗9位元的第j個位元的值,V6,j代表第6個跨小鑰奇偶校驗9位元的第j個位元的值,V7,j代表第7個跨小鑰奇偶校驗9位元的第j個位元的值,ki,j代表第i個小鑰中的第j個位元的值,j為從0至8的任意整數。當第i個跨小鑰奇偶校驗9位元中的每個位元等於第i行中的相應位元的加總(或者互斥或運算的結果)時,代表第i行的小鑰及小鑰內奇偶校驗位元和第i個跨小鑰奇偶校驗9位元之間是匹配的。否則,代表兩者間不匹配。
從一個方面來說,AES編碼電路510和冗餘密鑰產生電路570是獨立且並行運行的,兩者之間不會進行資料和訊息交換。冗餘密鑰產生電路570使用冗餘密鑰更新演算法來產生預測冗餘資料,而冗餘密鑰更新演算法是從AES加密演算法中的AES密鑰排程推導出來的,使得AES編碼電路510產生的回合密鑰和冗餘密鑰產生電路570預測的冗餘資料能夠在產生回合密鑰過程中的每個特定中間點,在沒有發生錯誤的情況下,都能維持指定的數學關係。
雖然圖5將AES編碼電路510、錯誤偵測電路530、冗餘資料產生電路550和冗餘密鑰產生電路570以不同方塊表示,但這只是為了讓讀者容易理解,所屬技術領域人員可在實際實現時,將AES編碼電路510、錯誤偵測電路530、冗餘資料產生電路550和冗餘密鑰產生電路570以適當的方式整合在一起,本發明並不因此局限。
從另一個方面來說,參考圖8,本發明實施例提出在AES編碼器137中設置AES資料處理電路(AES Data Processing Circuitry)810和AES密鑰排程電路(AES Key Schedule Circuitry)830。AES密鑰排程電路830包含密鑰產生電路833,用於完成如圖3所示的擴展密鑰步驟S350。控制器870發出控制訊號給AES密鑰排程電路830,用於驅動AES密鑰排程電路830根據基礎密鑰K0或者之前的回合密鑰Ki-2產生新的回合密鑰,並且輸出指定回合的回合密鑰Ki及其相應的冗餘資料(例如,小鑰內奇偶校驗位元R和跨小鑰奇偶校驗9位元V)
給AES資料處理電路810。AES密鑰排程電路830包含密鑰錯誤檢查電路835,設置以計算出相應於每個回合密鑰的冗餘資料;並且在擴展密鑰過程中的指定中間點發現任何回合密鑰和相應冗餘資料不匹配時,發出錯誤訊號ERR_KEY=1。回合密鑰可切分為16個小鑰且組織為4x4位元組陣列,每個小鑰為1位元組;冗餘資料包含相應於每個小鑰的小鑰內奇偶校驗位元,和相應於每個行的跨小鑰奇偶校驗9位元。密鑰錯誤檢查電路835在擴展密鑰過程中的指定中間點發現任何小鑰不匹配於相應小鑰內奇偶校驗位元時,或者發現相應於任何行的小鑰加上4個相應小鑰內奇偶校驗位元,不匹配於相應跨小鑰奇偶校驗9位元時,發出錯誤訊號ERR_KEY=1。
AES資料處理電路810包含編碼電路813,設置以實現如圖3所示的AES演算法中的替代位元組步驟S310、位移列步驟S320、混合行步驟S330和加上回合密鑰步驟S340。AES演算法包含多個回合,並且在每個回合中用於使用回合密鑰對明文或者中間加密結果進行編碼。控制器870發出控制訊號給AES資料處理電路810,用於驅動AES資料處理電路810來安排上述步驟的執行順序,以符合AES演算法的回合設置。AES資料處理電路810包含編碼錯誤檢查電路815,設置以計算出相應於明文或者中間加密結果的冗餘資料;在加密過程中的指定中間點發現中間加密結果和冗餘資料之間不匹配時,發出編碼錯誤訊號ERR_ENC=1。明文可切分為16個體且組織為4x4陣列,每個體為1位元組,冗餘資料包含相應於每個體的體內奇偶校驗位元,和相應於明文中的每個行的跨體奇偶校驗9位元。編碼錯誤檢查電路815在加密過程中的指定時間點發現任何所述體的中間加密結果不匹配於相應體內奇偶校驗位元時,或者發現相應於明文中的任何行的中間加密結果加上4個相應體內奇偶校驗位元,不匹配於相應跨體奇偶校驗9位元時,發出編碼錯誤訊號ERR_ENC=1。
或閘850耦接編碼錯誤檢查電路815和密鑰錯誤檢查電路835的輸出
端。當編碼錯誤檢查電路815輸出編碼錯誤訊號ERR_ENC=1和/或密鑰錯誤檢查電路835輸出密鑰錯誤訊號ERR_KEY=1時,或閘850輸出AES錯誤訊號ERR_AES=1給處理單元134。
參考圖9所示的AES資料處理電路810的方塊圖。資料寄存器912用於儲存在AES加密過程中產生的16位元組(也就是128比特)的中間或者最終結果,而奇偶校驗碼寄存器(Parity Registers)914用於儲存在AES加密過程中產生的相應於16位元組的中間或者最終結果的體內奇偶校驗位元和跨體奇偶校驗9位元。位移列電路(Shift-row Circuitry)930用於執行如如圖3所示的位移列的步驟S320,並且其結構為所屬技術領域人員所公知,為求簡明不再贅述。混合行電路(Mix-column Circuitry)940用於執行如如圖3所示的混合行的步驟S330,並且其結構為所屬技術領域人員所公知,為求簡明不再贅述。加上回合密鑰電路(Add-round-key Circuitry)950用於執行如如圖3所示的加上回合密鑰的步驟S340,並且其結構為所屬技術領域人員所公知,為求簡明不再贅述。
控制器870可在每個回合發出選擇訊號R_sel給多工器980和奇偶校驗預測電路(Parity Prediction Circuitry)970,用於控制流經指定電路的資料流。多工器980包含三個輸入端I0、I1及I2和一個輸出端O。輸入端I0耦接AES編碼器137的輸入腳位以接收16位元組的明文,輸入端I1耦接混合行電路940的輸出以接收16位元組的運算結果,輸入端I2耦接位移列電路930的輸出以接收16位元組的運算結果,輸出端O耦接加上回合密鑰電路950的輸入。詳細來說,在初始回合,控制器870可使用控制訊號R_sel控制多工器980將輸入端I0連接上輸出端O,使得從AES編碼器137的輸入腳位接收到的16位元組的明文S能夠饋入加上回合密鑰電路950。在中間回合(例如使用256位元密鑰的第1至第13回合),控制器870可使用控制訊號R_sel控制多工器980將輸入端I1連接上輸出端O,使得混合行電路940的輸出能夠饋
入加上回合密鑰電路950。在最終回合(例如使用256位元密鑰的第14回合),控制器870可使用控制訊號R_sel控制多工器980將輸入端I2連接上輸出端O,使得位移列電路930的輸出能夠饋入加上回合密鑰電路950。此外,在初始回合,控制器870可使用控制訊號R_sel控制奇偶校驗預測電路970,讓從AES編碼器137的輸入腳位接收到的16位元組的明文S能夠饋入奇偶校驗預測電路970,用於產生相應於明文的體內奇偶校驗位元P和跨體奇偶校驗9位元Q。在中間和最終回合,控制器870可使用控制訊號R_sel控制奇偶校驗預測電路970,讓增強型替代位元組電路920的輸出能夠饋入奇偶校驗預測電路970,用於產生相應於中間加密結果的體內奇偶校驗位元P和跨體奇偶校驗9位元Q。
參考圖10所示的奇偶校驗預測電路970的方塊圖。奇偶校驗預測電路970包含體內奇偶校驗位元預測電路(In-state Parity-bit Prediction Circuitry)1010和跨體奇偶校驗9位元預測電路(Across-state Parity-9-bit Prediction Circuitry)1030。體內奇偶校驗位元預測電路1010依據控制訊號R_sel選擇輸入明文S(相應於初始回合)或者中間加密結果S’(相應於中間或者最終回合),並且根據明文S/中間加密結果S’和小鑰內奇偶校驗位元R產生體內奇偶校驗位元P。跨體奇偶校驗9位元預測電路1030依據控制訊號R_sel選擇輸入明文S(相應於初始回合)或者中間加密結果S’(相應於中間或者最終回合),並且根據明文S/中間加密結果S’和跨小鑰奇偶校驗9位元V產生跨體奇偶校驗9位元Q。
參考圖11所示的體內奇偶校驗位元預測電路1010的方塊圖。控制器870可在每個回合發出選擇訊號R_sel給多工器1140和體內奇偶校驗位元產生電路1110,用於控制流經指定電路的資料流。多工器1140包含三個輸入端I0、I1及I2和一個輸出端O。輸入端I0耦接體內奇偶校驗位元產生電路1110的輸出以接收相應於明文的16位元的體內奇偶
校驗碼,輸入端I1耦接混合行預測電路1130的輸出以接收16位元的運算結果,輸入端I2耦接位移列預測電路1120的輸出以接收16位元的運算結果,輸出端O耦接加上回合密鑰預測電路1150的輸入。詳細來說,在初始回合,控制器870可使用控制訊號R_sel驅動體內奇偶校驗位元產生電路1110從AES編碼器137的輸入腳位接收16位元組的明文,並且控制多工器1140將輸入端I0連接上輸出端O,使得從體內奇偶校驗位元產生電路1110的輸出所接收到的相應於明文S的16位元的體內奇偶校驗碼能夠饋入加上回合密鑰預測電路1150。在中間回合(例如使用256位元密鑰的第1至第13回合),控制器870可使用控制訊號R_sel驅動體內奇偶校驗位元產生電路1110從資料寄存器912獲取16位元組的中間加密結果S’,並且控制多工器1140將輸入端I1連接上輸出端O,使得從混合行預測電路1130的輸出所接收到的相應於中間加密結果S’的16位元的體內奇偶校驗碼能夠饋入加上回合密鑰預測電路1150。在最終回合(例如使用256位元密鑰的第14回合),控制器870可使用控制訊號R_sel驅動體內奇偶校驗位元產生電路1110從資料寄存器912獲取16位元組的中間加密結果S’,並且控制多工器1140將輸入端I2連接上輸出端O,使得從位移列預測電路1120的輸出所接收到的相應於中間加密結果S’的16位元的體內奇偶校驗碼能夠饋入加上回合密鑰預測電路1150。
參考圖12所示的體內奇偶校驗位元產生電路1110的方塊圖。控制器870可在每個回合發出選擇訊號R_sel給多工器1210,用於控制流經指定電路的資料流。多工器1210包含兩個輸入端I0及I1和一個輸出端O。詳細來說,在初始回合,控制器870可使用控制訊號R_sel控制多工器1210將輸入端I0連接上輸出端O,使得從AES編碼器137的輸入腳位所接收到的16位元組的明文S能夠饋入體內互斥或閘1230。在中間和最終回合(例如使用256位元密鑰的第1至第14回合),控制器870可使用控制訊號R_sel控制多工器1210將輸入端I1連接上輸
出端O,使得從資料寄存器912獲取16位元組的中間加密結果S’能夠饋入體內互斥或閘1230。體內互斥或閘1230包含多個互斥或閘,安排以依據接收到的16位元組的明文S或者中間加密結果S’,產生如圖6所示的體內奇偶校驗位元P0至P15。
混合行預測電路1130耦接位移列預測電路1120和位移列電路1160的輸出,使用所屬技術領域人員所習知的16個公式,每個公式加總位移後的明文S或中間加密結果S’的4x4位元組陣列以及位移後的體內奇偶校驗位元的4x4位元陣列中指定部分的值,產生混合後的體內奇偶校驗位元的矩陣中的指定的值。
加上回合密鑰預測電路1150使用以下公式計算體內奇偶校驗位元的加密後結果:P(out) i=P(in) i+Ri
P(out) i代表輸出的第i個體的體內奇偶校驗位元,P(in) i代表輸入的第i個體的體內奇偶校驗位元,Ri代表第i個小鑰內奇偶校驗位元,i為從0至15的任意整數。需要注意的是,此時P(in) i和P(out) i所對應到的矩陣中的位置指的是混合行預測電路1130所輸出矩陣中的位置,不是對應到體內奇偶校驗位元產生電路1110所輸出矩陣中的位置。
參考圖13所示的跨體奇偶校驗9位元預測電路1030的方塊圖。控制器870可在每個回合發出選擇訊號R_sel給跨體奇偶校驗位元組產生電路1310,用於控制跨體奇偶校驗位元組產生電路1310輸入的資料流。詳細來說,在初始回合,控制器870可使用控制訊號R_sel驅動跨體奇偶校驗位元組產生電路1310從AES編碼器137的輸入腳位接收16位元組的明文,使得跨體奇偶校驗位元組產生電路1310依據明文S的16位元組產生跨體奇偶校驗位元組。在中間回合(例如使用256位元密鑰的第1至第13回合)或者最終回合(例如使用256位元密鑰的第14回合),控制器870可使用控制訊號R_sel驅動跨體奇偶校驗位元組產生電路1310從資料寄存器912獲取16位元組的中間加密結果S’,使得跨體奇偶校驗位元組產生電路1310依據中間加密結
果S’的16位元組產生跨體奇偶校驗位元組。
跨體奇偶校驗位元組產生電路1310包含多個互斥或閘,在初始回合安排以依據接收到的16位元組的明文S,完成如圖6所示的跨體奇偶校驗位元組(不包含相應於體內奇偶校驗位元的第8位元)Q0,0..7至Q3,0..7。在中間回合或者最終回合安排以依據接收到的16位元組的中間加密結果S’,並且使用以下公式計算跨體奇偶校驗位元組(不包含相應於體內奇偶校驗位元的第8位元)Q0,0..7至Q3,0..7:Q 0,j =S' 0,j +S' 5,j +S' 10,j +S' 15,j ,f or j=0~7
Q 1,j =S' 4,j +S' 9,j +S' 14,j +S' 3,j ,f or j=0~7
Q 2,j =S' 8,j +S' 13,j +S' 2,j +S' 7,j ,f or j=0~7
Q 3,j =S' 12,j +S' 1,j +S' 6,j +S' 11,j ,f or j=0~7
Q0,j到Q3,j分別代表第0個到第3個跨體奇偶校驗位元組的第j個位元的值,S’0,j到S’15,j分別代表相應於第0個到第15個中間加密結果中的第j個位元的值。
跨小鑰奇偶校驗位元組分割電路(Across-subkey Parity-byte Split Circuitry)1330移除每個跨小鑰奇偶校驗9位元的第8個位元,成為跨小鑰奇偶校驗位元組,並且將跨小鑰奇偶校驗位元組饋入跨體奇偶校驗位元組預測電路1350。
Q(out) 0,j代表輸出的第0個跨體奇偶校驗位元組的第j個位元的值,Q(out) 1,j代表輸出的第1個跨體奇偶校驗位元組的第j個位元的值,
Q(out) 2,j代表輸出的第2個跨體奇偶校驗位元組的第j個位元的值,Q(out) 3,j代表輸出的第3個跨體奇偶校驗位元組的第j個位元的值,Q(in) i,j代表輸入的第i個跨體奇偶校驗位元組的第j個位元的值,Vi,j代表第i個跨小鑰奇偶校驗位元組中的第j個位元的值。
Q0,8代表第0個行的跨體奇偶校驗9位元的第8個位元的值,Q1,8代表第1個行的跨體奇偶校驗9位元的第8個位元的值,Q2,8代表第2個行的跨體奇偶校驗9位元的第8個位元的值,Q3,8代表第3個行的跨體奇偶校驗9位元的第8個位元的值,Pi,8代表相應於第i個體的體內奇偶校驗位元(也就是第8個位元)的值。
跨體奇偶校驗9位元合併電路(Across-state Parity-9-bit Concatenation Circuitry)1390將每個從跨體奇偶校驗位元組預測電路1350輸出的跨體奇偶校驗位元組,附加上從跨體奇偶校驗1位元預測電路1370輸出的相應第8個位元,成為完整的跨體奇偶校驗9位元。
參考回圖9,奇偶校驗檢查電路(Parity Check Circuitry)960檢查上一回合的執行結果是否發生錯誤。奇偶校驗檢查電路960從資料寄存器912獲取中間加密結果S’,以及從奇偶校驗碼寄存器914獲取相應於中間加密結果S’的體內奇偶校驗位元P和跨體奇偶校驗9位元Q。奇偶校驗檢查電路960判斷中間的加密結果S’和體內奇偶校驗位元P之間是否匹配,如果不匹配,則發出線性錯誤訊號err_L=1給處理單元134,使得處理單元134執行任何因應AES加密錯誤的管理程序。奇偶校驗檢查電路960還判斷中間的加密結果S’、中間的體內奇偶
校驗位元P和跨體奇偶校驗9位元Q之間是否匹配,如果不匹配,則發出線性錯誤訊號err_L=1給處理單元134。
增強型替代位元組電路(Enhanced Substitute-byte Circuitry)920除了完成演算法中的替代位元組步驟S310之外,也要檢查此步驟的執行結果是否正確。參考圖14所示的增強型替代位元組電路920的方塊圖。跨體奇偶校驗位元組分割電路1410從資料寄存器912獲取128位元的中間結果S’,切分為16個位元組,並且將這16個位元組分別饋入增強型查表電路1430#0至1430#15。增強型查表電路1430#0至1430#15中的每一個完成替代位元組步驟S310,並且判斷此操作是否正確。如果增強型查表電路1430#0至1430#15中的任何一個發現此操作錯誤,則輸出非線性錯誤訊號err_nl_i=1,i為0到15的正整數。只要任何一個增強型查表電路輸出非線性錯誤訊號err_nl_i,則增強型替代位元組電路920輸出非線性錯誤訊號err_nL=1給處理單元134,使得處理單元134執行任何因應AES加密錯誤的管理程序。跨體奇偶校驗位元組合併電路1450搜集增強型查表電路1430#0至1430#15的查表結果,並且將轉換後的128位元輸出到位移列電路930。
在一些實施例中,參考圖15所示的增強型查表電路1430#i的方塊圖,i為0到15的正整數。搜索電路1510依據如上所述的查找表將輸入的1個位元組S’(in)轉換出1個位元組S’(out)。替代校驗電路(Substitution Check Circuitry)1530從搜索電路1510接收轉換後的1個位元組S’(out),並且使用相應於查找表的公式判斷S’(in)轉換到S’(out)的過程中是否發生錯誤。如果發現錯誤,則替代校驗電路1530輸出非線性錯誤訊號err_nl_i=1。
參考圖16所示的替代校驗電路1530的方塊圖。計算電路1610從搜索電路1510獲取轉換後的位元組S’(out) i,計算Affine(S’(out) i)-1,Affine()-1代表Affine轉換的反函數,並且將計算結果輸出到乘法器1630和比較器1650。乘法器1630將S’(in) i乘上Affine(S’(out) i)-1以產生S’(mul) i。比
較器1650實施以下邏輯運算式來產生判斷結果:err_nl_i=0,if(S’(mul) i==1)&&(S’(in) i!=0)&&(Affine(S’(out) i)-1!=0)
err_nl_i=0,if(S’(mul) i==0)&&(S’(in) i==0)&&(Affine(S’(out) i)-1==0)
err_nl_i=1,otherwise
當err_nl_i等於1時,代表發生非線性錯誤訊號。
在另一些實施例中,步驟S310可以使用8轉K位元查找表(8-to-K S-box),將每個體的值替換為另一個值,其中,K為10到15之間的正整數。查找表中的每個單元格(Cell)的最高8位元使用以下公式建立:SBi=Affine((i)-1)
SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。查找表中的每個單元格的其他位元為漢明奇偶校驗碼(Hamming Parity),這K-8個位元依據相應最高8位元分別使用K-8個不同的公式來產生。參考圖22所示的增強型查表電路1430#i的方塊圖,i為0到15的正整數。舉例來說,搜索電路2210依據8轉14位元查找表將輸入的1個位元組S’(in)轉換出1個位元組S’(out)和6個位元的漢明奇偶校驗碼Hm。替代校驗電路2230從搜索電路2210接收轉換後的1個位元組S’(out)和6個位元的漢明奇偶校驗碼Hm,並且使用相應於查找表的6個公式判斷S’(in)轉換到S’(out)的過程中是否發生錯誤。如果發現錯誤,則替代校驗電路1530輸出非線性錯誤訊號err_nl_i=1。
以下舉兩個範例來說明替代校驗電路2230的運行。在第一個範例中,參考圖23所示的8轉14位元查找表2300。為了方便說明,8轉14位元查找表2300中的每個單元格包含4個16進位數字,但是第1至第0位元為虛假值,永遠為“0b00”。實際運行時,搜索電路2210只會轉出14位元的結果。舉例來說,理論上,搜索電路2210根據8轉14位元查找表2300,會將位元組S’(in)“0b00000000”轉換為14位元“0b01100011010111”(圖23中的16進位表示為“0x635C”),將位元
組S’(in)“0b00000001”轉換為14位元“0b01111100110001”(圖23中的16進位表示為“0x7CC8”),依此類推,其中,轉換後的第13至第6位元為最高位元組,相符於如上所述的公式,轉換後的第5至第0位元為漢明奇偶校驗碼。如果轉換的過程中發生錯誤,替代校驗電路2230發現轉換後的最高位元組(也就是第13至第6位元)S’(out)和轉換後的第5至第0位元的漢明奇偶校驗碼Hm之間不匹配。
因應圖23的8轉14位元查找表2300,替代校驗電路2230可依據轉換後的最高位元組S’(out),使用以下6個公式分別對漢明奇偶校驗碼Hm中的6個位元進行檢查:Hm5==S’(out) 7+S’(out) 6+S’(out) 5+S’(out) 4+S’(out) 3+S’(out) 2+S’(out) 1+S’(out) 0
Hm4==S’(out) 7+S’(out) 4+S’(out) 0
Hm3==S’(out) 6+S’(out) 5+S’(out) 1+S’(out) 0
Hm2==S’(out) 4+S’(out) 2+S’(out) 1
Hm1==S’(out) 5+S’(out) 3+S’(out) 2
Hm0==S’(out) 7+S’(out) 6+S’(out) 3
其中,Hm5至Hm0分別代表漢明奇偶校驗碼中的第5至第0個位元,S’(out) 7至S’(out) 0分別代表轉換後的最高位元組的第7至第0個位元。當替代校驗電路2230偵測到任何一個或以上的公式不成立時,判定轉換後的最高位元組S’(out)和轉換後的漢明奇偶校驗碼Hm之間不匹配,發現錯誤。
在第二個範例中,參考圖24所示的8轉14位元查找表2400。為了方便說明,8轉14位元查找表2400中的每個單元格包含4個16進位數字,但是第1至第0位元為虛假值,永遠為“0b00”。同樣的,實際運行時,搜索電路2210只會轉出14位元的結果。舉例來說,理論上,搜索電路2210根據8轉14位元查找表2400,會將位元組S’(in)“0b00000000”轉換為14位元“0b01100011011000”(圖24中的16進位表示為“0x6360”),將位元組S’(in)“0b00000001”轉換為14位元
“0b01111100110001”(圖24中的16進位表示為“0x7CC8”),依此類推,其中,轉換後的第13至第6位元同樣相符於如上所述的公式,轉換後的第5至第0位元為漢明奇偶校驗碼。如果轉換的過程中發生錯誤,替代校驗電路2230發現轉換後的最高位元組(也就是第13至第6位元)S’(out)和轉換後的第5至第0位元的漢明奇偶校驗碼Hm之間不匹配。
因應圖24的8轉14位元查找表2400,替代校驗電路2230可依據轉換後的最高位元組S’(out),使用以下6個公式分別對漢明奇偶校驗碼Hm中的6個位元進行檢查:Hm5==S’(out) 7+S’(out) 6+S’(out) 5+S’(out) 4+S’(out) 3+S’(out) 2+S’(out) 1+S’(out) 0
Hm4==S’(out) 7+S’(out) 4+S’(out) 0
Hm3==S’(out) 5+S’(out) 2+S’(out) 1+S’(out) 0
Hm2==S’(out) 6+S’(out) 4+S’(out) 1
Hm1==S’(out) 6+S’(out) 5+S’(out) 3
Hm0==S’(out) 7+S’(out) 3+S’(out) 2
其中,Hm5至Hm0分別代表漢明奇偶校驗碼中的第5至第0個位元,S’(out) 7至S’(out) 0分別代表轉換後的最高位元組的第7至第0個位元。當替代校驗電路2230偵測到任何一個或以上的公式不成立時,判定轉換後的最高位元組S’(out)和轉換後的漢明奇偶校驗碼Hm之間不匹配,發現錯誤。
資料寄存器912、搜索電路1510、位移列電路930、混合行電路940、多工器980和加上回合密鑰電路950可視為AES編碼電路。奇偶校驗碼寄存器914、替代校驗電路1530、奇偶校驗檢查電路960和奇偶校驗預測電路970可視為錯誤檢查電路。
參考圖17所示的AES密鑰排程電路830的方塊圖。密鑰分割電路1750將256位元的基礎密鑰K0切分為2個密鑰K#0和K#1,每個鑰字的長度為128位元,相同於一個體的長度。密鑰奇偶校驗碼產生電
路(Key Parity Generation Circuitry)1742包含多個互斥或閘,安排以依據接收到的密鑰K#0,產生如圖7所示的小鑰內奇偶校驗位元R0至R15(可統稱為R#0),以及跨小鑰奇偶校驗9位元V0至V3(可統稱為V#0),並且將小鑰內奇偶校驗位元R#0和跨小鑰奇偶校驗9位元V#0儲存到寄存器1752。密鑰奇偶校驗碼產生電路1744包含多個互斥或閘,安排以依據接收到的密鑰K#1,產生如圖7所示的小鑰內奇偶校驗位元R16至R31(可統稱為R#1),以及跨小鑰奇偶校驗9位元V4至V7(可統稱為V#1),並且將小鑰內奇偶校驗位元R#1和跨小鑰奇偶校驗9位元V#1儲存到寄存器1754。寄存器1752和1754又可稱為目前周期奇偶校驗寄存器(Current Cycle Parity Registers)。
密鑰奇偶校驗檢查電路(Key Parity Check Circuitry)1762和1764分別檢查密鑰K#0和K#1的產生是否發生錯誤。密鑰奇偶校驗檢查電路1762從密鑰分割電路1750獲取密鑰K#0,以及從寄存器1752獲取相應於密鑰K#0的小鑰內奇偶校驗位元R#0和跨小鑰奇偶校驗9位元V#0。密鑰奇偶校驗檢查電路1762判斷密鑰K#0和小鑰內奇偶校驗位元R#0之間是否匹配,如果不匹配,則發出密鑰錯誤訊號err_kc=1。密鑰奇偶校驗檢查電路1762還判斷密鑰K#0、小鑰內奇偶校驗位元R#0和跨小鑰奇偶校驗9位元V#0之間是否匹配,如果不匹配,則發出密鑰錯誤訊號err_kc=1。密鑰奇偶校驗檢查電路1764從密鑰分割電路1750獲取密鑰K#1,以及從寄存器1754獲取相應於密鑰K#1的小鑰內奇偶校驗位元R#1和跨小鑰奇偶校驗9位元V#1。密鑰奇偶校驗檢查電路1764判斷密鑰K#1和小鑰內奇偶校驗位元R#1之間是否匹配,如果不匹配,則發出密鑰錯誤訊號err_kd=1。密鑰奇偶校驗檢查電路1764還判斷密鑰K#1、小鑰內奇偶校驗位元R#1和跨小鑰奇偶校驗9位元V#1之間是否匹配,如果不匹配,則發出密鑰錯誤訊號err_kd=1。密鑰錯誤訊號err_kc=1或者err_kd=1可觸發處理單元134執行任何因應AES密鑰錯誤的管理程序。
密鑰分割電路1710將256位元的基礎密鑰K0切分為8個鑰字(Word)W0,0至W0,3和W1,0至W1,3,每個鑰字的長度為4個位元組,並且將8個鑰字儲存在寄存器1712。鑰字處理電路1720根據最後一個鑰字W1,3產生一個鑰字的中間運算結果,此運算結果被用來和第一個鑰字W0,0進行逐位元邏輯互斥或運算(Bitwise Logical XOR Operation),以產生密鑰K#2的第一個鑰字W2,0。除了產生中間運算結果以外,鑰字處理電路1720還可以檢查中間運算結果的產生過程是否發生錯誤。如果是,則鑰字處理電路1720輸出密鑰錯誤訊號err_ka=1。密鑰錯誤訊號err_ka=1可觸發處理單元134執行任何因應AES密鑰錯誤的管理程序。
參考圖18所示的鑰字處理電路1720的方塊圖。鑰字分割電路1810從寄存器1712讀取最後一個鑰字W1,3,並且切分為4個小鑰,每個小鑰為1位元組。旋轉鑰字電路(Rotate-Word Circuitry)1820將這4個小鑰向左循環位移1個小鑰。替代鑰字電路(Substitute-Word Circuitry)1830根據查找表(又可稱為Rijndael S-box)將每個位移後小鑰的值替換為另一個值,其中的查找表使用以下公式建立:SBi=Affine((i)-1),for i=0~127
SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。替代鑰字電路1830除了完成每個輸入位元組的值的轉換之外,也要檢查轉換的執行結果是否正確。
參考圖19所示的替代鑰字電路1830的方塊圖。增強型查表電路1930#0至1930#3中的每一個完成相應位元組的值的替換操作,並且判斷此操作是否正確。如果增強型查表電路1930#0至1930#3中的任何一個發現此操作錯誤,則輸出查表錯誤訊號err_w_i=1,i為0到3的正整數。只要任何一個增強型查表電路輸出查表錯誤訊號err_w_i,則替代鑰字電路1830輸出密鑰錯誤訊號err_ka=1給處理單元134,使得處理單元134執行任何因應AES加密錯誤的管理程序。由於增強
型查表電路1930#0至1930#3中的任一個的電路結構、功能和操作細節類似於增強型查表電路1430#i,所以讀者可參考圖15、圖16、圖22至圖24的描述,為求簡明不再贅述。
參考回圖18,捨去常數電路(Round-Constant Circuitry)1840將鑰字w#0(in)和常數C執行逐位元互斥或(XOR)操作。參考圖20所示的捨去常數電路1840的示意圖。XOR閘2010設置將鑰字w#0(in)的每個位元和常數C的相應位元執行邏輯互斥或操作。
鑰字合併電路(Word Concatenation Circuitry)1850從捨去常數電路1840獲取4個小鑰w#0至w#3,合併小鑰w#0至w#3為完整的鑰字W(out),並且輸出鑰字W(out)至互斥或閘1725。
鑰字奇偶校驗產生電路(Word Parity Generation Circuitry)1860包含小鑰內奇偶校驗產生電路和跨小鑰奇偶校驗產生電路。小鑰內奇偶校驗產生電路包含多個互斥或閘,安排以依據從替代鑰字電路1830接收到的小鑰w#0至w#3,產生4個小鑰內奇偶校驗位元rt10至rt13。跨小鑰奇偶校驗產生電路包含多個互斥或閘,安排以依據從替代鑰字電路1830接收到的小鑰w#0至w#3,產生1個跨小鑰奇偶校驗位元組vt10..7。
鑰字奇偶校驗預測電路(Word Parity Prediction Circuitry)1870包含小鑰內奇偶校驗預測電路和跨小鑰奇偶校驗預測電路。小鑰內奇偶校驗預測電路使用以下公式預測小鑰內奇偶校驗位元rt10 (out),並且輸出到鑰字跨奇偶校驗預測電路(Word Cross-parity Prediction Circuit)1880和密鑰奇偶校驗預測電路(Key Parity Prediction Circuit)1772:
rt10 (out)代表計算後的第0個小鑰內奇偶校驗位元,rt10 (in)代表從鑰字奇偶校驗產生電路1860接收到的第0個小鑰內奇偶校驗位元,Ci代表
捨去常數電路1840中使用的常數C中的第i個位元。此外,小鑰內奇偶校驗預測電路直接輸出從鑰字奇偶校驗產生電路1860接收到的小鑰內奇偶校驗位元rt11至rt13到鑰字跨奇偶校驗預測電路1880和密鑰奇偶校驗預測電路1772。跨小鑰奇偶校驗預測電路使用以下公式預測跨小鑰奇偶校驗位元組,並且輸出到鑰字奇偶校驗9位元合併電路(Word Parity 9-bit Concatenation Circuit)1890:vt10..7 (out)=vt10..7 (in)+C
vt10..7 (out)代表輸出的跨小鑰奇偶校驗位元組,vt10..7 (in)代表從鑰字奇偶校驗產生電路1860接收到的跨小鑰奇偶校驗位元組,C代表捨去常數電路1840中使用的常數。
vt18代表跨小鑰奇偶校驗9位元vt的最後一個位元,rt1i代表第i個小鑰內奇偶校驗位元。
鑰字奇偶校驗9位元合併電路1890將鑰字奇偶校驗預測電路1870的計算結果vt10..7合併上鑰字跨奇偶校驗預測電路1880的計算結果vt18,成為跨鑰字奇偶校驗9位元vt10..8,並且輸出到密鑰奇偶校驗電路1772。
參考回圖17,鑰字處理電路1730根據互斥或閘1727的運算結果(也就是鑰字W2,3)產生一個鑰字的中間運算結果,此運算結果被用來和鑰字W1,0進行逐位元邏輯互斥或運算,以產生密鑰K#3的第一個鑰字W3,0。除了產生中間運算結果以外,鑰字處理電路1730還可以檢查中間運算結果的產生過程是否發生錯誤。如果是,則鑰字處理電路1730輸出密鑰錯誤訊號err_kb=1。密鑰錯誤訊號err_kb=1可觸發處理單元134執行任何因應AES密鑰錯誤的管理程序。
參考圖21所示的鑰字處理電路1730的方塊圖。鑰字分割電路2110從
互斥或閘1727讀取運算結果(也就是鑰字W2,3),並且切分為4個位元組。替代鑰字電路2130根據查找表將每個位元組的值替換為另一個值,其中的查找表使用以下公式建立:SBi=Affine((i)-1),for i=0~127
SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。替代鑰字電路2130除了完成每個輸入位元組的值的轉換之外,也要檢查轉換的執行結果是否正確。由於替代鑰字電路2130的電路結構、功能和運算結果類似於替代鑰字電路1830,所以讀者可參考圖15、圖16、圖19和圖22的描述,為求簡明不再贅述。只要替代鑰字電路2130中的任何一個增強型查表電路輸出查表錯誤訊號err_w_i,則替代鑰字電路2130輸出密鑰錯誤訊號err_kb=1給處理單元134,使得處理單元134執行任何因應AES加密錯誤的管理程序。
鑰字合併電路2150從替代鑰字電路2130獲取替代後的4個小鑰w#0至w#3,合併小鑰w#0至w#3為完整的鑰字W(out),並且輸出鑰字W(out)至互斥或閘1729。
鑰字奇偶校驗產生電路2160包含小鑰內奇偶校驗產生電路和跨小鑰奇偶校驗產生電路。小鑰內奇偶校驗產生電路包含多個互斥或閘,安排以依據從替代鑰字電路2130接收到的小鑰w#0至w#3,產生相應於小鑰w#0至w#3的四個小鑰內奇偶校驗位元rt20至rt23。這四個小鑰內奇偶校驗位元rt20至rt23輸出至鑰字跨奇偶校驗預測電路2180和密鑰奇偶校驗預測電路1774。跨小鑰奇偶校驗產生電路包含多個互斥或閘,安排以依據從替代鑰字電路2130接收到的小鑰w#0至w#3,產生相應於小鑰w#0至w#3的一個跨小鑰奇偶校驗位元組vt20..7(也就是缺少跨小鑰奇偶校驗9位元vt2中的第8個位元)。這個跨小鑰奇偶校驗位元組vt20..7輸出至鑰字奇偶校驗9位元合併電路2190。
vt28代表相應於小鑰w#0至w#3的一個跨小鑰奇偶校驗9位元的最後一個位元,rt2i代表相應於小鑰w#i的小鑰內奇偶校驗位元。
鑰字奇偶校驗9位元合併電路2190將鑰字奇偶校驗產生電路2160的計算結果vt20..7合併上鑰字跨奇偶校驗預測電路2180的計算結果vt28,作為跨鑰字奇偶校驗9位元vt20..8,並且輸出到密鑰奇偶校驗預測電路1774。
參考回圖17,密鑰奇偶校驗預測電路(Key Parity Prediction Circuitry)1772包含多個加法器,安排以使用以下公式計算出相應於密鑰K#2的小鑰內奇偶校驗位元R#20至R#215:R#2i=rt1i+R#0i,for i=0~3
R#2i=R#2i-4+R#0i,for i=4~15
R#2i代表相應於密鑰K#2的第i個小鑰內奇偶校驗位元,rt1i代表從鑰字處理電路1720獲取的第i個小鑰內奇偶校驗位元,R#0i代表從寄存器1752讀取的相應於密鑰K#0的第i個小鑰內奇偶校驗位元,R#2i-4代表從寄存器1752讀取的相應於密鑰K#2的第i-4個小鑰內奇偶校驗位元。密鑰奇偶校驗預測電路1772另包含多個加法器,安排以使用以下公式計算出相應於密鑰K#2的跨小鑰奇偶校驗9位元V#20至V#23:V#2i=vt1+V#0i,for i=0
V#2i=V#2i-1+V#0i,for i=1~3
V#2i代表相應於密鑰K#2的第i個跨小鑰奇偶校驗9位元,vt1代表從鑰字處理電路1720獲取的跨小鑰奇偶校驗9位元,V#0i代表從寄存器1752讀取的相應於密鑰K#0的第i個跨小鑰奇偶校驗9位元,V#2i-1代表從寄存器1752讀取的相應於密鑰K#2的第i-1個跨小鑰奇偶校驗9位元。密鑰奇偶校驗預測電路1772將預測結果R#2、V#2儲存到寄存器1782,用於在下一個迭代中讓密鑰奇偶校驗檢查電路1762進行檢查。
密鑰奇偶校驗預測電路1774包含多個加法器,安排以使用以下公式計算出相應於密鑰K#3的小鑰內奇偶校驗位元R#30至R#315:R#3i=rt2i+R#1i,for i=0~3
R#3i=R#3i-4+R#1i,for i=4~15
R#3i代表相應於密鑰K#3的第i個小鑰內奇偶校驗位元,rt2i代表從鑰字處理電路1730獲取的第i個小鑰內奇偶校驗位元,R#1i代表從寄存器1754讀取的相應於密鑰K#1的第i個小鑰內奇偶校驗位元,R#3i-4代表從寄存器1754讀取的相應於密鑰K#3的第i-4個小鑰內奇偶校驗位元。密鑰奇偶校驗預測電路1774另包含多個加法器,安排以使用以下公式計算出相應於密鑰K#3的跨小鑰奇偶校驗9位元V#30至V#33:V#3i=vt2+V#1i,for i=0
V#3i=V#3i-1+V#1i,for i=1~3
V#3i代表相應於密鑰K#3的第i個跨小鑰奇偶校驗9位元,vt2代表從鑰字處理電路1730獲取的跨小鑰奇偶校驗9位元,V#1i代表從寄存器1754讀取的相應於密鑰K#1的第i個跨小鑰奇偶校驗9位元,V#3i-1代表從寄存器1754讀取的相應於密鑰K#3的第i-1個跨小鑰奇偶校驗9位元。密鑰奇偶校驗預測電路1774將預測結果R#3、V#3儲存到寄存器1784,用於在下一個迭代中讓密鑰奇偶校驗檢查電路1764進行檢查。
雖然圖17只描述了密鑰K#2和K#3的產生及其產生過程的錯誤偵測,但是因為密鑰K#2和K#3就是產生密鑰K#4和K#5時所使用的密鑰(也就是下一個迭代所使用的密鑰),依此類推,所屬技術領域人員可參考以上的技術內容推導出其他回合密鑰的產生及其產生過程的錯誤偵測。
在一些實施例中,寄存器1712和1714可為實體上不同的寄存器。在另一些實施例中,寄存器1712和1714可指相同寄存器,但在指定的時間順序上依序儲存基礎密鑰和後續產生的回合密鑰。
在一些實施例中,寄存器1752和1782可為實體上不同的寄存器。在另一些實施例中,寄存器1752和1782可指相同寄存器,但在指定的時間順序上依序儲存第一個小鑰內奇偶校驗位元R#0和跨小鑰奇偶校驗9位元V#0,以及後續產生的小鑰內奇偶校驗位元和跨小鑰奇偶校驗9位元。
在一些實施例中,寄存器1754和1784可為實體上不同的寄存器。在另一些實施例中,寄存器1754和1784可指相同寄存器,但在指定的時間順序上依序儲存第一個小鑰內奇偶校驗位元R#1和跨小鑰奇偶校驗9位元V#1,以及後續產生的小鑰內奇偶校驗位元和跨小鑰奇偶校驗9位元。
圖17所示的AES密鑰排程電路830可更精簡以節省面積。參考圖25所示的AES密鑰排程電路2500的方塊圖。AES密鑰排程電路2500包含寄存器1712,並且寄存器1712包含用以儲存8個雙字(Double Words)的組件,用以儲存2個回合密鑰。初始時,密鑰分割電路1710將256位元的基礎密鑰K0切分為8個鑰字W0,0至W0,3和W1,0至W1,3,每個鑰字的長度為4個位元組,並且將8個鑰字儲存在寄存器1712。鑰字W0,0至W0,3形成回合密鑰K#0,而鑰字W1,0至W1,3形成回合密鑰K#1。寄存器1712中的第4個到第7個雙字的組件的輸出分別耦接到寄存器1712中的第0個到第3個雙字的組件的輸入,使得AES密鑰排程電路2500在啟動後的每個時鐘週期,讓寄存器1712中的最後4個雙字的空間所儲存的回合密鑰遷移到前4個雙字的空間。鑰字處理電路2520耦接寄存器1712中的最後一個雙字(也就是鑰字W1,3)的輸出,用以根據寄存器1712中儲存的最後一個雙字計算一個鑰字的中間運算結果Wtmp,並且輸出到互斥或閘2521。互斥或閘2521的兩個輸入端分別耦接寄存器1712中的第0個鑰字的輸出及鑰字處理電路2520的輸出,設置以對寄存器1712中的第0個鑰字和鑰字處理電路2520的輸出進行逐位元邏輯互斥或運算,並且輸出運算結果至寄
存器1712中用於儲存第4個雙字的組件。互斥或閘2523的兩個輸入端分別耦接寄存器1712中的第1個鑰字的輸出及互斥或閘2521的輸出,設置以對寄存器1712中的第1個鑰字和互斥或閘2521的輸出進行逐位元邏輯互斥或運算,並且輸出運算結果至寄存器1712中用於儲存第5個鑰字的組件。互斥或閘2525的兩個輸入端分別耦接寄存器1712中的第2個鑰字的輸出及互斥或閘2523的輸出,設置以對寄存器1712中的第2個鑰字和互斥或閘2523的輸出進行逐位元邏輯互斥或運算,並且輸出運算結果至寄存器1712中用於儲存第6個鑰字的組件。互斥或閘2527的兩個輸入端分別耦接寄存器1712中的第3個鑰字的輸出及互斥或閘2525的輸出,設置以對寄存器1712中的第3個鑰字和互斥或閘2525的輸出進行逐位元邏輯互斥或運算,並且輸出運算結果至寄存器1712中用於儲存第7個鑰字的組件。
舉例來說,在第零個時鐘週期,AES密鑰排程電路2500輸出回合密鑰K#0(包含鑰字W0,0至W0,3)給AES資料處理電路810,使得AES資料處理電路810能依據回合密鑰K#0加密明文。在第一個時鐘週期,AES密鑰排程電路2500輸出回合密鑰K#1(包含鑰字W1,0至W1,3)給AES資料處理電路810,使得AES資料處理電路810能依據回合密鑰K#1加密明文。從第二個時鐘週期起,AES密鑰排程電路2500在每個時鐘週期更新寄存器1712中的8個鑰字,並且輸出寄存器1712中的組件所儲存的最後4個鑰字給AES資料處理電路810作為回合密鑰,直到所有的回合密鑰都產生完畢。在第二個時鐘週期,寄存器1712中的後128位元的值(也就是回合密鑰K#1)被更新到寄存器1712中的前128位元,並且鑰字處理電路2520根據最後一個鑰字W1,3產生一個鑰字的中間運算結果Wtmp。寄存器1712中所儲存的的第4個至第7個雙字(即32位元)為以下公式的計算結果(即鑰字W2,0至W2,3):DW4=Wtmp⊕W0,0
DW5=Wtmp⊕W0,0⊕W0,1
DW6=Wtmp⊕W0,0⊕W0,1⊕W0,2
DW7=Wtmp⊕W0,0⊕W0,1⊕W0,2⊕W0,3
AES密鑰排程電路2500輸出回合密鑰K#2(包含鑰字W2,0至W2,3)給AES資料處理電路810。在第三個時鐘週期,寄存器1712中的後128位元的值(也就是回合密鑰K#2)被更新到寄存器1712中的前128位元,並且鑰字處理電路2520根據最後一個鑰字W2,3產生一個鑰字的中間運算結果Wtmp。寄存器1712中所儲存的第4個至第7個雙字(即32位元)為以下公式的計算結果(即鑰字W3,0至W3,3):DW4=Wtmp⊕W1,0
DW5=Wtmp⊕W1,0⊕W1,1
DW6=Wtmp⊕W1,0⊕W1,1⊕W1,2
DW7=Wtmp⊕W1,0⊕W1,1⊕W1,2⊕W1,3
AES密鑰排程電路2500輸出回合密鑰K#3(包含鑰字W3,0至W3,3)給AES資料處理電路810。回合密鑰K#4及後續回合密鑰可依此類推,為求簡明不再贅述。
參考圖26所示的鑰字處理電路2520的方塊圖。從第二個時鐘週期起,鑰字處理電路2520可交錯運行在兩種模式下:偶數回合密鑰;及奇數回合密鑰。在偶數回合密鑰模式中,鑰字處理電路2520為偶數回合密鑰(例如回合密鑰K#2、K#4、K#6等)產生上一個回合密鑰的最後一個鑰字的中間運算結果Wtmp。在奇數回合密鑰模式中,鑰字處理電路2520為奇數回合密鑰(例如回合密鑰K#3、K#5、K#7等)產生上一個回合密鑰的最後一個鑰字的中間運算結果Wtmp。
鑰字分割電路2610從寄存器1712獲取第7個雙字的值(也就是最後一個鑰字),並且切分為4個小鑰,每個小鑰為1位元組。旋轉鑰字電路2620、替代鑰字電路2640、捨去常數電路2670和鑰字合併電路2690的結構、功能和操作可分別參考相應於圖18的旋轉鑰字電路1820、替代鑰字電路1830、捨去常數電路1840和鑰字合併電路1850
的說明,為求簡明不再贅述。奇偶校驗補償電路2662包含圖18所示的鑰字奇偶校驗產生電路1860、鑰字奇偶校驗預測電路1870、鑰字跨奇偶校驗預測電路1880和鑰字奇偶校驗9位元合併電路1890,用於產生跨鑰字奇偶校驗9位元vt10..8,並且輸出到密鑰奇偶校驗預測電路1772。奇偶校驗補償電路2662的技術細節可參考圖18中的相應電路的說明,為求簡明不再贅述。奇偶校驗補償電路2664包含圖21所示的鑰字奇偶校驗產生電路2160、鑰字跨奇偶校驗預測電路2180和鑰字奇偶校驗9位元合併電路2190,用於產生跨鑰字奇偶校驗9位元vt20..8,並且輸出到密鑰奇偶校驗預測電路1774。奇偶校驗補償電路2664的技術細節可參考圖21中的相應電路的說明,為求簡明不再贅述。
鑰字處理電路2520還包含多工器2630和2680,以及解多工器2650,用於讓控制器870安排在偶數回合密鑰模式及奇數回合密鑰模式下的資料流。多工器2630的輸入端I0耦接到旋轉鑰字電路2620的輸出,多工器2630的輸入端I1耦接到鑰字分割電路2610的輸出,多工器2630的輸出端O耦接到替代鑰字電路2640的輸入。多工器2680的輸入端I0耦接到捨去常數電路2670的輸出,多工器2630的輸入端I1耦接到替代鑰字電路2640的輸出,多工器2630的輸出端O耦接到鑰字合併電路2690的輸入。解多工器2650的輸入端I耦接到替代鑰字電路2640的輸出,解多工器2650的輸出端O0耦接到奇偶校驗補償電路2662的輸入,解多工器2650的輸出端O1耦接到奇偶校驗補償電路2664的輸入。在鑰字處理電路2520啟動時,控制器870可在第二個時鐘週期起的每個偶數時鐘週期發出偶數回合密鑰模式的模式選擇訊號M_sel給多工器2630以將多工器2630的輸入端I0連接上多工器2630的輸出端O,以及發出模式選擇訊號M_sel給多工器2680以將多工器2680的輸入端I0連接上多工器2680的輸出端O,使得鑰字Wi,3 (in)能依序被鑰字分割電路2610、旋轉鑰字電路2620、替代鑰字電路
2640、捨去常數電路2670和鑰字合併電路2690所處理以產生中間運算結果Wtmp(亦即是鑰字Wi,3 (out)),i為大於或等於1的奇數。此外,控制器870可在第二個時鐘週期起的每個偶數時鐘週期發出偶數回合密鑰模式的模式選擇訊號M_sel給多工器2680以將解多工器2680的輸入端I連接上解多工器2680的輸出端O0,讓替代鑰字電路2640的運算結果輸出至奇偶校驗補償電路2662以產生跨鑰字奇偶校驗9位元vt10..8。在鑰字處理電路2520啟動時,控制器870可在第三個時鐘週期起的每個奇數時鐘週期發出奇數回合密鑰模式的模式選擇訊號M_sel給多工器2630以將多工器2630的輸入端I1連接上多工器2630的輸出端O,以及發出模式選擇訊號M_sel給多工器2680以將多工器2680的輸入端I1連接上多工器2680的輸出端O,使得鑰字Wi,3 (in)能依序被鑰字分割電路2610、替代鑰字電路2640和鑰字合併電路2690所處理以產生中間運算結果Wtmp(亦即是鑰字Wi,3 (out)),i為大於或等於2的偶數。此外,控制器870可在第三個時鐘週期起的每個奇數時鐘週期發出奇數回合密鑰模式的模式選擇訊號M_sel給多工器2680以將解多工器2680的輸入端I連接上解多工器2680的輸出端O1,讓替代鑰字電路2640的運算結果輸出至奇偶校驗補償電路2664以產生跨鑰字奇偶校驗9位元vt20..8。
雖然圖1至圖2、圖5、圖8至圖26中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
1710,1750:密鑰分割電路
1712:寄存器
1742,1744:密鑰奇偶校驗碼產生電路
1752,1754,1782,1784:寄存器
1762,1764:密鑰奇偶校驗檢查電路
1772,1774:密鑰奇偶校驗預測電路
2500:AES密鑰排程電路
2520:鑰字處理電路
2521,2523,2525,2527:互斥或閘
Claims (15)
- 一種資料加密的回合密鑰擴展裝置,包含:寄存器,包含設置以儲存八個雙字的組件,其中,所述寄存器中的第四個到第七個雙字的組件的輸出分別耦接到第零個到第三個雙字的組件的輸入;鑰字處理電路,耦接所述寄存器的最後一個雙字的輸出,設置以交錯運行在第一模式和第二模式;在所述第一模式時,依據所述最後一個雙字計算相應於偶數回合密鑰的第一中間運算結果;以及在所述第二模式時,依據所述最後一個雙字計算相應於奇數回合密鑰的第二中間運算結果;第一互斥或閘,耦接所述寄存器中的所述第零個雙字的組件的輸出和所述鑰字處理電路的輸出,設置以對所述第零個雙字和所述鑰字處理電路的輸出進行逐位元邏輯互斥或運算,並且輸出第一運算結果至所述寄存器中的用於儲存所述第四個雙字的組件;第二互斥或閘,耦接所述寄存器中的第一個雙字的組件的輸出和所述第一互斥或閘的輸出,設置以對所述第一個雙字和所述第一互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第二運算結果至所述寄存器中的用於儲存第五個雙字的組件;第三互斥或閘,耦接所述寄存器中的第二個雙字的組件的輸出和所述第二互斥或閘的輸出,設置以對所述第二個雙字和所述第二互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第三運算結果至所述寄存器中的用於儲存第六個雙字的組件;以及第四互斥或閘,耦接所述寄存器中的所述第三個雙字的組件的輸出和所述第三互斥或閘的輸出,設置以對所述第三個雙字和所述第三互斥或閘的輸出進行逐位元邏輯互斥或運算,並且輸出第四運算結果至所述寄存器中的用於儲存所述第七個雙字的組件。
- 如請求項1所述的資料加密的回合密鑰擴展裝置,其中,所述第零個雙字至所述第三個雙字組成第一回合密鑰,所述第四個雙字至所述第七個雙字組成第二回合密鑰,所述第一回合密鑰為128位元,以及所述第二回合密鑰為128位元。
- 如請求項1所述的資料加密的回合密鑰擴展裝置,其中,所述第一運算結果至所述第四運算結果表示為以下公式:DW4=Wtmp⊕Wi,0 DW5=Wtmp⊕Wi,0⊕Wi,1 DW6=Wtmp⊕Wi,0⊕Wi,1⊕Wi,2 DW7=Wtmp⊕Wi,0⊕Wi,1⊕Wi,2⊕Wi,3 DW4代表所述第一運算結果,DW5代表所述第二運算結果,DW6代表所述第三運算結果,DW7代表所述第四運算結果,Wtmp代表所述鑰字處理電路所輸出的中間運算結果,Wi,0代表第i個回合密鑰的第0個鑰字,Wi,1代表第i個回合密鑰的第1個鑰字,Wi,2代表第i個回合密鑰的第2個鑰字,Wi,3代表第i個回合密鑰的第3個鑰字,i為從1到12的任意整數。
- 如請求項1所述的資料加密的回合密鑰擴展裝置,其中,所述鑰字處理電路,包含:鑰字分割電路,耦接所述寄存器的最後一個雙字的輸出,設置以將所述最後一個雙字切分為四個第一位元組;旋轉鑰字電路,耦接所述鑰字分割電路的輸出,設置以將從所述鑰字分割電路接收到的所述四個第一位元組向左循環位移一個位元組,以成為四個第二位元組;第一多工器,包含第一輸入端、第二輸入端和第一輸出端,所述第 一輸入端耦接所述旋轉鑰字電路的輸出,所述第二輸入端耦接所述鑰字分割電路的輸出;替代鑰字電路,耦接所述第一多工器的所述第一輸出端,設置以將從所述第一多工器的所述第一輸出端接收到的所述四個第一位元組或者所述四個第二位元組中的每一個依據查找表替換成第三位元組;捨去常數電路,耦接所述替代鑰字電路的輸出,設置以將每個所述第三位元組和常數執行逐位元互斥或操作以產生第四位元組;第二多工器,包含第三輸入端、第四輸入端和第二輸出端,所述第三輸入端耦接所述捨去常數電路的輸出,所述第四輸入端耦接所述替代鑰字電路的輸出;以及鑰字合併電路,耦接所述第二多工器的所述第二輸出端,設置以將從所述第二多工器的所述第二輸出端接收到的所述四個第四位元組合併為所述第一中間運算結果;或者將從所述第二多工器的所述第二輸出端接收到的所述四個第三位元組合併為所述第二中間運算結果。
- 如請求項4所述的資料加密的回合密鑰擴展裝置,包含:控制器,耦接所述第一多工器和所述第二多工器,設置以在第二個時鐘週期起的每個偶數時鐘週期,發出第一模式選擇訊號給所述第一多工器以將所述第一輸入端連接上所述第一輸出端,發出所述第一模式選擇訊號給所述第二多工器以將所述第三輸入端連接上所述第二輸出端;以及在第三個時鐘週期起的每個奇數時鐘週期,發出第二模式選擇訊號給所述第一多工器以將所述第二輸入端連接上所述第一輸出端,發出所述第二模式選擇訊號給所述第二多工器以將所述第四輸入端連接上所述第二輸出端。
- 如請求項4所述的資料加密的回合密鑰擴展裝置,其中,所述鑰字處理電路包含:解多工器,包含第五輸入端、第三輸出端和第四輸出端,所述第五輸入端耦接所述替代鑰字電路的輸出;第一奇偶校驗補償電路,耦接所述第三輸出端,設置以依據所述四個第三位元組產生相應於所述奇數回合密鑰的第一跨鑰字奇偶校驗9位元;以及第二奇偶校驗補償電路,耦接所述第四輸出端,設置以依據所述四個第三位元組產生相應於所述偶數回合密鑰的第二跨鑰字奇偶校驗9位元。
- 如請求項6所述的資料加密的回合密鑰擴展裝置,包含:控制器,耦接所述解多工器,設置以在第二個時鐘週期起的每個偶數時鐘週期,發出第一模式選擇訊號給所述解多工器以將所述第五輸入端連接上所述第三輸出端;以及在第三個時鐘週期起的每個奇數時鐘週期,發出第二模式選擇訊號給所述解多工器以將所述第五輸入端連接上所述第四輸出端。
- 如請求項4所述的資料加密的回合密鑰擴展裝置,其中,所述替代鑰字電路包含四個增強型查表電路,以及每個所述增強型查表電路包含:搜索電路,設置以依據8轉K位元查找表將所述第一位元組或者所述第二位元組的第一值轉換為K位元的第二值,其中,K為10到15之間的正整數,以及所述第二值包含K-8個位元的漢明奇偶校驗碼;以及替代校驗電路,耦接所述搜索電路,設置以使用相應於所述8轉K位 元查找表的公式,判斷所述第一值轉換為所述第二值的過程中是否發生錯誤,以及當發現錯誤時,發出錯誤訊號,其中,所述公式的數目為K-8。
- 如請求項8所述的資料加密的回合密鑰擴展裝置,其中,所述8轉K位元查找表中的每個單元格中的最高8位元使用以下公式建立:SBi=Affine((i)-1)SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。
- 如請求項8所述的資料加密的回合密鑰擴展裝置,其中,K為14。
- 如請求項10所述的資料加密的回合密鑰擴展裝置,其中,所述替代校驗電路,設置以依據所述第二值中的最高位元組使用以下6個公式對所述第二值中的所述漢明奇偶校驗碼進行檢查:Hm5==S’(out) 7+S’(out) 6+S’(out) 5+S’(out) 4+S’(out) 3+S’(out) 2+S’(out) 1+S’(out) 0 Hm4==S’(out) 7+S’(out) 4+S’(out) 0 Hm3==S’(out) 6+S’(out) 5+S’(out) 1+S’(out) 0 Hm2==S’(out) 4+S’(out) 2+S’(out) 1 Hm1==S’(out) 5+S’(out) 3+S’(out) 2 Hm0==S’(out) 7+S’(out) 6+S’(out) 3其中,Hm5至Hm0分別代表所述漢明奇偶校驗碼中的第5至第0個位元,S’(out) 7至S’(out) 0分別代表所述第二值中的所述最高位元組的第7至第0個位元;以及當偵測到任何一個或以上的所述公式不成立時,發出所述錯誤訊號。
- 如請求項10所述的資料加密的回合密鑰擴展裝置,其中,所述替代校驗電路,設置以依據所述第二值中的最高位元組使用以下6個 公式對所述第二值中的所述漢明奇偶校驗碼進行檢查:Hm5==S’(out) 7+S’(out) 6+S’(out) 5+S’(out) 4+S’(out) 3+S’(out) 2+S’(out) 1+S’(out) 0 Hm4==S’(out) 7+S’(out) 4+S’(out) 0 Hm3==S’(out) 5+S’(out) 2+S’(out) 1+S’(out) 0 Hm2==S’(out) 6+S’(out) 4+S’(out) 1 Hm1==S’(out) 6+S’(out) 5+S’(out) 3 Hm0==S’(out) 7+S’(out) 3+S’(out) 2其中,Hm5至Hm0分別代表所述漢明奇偶校驗碼中的第5至第0個位元,S’(out) 7至S’(out) 0分別代表所述第二值中的所述最高位元組的第7至第0個位元;以及當偵測到任何一個或以上的所述公式不成立時,發出所述錯誤訊號。
- 如請求項4所述的資料加密的回合密鑰擴展裝置,其中,所述替代鑰字電路包含四個增強型查表電路,以及每個所述增強型查表電路包含:搜索電路,設置以依據查找表將所述第一位元組或者所述第二位元組的第一值轉換為第二值;以及替代校驗電路,耦接所述搜索電路,設置以使用相應於所述查找表的公式判斷所述第一值轉換為所述第二值的過程中是否發生錯誤,以及當發現錯誤時,發出錯誤訊號。
- 如請求項13所述的資料加密的回合密鑰擴展裝置,其中,所述查找表使用以下公式建立:SBi=Affine((i)-1)SBi代表i的輸出結果,Affine()代表Affine轉換函數,i為從0到127的正整數。
- 如請求項14所述的資料加密的回合密鑰擴展裝置,其中,所述替 代校驗電路,包含:計算電路,耦接所述搜索電路,設置以獲取所述第二值,並且計算Affine(S’(out))-1而產生第三值,其中,S’(out)代表所述第二值,Affine()-1代表Affine轉換的反函數;乘法器,耦接所述搜索電路和所述計算電路,設置以將所述第二值乘上所述第三值以產生第四值;以及比較器,耦接所述搜索電路和所述乘法器,設置以實施以下邏輯運算式來產生判斷結果:err_nl=0,if(S’(mul)==1)&&(S’(in)!=0)&&(Affine(S’(out))-1!=0) err_nl=0,if(S’(mul)==0)&&(S’(in)==0)&&(Affine(S’(out))-1==0) err_nl=1,otherwise當err_nl等於1時,代表發現錯誤,S’(mul)代表所述第四值,S’(in)代表所述第一值,S’(out)代表所述第二值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW112110163A TWI835601B (zh) | 2023-03-20 | 2023-03-20 | 資料加密的回合密鑰擴展裝置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW112110163A TWI835601B (zh) | 2023-03-20 | 2023-03-20 | 資料加密的回合密鑰擴展裝置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI835601B true TWI835601B (zh) | 2024-03-11 |
TW202439180A TW202439180A (zh) | 2024-10-01 |
Family
ID=91269680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112110163A TWI835601B (zh) | 2023-03-20 | 2023-03-20 | 資料加密的回合密鑰擴展裝置及方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI835601B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265563A1 (en) * | 2003-09-30 | 2006-11-23 | Infineon Technologies Ag | Word-individual key generation |
US20080008314A1 (en) * | 2006-07-06 | 2008-01-10 | Accenture Global Services Gmbh | Encryption and decryption on a graphics processing unit |
TW202009776A (zh) * | 2018-08-14 | 2020-03-01 | 香港商阿里巴巴集團服務有限公司 | 多方安全計算方法及裝置、電子設備 |
TW202040401A (zh) * | 2019-04-17 | 2020-11-01 | 國立成功大學 | 測試電路之動態密鑰防禦架構與方法 |
-
2023
- 2023-03-20 TW TW112110163A patent/TWI835601B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265563A1 (en) * | 2003-09-30 | 2006-11-23 | Infineon Technologies Ag | Word-individual key generation |
US20080008314A1 (en) * | 2006-07-06 | 2008-01-10 | Accenture Global Services Gmbh | Encryption and decryption on a graphics processing unit |
TW202009776A (zh) * | 2018-08-14 | 2020-03-01 | 香港商阿里巴巴集團服務有限公司 | 多方安全計算方法及裝置、電子設備 |
TW202040401A (zh) * | 2019-04-17 | 2020-11-01 | 國立成功大學 | 測試電路之動態密鑰防禦架構與方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101149709B (zh) | 存储卡的加密处理器和使用其进行数据读写的方法 | |
US8666064B2 (en) | Endecryptor capable of performing parallel processing and encryption/decryption method thereof | |
US9407286B2 (en) | Data compression apparatus, data compression method, and memory system including the data compression apparatus | |
TWI381387B (zh) | 儲存裝置、控制器及其資料存取方法 | |
TWI432964B (zh) | 金鑰傳送方法、記憶體控制器與記憶體儲存裝置 | |
US20030099140A1 (en) | Data handling system | |
CN111008407A (zh) | 用于执行虚拟加密操作的加密电路 | |
US20150222434A1 (en) | Crt-rsa encryption method and apparatus | |
US9672105B2 (en) | Device and method for processing data using logical information and physical information | |
TWI835601B (zh) | 資料加密的回合密鑰擴展裝置及方法 | |
US10083742B2 (en) | Method and apparatus for programming non-volatile memory using a multi-cell storage cell group to provide error location information for retention errors | |
TWI835381B (zh) | 資料加密的錯誤偵測裝置 | |
TWI808902B (zh) | 資料加密的錯誤偵測裝置 | |
CN118677599A (zh) | 数据加密的回合密钥扩展装置 | |
US20240143791A1 (en) | Apparatus and method for detecting errors during data encryption | |
US20230198754A1 (en) | Apparatus and method for detecting errors during data encryption | |
US20230198755A1 (en) | Apparatus and method for detecting errors during data encryption | |
TWI823436B (zh) | 低密度奇偶檢查碼的產生裝置及方法 | |
US20230068302A1 (en) | Memory device and method for data encryption/decryption of memory device | |
US20240356726A1 (en) | Encryption device and operating method of encryption device | |
US20230035988A1 (en) | Storage device, storage system operating method, and computing system | |
CN114969850A (zh) | 一种数据传输方法及存储系统 | |
CN117331742A (zh) | 低密度奇偶校检码的产生装置和方法 | |
CN113468567A (zh) | 数据处理方法及数据处理设备 | |
CN117955629A (zh) | Dna存储中的加密编码方法、装置、电子设备及存储介质 |