99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

UtFs_Zlgmcu7890 ? 來源:lp ? 2019-03-26 09:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

一、TrustZone技術介紹

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

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

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

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

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

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

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

1.1TrustZone的特性:

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

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

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

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

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

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

1.2Register banking

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

1.3TrustZone 技術可以滿足的安全需求

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

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

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

Secure boot:安全啟動機制可以使用戶對自己的平臺充滿信心,因為它始終從安全內(nèi)存啟動。

二、Secure/Non-Secure存儲器配置

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

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

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

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

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

引入NSC存儲區(qū)的原因,是為了防止其他二進制數(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外部。

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

2.2IDAU

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

理論上,IDAU是可以設計為可編程的,但是IDAU接口上的信號位于時序的關鍵路徑上,這會使IDAU的設計變得非常復雜,不切實際,也會導致設計中的門數(shù)更高。

實際上,IDAU只提供了有限的可配置的簡單存儲器映射。

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

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

2.3SAU

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

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

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

三、Secure/Non-secure轉換

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

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

SG指令:用于從非安全狀態(tài)切換到安全狀態(tài),是從非安全區(qū)跳轉到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ù)。

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

3.1Entry function

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

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

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

3.2Non-secure function call

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

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

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

四、總結

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

在明白了這些之后,大家就可以開始行動起來,利用手里的LPC55Sxx來設計自己的安全系統(tǒng)了。

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

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

    關注

    146

    文章

    17984

    瀏覽量

    367282
  • 寄存器
    +關注

    關注

    31

    文章

    5434

    瀏覽量

    124589
  • 物聯(lián)網(wǎng)

    關注

    2931

    文章

    46261

    瀏覽量

    392855

原文標題:【技術解析】設計安全系統(tǒng)?你也可以!

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    恩智浦LPC55S16 MCU獲得了PSA 2級和SESIP 2級保證認證

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

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

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

    SwdRead等待response_“LPC55s28” 超時了怎么解決?

    當我嘗試鎖定 MCU LPC55sXX 時,我遇到了以下問題。 我正在按照以下步驟鎖定 MCU: 1.- 在 ISP 模式下配置 MCU。 2.- 將 bin 文件寫入 CFPA。 3
    發(fā)表于 04-08 06:52

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

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

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

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

    基于LPC55xxx CM33的***原理與應用是什么

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

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

    應用,數(shù)字版權保護等等,都是基于TrustZone實現(xiàn)保護的。其實對于底層安全技術來說,無論是哪個場景的
    發(fā)表于 07-13 14:45

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

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

    Arm Cortex?-M33處理器技術參考手冊

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

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

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

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

    本文針對ARMv8m架構MCU安全特性進行介紹,以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>實操

    基于LPC55xxx CM33TrustZone原理與應用

    基本的安全保障。本文基于CM33LPC55sxx系列開發(fā)板,MCUXpresso IDE v11.1.1_3241集成開發(fā)工具。二:實現(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>原理與應用

    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,高達2MB的閃存,786KB的SRAM,密碼器

    DS13086 超低功率Arm? Cortex?-M33 32位MCU+TrustZone?+FPU, 240 DMIPS,高達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,高達2MB的閃存,786KB的SRAM,密碼器

    [LPC55S6X]解決在-dist之后無法編譯的問題的思路

    在進行bsp適配的時候,在bsp\lpc55sxx\lpc55s36_nxp_evk下輸入命令scons —dist
    的頭像 發(fā)表于 10-11 17:00 ?1265次閱讀
    [<b class='flag-5'>LPC55</b>S6X]解決在-dist之后無法編譯的問題的思路