打印
[活动专区]

【AT-START-F407测评】+安全库区(SLIB)的应用

[复制链接]
3706|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 纪国圣 于 2021-1-28 21:29 编辑

#申请原创#

1.SLIB简介
安全库区(SLIB)是一项AT32特有的代码安全保护功能。有别于传统的软件加密和硬件代码加密,其从硬件上对特定地址的代码进行隔离,用户可以调用代码,但不能对其逆向操作,可以保护特定地址的代码不被恶意读写。其原理类似于TrustZone,但SLIB比其更加灵活。具体详见下图官方的介绍。

2.SLIB的启动与停止流程简介



3.SLIB使用方法
3.1被保护代码工程的建立
首先拿一个可以正常使用的AT32F407VG工程。在此基础之上添加一个二次函数求根函数、开方函数和常量sin_data,作为此次被SLIB保护的代码核心。




这里说明一下之所以写一个开方函数div_sqrt而不用math.h中的sqrt,是因为这牵扯到安全库区代码与用户区代码的关联性。

回到工程的建立。在main函数中添加Get_Quadratic_Function以验证代码的正确性。

编译下载,可以看到代码一项无误。

接下来开始对工程进行设置。首先将Get_Root.c与constant.c通过右键选择 Option for File ‘Get_Root.c’和Option for File ‘constant.c’将其编译过程设置为Execute-only Code。

之后将project\Objects下的AT32F407.sct拷贝出来放置在与AT32F407.uvprojx同一个文件路径中。

依次点击Target 1— Optios for Target 'Target 1'—Linker,按图所示设置拷贝出来的AT32F407.sct。

其中第二步选择与AT32F407.uvprojx同一个文件路径的AT32F407.sct。Get_Root.o被设置在0x08001000,0x08001000作为指令安全库区;constant.o被设置在0x08002000,0x08002000作为数据安全库区。IRAM1和IRAM2主要是为了避免SLIB保护区的代码与终端用户的代码用到相同的RAM而产生的冲突问题。
sin_data也要设置存储地址。

按照启动SLIB流程添加代码。



编译后会出现警告,暂不理会。打开ArteryICPProgrammer.exe,按图所示启动SLIB下载程序。



依次点击Target 1— Optios for Target 'Target 1'—Linker,在Misc controls这一栏,添加--symdefs=GetRoot.txt命令产生符号定义文件。


打开GetRoot.txt,可以看到各函数编译后的地址。

只保留Get_Quadratic_Function、div_sqrt、sin_data。

3.2测试工程的建立
新建工程,将AT32F407.sct拷贝出来放置在与AT32F407.uvprojx同一个文件路径中,按图所示修改。

其中第二步选择与AT32F407.uvprojx同一个文件路径的AT32F407.sct。第四步需要根据3.1中的AT32F407.sct配置修改。
添加GetRoot.txt到工程,将GetRoot.txt的文件类型更改为Object文件。

添加测试函数。

编译运行,一切正常。

进入调试状态,发现0x08001000开始的程序不能读取。


0x08002000开始的数据读取正常。


这些说明SLIB已如预期工作。
官方文档如下:
AT32F403A_407 安全库区(SLIB) 应用指南.pdf (1.56 MB)
官方例程:
AT32F403A_407_sLib_Demo_V1.0.1.zip (225.39 KB)

本文例程:

SLIB.zip (2.02 MB)






使用特权

评论回复
沙发
纪国圣|  楼主 | 2021-1-28 21:54 | 只看该作者

使用特权

评论回复
板凳
laserpic| | 2021-11-4 09:29 | 只看该作者
这个slib可以防止**吗?

使用特权

评论回复
地板
laserpic| | 2021-11-4 09:30 | 只看该作者
这个slib可以防止别*人*破*解*吗?

使用特权

评论回复
5
kjkujkj22| | 2021-11-4 09:43 | 只看该作者
感谢楼主的分享,不错的**。

使用特权

评论回复
6
lqwuliang| | 2021-12-9 23:14 | 只看该作者
看看,学习学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

405

帖子

5

粉丝