色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

ARMv8-A系統中的安全

嵌入式與Linux那些事 ? 來源:嵌入式與Linux那些事 ? 2023-02-13 15:47 ? 次閱讀

ARMv8-A 系統中的安全

一個安全或可信的操作系統保護著系統中敏感的信息,例如,可以保護用戶存儲的密碼,信用卡等認證信息免受攻擊。

安全由以下原則定義:

保密性:保護設備上的敏感信息,防止未經授權的訪問。有以下幾種方法可以做到,比如密碼和加密密鑰。

完整性:使用公鑰來保護敏感信息防止被修改。

可用性:確保對敏感信息的訪問一定是經過授權的,利用固件更新來檢測未經授權的訪問。

舉一個生活中的例子,可信系統存儲了移動支付的密碼,數字證書等。在開放的系統中,很難實現絕對安全,因為用戶可能會下載各種各樣的軟件到移動設備上,同時也會下載一些惡意代碼,這可能會篡改你的系統。

軟件和硬件攻擊可分為以下幾類:

軟件攻擊:惡意軟件攻擊通常不需要訪問實際的設備,可以利用操作系統或應用程序的漏洞實現遠程攻擊。

簡單的硬件攻擊:硬件攻擊大部分是非破壞性的攻擊,需要拿到實際的物理設備,并使用常見的工具,例如jtag和邏輯探針。

專業的硬件攻擊:這種攻擊需要復雜而昂貴的工具,如聚焦離子束(FIB)技術或功率分析技術,而且更常用于對付智能卡設備。

TrustZone技術就是專門用來對抗軟件攻擊的。TrustZone也可以抵御一些簡單的硬件攻擊。

TrustZone的硬件架構

TrustZone架構為系統設計者提供了一種幫助保護系統的方法。即使是低級別的程序員也應該理解TrustZone的架構設計。

ARM 安全擴展模型允許系統開發人員對硬件設備和軟件資源進行分區,以便他們既可以存在于安全子系統的Secure world,也可以存在于其他子系統的Normal world。

4cb70c0a-ab6e-11ed-bfe3-dac502259ad0.png

ARM 手冊中使用 Secure World 和 Non-secure World來指示系統的安全狀態。Non-secure World并不意味著有安全漏洞,而是指正常運行的系統,即Normal world。通常情況下,Secure World 和 Non-secure World存在著主從關系。Secure World 的代碼只有操作系統通過SMC(Secure Monitor Call )指令調用才可以執行。

Non-secure World 的內存和功能也可以被Secure World 訪問

Secure monitor 管理著Secure World 和Non-secure World的切換,類似于操作系統中的上下文環境。確保離開Secure World 時 當前環境被完整保存下來,當處理器再次切換到Secure World 時可以被正確 恢復。

TrustZone是對ARM架構的補充擴展,這意味著一個處理器可以同時運行Secure World 和Non-secure World的代碼。如果Secure World 配置了中斷外設可用,那么Secure World 和Non-secure World 的代碼可以相互調用。

Secure monitor提供了Secure World 和Non-secure World的接口。出于程序的健壯性考慮, Secure monitor的代碼應該在禁用中斷的上下文執行。編寫一個可重入的 Secure monitor會很復雜,而且并不會帶來太多的好處。

另外,Secure World 和Non-secure World 程序的執行也可以像操作系統那樣執行多任務并行。雖然Secure World 的程序執行時可訪問的資源是完全獨立于Non-secure World 的,但是兩個世界也可以互相讓步,以實現多任務并行的效果。

像固件或任何其他系統軟件一樣,Secure World 的軟件必須盡量減少對系統其他部分的影響。例如,Secure World的 代碼執行時應避免消耗大量的時間。Non-secure World 中的中斷應盡可能快的傳遞給Normal World,這有助于確保Normal World軟件良好的響應性。

