查看: 5508|回复: 6

使用i.MX RT如何保障程序代码和用户数据的安全

[复制链接]

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25466
最后登录
2025-9-4
发表于 2018-10-30 10:49:21 | 显示全部楼层 |阅读模式
使用i.MX RT如何保障程序代码和用户数据的安全
      i.MX RT1050没有配置片内的Flash,所有的程序代码和数据,都需要放在外部存储设备中(如FlexSPINOR/NAND flash,SD/EMMC卡等)。芯片上电后,CPU首先先执行内置ROM中的代码,根据eFuse或者GPIO状态给出的启动配置信息,加载前述的外部设备中的代码完成系统启动。这就带来一个非常现实的安全性问题,即如何保护存放在外部存储设备的程序代码和用户的敏感数据等。
i.MX RT1050拥有高度集成的硬件安全和密码加速引擎,通过ROM提供的高度安全启动(HAB)子功能模块,结合硬件和软件,并利用公钥基础设施(PKI)协议,防止非授权的软件控制系统的启动和运行,从而保护用户的敏感数据不被盗取。同时HAB也支持加密启动,通过对程序代码的加密可以保护软件实现不被拷贝复制。
      本文简要介绍i.MX RT的签名启动、加密启动、加密在线执行(XIP)的基本原理和过程,让用户对i.MXRT的安全机制有个初步的了解,为在自己的产品中实现适合的安全保护打下基础。
1.  签名运动
       HAB支持的签名启动要求在生成可以启动的程序映像文件时,要对原始程序映像文件用私钥进行签名操作①,并将形成的签名和包含对应公钥的数字证书②,与程序的映像文件一起,按照规定的存储格式存放在相应的可启动设备中③。
       启动时HAB将利用公钥来验证设备中的程序代码和存储的签名是否一致⑴,只有通过验签的(经过授权的)程序代码才可以运行⑵。任何非授权的程序都被拒绝执行,从而保护用户的数据安全⑶。

       其操作原理如图一所示。图中左边是使用NXP提供的CST工具在PC上完成的操作。图中右边是i.MXRT的ROM代码在设备启动时所执行的操作。
i.MX RT签名启动基本原理.jpg
1 i.MX RT签名启动基本原理
2.  加密非XIP启动
      HAB支持的加密启动,则要求在转换成可以启动的程序映像文件前,要用CST加密工具对原始程序映像文件加密①。加密所用的密钥叫做DEK(Data Encryption Key)。
      要将加密过的程序映像文件烧写到外部存储设备中,可以通过在i.MX RT1050设备上运行烧写代码来完成。在烧写过程中,运行在RT1050中的烧写代码调用硬件加密引擎,用OTP的密钥再对DEK加密,生成密文数据块 ②,并将密文块数据和密文映像文件一起,烧写到系统启动的外部存储设备中③。同时OTP的密钥,通过配置被安全地保护起来。
      启动时,HAB调用硬件加密引擎读取密文数据块的密钥,然后解密密文数据块,得到加密程序映像的原始密钥(DEK)⑴,然后用这密钥来解密存储设备中的加密程序⑵,从而得到原始的程序映像并拷贝到内部SDRAM中去,最后启动系统。其过程和原理如图二所示。
i.MX RT加密启动基本原理.jpg
2 i.MX RT加密启动基本原理
3.  加密XIP启动
      i.MX RT1050还可以通过总线加密引擎(BEE),在线、实时地对存储在FlexSPI设备(HyperFlash/QSPI/Octal闪存)中的,加密过的程序映像进行解密,来支持加密程序映像的在线执行(XIP)功能。
      BEE支持1个或2个独立的内存区域密码管理。先将整个程序映像分成一个或二个区域块,并对其分别加密,然后将分块信息(如代码加密区域的起始和结束地址、加密模式、Flash访问控制等)组织成保护区域描述块(PRDB),并对PRDB进行加密,生成加密的保护区域描述块(EPRDB)。
       程序映像块加密和PRDB加密所用的密钥是不一样的。对PRDB加密使用的密钥数据组织成密钥信息块(KIB)。密钥信息块(KIB)又被加密生成加密的密钥信息块(EKIB)。它是保存在OPT中的Key,可以配置成仅硬件可见。用户可以根据自己系统的安全要求配置或者不配置。
      加密的保护区描述块(EPRDB)、加密的密钥信息块(EKIB)和加密的程序映像,按规定的格式一起被写到FlexSPI存储设备中去。
      加密的XIP启动时,HAB首先通过硬件读取EKIB的信息,然后读取EPRDB,得  到保护区域描述块信息,最后用程序代码分区信息来配置BEE。BEE就可以在线解密FlexSPI的程序代码,实现加密程序的XIP功能。
4.  结束语
      i.MX RT1050的加密、进行数字签名、启动设备的配置参数等指令,都通过启动描述(BD)文件输入给CST工具,CST工具根据BD文件生成所要求的、可启动的程序映像文件和对应的安全信息数据。
      在Flashloader安装包中,提供有各种针对不同启动设备来实现签名启动、加密启动和加密XIP启动所需要的启动描述(BD)文件的例子。用户可以选择某个最接近自己应用的例子,以它的启动描述(BD)文件为基础,修改对应的参数和配置,来实现自己设备上的安全或加密启动方案。

       如何对程序代码进行签名和加密,来实现签名启动、加密启动或加密的XIP,更多内容请参考AN12709(How to use i.MX RT Security Boot)、i.MX RT1050的Flashloader安装目录下的doc目录中的文档,以及CST安装目录中docs目录中的CST工具手册(HAB Code-Signing ToolUser’s Guide)。

回复

使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3937

    主题

    7558

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40210
    最后登录
    2025-9-8
    发表于 2018-10-30 10:52:19 | 显示全部楼层
    学习下
    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 1517 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    152

    主题

    3198

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8780
    最后登录
    2025-9-8
    发表于 2018-10-30 16:14:47 | 显示全部楼层
    学习了               
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 21:57
  • 签到天数: 1879 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112735
    最后登录
    2025-9-7
    发表于 2018-10-31 00:18:27 | 显示全部楼层
    了解一下~
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2021-2-4 09:24
  • 签到天数: 190 天

    连续签到: 1 天

    [LV.7]常住居民III

    38

    主题

    591

    帖子

    28

    金牌会员

    Rank: 6Rank: 6

    积分
    2207
    最后登录
    2025-8-11
    发表于 2018-10-31 10:28:49 | 显示全部楼层
    学习一波,虽然看得不是很懂

    点评

    没关系啊,慢慢来  发表于 2018-11-1 09:06
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-3 12:59
  • 签到天数: 140 天

    连续签到: 1 天

    [LV.7]常住居民III

    0

    主题

    200

    帖子

    0

    高级会员

    Rank: 4

    积分
    500
    最后登录
    2020-11-3
    发表于 2018-11-1 09:31:23 | 显示全部楼层
    学习学习!
    今天天气不错!签到!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-8 13:40 , Processed in 0.101188 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表