在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

armv8系統(tǒng)的安全概述

汽車電子技術(shù) ? 來源:嵌入式與Linux那些事 ? 作者:仲一Linux ? 2023-02-17 15:47 ? 次閱讀

ARMv8-A 系統(tǒng)中的安全

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

安全由以下原則定義:

  • 保密性:保護設(shè)備上的敏感信息,防止未經(jīng)授權(quán)的訪問。有以下幾種方法可以做到,比如密碼和加密密鑰。
  • 完整性:使用公鑰來保護敏感信息防止被修改。
  • 可用性:確保對敏感信息的訪問一定是經(jīng)過授權(quán)的,利用固件更新來檢測未經(jīng)授權(quán)的訪問。

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

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

  • 軟件攻擊:惡意軟件攻擊通常不需要訪問實際的設(shè)備,可以利用操作系統(tǒng)或應(yīng)用程序的漏洞實現(xiàn)遠程攻擊。
  • 簡單的硬件攻擊:硬件攻擊大部分是非破壞性的攻擊,需要拿到實際的物理設(shè)備,并使用常見的工具,例如jtag和邏輯探針。
  • 專業(yè)的硬件攻擊:這種攻擊需要復(fù)雜而昂貴的工具,如聚焦離子束(FIB)技術(shù)或功率分析技術(shù),而且更常用于對付智能卡設(shè)備。

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

TrustZone的硬件架構(gòu)

TrustZone架構(gòu)為系統(tǒng)設(shè)計者提供了一種幫助保護系統(tǒng)的方法。即使是低級別的程序員也應(yīng)該理解TrustZone的架構(gòu)設(shè)計。

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

圖片

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

Non-secure World 的內(nèi)存和功能也可以被Secure World 訪問

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

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

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

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

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

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

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

如果對標記為安全的緩存數(shù)據(jù)進行非安全訪問會導(dǎo)致緩存缺失。如果對標記為安全的外部存儲器進行非安全訪問,通常會向內(nèi)核返回一個錯誤響應(yīng)。

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

這就使得每個世界都有一套本地的轉(zhuǎn)換表。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可以產(chǎn)生Secure 和 Non-secure的訪問,如果安全狀態(tài)在訪問時發(fā)生變化,可能還會有緩存管理。

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

Secure World和Non-secure World 的交互

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

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

下圖以應(yīng)用程序調(diào)用API的形式展示了Normal world 和Secure World 的交互。API通過系統(tǒng)調(diào)用到TrustZone Driver,然后經(jīng)過 Secure monitor傳遞給TEE。

圖片

這種調(diào)用方式會在Secure World和Normal World間頻繁傳遞數(shù)據(jù)。

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

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

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

Secure 和Normal worlds 的切換

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

對于ARMv8架構(gòu),當EL3使用AArch32時,ARMv8架構(gòu)相當于ARMv7,以確保完全兼容,安全狀態(tài)下的所有特權(quán)模式被視為處于EL3。

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

圖片

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

圖片

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

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

圖片

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

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

圖片

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

集群中的安全問題

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

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

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

總結(jié)

  1. TrustZone 是ARM 架構(gòu)的一個安全擴展模型,可以用在任何ARM處理器中。
  2. Normal world 通過SMC指令訪問Secure world。Secure monitor 管理著Normal World和Secure World 的切換。Secure monitor 的代碼在禁用中斷的上下文執(zhí)行。
  3. 內(nèi)存系統(tǒng)事務(wù)中的NS位表示訪問的是Secure World 的內(nèi)存還是Normal World的內(nèi)存。Normal World只能對內(nèi)存進行非安全訪問,Secure World 既可以進行安全訪問,也可以進行非安全訪問,只需要更改NS位即可。
  4. Secure World的翻譯表和Non-Secure World的翻譯表是獨立的,Secure World的翻譯表受到Normal World的保護。
  5. ARMv8-A 可以兼容32位和64位TrustZone。當ARMv8-A運行AArch32 TrustZone 時,相當于ARMv7-A。二者區(qū)別主要在于EL3的不同,ARMv7-A中EL3 提供Secure Monitor 和Srcure OS,而ARMV8 中,EL3只提供Secure Monitor 。