內存系統由一個額外的位來劃分,這個位叫做NS位。它表示訪問的內存是Secure World 還是Non-secure World 。這個位被添加到所有內存系統事務中,包括高速緩存標簽和對系統內存和外設的訪問。NS位可以為Secure World和Non-secure World 提供不同的物理地址空間。

在Normal World 中運行的軟件只能對內存進行Non-secure 的訪問。因為在由Normal World產生 的內存事務中,總是把NS位設置為1,而不考慮Normal World 中翻譯表中的設置。在Secure World 中運行的軟件只進行Secure 的內存訪問,但也可以使用翻譯表中的NS和NSTable標志對特定的內存進行Non-secure 的訪問。

如果對標記為安全的緩存數據進行非安全訪問會導致緩存缺失。如果對標記為安全的外部存儲器進行非安全訪問,通常會向內核返回一個錯誤響應。

EL3有自己的翻譯表,由TTBR0_EL3(Translation Table Base Register )和TCR_EL3(Translation Control Register ) 管理。在安全狀態下,只允許stage 1的翻譯,沒有TTBR1_EL3寄存器。EL1翻譯表寄存器在安全狀態之間不會被存儲,因此TTBR0_EL1、TTBR1_EL1和TCR_EL1的值必須作為Secure monitor上下文切換操作的一部分為每個世界保存和恢復。

這就使得每個世界都有一套本地的轉換表。Secure World的映射會被隱藏起來,并受到Normal World 的保護。Secure World 翻譯表中包括NS和NSTable位,這決定了是否可以對Secure World 和 Non-secure World的物理地址空間。

Secure 和 Non-secure 的entries 可以在緩存和TLB中共存。在不同的世界之間切換時,緩存不會失效。Normal World只能進行 Non-secure的訪問,所以只能命中標記為 Non-secure 的緩存。而Secure World可以產生Secure 和 Non-secure的訪問,如果安全狀態在訪問時發生變化,可能還會有緩存管理。

TLB中的entries 記錄了是由那個世界產生的entries 。盡管Non-secure狀態永遠不能對Secure 的數據進行操作,但Secure World 可以將NS行分配到緩沖區。另外,緩存的啟用和禁用在每個異常級別都是不同的。緩存控制對于兩個世界來說都是獨立的,但對所有的異常級別來說并不是獨立的。所以,EL0不能直接啟用或禁用緩存,而EL2可以覆蓋Non-secure EL1的行為。

Secure World和Non-secure World 的交互

如果你在包含安全服務的系統中編寫代碼,了解Secure World和Non-secure World 的交互方式對你很有用。一個典型的操作系統都會包含一個輕量的內核或者可信執行環境(TEE)。例如,在Secure World運行加密服務。它可以與Normal World 中的操作系統進行交互,Normal World 可以通過SMC調用訪問Secure World。通過這種方式,Normal World 既可以訪問Secure World,又不會擔心暴露加密的密鑰。

一般來講,開發人員不會與安全擴展組件,TEE,或者可信服務直接交互,而是通過Normal world 提供的API(例如authenticate())訪問Secure World。

下圖以應用程序調用API的形式展示了Normal world 和Secure World 的交互。API通過系統調用到TrustZone Driver,然后經過 Secure monitor傳遞給TEE。

4cd6c586-ab6e-11ed-bfe3-dac502259ad0.png

這種調用方式會在Secure World和Normal World間頻繁傳遞數據。

例如,在 Secure world 中有一個簽名檢查器。Normal world可以請求Secure World使用SMC調用來驗證下載更新的簽名。如果Secure World需要訪問Normal world所使用的內存,Secure World可以使用其翻譯表描述符中的NS位,以確保它使用Non-secure方式訪問來讀取數據。

這一點很重要,因為與請求數據相關的內容可能已經在緩存中了,因為Secure World執行的訪問都會標記為Non-secure的地址。安全屬性可以被認為是一個額外的地址位。如果內核使用安全內存訪問來嘗試讀取數據,它就不會命中已經在緩存中的Non-secure數據。

