測試環(huán)境
測試單板
ZCU106
測試工具
Vitis 2021.2
R5 AES 測試流程
創(chuàng)建Platform
在Vitis的 “File - New ” 中,選擇“Platform Project”, 指定名稱如“zcu106_r5”, 再選擇對應(yīng)的XSA文件和 Processor 如 “psu_cortexr5_0”。
使能AES庫
1. 打開hw_platform工程。
2. 雙擊“platform.spr”文件。
3. 雙擊“psu_cortexr5_0”的 “board support package”。
4. 點(diǎn)擊 “Modif BSP Settings”。
5. 在“Supported Libraries”中選擇xilsecure。
導(dǎo)入AES示例
1. 打開hw_platform工程。
2. 雙擊“platform.spr”文件。
3. 雙擊“psu_cortexr5_0”的 “board support package”。
4. 等待Libraries窗口顯示
5. 點(diǎn)擊xilsecure行右邊的import examples
6. 選擇"xilsecure_aes_example"
定制
導(dǎo)入example, 創(chuàng)建的工程里有文件xilsecure_aes_example.c。 打開文件,確認(rèn)AES 密鑰和數(shù)據(jù)地址。
AES密鑰
AES密鑰如下:
/*
* The hard coded aes key for decryption, in case user given key is being used
* it will be loaded in KUP before decryption
*/
static const u8 CsuKey[] = {
0xf8, 0x78, 0xb8, 0x38, 0xd8, 0x58, 0x98, 0x18,
0xe8, 0x68, 0xa8, 0x28, 0xc8, 0x48, 0x88, 0x08,
0xf0, 0x70, 0xb0, 0x30, 0xd0, 0x50, 0x90, 0x10,
0xe0, 0x60, 0xa0, 0x20, 0xc0, 0x40, 0x80, 0x00
};
/*
* The hard coded iv used for decryption secure header and block 0
*/
u8 CsuIv[] = {
0xD2, 0x45, 0x0E, 0x07, 0xEA, 0x5D, 0xE0, 0x42, 0x6C, 0x0F, 0xA1, 0x33,
0x00, 0x00, 0x00, 0x00
};
內(nèi)存地址
默認(rèn)保存密文和明文的內(nèi)存地址都是0x04000000,需要和代碼中的地址對應(yīng),可以根據(jù)自己需要更改。
static u32 ImageOffset = 0x04000000;
static u32 DestinationAddr = 0x04000000;
創(chuàng)建密文
AMD提供工具bootgen,加密數(shù)據(jù),創(chuàng)建密文。
bootgen的配置文件user_data_example.bif如下:
the_ROM_image:
{
[keysrc_encryption]kup_key
[encryption=aes, aeskeyfile=user_data_kup_key_example.nky, load=0x04000000]data.bin
}
上面的data.bin是明文文件; user_data_kup_key_example.nky是AES的密鑰。如果不存在AES的密鑰, 工具bootgen會(huì)自動(dòng)生成密鑰。 生成密鑰后,需要更新文件xilsecure_aes_example.c。
在“Xilinx Software Command Line Tool 2021.2”中執(zhí)行命令,“ bootgen -arch zynqmp -p userdata -image user_data_example.bif -o data.bin.enc -w on -log error”,可以得到密文文件data.bin.enc。
xsct% bootgen -arch zynqmp -p userdata -image user_data_example.bif -o data.bin.enc -w on -log error
WARNING: [Common 17-259] Unknown Tcl command 'bootgen -arch zynqmp -p userdata -image user_data_example.bif -o data.bin.enc -w on -log error' sending command to the OS shell for execution. It is recommended to use 'exec' to send the command to the OS shell.
****** Xilinx Bootgen v2021.2
**** Build date : Oct 19 2021-03:13:27
** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.
[INFO] : Bootimage generated successfully
運(yùn)行AES
以調(diào)試模式運(yùn)行工程xilsecure_aes_example_1。當(dāng)Vitis SDK停在main()入口時(shí),在xsct界面里下載密文到0x4000000。下載完成后,再繼續(xù)運(yùn)行xilsecure_aes_example_1。 運(yùn)行完XSecure_AesDecrypt()后,暫停程序,顯示存儲(chǔ)器0x4000000的內(nèi)容,可以看到它的內(nèi)容和明文的16進(jìn)制值一樣。
AES解碼成功。
xsct%
Info: Cortex-R5 #0 (target 6) Stopped at 0x0 (Suspended)
Downloading Program -- C:/prj/zcu102/v212/vitis_space_r5_csu2/xilsecure_aes_example_1/Debug/xilsecure_aes_example_1.elf
section, .vectors: 0x00000000 - 0x00000467
.................
section, .stack: 0x001044f0 - 0x00107cef
0% 0MB 0.0MB/s ??:?? ETA
100% 0MB 0.5MB/s 00:00
Setting PC to Program Start Address 0x000001d0
Successfully downloaded C:/prj/zcu102/v212/vitis_space_r5_csu2/xilsecure_aes_example_1/Debug/xilsecure_aes_example_1.elf
Info: Cortex-R5 #0 (target 6) Running
Info: Cortex-R5 #0 (target 6) Stopped at 0x1001b8 (Breakpoint)
main() at ../src/xilsecure_aes_example.c: 123
123: Status = SecureAesExample();
xsct% dow -data data.bin.enc 0x04000000
0% 0MB 0.0MB/s ??:?? ETA
100% 0MB 0.4MB/s 00:00
Successfully downloaded C:/prj/zcu102/v212/vitis_space_r5_csu2/xilsecure_aes_example_1/data.bin.enc
xsct% Info: Cortex-R5 #0 (target 6) Running
xsct% Info: Cortex-R5 #0 (target 6) Stopped at 0x100204 (Step)
SecureAesExample() at ../src/xilsecure_aes_example.c: 153
153: u8 *Dst = (u8 *)(UINTPTR)DestinationAddr;
xsct% Info: Cortex-R5 #0 (target 6) Running
xsct% Info: Cortex-R5 #0 (target 6) Stopped at 0x100214 (Step)
....................
xsct% Info: Cortex-R5 #0 (target 6) Stopped at 0x100370 (Breakpoint)
189: Status = XSecure_AesDecrypt(&Secure_Aes, Dst,
xsct% Info: Cortex-R5 #0 (target 6) Running
xsct% Info: Cortex-R5 #0 (target 6) Stopped at 0x10038c (Step)
194: if(Status != XST_SUCCESS)
xsct% mrd 0x04000000
4000000: 6D783F3C
xsct% mrd 0x04000000 20
4000000: 6D783F3C
4000004: 6576206C
4000008: 6F697372
400000C: 31223D6E
4000010: 2022302E
4000014: 6F636E65
4000018: 676E6964
400001C: 5455223D
4000020: 22382D46
4000024: 61747320
4000028: 6C61646E
400002C: 3D656E6F
4000030: 226F6E22
4000034: 0A0D3E3F
4000038: 69663F3C
400003C: 6556656C
4000040: 6F697372
4000044: 2E34206E
4000048: 3F302E30
400004C: 70633C3E
xsct%
審核編輯:湯梓紅
-
amd
+關(guān)注
關(guān)注
25文章
5466瀏覽量
134087 -
AES
+關(guān)注
關(guān)注
0文章
103瀏覽量
33225 -
MPSoC
+關(guān)注
關(guān)注
0文章
198瀏覽量
24271 -
Vitis
+關(guān)注
關(guān)注
0文章
146瀏覽量
7421
發(fā)布評論請先 登錄
相關(guān)推薦
評論