0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AES HWIP技術(shù)規(guī)格

jf_EksNQtU6 ? 來源:TrustZone ? 2023-08-03 10:46 ? 次閱讀

AES HWIP技術(shù)規(guī)格

一、概述

本文檔介紹了AES 硬件 IP 功能。高級加密標(biāo)準(zhǔn) (AES) 是 OpenTitan 協(xié)議中使用的主要對稱加密和解密機(jī)制。AES 單元是一個(gè)加密加速器,它接受來自處理器的請求以加密或解密 16 字節(jié)的數(shù)據(jù)塊。它作為外設(shè)模塊連接到芯片互連總線,符合外設(shè)功能的要求指南。

1、特點(diǎn)

AES單元支持以下功能:

?在以下密碼塊模式下使用 AES-128/192/256 進(jìn)行加密/解密:

?Electronic Codebook (ECB) mode,

?Cipher Block Chaining (CBC) mode,

?Cipher Feedback (CFB) mode (fixed data segment size of 128 bits, i.e., CFB-128),

?Output Feedback (OFB) mode, and

?Counter (CTR) mode.

?可以刪除對 AES-192 的支持以保存區(qū)域,并使用編譯時(shí) Verilog 參數(shù)啟用/禁用

?使用面向域的掩碼 (DOM) 來加重側(cè)信道分析 (SCA) 的密碼核心的一階屏蔽,可以選擇使用編譯時(shí) Verilog 參數(shù)禁用(有關(guān)更多詳細(xì)信息,請參閱下面的安全強(qiáng)化

? AES-16/12/14 模式下每 16 字節(jié)數(shù)據(jù)塊的 56/66/72 時(shí)鐘周期(未屏蔽實(shí)現(xiàn))和 128/192/256 時(shí)鐘周期 (DOM) 的延遲 內(nèi)部偽隨機(jī)數(shù)發(fā)生器 (PRNG) 的自動(dòng)和軟件啟動(dòng)重新設(shè)定種子,具有可配置的重新設(shè)定速率,導(dǎo)致最大熵消耗率范圍為 286 Mbit/s 至 0.035 Mbit/s(100 MHz 時(shí))。

?加重控制路徑上的故障注入 (FI) 的對策(有關(guān)詳細(xì)信息,請參閱下面的安全強(qiáng)化)

?基于寄存器的數(shù)據(jù)和控制接口

?系統(tǒng)密鑰管理器接口,用于可選密鑰旁加載,不向連接到系統(tǒng)總線互連的處理器和其他主機(jī)公開密鑰材料。

?動(dòng)態(tài)生成輪次密鑰,與通過寄存器接口提供的單個(gè)初始 128/192/256 位密鑰的實(shí)際加密/解密并行(有關(guān)更多詳細(xì)信息,請參閱下面的操作理論

該 AES 單元針對中等性能(16 個(gè)并行 S-Box,未屏蔽實(shí)現(xiàn)每輪 ~1 個(gè)周期,DOM 實(shí)現(xiàn)每輪 ~5 個(gè)周期)。對于高帶寬數(shù)據(jù)流,不需要高速、單周期操作。

ECB、CBC、CFB、OFB 和 CTR 以外的密碼模式超出了此版本的 AES 單元,但將來的版本可能會(huì)受支持。

2、說明

AES 單元是一個(gè)加密加速器,它接受來自處理器的請求以加密或解密 16B 數(shù)據(jù)塊。

?它支持電子碼本 (ECB) 模式下的 AES-128/192/256、

?密碼塊鏈接 (CBC) 模式、

?密碼反饋 (CFB) 模式(固定數(shù)據(jù)段大小為 128 位,即 CFB-128)、

?輸出反饋 (OFB) 模式

?計(jì)數(shù)器 (CTR) 模式。

有關(guān)這些密碼模式的詳細(xì)信息,請參閱分組密碼操作模式的建議。將來的版本中可能會(huì)添加其他密碼模式。

AES 單元作為外設(shè)模塊連接到芯片互連總線。與處理器的通信通過一組控制和狀態(tài)寄存器 (CSR) 進(jìn)行。

這包括輸入/輸出數(shù)據(jù)和密鑰,以及狀態(tài)和控制信息。

AES 單元的未來版本可能包括一個(gè)單獨(dú)的接口,通過該接口,可能的系統(tǒng)密鑰管理器可以提供密鑰,而無需將其暴露給連接到系統(tǒng)總線互連的處理器或其他主機(jī)。(這樣更加合理,這樣就避免了在通路上通過信號檢測能獲取到密鑰,當(dāng)然防側(cè)信道攻擊針對一般是處理器運(yùn)算時(shí),這個(gè)核發(fā)出的電磁信號來檢測出密鑰或者計(jì)算模式)

二、操作理論

AES 單元支持使用單個(gè)共享數(shù)據(jù)路徑在 ECB、CBC、CFB、OFB 和 CTR 模式下對 AES-128/192/256 進(jìn)行加密和解密。

也就是說,它可以進(jìn)行加密或解密,但不能同時(shí)進(jìn)行兩者。

AES 單元具有密鑰擴(kuò)展機(jī)制,可從通過寄存器接口提供的單個(gè)初始密鑰即時(shí)生成所需的圓形密鑰。這意味著處理器只需通過寄存器接口向 AES 單元提供初始加密密鑰。然后,AES 單元使用此密鑰生成所有整數(shù)密鑰,因?yàn)樗鼈冃枰c實(shí)際加密/解密并行。與通過寄存器接口傳遞所有圓形密鑰相比,這種設(shè)計(jì)的優(yōu)勢包括:

?降低存儲(chǔ)要求,減小電路面積:AES-15 只需要 128 個(gè) 3 位密鑰寄存器,而不是存儲(chǔ) 256 個(gè) 256 位整數(shù)密鑰:

?處理器向其寫入初始密鑰的一組寄存器,即用于加密的啟動(dòng)密鑰,

?一組寄存器用于保存當(dāng)前完整密鑰,以及

?一組寄存器,用于保存上一輪加密的完整密鑰,即用于解密的開始密鑰。

?更快的重新配置和密鑰切換:內(nèi)核只需要執(zhí)行 8 次寫入操作,而不是 AES-60 的 256 次寫入操作。

然而,在AES單元可以使用這個(gè)新密鑰執(zhí)行ECB/CBC解密之前,每當(dāng)處理器更改密鑰時(shí),即時(shí)輪次密鑰生成就會(huì)以初始延遲為代價(jià)。在此階段,密鑰擴(kuò)展機(jī)制以迭代方式計(jì)算解密的開始密鑰。此延遲階段的持續(xù)時(shí)間對應(yīng)于加密一個(gè) 16B 塊所需的延遲(即 AES-12/14/16 的 128/192/256 周期)。計(jì)算出解密的開始密鑰后,它將存儲(chǔ)在專用的內(nèi)部寄存器中供以后使用。然后,AES 單元可以在解密和加密之間切換,而不會(huì)產(chǎn)生額外的開銷。

對于加密或模式設(shè)置為 CFB、OFB 或 CTR,則更改密鑰時(shí)沒有此類初始延遲。如果密鑰切換后的下一個(gè)操作是 ECB 或 CBC 解密,AES 單元會(huì)首先使用密鑰計(jì)劃自動(dòng)啟動(dòng)密鑰擴(kuò)展(要生成用于解密的啟動(dòng)密鑰,實(shí)際數(shù)據(jù)路徑在該階段保持空閑狀態(tài))。

AES 單元使用狀態(tài)寄存器向處理器指示何時(shí)準(zhǔn)備好通過寄存器接口接收下一個(gè)輸入數(shù)據(jù)塊。當(dāng) AES 單元對數(shù)據(jù)塊執(zhí)行加密/解密時(shí),處理器提供下一個(gè)輸入數(shù)據(jù)塊是安全的。一旦上一個(gè)加密/解密完成并且新的輸入數(shù)據(jù)可用,AES 單元就會(huì)自動(dòng)開始下一個(gè)數(shù)據(jù)塊的加密/解密。輸入寄存器的寫入順序無關(guān)緊要。

每個(gè)輸入寄存器必須至少寫入一次,AES單元才能自動(dòng)啟動(dòng)加密/解密。這是默認(rèn)行為??梢酝ㄟ^將 CTRL_SHADOWED 中的MANUAL_OPERATION位設(shè)置為 . 在這種情況下,AES 單元僅在 TRIGGER 中的 START 位設(shè)置為(自動(dòng)清除到下一次加密/解密啟動(dòng)后)后才會(huì)開始加密/解密。110

類似地,AES 單元通過狀態(tài)寄存器指示處理器何時(shí)有新的輸出數(shù)據(jù)可供讀取。此外,輸出數(shù)據(jù)還有一個(gè)背壓機(jī)制。如果 AES 單元想要完成數(shù)據(jù)塊的加密/解密,但處理器尚未讀取以前的輸出數(shù)據(jù),則 AES 單元將停止。它掛起并且不會(huì)丟棄數(shù)據(jù)。只有在讀取了先前的輸出數(shù)據(jù)并且可以安全地覆蓋相應(yīng)的寄存器后,它才會(huì)繼續(xù)。讀取輸出寄存器的順序無關(guān)緊要。每個(gè)輸出寄存器必須至少讀取一次,AES單元才能繼續(xù)。這是默認(rèn)行為。可以通過將 CTRL_SHADOWED 中的MANUAL_OPERATION位設(shè)置為 .在這種情況下,AES 單元永遠(yuǎn)不會(huì)停止,只會(huì)覆蓋以前的輸出數(shù)據(jù),而與是否已讀取數(shù)據(jù)無關(guān)。

1、功能框圖

此 AES 單元針對中等性能(未屏蔽實(shí)施每輪 ~1 個(gè)周期)。對于高帶寬數(shù)據(jù)流,不需要高速、單周期操作。

因此,AES 單元使用具有 128 位寬數(shù)據(jù)路徑的迭代密碼核心架構(gòu),如下圖所示。請注意,為簡單起見,下圖顯示了未屏蔽的實(shí)現(xiàn)。有關(guān)密碼核心的屏蔽實(shí)現(xiàn)的詳細(xì)信息,請參閱下面的安全強(qiáng)化)。

