『产业气象站』技术文章—互联环境中的安全存储器( 二 )


国际标准文档NISTSP800-56C介绍了在CDI计算中使用的可接受的加密单向函数 。 唯一器件密钥用于0层CDI计算 。 0层CDI验证将计算值与NOR制造商提供的存储在片上的预期值进行比较 。
在确认CPUSS闪存有效后 , 代码执行就从ROM启动代码传递到(0层)CPUSS闪存器件启动代码 。 接下来 , NOR器件将验证由系统制造商编程到用户阵列中的系统级启动代码 。 测得的系统级启动代码值将被用于与器件配置过程中存储在片上的预期值进行比较 。 这两步验证发生在闪存器件运行其PoR序列的过程中 , 在可供主机MCU访问之前 。 请注意 , 在整个启动过程中 , 务必确保CDI值不被暴露给更高层的代码 , 当然还有恶意行为者 。
『产业气象站』技术文章—互联环境中的安全存储器
文章图片
图4-安全软件分层
在完成闪存器件PoR序列的执行后 , 系统级启动代码将会暴露给主机MCU供其执行 。 在确认系统级启动代码的真实性后 , 系统启动流程能够继续运行 。 分层验证策略还能继续执行 , 方便主机CPU对每个新软件层的验证工作进行管理 。
图4描绘了从闪存启动代码到用户应用的线性推进过程 。 实际情况很可能复杂得多 , 尤其是在程序控制权被移交给操作系统后 。 请注意 , 一旦系统级启动代码取得程序控制权 , 每个后续层的证实值都能够与本地值(存储在闪存器件中)进行比较 , 或更理想的话 , 还能够与远程驻留(可能是云服务器)值进行比较 。 如果使用DICE规范中规定的数字证书 , 远程验证的安全性还能进一步提高 。
结论
【『产业气象站』技术文章—互联环境中的安全存储器】片上加密基础模块显著缓解了传统非易失性存储器的受到的安全威胁 。 反克隆问题能够通过主机MCU与闪存存储器之间的设备配对得到解决 。 使用阵列分区和可配置访问权限能够处理非授权访问 。 通过可信计算组织制定的DICE策略 , 解决了恶意篡改代码的检测和恢复问题 。 集成在新型闪存存储器中的加密功能模块成功地解决了传统系统中存在的大量安全漏洞 , 说明外置Flash架构能够解决未来可能出现的安全问题 。


推荐阅读