《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 解決方案 > 用于ADF7023和ADF7023-J的AES加密與解密

用于ADF7023和ADF7023-J的AES加密與解密

2018-04-25
作者:Stephen Hinchy; Kalim Khan
關鍵詞: ADI AES

  本文說明ADF7023和ADF7023-J收發器可用的高級加密標準(AES)固件模塊(在下文中,提到ADF7023的內容也適用于ADF7023-J)。 可下載的AES固件模塊支持密鑰大小為128位、192位和256位的128位塊加密和解密。 它支持兩種模式:電碼本(ECB)模式和密碼塊鏈接(CBC)模式1。

1.png

  圖1. ECB模式

  ECB模式利用一個密鑰逐塊地加密和解密128位數據,如圖1所示。 CBC模式1則是先做一次加法運算(通過模2算法,用戶提供的128位初始化向量)再加密, 所得的密文用作下一個塊的初始化向量,依此類推,如圖2所示。

  解密過程正好相反。 固件利用片內硬件加速模塊來增大吞吐量,并將AES處理的延遲時間降至最短。

  該固件模塊名為rom_ram_7023_2_2_RS_AES.dat,包含里德-所羅門(RS)前向糾錯和AES加密,可從www.analog.com/firmwaremodules-adf7023下載。

2.png

  圖2. CBC模式1

  命令和數據包隨機存取存儲器寄存器位置

  表1. 需在AES加密或解密之前進行初始化的寄存器位置

3.jpg

  1這些寄存器定義針對該固件模塊,不適用于ADF7023的正常操作。

  AES配置變量、密鑰和數據存儲在數據包隨機存取存儲器(RAM)中。

  表2中列出了執行AES加密、生成逆密鑰或執行AES解密所需的命令。 有關AES加密和解密步驟的更多信息,參見“AES步驟”部分。

  由于使用指針、不同密鑰大小和兩種不同模式,ADF7023上的AES實現是高度可配置的。 圖3顯示了一個配置示例。

  表2. AES命令

4.jpg