使用迭代架構(gòu)允許以吞吐量為代價(jià)實(shí)現(xiàn)更小的電路面積。采用 128 位寬數(shù)據(jù)路徑允許在未屏蔽實(shí)現(xiàn)中分別在 AES-12/14/16 模式下實(shí)現(xiàn)每 16B 數(shù)據(jù)塊 128/192/256 個(gè)時(shí)鐘周期的延遲要求。

567e0d18-2df7-11ee-815d-dac502259ad0.png

在這里插入圖片描述

在密碼核心內(nèi)部,實(shí)際密碼(左)和輪密鑰生成(右)的數(shù)據(jù)路徑在加密和解密之間共享。因此,圖中顯示的塊始終實(shí)現(xiàn)相應(yīng)操作的正向和后向(反向)版本。例如,SubBytes 同時(shí)實(shí)現(xiàn)了 SubBytes 和 InvSubBytes。

除了實(shí)際的 AES 密碼內(nèi)核外,AES 單元還具有一組控制和狀態(tài)寄存器 (CSR),處理器可通過 TL-UL 總線接口訪問,以及一個(gè)計(jì)數(shù)器模塊(僅用于 CTR 模式)。該計(jì)數(shù)器模塊根據(jù)分組密碼操作模式的建議(附錄 B.1)實(shí)現(xiàn)標(biāo)準(zhǔn)遞增功能,固定參數(shù) m = 128。請注意,對于 AES,參數(shù) b = 128,計(jì)數(shù)器增量為大端序。CFB 模式支持固定參數(shù) s = 128 (CFB-128)。對 128 位以外的數(shù)據(jù)段大小的支持將需要大量額外的多路復(fù)用資源,因此無法提供。初始化向量 (IV) 寄存器和用于保存先前輸入數(shù)據(jù)的寄存器僅用于 CBC、CFB、OFB 和 CTR 模式。

