manhuami2007 发表于 2022-12-29 09:50

[ ST NUCLEO-U575ZI-Q 测评] 2-初探TrustZone

<div class='showpostmsg'><h2 data-line="0" dir="auto" id="trustzone%E4%BB%8B%E7%BB%8D">TrustZone介绍</h2>

<p data-line="3" dir="auto">TrustZone是CM33内核的一个新的特色。这个特色主要是提高安全性的。在需要安全性的场合,我们认为可以将其内容分成两部分:敏感信息和一般的信息。为了防止敏感信息泄露,需要<strong>将敏感信息隔离出去</strong>。这样就可以保护敏感信息。而TrustZone就是在<strong>内核的层面</strong>上提供了这种隔离的特性。CM33内核可以看成是CM4+TrustZone的组合。</p>

<p data-line="5" dir="auto">&nbsp;</p>

<p data-line="5" dir="auto"></p>

<p data-line="7" dir="auto">TrustZone就是在<strong>内核的层面</strong>的保护,由SAU/IDAU和MPU进行管理(上图中的2个蓝色方框)。但只有内核层面的管理还不够,还需要对Flash、SRAM和外设这些ST扩展的部分进行管理,因此ST公司又在内核和外设之间提供管理单元。Flash有自己的管理单元。GPIO也有自己的管理单元,这种有自己的管理单元的外设称为TrustZone-aware外设。而其它的没有自己管理单元的外设,则是被GTZC管理,这种外设称为securable外设。GTZC又包含了3个子模块:MPCBBx、TZSC和TZIC。其中MPCBBx负责管理对SRAM的访问,TZSC负责对外部存储器和外设的访问,TZIC则是对相应的事件进行管理。</p>

<p data-line="9" dir="auto"></p>

<p data-line="12" dir="auto">所以TrustZone实际上是两重管理的,分别来自ARM设计的内核,以及ST设计的外设部分(包含Flash和存储器)。TrustZone的功能使得程序在<strong>寄存器的级别</strong>也实现了隔离,能够最大的程度保证敏感信息的安全。</p>

<h2 data-line="14" dir="auto" id="trustzone%E5%88%92%E5%88%86%E5%AE%89%E5%85%A8%E5%8C%BA%E5%92%8C%E9%9D%9E%E5%AE%89%E5%85%A8%E5%8C%BA">TrustZone划分安全区和非安全区</h2>

<p data-line="16" dir="auto">而安全属性分为了三种:安全、非安全可调用和非安全。前两个都处于安全区,最后一个是非安全区的。安全和非安全好理解,那么非安全可调用要怎么理解呢?这就类似于电路设计时的光耦,负责连接非安全区和安全区,非安全区的代码想要调用安全区的代码,就需要通过<em>非安全可调用</em>的代码。如下图所示,其中NSC指的就是非安全可调用,NS指的非安全,S指的安全。</p>

<p data-line="18" dir="auto">&nbsp;</p>

<p data-line="18" dir="auto"></p>

<p data-line="20" dir="auto">SAU/IDAU共同确定了4G地址范围(因为是32位,所以地址总线的寻址范围是2的32次方,即4G)的安全属性:安全和非安全的。也就是对4G的范围进行分区,如下图所示。从下图可以看出SAU和IDAU定义的安全属性并不一致,那么最终安全属性则是取决于二者的叠加。</p>

<p data-line="22" dir="auto"></p>

<p data-line="24" dir="auto">可以看第2行&ldquo;代码Flash存储器&rdquo;中,包含2个区域,其中0x08000000-0x0BFFFFFF是非安全区,0x0C000000-0x0FFFFFFF是安全或非安全可调用。但是我们知道STM32的Flash地址是从0x08000000开始的,那么怎么会出现在0x0C000000地址呢?这是用了别名区的机制,我们可以把别名区理解成地址的重映射,可以将Flash的一部分地址重映射到0x0C000000-0x0FFFFFFF的范围里,这样就把这部分Flash设置成了安全或安全可调用属性。具体的如何映射,在后面讲解。</p>

<p data-line="26" dir="auto">同理对SRAM的管理也是利用的别名区的方式,将SRAM也分成2部分,一部分是安全属性的,一部分是非安全属性的。</p>

<h2 data-line="29" dir="auto" id="%E6%80%BB%E7%BB%93">总结</h2>

<p data-line="30" dir="auto">TrustZone的内容比较多,从上面的内容可以对TrustZone有个大致的了解,也了解了内核对安全属性的管理。但是还没讲GTZC的作用,没讲访问规则,还有软件编写要如何实现。这些下次在分享。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

秦天qintian0303 发表于 2022-12-29 17:18

<p>TrustZone每次下载是不是需要分开下载啊</p>

manhuami2007 发表于 2022-12-29 18:48

秦天qintian0303 发表于 2022-12-29 17:18
TrustZone每次下载是不是需要分开下载啊

<p>是的,在keil里建立一个多工程的项目,里面包含2个工程:安全区的工程和非安全区的工程。需要先编译安全区的工程,因为非安全区的工程会用到安全区编译生成的库。然后再编译非安全区。这两个工程要分别下载到片子上。</p>

秦天qintian0303 发表于 2022-12-30 09:03

manhuami2007 发表于 2022-12-29 18:48


<p>这很容易会出错啊,不过安全性确实会非常高,那么安全区程序还能支持在线升级吗</p>

manhuami2007 发表于 2022-12-30 09:29

秦天qintian0303 发表于 2022-12-30 09:03
这很容易会出错啊,不过安全性确实会非常高,那么安全区程序还能支持在线升级吗

<p>这个还没有研究,不过在安全区的flash也能重写,所以我觉得也可以在线升级。</p>

okhxyyo 发表于 2023-1-12 09:20

<p>测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html</p>
页: [1]
查看完整版本: [ ST NUCLEO-U575ZI-Q 测评] 2-初探TrustZone