如果你是一個平時只會和Normal world打交道的程序員,你可以忽略Secure World中發生的事情,因為它的操作對你來說是隱藏的。一個副作用是,中斷延遲可能會略有增加。Secure World可以是完全阻塞的,所以如果一個中斷發生Secure World中時,這可能會阻塞Normal world的中斷。但與一般操作系統的整體延遲相比,可以忽略不計。這種問題給Normal world帶來的影響取決于Secure World操作系統的架構設計。

Secure 和Normal worlds 的切換

在ARMv7的安全擴展中,軟件使用Monitor mode在Secure 和Non-secure state切換。該模式和Secure state 中其他特權模式是一樣的。在ARMv8-A處理器中,AArch32相當于ARMv7-A。

對于ARMv8架構,當EL3使用AArch32時,ARMv8架構相當于ARMv7,以確保完全兼容,安全狀態下的所有特權模式被視為處于EL3。

AArch32的安全模型如下圖所示。在這種情況下,EL3是AArch32,以提供一個安全的操作系統和監視器。

4cf2cee8-ab6e-11ed-bfe3-dac502259ad0.png

下圖顯示了當EL3執行AArch64以提供安全監視器時的安全模型。EL1用于安全操作系統。當EL3使用AArch64時,EL3被用來執行負責在Non-secure state和Secure state之間切換的代碼。

4d119206-ab6e-11ed-bfe3-dac502259ad0.png

為了與AArch32保持一致,Secure state的EL1和EL0具有和Non-secure state的EL1和EL0不同的虛擬地址空間。這使得AArch32 32位架構的運行在Secure state的代碼可以在Non-secure state運行的64位操作系統中使用。

當Normal World 執行停止而Secure World的執行開始時,通過執行 Secure Monitor(SMC)指令或通過硬件異常機制(如中斷或異步中止)在它們之間進行上下文切換。ARM處理器有兩種中斷類型:FIQ和IRQ。

4d3b4cc2-ab6e-11ed-bfe3-dac502259ad0.png

在Secure World中也是支持中斷的,其原理是將Secure World產生的中斷重定向到EL3,并且 和當前的DAIF 字段無關。然而,這些控制只區分了主要的中斷類型。IRQ, FIQ, and asynchronous aborts。更詳細的控制需要將中斷分為 Secure 和Non-secure組。如果要做到這一點,需要GIC的支持,在GIC中有一些特性來支持劃分為不同的組。

一個典型的例子是FIQ被用作Secure interrupts,通過在中斷控制器內將安全中斷源映射為FIQ。同時,相關的外設和中斷控制器寄存器必須被標記為只能被安全訪問,以防止Normal World重新配置這些中斷。

4d589192-ab6e-11ed-bfe3-dac502259ad0.png

使用安全擴展的實現通常有一個輕量級的可信內核,在Secure World中托管安全服務(例如加密)。一個完整的操作系統在Normal World中運行,并能夠使用SMC指令訪問安全服務。通過這種方式,Normal World可以訪問服務功能,在普通世界中執行的任意代碼不會有敏感數據暴露的風險。

集群中的安全問題

集群系統中的每個內核都具有相同的安全特性。集群中任何數量的核心都可以在任何時間點上在Secure World中執行,并且核心能夠在世界之間獨立過渡。寄存器控制Normal World代碼是否可以修改Snoop控制單元(SCU)的設置。同樣,在整個集群中分配優先級中斷的GIC必須被配置為安全狀態。

安全系統還控制調試規定的可用性。你可以為 Normal worlds 和Secure worlds配置獨立的硬件調試,如JTAG調試和跟蹤控制,這樣就不會有關于受信任系統的信息泄露了。你可以通過一個安全外設來控制硬件配置選項,或者你可以硬件連接它們,并使用以下信號來控制它們。