5.png

  圖3. AES操作的數據包RAM存儲器分配示例

   AES步驟

  向ADF7023寫入AES固件模塊

  使用AES固件模塊之前,用戶必須將其寫入ADF7023的程序RAM中。 下列步驟詳細解釋了如何向程序RAM寫入AES固件模塊:

  1.確保ADF7023處于PHY_OFF狀態。

  2.發出CMD_RAM_LOAD_INIT命令(地址0xBF)。

  3.使用串行外設接口(SPI)存儲器塊寫入命令(0x1E00[固件模塊])向程序RAM寫入模塊;有關塊寫入的更多信息,請參見ADF7023數據手冊。

  4.發出CMD_RAM_LOAD_DONE命令(地址0xC7)。

  固件模塊現已存儲到程序RAM中。

  AES加密步驟

  下列步驟詳細說明了如何執行AES加密:

  1.將AES工作空間的起始地址寫入VAR_W_PTR。

  2.寫入VAR_KEYSIZE以設置密鑰大小。

  3.寫入VAR_AES_MODE以選擇ECB模式或CBC模式1。

  4.若使用CBC模式1(若使用ECB模式則跳過此步),

  a.將加密初始化向量的起始地址寫入VAR_ECV_PTR。

  b.將初始化向量寫入VAR_ECV_PTR指定的位置。

  5.將密鑰的地址寫入VAR_WFOR_PTR。

  6.將密鑰寫入VAR_WFOR_PTR指定的位置。

  7.將要加密的16字節塊數寫入VAR_NUM_BLOCKS。

  8.將要加密的數據地址寫入VAR_C_PTR。

  9.將要加密的數據寫入VAR_C_PTR指定的位置。

  10.發出CMD_AES_ENCRYPT (0xD0)。 用加密后的數據覆蓋要加密的數據。

  11.等待命令完成。

  AES加密示例

  在下面的AES加密示例中,將SPI命令寫入ADF7023:

  1.寫入0x18112A。 VAR_W_PTR設置為0x2A。 算法的32字節工作空間從地址0x02A開始。

  2.寫入0x18140C。 通過VAR_KEYSIZE選擇128位的密鑰。

  3.寫入0x181600。 通過VAR_AES_MODE選擇ECB模式。

  4.不使用CBC模式1,因此跳過第4步。

  5.寫入0x18136A。 VAR_WFOR_PTR設置為0x6A。 密鑰從地址0x06A開始。

  6.將密鑰寫入從地址0x06A開始的數據包RAM。

  7.寫入0x180101。 VAR_NUM_BLOCKS設置為0x01。 加密一個16字節塊。

  8.寫入0x18108A。 VAR_C_PTR設置為0x8A。 要加密的數據從地址0x08A開始。

  9.將要加密的數據寫入從地址0x08A開始的數據包RAM。

  10.寫入0xD0。 發出CMD_AES_ENCRYPT。

  11.等待命令完成。

  AES解密步驟

  下列步驟詳細說明了如何執行AES解密:

  1.將AES工作空間的起始地址寫入VAR_W_PTR。

  2.寫入VAR_KEYSIZE以設置密鑰大小。

  3.寫入VAR_AES_MODE以選擇ECB模式或CBC模式1。

  4.將密鑰的地址寫入VAR_WFOR_PTR。

  5.將密鑰寫入VAR_WFOR_PTR指定的位置。

  6.將逆密鑰的地址寫入VAR_WINV_PTR。

  7.若使用CBC模式1(若使用ECB模式則跳過此步),

  a.將解密初始化向量的地址寫入VAR_DCV_PTR。

  b.將初始化向量寫入VAR_DCV_PTR指定的位置。

  c.將解密需要的保留存儲地址寫入VAR_CIPHERBUF_PTR。

  8.發出CMD_AES_DECRYPT_INIT (0xD1)。 此命令生成并保存逆密鑰。

  9.等待命令完成。

  10.將要解密的16字節塊數寫入VAR_NUM_BLOCKS。

  11.將要解密的數據地址寫入VAR_C_PTR。

  12.將要解密的數據寫入VAR_C_PTR指定的位置。

  13.發出CMD_AES_DECRYPT (0xD2)。 用解密后的數據覆蓋要解密的數據。

  14.等待命令完成。

  AES解密示例

  在下面的AES解密示例中,將SPI命令寫入ADF7023:

  1.寫入0x18112A。 VAR_W_PTR設置為0x2A。 算法的32字節工作空間從地址0x02A開始。

  2.寫入0x18140C。 通過VAR_KEYSIZE選擇128位的密鑰。

  3.寫入0x181600。 通過VAR_AES_MODE選擇ECB模式。

  4.寫入0x18136A。 VAR_WFOR_PTR設置為0x6A。 密鑰從地址0x06A開始。

  5.將密鑰寫入從地址0x06A開始的數據包RAM。

  6.寫入0x18124A。 VAR_WINV_PTR設置為0x4A。 逆密鑰從地址0x04A開始。

  7.不使用CBC模式1,因此跳過第7步。

  8.寫入0xD1。 發出CMD_AES_DECRYPT_INIT。 此命令生成并保存逆密鑰,從地址0x04A開始。

  9.等待命令完成。

  10.寫入0x180101。 VAR_NUM_BLOCKS設置為0x01。 解密一個16字節塊。

  11.寫入0x18108A。 VAR_C_PTR設置為0x8A。 要解密的數據從地址0x08A開始。

  12.將要解密的數據寫入從地址0x08A開始的數據包RAM。

  13.寫入0xD2。 發出CMD_AES_DECRYPT。

  14.等待命令完成。

  確定AES命令完成的時間

  使用CMD_FINISHED中斷來確定CMD_AES_ENCRYPT、CMD_AES_DECRYPT_INIT和CMD_AES_DECRYPT命令何時完成。 要使能該中斷,請置位INTERRUPT_MASK_1寄存器(地址0x101)的位0 (CMD_FINISHED)。 置位該屏蔽位后,ADF7023的中斷引腳(IRQ_GP3)將在完成任何命令后置位。 向INTERRUPT_SOURCE_1(地址0x337)的位0寫入邏輯1可清除中斷。 有關中斷產生的更多信息參見ADF7023數據手冊。

  AES加密和解密時間

  典型AES執行時間如表3所示。

  表3. AES初始化、加密和解密時間