2、AES算法原理

【密碼學(xué)基礎(chǔ):AES加密算法】[1]

3、設(shè)計(jì)細(xì)節(jié)

本節(jié)討論 AES 模塊的不同設(shè)計(jì)細(xì)節(jié)。

1、數(shù)據(jù)路徑體系結(jié)構(gòu)和操作

AES 單元實(shí)現(xiàn)【AES 算法】[2]。這允許在加密/解密之間更有效地共享密碼數(shù)據(jù)路徑,因?yàn)椴僮饕韵嗤捻樞驊?yīng)用(更少的復(fù)用器,更簡單的控制),但要求在解密期間使用反向 MixColumns 在所有輪次中轉(zhuǎn)換輪密鑰,除了第一輪和最后一輪。

這種架構(gòu)選擇旨在實(shí)現(xiàn)高效的密碼數(shù)據(jù)路徑共享和低面積占用空間。根據(jù)應(yīng)用方案,其他體系結(jié)構(gòu)可能會(huì)提供更合適的區(qū)域/性能權(quán)衡。例如,如果只使用 CFB、OFB 或 CTR 模式,則根本不使用反向密碼。此外,如果密鑰很少更改(例如在批量解密的情況下),則存儲(chǔ)所有整數(shù)密鑰而不是動(dòng)態(tài)生成它們可能會(huì)有所回報(bào)。AES 單元的未來版本可能會(huì)提供編譯時(shí)參數(shù),以便有選擇地實(shí)例化正向/反向密碼部分,以僅允許專用的僅加密/解密單元。

數(shù)據(jù)路徑中的所有子模塊都是純組合的。密碼和輪次密鑰生成中唯一的順序邏輯是狀態(tài)、完整密鑰和解密密鑰寄存器。

以下描述解釋了 AES 單元的工作原理,即 AES 密碼的操作如何映射到 AES 單元的數(shù)據(jù)路徑體系結(jié)構(gòu)。斜體短語適用于不同分組密碼模式的特性。有關(guān)這些密碼模式的一般介紹,請參閱【分組密碼操作模式的建議】[3]

? 1、配置和初始密鑰通過一組控制和狀態(tài)寄存器 (CSR) 提供給 AES 單元,處理器可通過 TL-UL 總線接口訪問這些寄存器。處理器必須首先向CTRL_SHADOWED寄存器提供配置。然后跟隨初始鍵。每個(gè)密鑰寄存器必須至少寫入一次。寄存器的寫入順序無關(guān)緊要。

? 2、處理器分別在 CBC、CFB 和 OFB 模式或 CTR 模式下通過 TL-UL 總線接口向四個(gè) IV 寄存器提供初始化矢量 (IV) 或初始計(jì)數(shù)器值。每個(gè)IV寄存器必須至少寫入一次。寄存器的寫入順序無關(guān)緊要。請注意,在運(yùn)行時(shí),AES單元在消耗當(dāng)前IV值后自動(dòng)更新IV寄存器。每當(dāng)啟動(dòng)新消息時(shí),處理器必須通過 TL-UL 總線接口提供相應(yīng)的 IV 值。在 ECB 模式下,無需提供 IV。在 ECB 模式下,IV 寄存器的內(nèi)容將被忽略。

? 3、輸入數(shù)據(jù)通過四個(gè) CSR 提供給 AES 單元。每個(gè)輸入寄存器必須至少寫入一次。寄存器的寫入順序無關(guān)緊要。

? 4、如果有新的輸入數(shù)據(jù)可用,AES 單元將通過執(zhí)行以下操作自動(dòng)啟動(dòng)加密/解密。請注意,要使 AES 裝置在 CBC、CFB、OFB 或 CTR 模式下自動(dòng)啟動(dòng),還必須準(zhǔn)備好 IV。如果自上次 IV 更新(由處理器或 AES 單元本身完成)以來,所有 IV 寄存器至少寫入一次或均未寫入,則 IV 已準(zhǔn)備就緒。AES 單元不會(huì)使用部分更新的 IV 自動(dòng)啟動(dòng)下一次加密/解密。通過將CTRL_SHADOWED中的MANUAL_OPERATION位設(shè)置為 ,AES 裝置可以在手動(dòng)模式下操作。在手動(dòng)模式下,每當(dāng)觸發(fā)中的起始 位設(shè)置為 ,無論 IV 和輸入數(shù)據(jù)寄存器的狀態(tài)如何,AES 單元都會(huì)開始加密/解密。

? AES 單元將初始狀態(tài)加載到密碼內(nèi)核內(nèi)的狀態(tài)寄存器中。

?根據(jù)密碼模式,初始狀態(tài)是輸入數(shù)據(jù)和 IV 的組合。請注意,如果執(zhí)行 CBC 解密,或者以 CFB、OFB 或 CTR 模式運(yùn)行,則輸入數(shù)據(jù)也會(huì)被注冊(框圖中的“上一個(gè)數(shù)據(jù)”中的數(shù)據(jù))。

