衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于M33核NXP LPC55Sxx MCU擁有的TrustZone技術(shù)來(lái)實(shí)現(xiàn)IoT安全

UtFs_Zlgmcu7890 ? 來(lái)源:lp ? 2019-03-26 09:58 ? 次閱讀

物聯(lián)網(wǎng)IoT)是嵌入式開(kāi)發(fā)者的熱門(mén)話題,IoT系統(tǒng)產(chǎn)品變得更加復(fù)雜,同時(shí)也需要更好的方案來(lái)保證系統(tǒng)的安全。本文介紹基于M33核NXP LPC55Sxx MCU擁有的TrustZone技術(shù)來(lái)實(shí)現(xiàn)IoT安全。

一、TrustZone技術(shù)介紹

LPC5500系列MCU以Arm最新的Cortex-M33為核心,與前幾代產(chǎn)品相比,改進(jìn)了產(chǎn)品架構(gòu)并提高了集成度;大幅減小了功耗,并提供高級(jí)安全功能,通過(guò)Arm TrustZone-M保護(hù)資產(chǎn)。

近幾年來(lái),物聯(lián)網(wǎng)(IoT)成為了嵌入式開(kāi)發(fā)者的熱門(mén)話題。IoT系統(tǒng)產(chǎn)品變得更加復(fù)雜,同時(shí)也需要更好的方案來(lái)保證系統(tǒng)的安全。

傳統(tǒng)的方案是通過(guò)把軟件分成特權(quán)和非特權(quán)兩部分解決。特權(quán)級(jí)軟件利用MPU防止非特權(quán)軟件的應(yīng)用,訪問(wèn)包含敏感信息在內(nèi)的關(guān)鍵系統(tǒng)資源。

這些方案對(duì)一些IoT系統(tǒng)非常適合,但是在一些情況下,只有兩層劃分是不夠的。特別是那些包含很多復(fù)雜特權(quán)級(jí)別的軟件組成的系統(tǒng),特權(quán)級(jí)代碼的一個(gè)缺陷,就可能導(dǎo)致黑客徹底的控制整個(gè)系統(tǒng)。

為了更好地提高M(jìn)CU的安全性能,Arm在ARMv8-M架構(gòu)中引入了TrustZone技術(shù)。ARMv8-M中的TrustZone技術(shù)是一種可選擇的安全擴(kuò)展,旨在為各種嵌入式系統(tǒng)應(yīng)用提供基本的安全保障。

TrustZone技術(shù)將系統(tǒng)分為安全區(qū)和非安全區(qū)兩部分,并通過(guò)特殊的指令實(shí)現(xiàn)兩種區(qū)域內(nèi)函數(shù)的相互訪問(wèn)。

TrustZone的概念不是最新的了,它被應(yīng)用在Arm Cortex-A系列處理器中已經(jīng)有一段時(shí)間了,現(xiàn)在被擴(kuò)展到了ARMv8-M 處理器中,它與Cortex-A處理器中的TrustZone并不是完全相同的,本篇中所描述的TrustZone技術(shù)都是基于Cortex-M處理器的。

1.1TrustZone的特性:

允許用戶(hù)將內(nèi)存劃分為安全和非安全區(qū)域;

允許在未經(jīng)過(guò)身份驗(yàn)證時(shí)阻止調(diào)試安全代碼/數(shù)據(jù);

NVIC、MPU、SYSTICK、內(nèi)核控制寄存器等也被備份到兩個(gè)區(qū)域中 ,安全代碼和非安全代碼可以獨(dú)立訪問(wèn)自己的資源;

安全區(qū)和非安全區(qū)都有MSP和PSP堆棧指針;

提出了Secure Gateway的概念,非安全代碼可以通過(guò)Secure Gateway訪問(wèn)特定的安全代碼,這也是非安全代碼訪問(wèn)安全代碼的唯一方式;

提供了一個(gè)Stack Limit Checking(堆棧限制檢查)功能,可以用于檢測(cè)堆棧溢出的情況。在Cortex-M33對(duì)應(yīng)的ARMv8-M架構(gòu)中,每個(gè)堆棧指針都有相應(yīng)的堆棧限制寄存器

1.2Register banking

上節(jié)提到一些有內(nèi)核相關(guān)的寄存器也被備份到了安全/非安全區(qū)域中,下圖展示了具體哪些通用/特殊寄存器被備份到兩種內(nèi)存中。

