首先明确信息安全的概念,所谓的信息安全就是保护信息的安全,同时包含三个方面:信息的机密性,完整性,可用性。
嵌入性系统信息安全攻击类型主要有三种:
- 价值逻辑攻击,也就是从设备外部进行攻击,具体的方式有本地或者远程,访问通讯接口,软件漏洞,调试接口等;
- 电路板级攻击,即接触设备内部电路板,具体的方式有存储器探测,错误注入,侧信道等;
- 另外还有就是芯片级别的攻击,对芯片内部进行攻击,进行的方式有激光,聚焦离子束,逆向工程
MCU设备的信息安全,典型需求主要是:保护固件安全,保护数据安全,保护通信安全等。
STM32 MCU 能支持高达十几种安全功能以满足客户使用案例和安全标准,下面列出部分主要功能,其他未列出部分请参考
MCU产品相关文档。
- 安全启动:确保每次系统启动时运行的应用程序的可信性(来源可靠,没有经过修改)。
- 每次上电一定执行
- 每次上电只能从确定的代码开始执行
- 系统内建的信任根,验证后续执行代码的完整性与合法性(数字签名或者MAC方式验证)
- 在安全启动的基础上可以通过类似的机制实现信任链,确保系统运行的所有应用程序代码的真实可信
ST提供安全启动参考代码:https://www.st.com/en/embedded-software/x-cube-sbsfu.html
安全启动架构和过程:
2.安全调试:防止通过调试端口非法访问关键资源,如:代码,数据等;
通常做法是:1)永久关闭调试端口,通过将RDP设置成Level 2可以实现,一旦设置level2,将无法再被修改,通常通过
bootloader实现升级。
2)关闭部分调试功能,通过将RDP设置成Level1,不能从调试端口访问Flash,如果将RDP从Leve1 设置成Level0,用
户Flash区和安全区域将被删除。
3)通过授权重新打开调试访问,例如:密码,证书等。
3. 安全生产:防止固件或者应用数据在工厂生产过程中被窃取或修改。
1)固件以加密形式交付工厂生产
2)固件数据带有MAC校验数据,防止被修改
3)固件解密密钥通过安全方式交付工厂
4)固件解密密钥以密文形式(license)传送给MCU,由MCU自身完成数据解密和烧写入内部Flash
5)能够记录和控制产生license的数量,防止过量生产
4.安全隔离:限制关键资源的访问权限,避免攻击者利用应用程序可能存在的弱点获取关键数据或进行关键操作。
1)双核或多核隔离,关键数据与操作放在安全核完成
2)TrustZone硬件隔离机制
3)利用单核的Cortex-M 内核自带的MPU实现基本的隔离
最后,再介绍一下STM32密码学功能-Cryptolib:STM32官方算法库包括AES128、AES192、AES256、DES(ECB、CBC)、
HASH(MD5、SHA-1、SHA-256)、RSA、ECC等加密,
目前版本:STM32 Cryptolib V3.1.0 & patch versions
官方下载链接:https://www.st.com/x-cube-cryptolib
STM32 MCU信息安全参考链接:
ST安全全球官网:https://www.st.com/stm32trust
STM32 MCU中文官网:https://www.stmcu.com.cn/ •
生态系统→垂直应用→信息安全 https://www.stmcu.com.cn/ecosystem/app/information-security-OVERVIEW
生态系统→芯片系列:
https://www.stmcu.com.cn/ecosystem/chip/chipfamily-stm32wb https://www.stmcu.com.cn/ecosystem/chip/chipfamily-STM32L5-entry
评论