?初始密鑰加載到密碼內(nèi)核內(nèi)的全密鑰寄存器中。請注意,如果執(zhí)行 ECB/CBC 解密,則全密鑰寄存器將使用存儲(chǔ)在解密密鑰寄存器中的值加載。

? 5、加載狀態(tài)和完整密鑰寄存器后,AES 密碼核心通過將第一輪密鑰添加到初始狀態(tài)來開始加密/解密(繞過兩個(gè)數(shù)據(jù)路徑中的所有塊)。結(jié)果被存儲(chǔ)回國家登記冊。

? 6、然后,AES 密碼核心在使用 9/11/13 位密鑰時(shí)分別執(zhí)行 128/192/256 輪加密/解密。在每個(gè)輪次中,密碼數(shù)據(jù)路徑執(zhí)行以下四個(gè)轉(zhuǎn)換。有關(guān)更多詳細(xì)信息,請參閱 AES 規(guī)范。如果在 CTR 模式下運(yùn)行,計(jì)數(shù)器模塊會(huì)迭代更新 IV,并行更新執(zhí)行加密/解密的密碼核心。在內(nèi)部,計(jì)數(shù)器模塊使用一個(gè)16位計(jì)數(shù)器,這意味著它需要8個(gè)時(shí)鐘周期來遞增存儲(chǔ)在IV寄存器中的128位計(jì)數(shù)器值。由于計(jì)數(shù)器值僅在第一輪中使用,并且由于單個(gè)塊的加密/解密需要 12/14/16 個(gè)周期,因此迭代計(jì)數(shù)器實(shí)現(xiàn)不會(huì)影響 AES 單元的吞吐量。

?子字節(jié)轉(zhuǎn)換:一種非線性字節(jié)替換,使用替換表 (S-Box) 對狀態(tài)的每個(gè)字節(jié)獨(dú)立運(yùn)行。

? ShiftRows 轉(zhuǎn)換:狀態(tài)的最后三行的字節(jié)在不同的偏移量上循環(huán)移動(dòng)。

? MixColumns 轉(zhuǎn)換:狀態(tài)的四列中的每一列都被視為 GF(2^8) 上的多項(xiàng)式,并單獨(dú)乘以另一個(gè)固定多項(xiàng)式。

? AddRoundKey Transformation:round鍵與MixColumns操作的輸出進(jìn)行XOR運(yùn)算,并存儲(chǔ)回狀態(tài)寄存器。128位整數(shù)密鑰本身是從Full Key寄存器中的當(dāng)前值中提取的。同時(shí),使用密鑰擴(kuò)展模塊動(dòng)態(tài)計(jì)算用于下一輪的完整密鑰。

? 7、最后,AES 密碼核心執(zhí)行最后一輪加密/解密,其中跳過混合列操作。輸出被轉(zhuǎn)發(fā)到CSR中的輸出寄存器,但不會(huì)存儲(chǔ)回狀態(tài)寄存器。內(nèi)部狀態(tài)寄存器使用偽隨機(jī)數(shù)據(jù)清除。

根據(jù)密碼模式,最后一輪的輸出可能會(huì)與IV寄存器中的值(CBC解密)或存儲(chǔ)在先前輸入數(shù)據(jù)寄存器中的值(CFB,OFB,CTR模式)進(jìn)行異或運(yùn)算,然后再轉(zhuǎn)發(fā)到CSR中的輸出寄存器。

如果在CBC模式下運(yùn)行,IV寄存器將使用輸出數(shù)據(jù)(加密)或存儲(chǔ)在先前輸入數(shù)據(jù)寄存器中的值(解密)進(jìn)行更新。

如果在 CFB 或 OFB 模式下運(yùn)行,IV 寄存器將分別使用輸出數(shù)據(jù)或最終密碼輪的輸出(在與先前輸入數(shù)據(jù)進(jìn)行 XOR 運(yùn)算之前)進(jìn)行更新。

具有單獨(dú)的輸入、輸出和內(nèi)部狀態(tài)寄存器可防止通過 TL-UL 總線接口提取中間狀態(tài),并允許將重新配置與操作重疊。當(dāng) AES 單元執(zhí)行加密/解密時(shí),處理器可以安全地將下一個(gè)輸入數(shù)據(jù)塊寫入 CSR 或從 CSR 讀取上一個(gè)輸出數(shù)據(jù)塊。狀態(tài)寄存器位于 AES 單元內(nèi)部,不通過 TL-UL 總線接口公開。如果 AES 單元想要完成輸出數(shù)據(jù)塊的加密/解密,但處理器尚未讀取前一個(gè)數(shù)據(jù)塊,則 AES 單元將停止。它掛起并且不會(huì)丟棄數(shù)據(jù)。只有在讀取了先前的輸出數(shù)據(jù)并且可以安全地覆蓋相應(yīng)的寄存器后,它才會(huì)繼續(xù)。讀取輸出寄存器的順序無關(guān)緊要。每個(gè)輸出寄存器必須至少讀取一次,AES單元才能繼續(xù)。相比之下,初始密鑰和控制寄存器只能在AES單元空閑時(shí)更新,這簡化了設(shè)計(jì)驗(yàn)證(DV)。同樣,初始化向量 (IV) 寄存器只能在 AES 單元空閑時(shí)由處理器更新。如果 AES 設(shè)備繁忙且以 CBC 或 CTR 模式運(yùn)行,則 AES 設(shè)備本身會(huì)更新 IV 寄存器。

AES單元的密碼核心架構(gòu)源自Satoh等人提出的架構(gòu):“具有S-Box優(yōu)化的緊湊型Rijndael硬件架構(gòu)”[4]。110nm CMOS技術(shù)的預(yù)期電路面積約為12 - 22 kGE(未屏蔽實(shí)現(xiàn),僅限AES-128)。啟用掩蔽的整個(gè)AES單元的預(yù)期電路面積約為110 kGE。