1.3TrustZone 技術(shù)可以滿(mǎn)足的安全需求

Data protection:敏感數(shù)據(jù)可以存儲(chǔ)在安全內(nèi)存中,只可以被安全軟件訪問(wèn)。只有在安全檢查和授權(quán)之后,非安全軟件才可以訪問(wèn)安全APIs。

Firmware protection:固件可以預(yù)裝載在安全區(qū)域中,防止逆向操作和惡意攻擊。

Operation protection:關(guān)鍵操作可以像安全固件一樣,被預(yù)加載到安全內(nèi)存中,并且配置適當(dāng)?shù)耐庠O(shè)僅在安全狀態(tài)下訪問(wèn)。通過(guò)這種方式, 可以保護(hù)操作免受來(lái)自非安全端的入侵。

Secure boot:安全啟動(dòng)機(jī)制可以使用戶(hù)對(duì)自己的平臺(tái)充滿(mǎn)信心,因?yàn)樗冀K從安全內(nèi)存啟動(dòng)。

二、Secure/Non-Secure存儲(chǔ)器配置

在Cortex-M33中,如果選配了TrustZone技術(shù),則4G的內(nèi)存空間將被劃分為安全和非安全內(nèi)存區(qū)域。安全內(nèi)存空間又可以進(jìn)一步劃分為兩種類(lèi)型: Secure和Non-secure Callable(NSC)。

三種內(nèi)存區(qū)域的特性:

Secure:安全數(shù)據(jù)只可以被安全代碼訪問(wèn),安全代碼只有在CPU處于安全模式時(shí)才可以被執(zhí)行;

Non-secure:非安全數(shù)據(jù)可以被安全和非安全狀態(tài)訪問(wèn),但非安全代碼只能在CPU處于非安全狀態(tài)時(shí)被執(zhí)行;

Non-secure Callable(NSC):NSC區(qū)域作為非安全函數(shù)訪問(wèn)安全函數(shù)的跳板。非安全代碼需要先跳轉(zhuǎn)到NSC區(qū)域中,執(zhí)行SG指令,然后再跳轉(zhuǎn)到相應(yīng)的的安全函數(shù)處執(zhí)行,這也是NS代碼訪問(wèn)S函數(shù)的唯一方式。

引入NSC存儲(chǔ)區(qū)的原因,是為了防止其他二進(jìn)制數(shù)據(jù)(例如,具有與SG指令的操作碼相同的值的查找表)被用作安全狀態(tài)的入口函數(shù)。

2.1內(nèi)存區(qū)域的的安全屬性定義

內(nèi)存區(qū)域的安全屬性是由Secure Attribution Unit(SAU)和Implementation Defined Attribution Unit(IDAU) 共同決定的。

SAU的作用和IDAU是相似的,都是用于分離安全區(qū)和非安全區(qū)。兩者最大的區(qū)別是SAU位于CPU內(nèi)部,IDAU在CPU外部。

無(wú)論是IDAU和SAU都可以定義一塊內(nèi)存的安全屬性,此時(shí)CPU會(huì)選擇兩者中較高的安全屬性作為此塊內(nèi)存最終的安全屬性,最高的安全屬性是Secure,其次是Non-Secure Callable,最后是Non-secure。

2.2IDAU

IDAU除了可以向處理器指示特定存儲(chǔ)器地址是Secure、NSC還是Non-secure,提供存儲(chǔ)器地址所在的區(qū)域編號(hào)之外,它還可以標(biāo)記免受安全檢查的內(nèi)存區(qū)域,例如ROM表。

理論上,IDAU是可以設(shè)計(jì)為可編程的,但是IDAU接口上的信號(hào)位于時(shí)序的關(guān)鍵路徑上,這會(huì)使IDAU的設(shè)計(jì)變得非常復(fù)雜,不切實(shí)際,也會(huì)導(dǎo)致設(shè)計(jì)中的門(mén)數(shù)更高。

實(shí)際上,IDAU只提供了有限的可配置的簡(jiǎn)單存儲(chǔ)器映射。

LPC55Sxx 的IDAU提供的配置如下圖所示:

其中,0x00000000到0x1FFFFFFF是NS區(qū)域,在0x20000000到0xFFFFFFF范圍內(nèi),是根據(jù)存儲(chǔ)器地址的第28位來(lái)判斷該內(nèi)存地址的安全屬性,若Bit_28=0, 則為非安全地址,若Bit_28=1, 則為安全地址。

