安全软件开发与项目创建全解析
1. 故障处理程序(Fault Handler)
在使用TrustZone安全特性时,安全固件的配置至关重要。硬故障(HardFault)和总线故障(BusFault)异常应指向安全状态,即AIRCR.BFHFNMINS位需保持为零。同时,建议对安全固件中的故障异常进行设置,防止在安全世界触发故障异常后,非安全代码执行可能引发故障安全上下文操作,这是因为在安全攻击中,安全世界的故障异常可能触发,而故障安全上下文的安全堆栈可能被破坏,所以需要停止安全上下文并防止非安全代码进一步操作。
若被破坏的是安全进程堆栈(PSP_S),且相关安全上下文(软件线程)可终止,那么恢复正常执行是安全的。此时,安全软件可选择包含回调API功能,以便在故障发生时通知非安全软件。若被破坏的是安全主堆栈,或故障安全上下文无法终止,则应重启系统。
为进一步降低安全风险,安全软件可通过将安全世界故障异常的优先级设为高于非安全异常来防止非安全软件攻击,具体方法有:
- 方法一 :将AIRCR.PRIS设为1,并确保安全世界的总线故障、使用故障、安全故障和内存管理故障的异常优先级在0到0x7F范围内。
- 方法二 :不在安全世界启用总线故障、使用故障、安全故障和内存管理故障,使针对安全状态的故障事件升级为安全硬故障。
由于硬故障和总线故障异常指向安全状态,非安全软件开发人员在调试时难以找出软件故障原因,因为这些故障异常的状态信息在非安全世界无法访问。为便于调试,使用Cortex - M33处理器的非安全软件开发人员应启用使用故障和内存管理故障,并将其优先级设为高于其他中断
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