? Secure Privileged Invasive Debug Enable (SPIDEN): JTAG debug.? Secure Privileged Non-Invasive Debug Enable (SPNIDEN): Trace and Performance Monitor.

總結

TrustZone 是ARM 架構的一個安全擴展模型,可以用在任何ARM處理器中。

Normal world 通過SMC指令訪問Secure world。Secure monitor 管理著Normal World和Secure World 的切換。Secure monitor 的代碼在禁用中斷的上下文執行。

內存系統事務中的NS位表示訪問的是Secure World 的內存還是Normal World的內存。Normal World只能對內存進行非安全訪問,Secure World 既可以進行安全訪問,也可以進行非安全訪問,只需要更改NS位即可。

Secure World的翻譯表和Non-Secure World的翻譯表是獨立的,Secure World的翻譯表受到Normal World的保護。

ARMv8-A 可以兼容32位和64位TrustZone。當ARMv8-A運行AArch32 TrustZone 時,相當于ARMv7-A。二者區別主要在于EL3的不同,ARMv7-A中EL3 提供Secure Monitor 和Srcure OS,而ARMV8 中,EL3只提供Secure Monitor 。

審核編輯 :李倩

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

    關注

    68

    文章

    19259

    瀏覽量

    229653
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9084

    瀏覽量

    367390
  • 系統安全
    +關注

    關注

    0

    文章

    44

    瀏覽量

    14504

原文標題:【ARM架構】armv8 系統安全概述