有關(guān)各個(gè)子模塊的說明,請參閱以下部分。

2、SubBytes / S-Box

SubBytes操作是一種非線性字節(jié)替換,使用替換表(S-Box)對狀態(tài)的每個(gè)字節(jié)獨(dú)立操作。它既用于加密數(shù)據(jù)路徑,也用于密鑰擴(kuò)展數(shù)據(jù)路徑。AES單元總共并行實(shí)例化20個(gè)S盒(16個(gè)用于SubBytes,4個(gè)用于KeyExpand),每個(gè)S盒具有8位輸入和輸出。結(jié)合128位寬的數(shù)據(jù)路徑,這允許每次迭代執(zhí)行一輪AES。

這種S盒及其反向器的設(shè)計(jì)會(huì)對電路面積、時(shí)序關(guān)鍵路徑、魯棒性和功率泄漏產(chǎn)生很大影響,這本身就是其研究的主題。S盒通過握手協(xié)議與AES單元的其余部分解耦,允許在需要時(shí)用不同的實(shí)現(xiàn)方式輕松替換它們。AES單元具有以下S-Box實(shí)現(xiàn),可通過編譯時(shí)Verilog參數(shù)進(jìn)行選擇。

3、ShiftRows

ShiftRows操作簡單地執(zhí)行狀態(tài)矩陣的第1、2和3行的循環(huán)移位。因此,它可以使用3*4個(gè)32位2輸入多路復(fù)用器(加密/解密)來實(shí)現(xiàn)。

4、列混合變換

狀態(tài)的四列中的每一列都被認(rèn)為是GF(2^8)上的多項(xiàng)式,并分別與另一個(gè)固定多項(xiàng)式相乘。整個(gè)操作可以使用36個(gè)2輸入XOR和16個(gè)4輸入XOR(全部為8位)、8個(gè)2輸入多路復(fù)用器(8位)以及78個(gè)2輸入和24個(gè)3輸入XOR門來實(shí)現(xiàn)。

5、秘鑰擴(kuò)展

集成在AES單元中的密鑰擴(kuò)展模塊(KEM)負(fù)責(zé)從初始密鑰生成各種圓形密鑰,用于加密和解密。KEM基于當(dāng)前完整密鑰或初始密鑰(用于第一輪加密),與實(shí)際加密/解密并行生成下一個(gè)128/192/256位完整密鑰。然后,從該完整密鑰中提取實(shí)際的128位循環(huán)密鑰。

動(dòng)態(tài)生成密鑰允許更低的存儲(chǔ)要求和更小的電路面積,但代價(jià)是每當(dāng)密鑰發(fā)生變化時(shí),在進(jìn)行ECB/CBC解密之前的初始延遲。在此階段,KEM循環(huán)使用所有完整密鑰,以獲得解密的開始密鑰(等于最后一輪加密的密鑰)。該延遲階段的持續(xù)時(shí)間對應(yīng)于加密一個(gè)16B塊所需的等待時(shí)間。在這個(gè)初始階段,密碼數(shù)據(jù)路徑保持空閑。下面的時(shí)序圖顯示了這一過程。

569f65b2-2df7-11ee-815d-dac502259ad0.png

在這里插入圖片描述

6、系統(tǒng)密鑰管理器接口

默認(rèn)情況下,AES單元完全由處理器控制。處理器通過系統(tǒng)總線互連將輸入數(shù)據(jù)和初始密鑰寫入專用寄存器。

或者,處理器可以將AES單元配置為使用密鑰管理器經(jīng)由密鑰側(cè)載接口提供的初始密鑰,而不將密鑰暴露給處理器或連接到系統(tǒng)總線互連的其他主機(jī)。為此,處理器必須將CTRL_SHADOWED中的SIDELOAD位設(shè)置為1。然后忽略處理器對初始密鑰寄存器Key_SHARE_0-Key_SHARE1_7的任何寫入操作。在正常/自動(dòng)模式下,AES單元僅在側(cè)載密鑰標(biāo)記為有效時(shí)才開始加密/解密。

為了更新側(cè)載密鑰,處理器必須1)等待AES單元變?yōu)榭臻e,2)等待密鑰管理器更新側(cè)載關(guān)鍵字并斷言有效信號,以及3)寫入CTRL_SHADOWED寄存器以啟動(dòng)新消息。使用側(cè)載密鑰后,處理器必須觸發(fā)清除AES單元內(nèi)的所有密鑰寄存器(請參閱下面的去初始化)。

三、安全強(qiáng)化

AES單元在體系結(jié)構(gòu)、微觀體系結(jié)構(gòu)和物理級別上采用不同的手段,以針對側(cè)通道分析和故障注入進(jìn)行安全加固。

1、側(cè)通道分析

為了加劇側(cè)信道分析(SCA),AES單元實(shí)施以下對策。

1-密碼核心的一階掩碼

AES單元采用AES密碼核心的一階掩碼。更確切地說,密碼和密鑰擴(kuò)展數(shù)據(jù)路徑都使用兩個(gè)共享。如下面的框圖所示,所有寄存器和數(shù)據(jù)路徑的寬度基本上都會(huì)翻倍。

56ccbc24-2df7-11ee-815d-dac502259ad0.png

在這里插入圖片描述

初始密鑰通過寄存器接口分為兩部分提供。輸入數(shù)據(jù)以未屏蔽的形式提供,并在密碼核心之外屏蔽,以獲得初始狀態(tài)的兩個(gè)份額。屏蔽輸入數(shù)據(jù)所需的偽隨機(jī)數(shù)據(jù)(PRD)由密碼核心的偽隨機(jī)數(shù)生成器(PRNG)提供。類似地,輸出狀態(tài)的兩個(gè)份額在密碼核心之外被組合以獲得輸出數(shù)據(jù)。