2.3SAU

SAU為每個(gè)內(nèi)存區(qū)域定義了一個(gè)Region Number(RN)。RN可以被TT指令用來(lái)決定目標(biāo)內(nèi)存的訪問(wèn)權(quán)限和安全屬性。RN的數(shù)量可以被SAU配置為0、4或者8。

SAU是由設(shè)計(jì)者配置的,設(shè)計(jì)者可以在IDAU配置的內(nèi)存屬性的基礎(chǔ)上,用SAU去重定義內(nèi)存中的一些區(qū)域的安全屬性,CPU會(huì)根據(jù)IDAU和SAU的配置,決定內(nèi)存的最終安全屬性。

LPC55Sxx復(fù)位后,默認(rèn)的SAU配置是: 所有存儲(chǔ)空間都是安全的。結(jié)合IDAU的默認(rèn)配置,LPC55Sxx的最終默認(rèn)配置如下圖所示,即所有內(nèi)存區(qū)域都是安全的。

三、Secure/Non-secure轉(zhuǎn)換

第二節(jié)中介紹了如何利用SAU和IDAU配置一塊內(nèi)存區(qū)域的安全屬性,用戶(hù)可以在安全區(qū)和非安全區(qū)定義相應(yīng)的函數(shù),TrustZone技術(shù)允許兩種狀態(tài)下的函數(shù)相互調(diào)用,在進(jìn)行相互調(diào)用時(shí)需要用到幾個(gè)特殊指令:SG、BXNS、BLXNS, 如下表所示。

執(zhí)行狀態(tài)切換時(shí)的具體操作如下圖所示:

SG指令:用于從非安全狀態(tài)切換到安全狀態(tài),是從非安全區(qū)跳轉(zhuǎn)到NSC區(qū)域之后執(zhí)行的第一條指令;

BXNS指令: 用于從安全狀態(tài)返回到非安全狀態(tài);

BLXNS指令: 用于在安全狀態(tài)下調(diào)用非安全函數(shù)。

這里介紹兩種特殊的函數(shù):Entry function和Non-secure function。

Entry function是指那些可以被非安全函數(shù)調(diào)用的安全函數(shù);

Non-secure function是指那些可以被安全函數(shù)調(diào)用的非安全函數(shù)。

用戶(hù)在實(shí)現(xiàn)兩種狀態(tài)下函數(shù)的相互調(diào)用時(shí),不需要額外關(guān)注該執(zhí)行哪條特殊指令(SG/BXNS/BLXNS),而只需要將那些被調(diào)用的函數(shù)定義為Entry function或 Non-secure function即可。下面簡(jiǎn)單介紹如何定義以及使用Entry function和Non-secure function。

3.1Entry function

Entry function需要用“__attribute__((cmse_nonsecure_entry)) ”屬性修飾,舉例如下:

此時(shí)func1()已經(jīng)被定義為了entry function,在非安全內(nèi)存中調(diào)用entry function的方法與調(diào)用普通的非安全函數(shù)的方法是相同的,如下所示:

這樣即可實(shí)現(xiàn)非安全函數(shù)調(diào)用安全函數(shù)的功能。

3.2Non-secure function call

Non-secure function函數(shù)定義如下所示:

在安全內(nèi)存中的調(diào)用non-secure function的方法如下:

這樣即可實(shí)現(xiàn)在安全函數(shù)中調(diào)用0x21000248u處的非安全函數(shù)。

四、總結(jié)

看到這里,各位看官是不是對(duì)LPC55Sxx中的TrustZone技術(shù)的使用方法有了初步的了解呢,下面小編再為大家總結(jié)一下使用TrustZone時(shí)軟件的工作流程:

在明白了這些之后,大家就可以開(kāi)始行動(dòng)起來(lái),利用手里的LPC55Sxx來(lái)設(shè)計(jì)自己的安全系統(tǒng)了。

TrustZone詳細(xì)培訓(xùn)視頻最后,讓我們來(lái)看看由本文作者做的,一個(gè)關(guān)于TrustZone的詳細(xì)培訓(xùn)視頻,您可以更深入地理解前面所講的內(nèi)容。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17324

    瀏覽量

    352659
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121195
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2914

    文章

    44939

    瀏覽量

    377085