文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM重新定義ARMv8新架構,ARMv8新架構特性解說

    本文從ARMv8-A產生的背景開始,對它進行一個簡單的介紹,使大家從整體上,對ARMv8有一個簡單的了解。
    的頭像 發表于 10-08 17:02 ?1.1w次閱讀
    ARM重新定義<b class='flag-5'>ARMv8</b>新架構,<b class='flag-5'>ARMv8</b>新架構特性解說

    ARMv8-A AArch32主要特性

    Cortex-A32產品介紹ARMv8-A AArch32主要特性ARMv7-M與AArch32的不同之處軟件從ARMv7-M移植到ARMv7-A
    發表于 02-19 06:20

    為何ARMv8-a架構要引入EL3呢

    ARMv8-a架構是由哪些部分組成的呢?為何ARMv8-a架構要引入EL3呢?
    發表于 03-02 09:12

    Armv8-A構架Armv8.6-A引進的最新功能介紹

    Units (AMU)的虛擬化支持總結這篇博文簡要介紹了Armv8-A構架Armv8.6-A 引進的最新功能。這些功能提供了未來CPU在機器學習神經網絡,虛擬化這些領域的增強,和改進處理效能的矩陣乘
    發表于 07-29 15:29

    請問Armv8-A到底是什么東西呢

    兼容,在Armv8-A實際應用較少,后面內容基本都是介紹AArch64的相關內容。AArch64擴展了一些寄存器,包括以下:31個通用的64位寄存器 (X0-X30),處理器狀態寄存器PSTATE
    發表于 08-22 15:39

    Armv8-AArmv9-A的內存屬性和屬性介紹

    1. 本指南介紹Armv8-AArmv9-A的內存屬性和屬性。它首先解釋內存的屬性來自何處,如何分配到內存區域,然后介紹現有的不同屬性,并解釋內存順序的基本特性。這一信息對開發低級別代碼(如啟動
    發表于 08-02 09:03

    Armv8-A上調試器的使用指南

    程序 ?查看內存和寄存器內容 本指南將不關注調試器提供的功能,也不關注不同的調試方法。 相反,我們將研究針對 Armv8-A架構。此外,我們將解釋這些功能是如何實現的,您需要做什么 考慮一下你何時使用它
    發表于 08-02 09:11

    Armv8-A內存定序模型詳解

    ,如啟動代碼或驅動器;對于為多讀應用程序或共享內存系統寫入代碼的任何人都特別相關;本指南末尾,您可以檢查您的知識;在開始之前,本指南假定您熟悉武器內存類型;如果不熟悉,則在 Armv8-A 記憶模型指南中讀取關于設備內存和正常內存的代碼。
    發表于 08-02 11:03

    ARMV8-A電源管理詳解

    ARMV8-A 電源管理
    發表于 08-02 08:32

    用于ARMv8-A RAS擴展和RAS系統架構2.0 BET0平臺的ACPI設計文檔

    本規范提供了ACPI[2]擴展的詳細描述,這些擴展是在支持Armv8-a RAS擴展和a配置文件體系結構規范的Arm體系結構參考手冊補充可靠性、可用性和可服務性(RAS)定義的RAS系統體系結構的
    發表于 08-08 07:24

    ARM Cortex-A系列ARMv8-A程序員指南

    。 有關ARMv7-A架構的一般介紹,請參閱ARM?Cortex?-A系列程序員指南。 本指南還可以幫助您熟悉本卷討論的一些概念。 然而,ARMv8-A架構配置文件向后兼容早期版本,
    發表于 08-22 07:22

    ARMv8-A處理器的裸機引導代碼

    熟悉ARM軟件開發。 它旨在幫助您編寫ARMv8-A處理器的引導代碼。 您可以參考本應用筆記的引導代碼示例,并為基于ARMv8-A處理器的裸機系統編寫自己的引導代碼。
    發表于 08-23 06:20

    ARMv8-A TrustZone軟件對實施SVE的系統的影響

    本文檔介紹ARMv8-A[ARMv8]的可伸縮向量擴展[SVE]對在應用程序處理器上以安全狀態執行的軟件的影響。 本文檔考慮了部署現有ARMv8-A TrustZone軟件對實施SVE
    發表于 08-23 06:17

    ARM公司64位ARMv8-A技術授權新里程

    2014年9月4日——ARM近日宣布完成第50份64位ARMv8-A的技術授權協議。隨著業界在更廣泛應用對于更高性能計算實現的需求提升,截至目前,共有27家企業取得了ARMv8-A技術授權。
    發表于 09-04 16:46 ?2100次閱讀

    Armv8-A到底是什么東西呢?

    前面的文章中經常提到Armv8-A。那么到底Armv8-A是什么東西呢?這個問題要說簡單也很簡單,要說復雜也很復雜。今天我們花點時間來簡單研究一下。
    的頭像 發表于 04-19 14:32 ?4840次閱讀
    <b class='flag-5'>Armv8-A</b>到底是什么東西呢?
    主站蜘蛛池模板: 欧美午夜精品一区区电影| 久久青青草视频在线观| 精品熟女少妇AV免费观看| 久久人人玩人妻潮喷内射人人| 免费视频网站嗯啊轻点| 午夜DJ国产精华日本无码| 伊人国产在线视频| 初中XXXXXL| 捆绑调教网站| 无码日韩人妻精品久久蜜桃入口| 一个人免费观看HD完整版| 补课H湿 1V1 PLAY| 精品区2区3区4区产品乱码9| 欧美熟妇VIVOE精品| 亚洲国产在线2020最新| 耽美肉文 高h失禁| 老司机福利在视频在ae8| 亚洲qingse中文字幕久久| 99久久蜜臀AV免费看蛮| 久草网国产自偷拍| 甜性涩爱在线看| 扒开她的黑森林让我添动态图| 久久精品视频16| 亚洲精品沙发午睡系列| 国产高清亚洲| 日本二区三区欧美亚洲国| 在线观看日本污污ww网站| 国产三级视频在线| 日本久久久久亚洲中字幕| 67194在线入口免费| 久久国产精品无码视欧美| 新金梅瓶玉蒲团性奴3| 成人在线视频国产| 青青草原社区| XXXchinese国产HD| 亚洲精品免费在线| 国产麻豆福利AV在线观看| 受被攻做到腿发颤高h文| 抽插的日日液液H| 日日干夜夜爽| 成人短片迅雷下载|