相同的PRNG還生成屏蔽子字節(jié)(16個(gè)屏蔽S盒)和屏蔽KeyExpand(4個(gè)屏蔽S框)所需的新隨機(jī)性。為S-Box選擇的掩蔽方案可以對SCA電阻、電路面積、每個(gè)周期和每個(gè)S-Box評估消耗的PRD比特的數(shù)量以及吞吐量有很大影響。屏蔽S-Box實(shí)現(xiàn)的選擇可以通過編譯時(shí)Verilog參數(shù)來控制。

默認(rèn)情況下,AES單元對Gross等人提出的S盒使用面向域屏蔽(DOM):“面向域屏蔽:具有任意保護(hù)順序的緊湊屏蔽硬件實(shí)現(xiàn)”。所提供的實(shí)現(xiàn)具有每次S-Box評估5個(gè)時(shí)鐘周期的延遲。結(jié)果,在AES-128/192/256模式中,處理16字節(jié)數(shù)據(jù)塊的總等待時(shí)間分別從12/14/16增加到56/66/72時(shí)鐘周期。所提供的實(shí)現(xiàn)進(jìn)一步在DOM S-Box實(shí)例之間轉(zhuǎn)發(fā)部分中間結(jié)果,以用于重新屏蔽目的。這允許在不影響SCA電阻的情況下減少與生成、緩沖和應(yīng)用PRD相關(guān)的電路面積。

可替換地,Canright和Batina提出的屏蔽Canright S盒的兩個(gè)原始版本可以選擇:“一個(gè)非常緊湊的”完全屏蔽的“AES(校正)S盒”。這兩個(gè)版本是完全組合的(每個(gè)周期一次S盒評估)并且具有較低的占地面積,但它們對SCA的抵抗力明顯較低。

它們主要用于參考,但由于Moradi等人描述的相關(guān)性增強(qiáng)碰撞攻擊的潛在漏洞,不鼓勵(lì)使用它們:“相關(guān)性增強(qiáng)功率分析碰撞攻擊”。

每當(dāng)提供新密鑰時(shí)(參見CTRL_AUX_SHADOWED.key_TOUCH_FORCES_RESEED),以及2)基于塊計(jì)數(shù)器。此塊計(jì)數(shù)器啟動(dòng)自動(dòng)重新設(shè)定操作的速率可以通過CTRL_SHADOWED.PRNG_reseed_rate進(jìn)行配置。此外,軟件可以通過TRIGGER.PRNG_RESED手動(dòng)啟動(dòng)重新設(shè)定操作。

請注意,可以通過編譯時(shí)Verilog參數(shù)啟用/禁用屏蔽。當(dāng)例如在CSRNG內(nèi)部使用AES密碼核心來生成隨機(jī)數(shù)時(shí),禁用屏蔽是可以接受的。禁用屏蔽時(shí),還需要使用相應(yīng)的編譯時(shí)Verilog參數(shù)選擇未屏蔽的S-Box實(shí)現(xiàn)。禁用屏蔽時(shí),建議分別針對ASICFPGA目標(biāo)使用未屏蔽的Canright或LUT S-Box實(shí)現(xiàn)。兩者都是完全組合的,并且允許每個(gè)時(shí)鐘周期進(jìn)行一次S盒評估。

值得注意的是,由于輸入/輸出數(shù)據(jù)是以未屏蔽的形式通過寄存器接口提供/檢索的,因此AES單元不應(yīng)用于形成身份梯形圖,其中一個(gè)AES運(yùn)算的輸出用于形成梯形圖中下一個(gè)AES操作的密鑰。在OpenTitan中,Keccak消息驗(yàn)證碼(KMAC)單元用于此目的。

2-完全并行數(shù)據(jù)路徑

任何一階屏蔽方案主要針對一階SCA進(jìn)行保護(hù)。針對高階SCA的漏洞可能仍然存在。加劇高階攻擊的一種常見技術(shù)是增加系統(tǒng)中的噪聲,例如通過利用并行架構(gòu)。為此,AES密碼核心使用128位并行數(shù)據(jù)路徑,總共有20個(gè)并行評估的S盒(16個(gè)在SubBytes內(nèi),4個(gè)在KeyExpand內(nèi))。

除了增加噪聲以提高對高階SCA的抵抗力外,全并行架構(gòu)還實(shí)現(xiàn)了更高的性能和靈活性。它允許用戶無縫切換S-Box實(shí)現(xiàn),以便試驗(yàn)不同的掩蔽方案。為了將數(shù)據(jù)路徑與S-Boxes接口,使用了握手協(xié)議。

3-關(guān)于重置與非重置觸發(fā)器的注意事項(xiàng)

選擇觸發(fā)器類型來注冊密鑰等敏感資產(chǎn)可能會(huì)對漏洞產(chǎn)生影響,例如組合重置故障攻擊和SCA。根據(jù)OpenTitan非重置與重置失敗的基本原理,可以進(jìn)行以下觀察:如果啟用屏蔽,密鑰和狀態(tài)值將存儲(chǔ)在AES單元內(nèi)的兩個(gè)共享中。無論是個(gè)股的漢明權(quán)重還是漢明權(quán)重之和都與秘密資產(chǎn)的漢明重量成比例。

輸入/輸出數(shù)據(jù)和IV值(目前)沒有存儲(chǔ)在多個(gè)共享中,但這些數(shù)據(jù)不太重要,因?yàn)樗鼈冎皇褂靡淮?。此外,它們被存?chǔ)在32位的存儲(chǔ)體中,與將例如8位寄存器假信號復(fù)位時(shí)相比,留下了更大的假設(shè)空間。此外,當(dāng)通過TL-UL總線接口傳輸時(shí),它們也可能被提取。

