打印
[PSoC™]

PSoC6 安全性实现系列- 1 关于PSoC6的生命周期

[复制链接]
167|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在使用PSoC6功能开发完成后,大家都会不禁想到安全性的问题,如何防止自己的固件被被人读出或者恶意篡改,这是发布产品之前都需要考虑的问题。
针对安全性,我们大概会想到几个大的方面去实现:
1. 禁掉debug口。防止别人通过debug口将程序读出或者写入,在芯片和外部直接的接口断掉
2. 安全启动,程序运行之前进行验证操作。只有验证通过的程序才可以运行在板子上,确保没有被篡改
3. 通信加密。比如通过串口或SPI口发送加密数据,只有用特定私钥加密过的指令才被接受执行
4. 芯片内部的区域保护。这是大部分用户忽略的一点,但这个措施在双核芯片上很常见。每个核有自己的一块可访问区域,也有共享区域,做到尽量互不干扰。一个核的奔溃不会波及到另外一个核的运行。

针对以上几个方面我们后续分几个系列讲解。这次主要讲解关于禁掉debug口。在讲如何禁掉debug口之前,我们需要了解一个概念:生命周期(Lifecycle)

对于PSoC6来说,一共有5个生命周期,分别为:
VIRGIN: 这是芯片在工厂时处于的阶段,在这个阶段,工厂会将trim value/boot code等写入芯片的SFlash中,并会产生一个hash value,之后会转入NORMAL阶段。
NORMAL: 当大家拿到芯片时,它就处于这个阶段。在这个阶段,用户可以通过debug口去访问芯片。现阶段很多用户程序发布后芯片依然处于这个阶段,如果对安全性要求比较高,可以将生命周期转入下个阶段SECURE。
SECURE: 在这个阶段,芯片从启动开始就开始一步步验证后续启动的程序和用到的公钥,确保每一步的安全性都有保障。
SECURE WITH DEBUG: 这个阶段是用来调试SECURE阶段的,它和SECURE的唯一区别是boot code是使用NAR(后续会讲到)配置debug口。
RMA: 这个阶段用于芯片出问题需要返厂做FA时使用,在这个阶段 debug 口会打开方便厂家访问memory查找问题,转到这个阶段的时候用户的一些重要及敏感信息会被删除,确保用户数据的安全性。

讲完生命周期我们看到用户拿到芯片后时处于NORMAL阶段的,如果安全性高那么可能用户会将其转到SECURE,下面介绍在这两个阶段如何通过配置禁掉debug口。

芯片在启动过程中,flash boot会根据芯片的生命周期的不同选择使用不同的配置去配置debug口。在NORMAL阶段使用NAR(Normal Access Restrictions)配置,在SECURE阶段使用SAR(Secure Access Restrictions)配置。
NAR与SAR结构是一样的,但是存储位置不一样。NAR存储在SFlash中,而SAR存储在efuse中。它们的结构如下图:

具体每位的含义大家可以参考:AN221111 中的附录C

那么在程序中应该如何写NAR和SAR呢?
写NAR方法:
只需要在自己的工程中加入以下代码:
CY_SECTION(".cy_sflash_nar") __USED uint16_t nar = 0x0007;
但是需要注意一点:debug口禁掉后如果芯片出现了问题,是无法返厂做FA的,所以做出禁掉debug口的决定一定要慎重

写SAR的方法:
可以参考我们关于security的例程mtb-example-psoc6-security, 可以找到里面的cy_ps_efuse.h和cy_ps_efuse.c两个文件,修改结构体cy_efuse_data:

这个修改要生效需要在cy_ps_efuse.h中打开efuse: #define CY_EFUSE_AVAILABLE 1

且需要将生命周期转到SECURE


请注意,SECURE阶段请不要轻易转,后面一节我们会具体讲解如何转SECURE, 以及需要做哪些准备工作,有哪些注意事项。这里只是简单展示如何通过改efuse中的SAR。

本节先简单介绍到这里,希望大家看完能对PSoC6的生命周期有一个基本的概念,以及了解如何修改NAR和SAR。如果对这个主题感兴趣,可以访问 AN221111  和 mtb-example-psoc6-security 了解详细信息,也欢迎大家来infineon的communityhttps://community.infineon.com/来讨论交流。


使用特权

评论回复
沙发
IFX_Ida|  楼主 | 2024-4-2 17:17 | 只看该作者
一点补充:生命周期只能从上往下依次转换,不可逆转。举例来说就是,如果从NORMAL转到了SECURE后,就不可再转到NORMAL

使用特权

评论回复
板凳
caigang13| | 2024-4-2 20:47 | 只看该作者
这个片子主要用于车载端吗?

使用特权

评论回复
地板
chenjun89| | 2024-4-3 07:42 | 只看该作者
烧写程序后开启反熔丝功能

使用特权

评论回复
5
小夏天的大西瓜| | 2024-4-22 21:55 | 只看该作者
生命周期只能从上往下依次转换,不可逆转

使用特权

评论回复
6
中国龙芯CDX| | 2024-4-23 15:33 | 只看该作者
生命周期是开发制作的一个过程吧

使用特权

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

本版积分规则

认证:英飞凌科技股份公司
简介:关于英飞凌——我们致力于打造一个更加便利、安全和环保的世界,在赢得自身成功发展的同时,积极践行企业社会责任。

8

主题

14

帖子

1

粉丝