[活动专区] 【AT-START-F407测评】+安全库区(SLIB)的应用

[复制链接]
5360|9
 楼主| 纪国圣 发表于 2021-1-28 21:18 | 显示全部楼层 |阅读模式
本帖最后由 纪国圣 于 2021-1-28 21:29 编辑

#申请原创#

1.SLIB简介
安全库区(SLIB)是一项AT32特有的代码安全保护功能。有别于传统的软件加密和硬件代码加密,其从硬件上对特定地址的代码进行隔离,用户可以调用代码,但不能对其逆向操作,可以保护特定地址的代码不被恶意读写。其原理类似于TrustZone,但SLIB比其更加灵活。具体详见下图官方的介绍。
1_1.PNG
2.SLIB的启动与停止流程简介
1_2.PNG
1_3.PNG
1_4.PNG
3.SLIB使用方法
3.1被保护代码工程的建立
首先拿一个可以正常使用的AT32F407VG工程。在此基础之上添加一个二次函数求根函数、开方函数和常量sin_data,作为此次被SLIB保护的代码核心。
1_0.PNG
1.PNG
2.PNG

这里说明一下之所以写一个开方函数div_sqrt而不用math.h中的sqrt,是因为这牵扯到安全库区代码与用户区代码的关联性。 1_5.PNG
1_6.PNG
回到工程的建立。在main函数中添加Get_Quadratic_Function以验证代码的正确性。
3.PNG
编译下载,可以看到代码一项无误。
4.PNG
接下来开始对工程进行设置。首先将Get_Root.c与constant.c通过右键选择 Option for File ‘Get_Root.c’和Option for File ‘constant.c’将其编译过程设置为Execute-only Code。
5.PNG
之后将project\Objects下的AT32F407.sct拷贝出来放置在与AT32F407.uvprojx同一个文件路径中。
6.PNG
依次点击Target 1— Optios for Target 'Target 1'—Linker,按图所示设置拷贝出来的AT32F407.sct。
7.PNG
其中第二步选择与AT32F407.uvprojx同一个文件路径的AT32F407.sct。Get_Root.o被设置在0x08001000,0x08001000作为指令安全库区;constant.o被设置在0x08002000,0x08002000作为数据安全库区。IRAM1和IRAM2主要是为了避免SLIB保护区的代码与终端用户的代码用到相同的RAM而产生的冲突问题。
sin_data也要设置存储地址。
8.PNG
按照启动SLIB流程添加代码。
9.PNG
10.PNG
11.PNG
编译后会出现警告,暂不理会。打开ArteryICPProgrammer.exe,按图所示启动SLIB下载程序。
12.PNG
13.PNG
14.PNG
依次点击Target 1— Optios for Target 'Target 1'—Linker,在Misc controls这一栏,添加--symdefs=GetRoot.txt命令产生符号定义文件。
15.PNG
16.PNG
打开GetRoot.txt,可以看到各函数编译后的地址。
17.PNG
只保留Get_Quadratic_Function、div_sqrt、sin_data。
18.PNG
3.2测试工程的建立
新建工程,将AT32F407.sct拷贝出来放置在与AT32F407.uvprojx同一个文件路径中,按图所示修改。
19.PNG
其中第二步选择与AT32F407.uvprojx同一个文件路径的AT32F407.sct。第四步需要根据3.1中的AT32F407.sct配置修改。
添加GetRoot.txt到工程,将GetRoot.txt的文件类型更改为Object文件。
20.PNG
添加测试函数。
21.PNG
编译运行,一切正常。
22.PNG
进入调试状态,发现0x08001000开始的程序不能读取。
23.PNG
24.PNG
0x08002000开始的数据读取正常。
25.PNG
26.PNG
这些说明SLIB已如预期工作。
官方文档如下:
AT32F403A_407 安全库区(SLIB) 应用指南.pdf (1.56 MB, 下载次数: 76)
官方例程:
AT32F403A_407_sLib_Demo_V1.0.1.zip (225.39 KB, 下载次数: 46)

本文例程:

SLIB.zip (2.02 MB, 下载次数: 172)






 楼主| 纪国圣 发表于 2021-1-28 21:54 | 显示全部楼层
laserpic 发表于 2021-11-4 09:29 | 显示全部楼层
这个slib可以防止**吗?
laserpic 发表于 2021-11-4 09:30 | 显示全部楼层
这个slib可以防止别*人*破*解*吗?
kjkujkj22 发表于 2021-11-4 09:43 | 显示全部楼层
感谢楼主的分享,不错的**。
lqwuliang 发表于 2021-12-9 23:14 | 显示全部楼层
看看,学习学习
座机呀 发表于 2025-2-8 16:56 | 显示全部楼层
好帖,我看官方的文档,云里雾里,看了楼主的立马就搞通了
呐咯密密 发表于 2025-2-14 09:15 | 显示全部楼层
这个功能很实用,一些关键的核心算法放这里很安全
zsp06312222 发表于 2025-6-12 11:09 | 显示全部楼层
就一个问题,上面的工程程序生成不了bin文件,总是生成.bin文件夹
FadingHorizon 发表于 2025-6-13 07:41 | 显示全部楼层
现在加密库貌似是高端芯片的标配了,确实很有用,不然被逆向就很烦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

407

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部