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

嵌入式系统越来越普遍地采用云技术来进行数据采集、事件检测和软件更新 。 这些远程物联网设备普遍通过固件完成设置 , 这些固件有可能存储在主机MCU中 , 也有可能存储在外置非易失性存储器的用户空间中 。 而这些非易失性存储器中的内容则是恶意攻击的主要对象 。 对于所有全新开发的物联网设备来说 , 采取应对措施防止非易失性存储器的非授权修改 , 已成为一项基本的设计要求 。
『产业气象站』技术文章—互联环境中的安全存储器
文章图片
图1-作为节点的互联嵌入式系统
本文将对分立闪存存储器领域开始涌现的加密和安全基础设施进行介绍 , 并探讨如何将这些新特性用于物联网互联设备的安全保障 。
新一代安全NOR闪存产品
NOR闪存制造商已经开发出了一些NOR闪存产品 , 这些产品通过集成加密基础设施 , 能够提供高水准安全性 。 设备配对(主机MCU和NOR闪存)与认证写入(编程与擦除)操作已通过使用对称加密来实现 。 这些设备通常都是基于HMAC引擎和非易失性累加计数器 。 在配置过程中 , 需要先将对称密钥同时加载到主机MCU和安全NOR闪存器件中 , 以便在正常操作时执行经认证的读写操作 。
『产业气象站』技术文章—互联环境中的安全存储器
文章图片
图2-采用集成加密的新一代NOR闪存器件(使用串行外设接口)
最近 , 内部NOR闪存基础设施的发展已经超出了内部状态机实际管理的范畴 。 较新型设备集成了CPU子系统(CPUSS) , 能够执行透明负载均衡和坏块替换等高级功能 。 一旦CPU子系统成为闪存器件基础设施的组成部分 , 那么增添加密硬件块和数据包缓存的想法就能很快成为现实 。 通过使用这种全新的基础存储器件 , 就能够开发出一系列安全功能 , 从而为加密安全提供支持 。 在NOR闪存领域 , 用户存储阵列的访问控制和执行前的分层代码验证是得到大量关注的两个特性 。
将用户存储空间划分为安全区域
较新型NOR器件的用户存储空间能够划分成多个区域 , 每个区域可以单独配置 , 用于传统(非安全)访问或安全访问 。 配置为安全访问的区域能够设定为受控读/写访问或认证访问 。
配置为受控访问的安全区域能够独立启用或禁用读/写操作 。 启用/禁用设置由认证序列(需要主机MCU证明其知晓共享密钥)进行管理 。 在制造过程中 , 共享密钥将被同时加载到主机MCU和存储器 。 试图访问禁用区域的读或写将在读取期间返回未定义数据 , 并且写入尝试将会被阻断 。 配置为受控访问状态的区域可以选择配置成加电读/写访问状态 。 例如 , 可以将启动区域配置为加电时可读不可写 , 而将其余区域配置为禁用所有读/写访问 。
此外 , 安全区域也可以配置为只支持经认证的读写访问 。 认证区域不支持传统读写 。 认证读写操作是通过数据包传输来执行的 , 其中包含HMAC , 表示知晓共享密钥和非易失性命令累加计数器值 。 在访问请求中使用命令累加计数器能防范重放攻击 。
『产业气象站』技术文章—互联环境中的安全存储器
文章图片
图3-用户阵列的安全分区
软件层之间的安全性
此外 , 分层验证软件也成为安全环境中的常见做法 。 可信计算组织的设备身份合成引擎(DICE)工作组已发布一项策略 , 即每层代码在释放控制前都需要向下一层代码进行证实 。 当主机MCU无法集成可编程存储器时 , 系统级场景会变得更加复杂 。 从NOR闪存CPUSSROM开始(推定为可信) , 分立闪存器件开始支持DICE策略的变化 。
NOR闪存CPUSSROM在加电重置(PoR)时执行 , 在将代码执行移交给CPUSS闪存前 , 先验证其捕获的闪存器件启动代码(在CPUSS闪存内 , 未暴露给用户阵列)是否完整 。 完成这种DICE0层复合器件识别符(CDI)计算需要结合使用唯一的器件密钥(对每个闪存器件有唯一性) , 以及对驻留在0层中的闪存器件启动代码的测量值 。