本文參考

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

    關(guān)注

    0

    文章

    407

    瀏覽量

    35603
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6900

    瀏覽量

    123812
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1020

    瀏覽量

    21441
收藏 人收藏

    評論

    相關(guān)推薦

    ARM重新定義ARMv8新架構(gòu),ARMv8新架構(gòu)特性解說

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

    ARMv8架構(gòu)資料分享

    )  · Memory Ordering  · 安全系統(tǒng)(例如普通世界和安全世界的切換)  本篇就依據(jù)上面的關(guān)鍵點對 ARMv8 架構(gòu)進行一番探索。  ARMv8-A 架構(gòu)基礎(chǔ)    
    發(fā)表于 03-21 14:50

    ARMv8架構(gòu)的兩種執(zhí)行狀態(tài)分別是什么

    : 運行安全管理其中EL3的運行權(quán)限最高,EL0的運行權(quán)限最低。運行權(quán)限,會影響資源的訪問。ARMv8雖然定義了EL2和EL3,但是這兩個EL不是一定要實現(xiàn)的。可以根據(jù)自己的需求,進行裁剪,或者都實現(xiàn),或者
    發(fā)表于 04-06 10:49

    ARMv8架構(gòu)概述

    Armv8 OverviewARMv7與Armv8的升級示意如下:Aarch64指令集Aarch64的32個通用寄存器引用和描述如下,與Aarch32寄存器相比如下,在ARM 32位系統(tǒng)中,函數(shù)參數(shù)
    發(fā)表于 05-13 10:31

    ARMv8 Vector table問題該如何更好地去理解呢

    目前正在學(xué)習(xí)ARMv8 Arch Ref Manual.D1.10.2 Exception vectors有點疑惑:Table D1-6 定義了一個Vector Table應(yīng)該具有的items我們
    發(fā)表于 08-17 15:54

    Armv7和Armv8系統(tǒng)中跟蹤的高級視圖詳解

    本指南主要介紹Armv7系統(tǒng)Armv8系統(tǒng)中跟蹤的高級視圖,最高可達Armv8.4版本。 該指南涵蓋: ?跟蹤是什么以及如何使用 ?跟蹤體
    發(fā)表于 08-02 06:11

    如何使用CSAT調(diào)試Armv8平臺

    本教程概述了如何使用CoreSight Access Tool執(zhí)行低級調(diào)試(CSAT)與Armv8目標。低級調(diào)試允許您: ?操作單個寄存器,包括不能正常訪問的調(diào)試寄存器 應(yīng)用程序級調(diào)試器。 ?執(zhí)行
    發(fā)表于 08-02 10:27

    ARMv8-A TrustZone軟件對實施SVE的系統(tǒng)的影響

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

    ARM推新品:ARMv8首次支援64位元指令集

    處理器授權(quán)大廠ARM于上周(10/27)公布最新處理器規(guī)格ARMv8架構(gòu),一舉將其產(chǎn)品線推入64位元市場。ARMv8ARMv7架構(gòu)為基礎(chǔ),并內(nèi)含64位元指令集,預(yù)估可將32/64位元應(yīng)用優(yōu)勢極大化。
    發(fā)表于 11-01 09:32 ?1513次閱讀

    TRACE32支持ARMv8架構(gòu)

      ARMv8架構(gòu)是首個包括64位執(zhí)行模式的ARM架構(gòu),允許處理器將64位執(zhí)行模式與32位執(zhí)行模式相結(jié)合。開發(fā)該版本ARM指令系統(tǒng)的關(guān)鍵技術(shù)之一是將ARM處理器工藝的高能效優(yōu)勢融入64位計算,并獲得更大的可用虛擬地址空間。ARMv8
    發(fā)表于 09-12 19:01 ?11次下載

    從軟件開發(fā)的角度概述ARMv8處理器架構(gòu)中的虛擬化操作

    ARMv8處理器CPU 基于ARMv8系統(tǒng)中的虛擬化工具在這些系統(tǒng)中起著特殊的作用,它由幾個組件組成,雖然ARMv7具有特殊的CPU模式來
    發(fā)表于 10-13 20:00 ?869次閱讀
    從軟件開發(fā)的角度<b class='flag-5'>概述</b><b class='flag-5'>ARMv8</b>處理器架構(gòu)中的虛擬化操作

    ARMv8處理器體系結(jié)構(gòu)中的虛擬化功能

    EL2的名稱集成到特權(quán)級系統(tǒng)中。同時,此模式僅解決與CPU訪問內(nèi)存和外圍設(shè)備等系統(tǒng)資源相關(guān)的問題。為了提高虛擬環(huán)境中設(shè)備啟動的事務(wù)處理效率,已經(jīng)為基于ARMv8系統(tǒng)開發(fā)了許多組件,例
    發(fā)表于 05-13 10:48 ?2100次閱讀
    <b class='flag-5'>ARMv8</b>處理器體系結(jié)構(gòu)中的虛擬化功能

    Armv8架構(gòu)及虛擬化介紹

    ARMv8基本概念 (1)執(zhí)行狀態(tài)(execution state):處理器運行時的環(huán)境,包括寄存器的位寬、支持的指令集、異常模型、內(nèi)存管理及編程模型等。ARMv8體系結(jié)構(gòu)定義了兩個執(zhí)行狀態(tài): AArch64:64位的執(zhí)行狀態(tài) 提供31個64位的通用寄存
    的頭像 發(fā)表于 04-16 10:45 ?6685次閱讀

    ARMv8工作模式有哪些

    ),虛擬機管理器 EL3:最底層的安全固件,如 ARM Trusted Firmware(ATF/TF-A) ARMv8 提供了兩種安全狀態(tài):Secure 和 Non-secure,也就是安全
    的頭像 發(fā)表于 09-11 16:34 ?1652次閱讀
    <b class='flag-5'>ARMv8</b>工作模式有哪些

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進行源碼分析之前,首先看看u-boot的鏈接腳本,通過鏈接腳本可以從整體了解一個u-boot的組成,并且可以在啟動分析中知道某些邏輯是在完成什么工作。 在
    的頭像 發(fā)表于 12-07 11:19 ?774次閱讀
    主站蜘蛛池模板: 天天操天天摸天天干 | 婷婷综合久久中文字幕 | 97久久综合九色综合 | 香蕉蕉亚亚洲aav综合 | 天天澡天天干 | 日韩第十页| 一级做a爰片久久毛片鸭王 一级做a爰片久久毛片一 | 国产精品久久久久久一级毛片 | 可以免费观看的黄色网址 | 性欧美zoz0另类xxxx | 色依依视频视频在线观看 | 亚洲一区区 | 四虎影午夜成年免费精品 | 亚洲美女爱爱 | 日韩无 | 国产www色| 亚洲资源最新版在线观看 | 欧美亚洲一区二区三区在线 | 国产精品单位女同事在线 | 免费网站日本永久免费观看 | 久久国产乱子伦精品免费一 | 激情综合视频 | 扒开双腿爽爽爽视频www | 日本一区二区不卡视频 | 亚洲国产福利精品一区二区 | 狠狠色狠狠色综合婷婷tag | 国产操比视频 | 性欧美性free | 日本特黄色大片 | 人与禽性视频77777 | 456成人网| 日本www高清| 九色视频网站 | 在线中文字幕第一页 | 天天成人综合网 | 亚洲一区二区三区中文字幕5566 | 狼人 成人 综合 亚洲 | 午夜欧美成人久久久久久 | 午夜国产高清精品一区免费 | 四只虎免费永久观看 | 国产精品国产三级国产在线观看 |