因此,AES單元僅使用復(fù)位觸發(fā)器。然而,所有主密鑰和數(shù)據(jù)寄存器在復(fù)位時(shí)都用偽隨機(jī)數(shù)據(jù)清除。

4-用偽隨機(jī)數(shù)據(jù)清除寄存器

重置后或由軟件啟動(dòng)時(shí),AES模塊內(nèi)的所有主密鑰和數(shù)據(jù)寄存器都用偽隨機(jī)數(shù)據(jù)(PRD)清除。這有助于在寫入這些寄存器進(jìn)行重新配置時(shí)以及在使用后清除寄存器時(shí)減少SCA泄漏。此外,在每次加密/解密的最后一輪期間,密碼核心內(nèi)的狀態(tài)寄存器都用PRD清除。這防止了最后兩輪的狀態(tài)之間以及輸出和輸入數(shù)據(jù)之間的漢明距離泄漏。

2、故障注入

故障注入(FI)攻擊可以根據(jù)FI目標(biāo)進(jìn)行區(qū)分。

1-控制路徑

在加密設(shè)備中,控制路徑上的故障攻擊通常旨在干擾控制流,從而促進(jìn)SCA或其他攻擊。AES的示例目標(biāo)包括:切換到不太安全的操作模式(ECB),繼續(xù)處理相同的輸入數(shù)據(jù),減少輪次/提前終止,跳過特定輪次,跳過輪次中的單個(gè)操作。為了防止控制路徑上的FI攻擊,AES單元執(zhí)行以下對策。陰影控制寄存器:主控制寄存器實(shí)現(xiàn)為陰影寄存器。這意味著軟件必須執(zhí)行兩個(gè)后續(xù)寫入操作才能執(zhí)行更新。在內(nèi)部,使用一個(gè)卷影副本,該副本不斷與實(shí)際寄存器進(jìn)行比較。有關(guān)更多詳細(xì)信息,請參閱注冊工具文檔。

? FSM狀態(tài)的稀疏編碼:AES單元內(nèi)的所有FSM都使用稀疏狀態(tài)編碼。多路復(fù)用器選擇器信號的稀疏編碼:所有主要多路復(fù)用器都使用稀疏編碼的選擇器信號。

用于握手和其他重要控制信號的稀疏編碼。

多軌控制邏輯:AES單元內(nèi)的所有FSM都使用多個(gè)獨(dú)立和冗余的邏輯軌來實(shí)現(xiàn)。每個(gè)軌道精確地評估和驅(qū)動(dòng)稀疏編碼的握手或其他重要控制信號的一個(gè)比特。不斷比較不同導(dǎo)軌的輸出,以檢測潛在故障。邏輯軌道的數(shù)量可以通過相對容易的RTL修改來擴(kuò)大。默認(rèn)情況下,使用三個(gè)獨(dú)立的邏輯軌道。

強(qiáng)化圓形計(jì)數(shù)器:與密碼核心FSM類似,內(nèi)部圓形計(jì)數(shù)器通過多軌實(shí)現(xiàn)來防止FI。不斷比較不同軌道的輸出,以檢測圓形計(jì)數(shù)器中的潛在故障。

如果這些對策中的任何一個(gè)檢測到故障,就會(huì)觸發(fā)致命警報(bào),內(nèi)部FSM進(jìn)入終端錯(cuò)誤狀態(tài),AES單元不會(huì)釋放更多數(shù)據(jù)并鎖定,直到重置。由于AES單元沒有自我復(fù)位的能力,因此在AES單元能夠再次運(yùn)行之前,需要系統(tǒng)提供的復(fù)位。

STATUS.ALERT_FATAL_FAULT中報(bào)告了這種情況。沒有提供檢測到故障的詳細(xì)信息。

2-數(shù)據(jù)路徑

對數(shù)據(jù)路徑進(jìn)行故障攻擊的目的通常是通過統(tǒng)計(jì)分析來提取密鑰上的信息。AES單元的當(dāng)前版本沒有針對此類攻擊采取反措施,但未來版本很可能會(huì)采取反措施。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229841
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120363
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8598

    瀏覽量

    151156
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    799

    瀏覽量

    37873
  • AES
    AES
    +關(guān)注

    關(guān)注

    0

    文章

    104

    瀏覽量

    33234

原文標(biāo)題:三、安全強(qiáng)化