6.jpg

  


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩视频在线一区二区| 亚洲综合电影| 亚洲综合第一页| 99国产精品久久久久久久久久 | 亚洲精品免费在线播放| 激情欧美国产欧美| 国产一区二区精品丝袜| 国产欧美亚洲视频| 国产亚洲欧美激情| 国产综合色在线视频区| 国产一区二区按摩在线观看| 国产欧美一二三区| 国产午夜精品一区二区三区视频| 国产精品一区二区久久久久| 欧美日韩一区自拍| 欧美日韩精品免费观看视频| 欧美日韩精品二区第二页| 欧美日韩国产一中文字不卡| 欧美日韩国产精品成人| 欧美日韩在线播放三区| 国产精品成人在线| 国产精品人人做人人爽| 国产日韩欧美在线播放不卡| 国产拍揄自揄精品视频麻豆| 国产欧美在线| 黄色成人av在线| 亚洲国产精品一区制服丝袜| 亚洲欧洲在线一区| 日韩午夜电影av| 亚洲无吗在线| 欧美尤物一区| 亚洲精品在线免费观看视频| av成人免费在线| 亚洲欧美区自拍先锋| 欧美有码在线观看视频| 狂野欧美激情性xxxx欧美| 欧美成人免费小视频| 欧美老女人xx| 国产精品男女猛烈高潮激情| 国产日韩精品久久久| 在线观看欧美日韩| 亚洲理论在线观看| 亚洲一区二区三区在线观看视频 | 亚洲一区二区影院| 欧美一区二区精美| 亚洲人午夜精品免费| 亚洲午夜三级在线| 欧美一区在线视频| 美女脱光内衣内裤视频久久影院| 欧美日韩精品久久久| 国产亚洲观看| 亚洲欧洲偷拍精品| 亚洲欧美一区二区精品久久久| 久久国产欧美精品| 国产精品99久久久久久白浆小说| 欧美一区二区三区久久精品| 欧美成人午夜激情| 国产精品无码永久免费888| 影音先锋久久久| 亚洲一区二区三区高清不卡| 亚洲经典在线| 欧美与欧洲交xxxx免费观看| 欧美激情视频网站| 国产亚洲精品aa| 日韩网站在线观看| 亚洲第一天堂无码专区| 亚洲香蕉伊综合在人在线视看| 久久久爽爽爽美女图片| 欧美视频日韩视频在线观看| 激情久久久久久久| 亚洲一区二区综合| 日韩亚洲精品视频| 久久久www成人免费无遮挡大片| 欧美区二区三区| 国产午夜精品视频| 99热精品在线观看| 亚洲人成在线免费观看| 欧美一区二区观看视频| 欧美了一区在线观看| 狠狠色伊人亚洲综合成人| 在线亚洲一区观看| 亚洲美女少妇无套啪啪呻吟| 久久国产精品99国产| 欧美视频中文字幕| 亚洲高清在线精品| 久久国产精品亚洲77777| 亚洲欧美日韩在线不卡| 欧美日韩一视频区二区| 在线欧美电影| 欧美在线免费视频| 性18欧美另类| 欧美视频一区二区三区在线观看 | 最新国产精品拍自在线播放| 欧美尤物巨大精品爽| 午夜综合激情| 国产精品v欧美精品v日韩| 亚洲国产精品999| 亚洲福利视频一区| 久久久久88色偷偷免费| 国产欧美日本在线| 亚洲综合清纯丝袜自拍| 亚洲欧美电影在线观看| 欧美日韩综合在线| 亚洲精品一品区二品区三品区| 亚洲精品国产欧美| 久久综合狠狠综合久久综合88| 国产欧美短视频| 亚洲主播在线播放| 亚洲欧美精品suv| 国产精品久久久久一区二区三区共| 亚洲精一区二区三区| 日韩视频免费观看高清在线视频| 久久一区免费| 精品999日本| 亚洲国产精品一区二区尤物区| 久久久久国产一区二区| 国产一区二区三区在线免费观看| 午夜一区二区三视频在线观看 | 久久久xxx| 国产主播一区二区三区| 久久精品国产69国产精品亚洲| 久久精品国产99精品国产亚洲性色 | 亚洲三级视频| 欧美成人一品| 最新热久久免费视频| 一区电影在线观看| 欧美日韩国产一区精品一区| 日韩一级黄色片| 亚洲欧美日韩国产综合| 国产伦精品一区二区三区高清版| 亚洲中无吗在线| 久久动漫亚洲| 激情综合中文娱乐网| 亚洲三级影片| 欧美日韩一区二区三区高清| 中文国产成人精品| 欧美一乱一性一交一视频| 国产日韩免费| 亚洲高清免费| 欧美日韩国产电影| 亚洲一区二区三区在线播放| 久久国产一二区| 一区二区三区在线视频播放| 亚洲精品中文字幕女同| 欧美日韩一级视频| 亚洲自啪免费| 六月丁香综合| 亚洲精品美女在线观看播放| 亚洲小少妇裸体bbw| 国产啪精品视频| 亚洲激情视频在线播放| 欧美三级视频| 欧美一级二级三级蜜桃| 欧美/亚洲一区| 99精品免费视频| 久久精品中文| 亚洲三级国产| 欧美一区二区三区视频免费播放 | 亚洲综合色在线| 韩国一区二区三区在线观看| 亚洲伦理在线| 国产精品视频| 最新高清无码专区| 国产精品国产成人国产三级| 久久成人精品一区二区三区| 欧美精品色网| 香蕉精品999视频一区二区| 欧美1区3d| 亚洲主播在线观看| 欧美福利视频网站| 亚洲综合大片69999| 欧美大片免费| 性欧美videos另类喷潮| 欧美韩日一区| 欧美有码在线视频| 欧美日韩日本视频| 久久精品视频播放| 国产精品videossex久久发布| 久久精品国产综合精品| 欧美性天天影院| 亚洲国产cao| 国产精品女主播在线观看| 亚洲精品一区中文| 国产日韩在线不卡| 99精品欧美一区二区三区| 国产视频亚洲精品| 在线性视频日韩欧美| 黄色日韩网站| 午夜久久一区| 亚洲三级色网| 久热成人在线视频| 亚洲伊人观看| 欧美日韩亚洲一区二| 亚洲国产99| 国产日本欧美视频| 亚洲天堂男人| 最新69国产成人精品视频免费| 久久久久久国产精品mv| 亚洲深爱激情| 欧美日韩国产黄|