原文標(biāo)題:【技術(shù)解析】設(shè)計(jì)安全系統(tǒng)?你也可以!

文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    恩智浦LPC55S16 MCU獲得了PSA 2級(jí)和SESIP 2級(jí)保證認(rèn)證

    LPC55S16 MCU屬于恩智浦EdgeVerse?計(jì)算和安全產(chǎn)品組合,是基于Arm? Cortex?-M33內(nèi)核的通用LPC5500
    發(fā)表于 11-21 09:28 ?1777次閱讀

    大聯(lián)大世平集團(tuán)推出基于NXP Cortex M33 LPC55S26產(chǎn)品的電腦外設(shè)參考設(shè)計(jì)

    大聯(lián)大世平推出的基于NXP Cortex M33 LPC55S26的電腦外設(shè)參考設(shè)計(jì)方案,可助力廣大用戶(hù)快速設(shè)計(jì)出包含鍵盤(pán)、鼠標(biāo)、耳機(jī)在內(nèi)的一套電腦外設(shè)產(chǎn)品。
    發(fā)表于 04-15 11:45 ?2385次閱讀
    大聯(lián)大世平集團(tuán)推出基于<b class='flag-5'>NXP</b> Cortex <b class='flag-5'>M33</b> <b class='flag-5'>LPC55</b>S26產(chǎn)品的電腦外設(shè)參考設(shè)計(jì)

    LPC55S16-EVK MCU用于工業(yè)應(yīng)用!!!

    LPC55S16-EVK功能和應(yīng)用LPC55S16-EVK開(kāi)發(fā)板基于LPC55S1x MCU系列,這是基于Arm?Cortex?-M33
    發(fā)表于 09-08 17:08

    物聯(lián)網(wǎng)安全之cortex m23/m33 MCU ***實(shí)操 精選資料分享

    本文針對(duì)ARMv8m架構(gòu)MCU安全特性進(jìn)行介紹,以nxp LPC55xx系列和STM32L5xx系列為例,為大家闡述如何使用
    發(fā)表于 07-23 07:52

    基于LPC55xxx CM33的***原理與應(yīng)用是什么

    LPC55sxx系列開(kāi)發(fā)板,MCUXpresso IDE v11.1.1_3241集成開(kāi)發(fā)工具。二:實(shí)現(xiàn)原理2.1:區(qū)域劃分***將內(nèi)存和外設(shè)分為安全區(qū)域(S)和非
    發(fā)表于 02-09 06:39

    介紹Cortex-A和Cortex-MTrustZone之間的差異

    應(yīng)用,數(shù)字版權(quán)保護(hù)等等,都是基于TrustZone來(lái)實(shí)現(xiàn)保護(hù)的。其實(shí)對(duì)于底層安全技術(shù)來(lái)說(shuō),無(wú)論是哪個(gè)場(chǎng)景的
    發(fā)表于 07-13 14:45

    ARMv8-M trustzone IOT安全之基于Cortex-M33的TFM測(cè)試

    1、基于Cortex-M33的TFM 測(cè)試  針對(duì)IOT(Internet Of Things,萬(wàn)物物聯(lián)),ARM v8-M 架構(gòu)也引入了trus
    發(fā)表于 09-14 14:41

    Arm Cortex?-M33處理器技術(shù)參考手冊(cè)

    Cortex?-M33處理器是一款低門(mén)數(shù)、高能效的處理器,適用于微控制器和深度嵌入式應(yīng)用。 該處理器基于ARM?V8-M架構(gòu),主要用于安全性非常重要的環(huán)境。 處理器支持的接口包括: ·Code
    發(fā)表于 08-17 07:23

    LPC55S69是兩個(gè)ARM Cortex M33內(nèi)核,這種雙內(nèi)核應(yīng)用在那種場(chǎng)景中比較合適?

    NXPLPC55S69是兩個(gè)ARM Cortex M33內(nèi)核,這種雙內(nèi)核應(yīng)用在那種場(chǎng)景中比較合適?顯示全部
    發(fā)表于 10-30 07:40

    LPC55S66JBD64K NXP Semiconductors LPC55S6x Arm? Cortex?-M33微控制器

    電子發(fā)燒友網(wǎng)為你提供NXP(ti)LPC55S66JBD64K相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有LPC55S66JBD64K的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,LPC55S66J
    發(fā)表于 10-29 13:06

    物聯(lián)網(wǎng)安全之cortex m23/m33 MCU trustzone實(shí)操

    本文針對(duì)ARMv8m架構(gòu)MCU安全特性進(jìn)行介紹,以nxp LPC55xx系列和STM32L5xx系列為例,為大家闡述如何使用
    發(fā)表于 12-04 13:51 ?11次下載
    物聯(lián)網(wǎng)<b class='flag-5'>安全</b>之cortex <b class='flag-5'>m</b>23/<b class='flag-5'>m33</b> <b class='flag-5'>MCU</b> <b class='flag-5'>trustzone</b>實(shí)操

    基于LPC55xxx CM33TrustZone原理與應(yīng)用

    基本的安全保障。本文基于CM33LPC55sxx系列開(kāi)發(fā)板,MCUXpresso IDE v11.1.1_3241集成開(kāi)發(fā)工具。二:實(shí)現(xiàn)
    發(fā)表于 12-05 15:51 ?13次下載
    基于<b class='flag-5'>LPC55</b>xxx CM<b class='flag-5'>33</b><b class='flag-5'>核</b>的<b class='flag-5'>TrustZone</b>原理與應(yīng)用

    DS13737 超低功耗Arm? Cortex?-M33 32位MCU+TrustZone?+FPU,240 DMIPS,2MB閃存,786 KB SRAM

    DS13737 超低功耗Arm? Cortex?-M33 32位MCU+TrustZone?+FPU,240 DMIPS,2MB閃存,786 KB SRAM
    發(fā)表于 11-23 08:28 ?0次下載
    DS13737 超低功耗Arm? Cortex?-<b class='flag-5'>M33</b> 32位<b class='flag-5'>MCU+TrustZone</b>?+FPU,240 DMIPS,2MB閃存,786 KB SRAM

    DS13086 超低功率Arm? Cortex?-M33 32位MCU+TrustZone?+FPU, 240 DMIPS,高達(dá)2MB的閃存,786KB的SRAM,密碼器

    DS13086 超低功率Arm? Cortex?-M33 32位MCU+TrustZone?+FPU, 240 DMIPS,高達(dá)2MB的閃存,786KB的SRAM,密碼器
    發(fā)表于 11-23 08:28 ?0次下載
    DS13086 超低功率Arm? Cortex?-<b class='flag-5'>M33</b> 32位<b class='flag-5'>MCU+TrustZone</b>?+FPU, 240 DMIPS,高達(dá)2MB的閃存,786KB的SRAM,密碼器

    [LPC55S6X]解決在-dist之后無(wú)法編譯的問(wèn)題的思路

    在進(jìn)行bsp適配的時(shí)候,在bsp\lpc55sxx\lpc55s36_nxp_evk下輸入命令scons —dist
    的頭像 發(fā)表于 10-11 17:00 ?880次閱讀
    [<b class='flag-5'>LPC55</b>S6X]解決在-dist之后無(wú)法編譯的問(wèn)題的思路
    澳门百家乐官网实战| 至尊百家乐官网下载| 金宝博娱乐城返水| 威尼斯人娱乐场官网| 澳门百家乐登陆网址| 百家乐官网视频聊天游戏| 足球心水论坛| 大发888官方zhuce| 赌神网百家乐的玩法技巧和规则 | 12bet备用| 全讯网直播| 御金百家乐娱乐城| 百家乐策略与心得| 澳门百家乐官网论| 真人百家乐官网套红利| 合肥百家乐官网赌博机| 赌百家乐官网咋赢对方| 三都| 17pk棋牌游戏| 大发888游戏平台dafa888gw| 伟易博百家乐的玩法技巧和规则 | 临城县| 任你博| 战神娱乐| 德州扑克网页游戏| 大发888官网游戏平台| 威尼斯人娱乐城是波音| 江山百家乐的玩法技巧和规则| 如何看百家乐官网的玩法技巧和规则 | 百家乐官网赢家| 百家乐官网概率怎么算| 百家乐官网投注规则| 洪湖市| 威尼斯人娱乐城真假性| 太阳百家乐开户| 帝王百家乐新足球平台| 百家乐视频小游戏| 云鼎百家乐官网的玩法技巧和规则| 百家乐官网高手长胜攻略| 优博娱乐在线| 新利娱乐开户|