文章出處:【微信號:談思實(shí)驗(yàn)室,微信公眾號:談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    IN6xx硬件AES介紹

    硬件AES
    橙群微電子
    發(fā)布于 :2023年12月04日 14:57:33

    SOC-AES系列廣播專業(yè)10路AES數(shù)字音頻光端機(jī)

    `廣播專業(yè)AES系列數(shù)字音頻光端機(jī),采用先進(jìn)的廣播和通信專業(yè)芯片。使用先進(jìn)的FPGA、多路時(shí)分復(fù)用和時(shí)鐘恢復(fù)技術(shù)。輸入自動(dòng)均衡,時(shí)鐘恢復(fù),低抖動(dòng),透明傳輸完整AES格式信息。在1芯光纖上,傳輸10路
    發(fā)表于 03-13 22:54

    轉(zhuǎn):熟悉AES加密

    通常對代碼的加密保護(hù)有硬件加密方式和軟件加密方式。AES是通常比較常用的一種有效加密方式什么是AES加密?從概念上來說高級加密標(biāo)準(zhǔn)(英語:Advanced Encryption Standard
    發(fā)表于 07-09 17:24

    靜態(tài)DAC技術(shù)規(guī)格是什么?

      所有DAC之間的共性就是技術(shù)規(guī)格的定義以及說明。這篇文章將會(huì)論述靜態(tài)DAC技術(shù)規(guī)格。靜態(tài)DAC技術(shù)規(guī)
    發(fā)表于 08-21 08:13

    什么是AES算法? 怎樣快速實(shí)現(xiàn)AES算法?

    什么是AES算法?如何對AES算法進(jìn)行優(yōu)化?怎樣快速實(shí)現(xiàn)AES算法?
    發(fā)表于 04-28 06:51

    GPON 中的AES加密

    文章簡單的介紹了GPON 的體系結(jié)構(gòu)與下行幀的結(jié)構(gòu),并著重介紹了AES 加密的流程、方法與具體算法,最后對GPON 中的AES 加密,解密方法,AES 計(jì)數(shù)器模式在GPON中的使用進(jìn)行了詳細(xì)
    發(fā)表于 12-14 10:23 ?16次下載

    AES/EBU接口標(biāo)準(zhǔn)

    AES/EBU接口標(biāo)準(zhǔn)  AES和EBU一起開發(fā)的數(shù)字音頻傳輸接口標(biāo)準(zhǔn):AES/EBU標(biāo)準(zhǔn),即AES3-1992,ANSI S4.40-1992,或IEC-958標(biāo)準(zhǔn)。它是
    發(fā)表于 08-01 08:15 ?1.5w次閱讀
    <b class='flag-5'>AES</b>/EBU接口標(biāo)準(zhǔn)

    AES算法中S-box和列混合單元的優(yōu)化及FPGA技術(shù)實(shí)現(xiàn)

    AES算法中S-box和列混合單元的優(yōu)化及FPGA技術(shù)實(shí)現(xiàn) 由于其較高的保密級別,AES算法被用來替代DES和3-DES,以適應(yīng)更為嚴(yán)苛的數(shù)
    發(fā)表于 04-23 09:34 ?3063次閱讀
    <b class='flag-5'>AES</b>算法中S-box和列混合單元的優(yōu)化及FPGA<b class='flag-5'>技術(shù)</b>實(shí)現(xiàn)

    基于AES算法的加密模塊設(shè)計(jì)

    文中介紹了高級加密算法(AES)的基本原理,并給出了基于AES算法硬件加密模塊設(shè)計(jì)方案。通過Modelsim6.le對其進(jìn)行仿真實(shí)現(xiàn),仿真結(jié)果表明,該加密模塊能夠很好的實(shí)現(xiàn)AES算法
    發(fā)表于 02-21 15:52 ?0次下載
    基于<b class='flag-5'>AES</b>算法的加密模塊設(shè)計(jì)

    LORA6500AES 5w LORA AES加密無線數(shù)傳模塊V

    LORA6500AES 5w LORA AES加密無線數(shù)傳模塊 的資料
    發(fā)表于 09-05 17:46 ?26次下載

    AES和ECC的混合加密系統(tǒng)的設(shè)計(jì)

    AES和ECC的混合加密系統(tǒng)的設(shè)計(jì)
    發(fā)表于 10-31 09:04 ?11次下載
    <b class='flag-5'>AES</b>和ECC的混合加密系統(tǒng)的設(shè)計(jì)

    AES加密算法說明

    1 引 言 AES加密算法的一種優(yōu)化的FPGA實(shí)現(xiàn)方法 隨著密碼分析水平,芯片處理能力和計(jì)算技術(shù)的不斷進(jìn)步,des的安全強(qiáng)度已經(jīng)難以適應(yīng)新的安全需要,其實(shí)現(xiàn)速度、代碼大小和跨平臺性均難以繼續(xù)滿足
    發(fā)表于 11-30 01:31 ?2183次閱讀

    基于AES算法研究與設(shè)計(jì)

    FPCA硬件上存在的開發(fā)復(fù)雜度高且開發(fā)周期長等問題,采用高層次綜合( HLS)設(shè)計(jì)方法,使用高級程序語言描述并設(shè)計(jì)AES硬件加速算法。首先利用循環(huán)展開等提高運(yùn)算并行度;其次使用資源平衡技術(shù)進(jìn)行優(yōu)化,充分利用片上存儲(chǔ)和電路資源;最后添加全流水
    發(fā)表于 12-03 09:49 ?7次下載
    基于<b class='flag-5'>AES</b>算法研究與設(shè)計(jì)

    AES加密協(xié)議是什么?AES加密協(xié)議的應(yīng)用

    標(biāo)準(zhǔn)化過程:AES是在1997年由比利時(shí)密碼學(xué)家Joan Daemen和Vincent Rijmen共同提出的Rijndael算法基礎(chǔ)上發(fā)展起來的。經(jīng)過嚴(yán)格的國際評審和對比測試,美國國家標(biāo)準(zhǔn)與技術(shù)
    的頭像 發(fā)表于 04-15 15:34 ?875次閱讀

    開源物聯(lián)網(wǎng)技術(shù)--AES加密功能技術(shù)分享

    一、AES加密功能 在物聯(lián)網(wǎng)行業(yè)中的應(yīng)用 AES加密功能在物聯(lián)網(wǎng)行業(yè)中有著廣泛的應(yīng)用。隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的設(shè)備連接到互聯(lián)網(wǎng)上,這也增加了數(shù)據(jù)泄露和網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。為了保護(hù)物聯(lián)網(wǎng)設(shè)備
    的頭像 發(fā)表于 09-11 14:50 ?647次閱讀
    開源物聯(lián)網(wǎng)<b class='flag-5'>技術(shù)</b>--<b class='flag-5'>AES</b>加密功能<b class='flag-5'>技術(shù)</b>分享