2022年10月6日 星期四

TrustZone

 Source https://www.twblogs.net/a/5bddf4012b717720b51b1916

瞭解TrustZone,讀了這篇就夠了

這篇文章源於老闆想了解TrustZone,要求我寫一篇文章簡單介紹TrustZone的原理。既然是給領導看的,只介紹原理哪裏夠,因此也添加了公司自己現有TEE環境的設計、實現和發展,也順帶加入了一些題外話。也是因爲要給領導看,所以文章也不能涉及太多技術細節,包括TrustZone模塊的詳細設計以及示例代碼等,所以只從總體上講解了什麼是TrustZone,TrustZone是如何實現安全隔離的、TrustZone相關的一些資源等。

如果你之前對TrustZone亦無所知,好吧,本文或許值得你一看;如果你已經瞭解了TrustZone,想知道更多的實現細節,抱歉,本文並不適合你,或許閱讀ARM官方網站和文檔以及各開源項目源碼是更好的選擇。

本文先交代TrustZone的安全背景,然後從較高層次展開介紹TrustZone的工作機制和原理(包括AXI總線架構、CPU、內存和中斷模型,以及安全隔離機制),列舉了幾個常見ARM平臺上的實現以及當前博通ARM平臺上的狀況,最後附帶一些TrustZone相關的開源項目以及其他資源鏈接,全文約7500字。(由於涉及安全的原因,本文已經刪掉介紹公司自己平臺相關的部分)。

本文內容主要來源於網絡,綜合了網上的多篇文章,也加入了一些自己的理解,重新組織了文章結構使其便於理解。

主要參考的文章包括:

本文還參考了貼吧、知乎等部分文章,由於涉及較多,無法一一列舉,再次對原作者的付出一併表示感謝!

除上面列舉的資源外,本文主要資料參考了ARM官方對TrustZone的介紹,主要有:

事實上,前面多篇文章的細節也來源於官方文檔。 本人不保留本文的所有權,歡迎轉載本文,讓更多的人來了解TrustZone。由於不想再次以類似 《TrustZone原理介紹》 一類作爲標題,但又不知道以什麼作爲標題貼切,所以隨手用了現在標題黨的套路,抱歉。

1. TrustZone介紹

1.1 安全背景

在介紹TrustZone前有必要簡單回顧下目前的一些安全手段。

CPU通過內存映射手段給每個進程營造一個單獨的地址空間來隔離多個進程的代碼和數據,通過內核空間和用戶空間不同的特權級來隔離操作系統和用戶進程的代碼和數據。但由於內存中的代碼和數據都是明文,容易被同處於內存中的其它應用偷窺,因此出現了擴展的安全模塊,應用將加密數據送往安全模塊,由安全模塊處理完後再返回結果給相應的應用。

很多消費電子設備都使用擴展的安全模塊來確保數據安全,目前常見的方式有:

  1. 外部掛接硬件安全模塊

    數據的處理交由外部的安全模塊實現,這些模塊能夠保護自己的資源和密鑰等數據的安全,如SIM卡、各種智能卡或連接到外部的硬件加解密模塊等,但其同主芯片的通信線路暴露在外部,容易被監聽破解。另外,通信的速率比較低。

  2. 內部集成硬件安全模塊

    將外部安全模塊的功能集成到芯片內,因此一個芯片上至少有兩個核:一個普通核和一個安全核。優點是核與核之間的通信在芯片內部實現,不再暴露在外面。缺點是核之間的通信速度仍然較低,而且單獨的安全核性能有限,還會會佔用SoC面積,成本較高。

1.2 TrustZone是個什麼鬼?

TrustZone是ARM針對消費電子設備設計的一種硬件架構,其目的是爲消費電子產品構建一個安全框架來抵禦各種可能的攻擊。

TrustZone在概念上將SoC的硬件和軟件資源劃分爲安全(Secure World)和非安全(Normal World)兩個世界,所有需要保密的操作在安全世界執行(如指紋識別、密碼處理、數據加解密、安全認證等),其餘操作在非安全世界執行(如用戶操作系統、各種應用程序等),安全世界和非安全世界通過一個名爲Monitor Mode的模式進行轉換,如圖1:

ARM的安全世界和非安全世界

圖1. ARM的安全世界和非安全世界

處理器架構上,TrustZone將每個物理核虛擬爲兩個核,一個非安全核(Non-secure Core, NS Core),運行非安全世界的代碼;和另一個安全核(Secure Core),運行安全世界的代碼。

兩個虛擬的核以基於時間片的方式運行,根據需要實時佔用物理核,並通過Monitor Mode在安全世界和非安全世界之間切換,類似同一CPU下的多應用程序環境,不同的是多應用程序環境下操作系統實現的是進程間切換,而Trustzone下的Monitor Mode實現了同一CPU上兩個操作系統間的切換。

AMBA3 AXI(AMBA3 Advanced eXtensble Interface)系統總線作爲TrustZone的基礎架構設施,提供了安全世界和非安全世界的隔離機制,確保非安全核只能訪問非安全世界的系統資源,而安全核能訪問所有資源,因此安全世界的資源不會被非安全世界(或普通世界)所訪問。

設計上,TrustZone並不是採用一刀切的方式讓每個芯片廠家都使用同樣的實現。總體上以AMBA3 AXI總線爲基礎,針對不同的應用場景設計了各種安全組件,芯片廠商根據具體的安全需求,選擇不同的安全組件來構建他們的TrustZone實現。

其中主要的組件有:

  • 必選組件

    • AMBA3 AXI總線,安全機制的基礎設施
    • 虛擬化的ARM Core,虛擬安全和非安全核
    • TZPC (TrustZone Protection Controller),根據需要控制外設的安全特性
    • TZASC (TrustZone Address Space Controller),對內存進行安全和非安全區域劃分和保護
  • 可選組件

    • TZMA (TrustZone Memory Adapter),片上ROM或RAM安全區域和非安全區域的劃分和保護
    • AXI-to-APB bridge,橋接APB總線,配合TZPC使APB總線外設支持TrustZone安全特性

除了以上列出的組件外,還有諸如 Level 2 Cache Controller, DMA Controller, Generic Interrupt Controller等。

邏輯上,安全世界中,安全系統的OS提供統一的服務,針對不同的安全需求加載不同的安全應用TA(Trusted Application)。 例如:針對某具體DRM的TA,針對DTCP-IP的TA,針對HDCP 2.0驗證的TA等。

圖2是一個ARM官網對TrustZone介紹的應用示意圖:

基於TrustZone的應用示意圖

圖2. 基於TrustZone的應用示意圖

圖中左邊藍色部分Rich OS Application Environment(REE)表示用戶操作環境,可以運行各種應用,例如電視或手機的用戶操作系統,圖中右邊綠色部分Trusted Execution Envrionment(TEE)表示系統的安全環境,運行Trusted OS,在此基礎上執行可信任應用,包括身份驗證、授權管理、DRM認證等,這部分隱藏在用戶界面背後,獨立於用戶操作環境,爲用戶操作環境提供安全服務。

可信執行環境(TEE, Trusted Execution Environment)是Global Platform(GP)提出的概念。對應於TEE還有一個REE(Rich Execution Environment)概念,分別對應於安全世界(Secure World)和非安全世界(Non-secure World, Normal World)。

GlobalPlatform(GP)是跨行業的國際標準組織,致力於開發、制定併發布安全芯片的技術標準,以促進多應用產業環境的管理 及其安全、可互操作的業務部署。目標是創建一個標準化的基礎架構, 加快安全應用程序及其關聯資源的部署,如數據和密鑰,同時保護安全應用程序及其關聯資源免受軟件方面的攻擊。

2. TrustZone原理和設計

以下主要從TrustZone的總線設計,CPU設計(包括處理器模型、內存模型和中斷模型)和安全隔離機制來介紹TrustZone的設計和工作原理。

2.1 總線設計

  • 總線

設計上,TrustZone 在系統總線上針對每一個信道的讀寫增加了一個額外的控制信號位,這個控制位叫做Non-Secure或者NS位,是AMBA3 AXI總線針對TrustZone作出的最重要、最核心的擴展設計。

這個控制信號針對讀和寫分別叫做ARPORT[1]和AWPORT[1]:

  • ARPROT[1]: 用於讀操作(Read transaction), 低表示Secure, 高表示Non-Secure
  • AWPROT[1]: 用於寫操作(Write transaction), 低表示Secure,高表示Non-Secure

總線上的所有主設備(master)在發起新的操作(transaction)時會設置這些信號,總線或從設備(slave)上解析模塊會對主設備發起的信號進行辨識,來確保主設備發起的操作在安全上沒有違規。

例如:硬件設計上,所有非安全世界的主設備(Non-Secure masters)在操作時必須將信號的NS位置高,而NS位置高又使得其無法訪問總線上安全世界的從設備(Secure Slaves),簡單來說就是對非安全世界主設備發出的地址信號進行解碼時在安全世界中找不到對應的從設備,從而導致操作失敗。

NS控制信號在AMBA3 AXI總線規範中定義。可以將其看作爲原有地址的擴展位,如果原有32爲尋址,增加NS可以看成是33位尋址,其中一半的32位物理尋址位於安全世界,另一半32位物理尋址位於非安全世界。

當然,非安全世界的主設備嘗試訪問安全世界的從設備會引發訪問錯誤,可能是SLVERR(slave error)或者DECERR(decode error),具體的錯誤依賴於其訪問外設的設計或系統總線的配置。

  • 外設

在TrustZone出現前,ARM的外設基於AMBA2 APB (Advanced Peripheral Bus)總線協議,但是APB總線上不存在類似AXI總線上的NS控制位。爲了兼容已經存在的APB總線設計,AMBA3規範中包含了AXI-to-APB bridge組件,這樣就確保基於AMBA2 APB的外設同AMBA3 AXI的系統兼容。AXI-to-APB bridge負責管理APB總線設備的安全事宜,其會拒絕不合理的安全請求,保證這些請求不會被轉發到相應的外設。

例如:新一代的芯片可以通過增加AXI-to-APB bridge組件來沿用上一代芯片的設計來使其外圍設備可以支持TrustZone。

2.2 處理器設計

2.2.1 處理器模型

TrustZone中,每個物理處理器核被虛擬爲一個安全核(Secure)和一個非安全核(Non-Secure),安全核運行安全世界的代碼,非安全核運行除安全世界外的其它代碼。由於安全世界和非安全世界的代碼採用時間片機制輪流運行在同一個物理核上,相應的節省了一個物理處理器核。

多核處理器上,也有建議說讓將某一個或幾個核指定爲安全專用核,只運行安全系統代碼來構建安全世界,其餘核運行非安全代碼,暫不清楚目前有哪些平臺採用這個實現。

圖3中,系統有4個物理核,每個又分爲兩個虛擬核(安全核和非安全核)的情況:

多核處理器上的安全核和非安全核

圖3. 多核處理器上的安全核和非安全核

2.2.2 L1內存模型

  • MMU

MMU是一種硬件電路,它包含兩類部件,一類是分段部件,一類是分頁部件,對應於內存管理的分段機制和分頁機制。分段機制把一個邏輯地址轉換爲線性地址;接着,分頁機制把一個線性地址轉換爲物理地址。

當CPU訪問一個虛擬地址時,這個虛地址被送到MMU翻譯,硬件首先把它和TLB中的所有條目同時(並行地)進行比較,如果它的虛頁號在TLB中,並且訪問沒有違反保護位,它的頁面會直接從TLB中取出而不去訪問頁表,從而提高地址轉換的效率。

安全世界和非安全世界都有自己的虛擬MMU,各自管理物理地址的映射。實際上只是兩個世界都有一份TTBR0、TTBR1、TTBCR寄存器,因此就會對應兩個MMU表。

儘管MMU有兩套,但TBL緩存硬件上只有一套,因此TBL對於兩個世界來說是共享的,其通過NS位來標誌其每一項具體屬於哪一個世界。這樣在兩個世界間進行切換時不再需要重新刷新TLB,提高執行效率。

對於TLB共享並不是硬性規定的,部分芯片在兩個世界間切換時可能通過硬件部分或全部刷新TLB。

  • Cache

同TLB類似,硬件上兩個世界共享一套Cache,具體的Cache數據屬於哪一個世界也由其NS位指定,在世界間切換也不需要刷新Cache。

2.2.3 中斷模型

基於TrustZone的處理器有三套異常向量表:

  • 一套用於非安全世界,
  • 一套用於安全世界,
  • 還有一套用於Monitor模式。

與之前非TrustZone的處理器不同的是,這三套中斷向量表的基地址在運行時可以通過CP15的寄存器VBAR(Vector Base Address Register)進行修改。

復位時,安全世界的中斷向量表由處理器的輸入信號VINITHI決定,沒有設置時爲0x00000000,有設置時爲0xFFFF0000;非安全世界和Monitor模式的中斷向量表默認沒有設置,需要通過軟件設置後才能使用。

默認情況下,IRQ和FIQ異常發生後系統直接進入Monitor模式,由於IRQ是絕大多數環境下最常見的中斷源,因此ARM建議配置IRQ作爲非安全世界的中斷源,FIQ作爲安全世界的中斷源。這樣配置有兩個優點:

  • 當處理器運行在非安全世界時,IRQ直接進入非安全世界的處理函數;如果處理器運行在安全世界,當IRQ發生時,會先進入到Monitor模式,然後跳到非安全世界的IRQ處理函數執行
  • 僅將FIQ配置爲安全世界的中斷源,而IRQ保持不變,現有代碼僅需做少量修改就可以滿足

將IRQ設置爲非安全世界的中斷源時系統IRQ的切換見圖4:

IRQ作爲非安全世界的中斷源

圖4. IRQ作爲非安全世界的中斷源

2.2.4 系統模式切換

基於TrustZone的系統有三種狀態,安全世界、非安全世界和用於二者切換的Monitor Mode。

協處理器CP15的寄存器SCR(Secure Configuration Register)有一個NS位用於指示當前處理器位於哪一個世界,該寄存器在非安全世界是不能訪問的。當CPU處於Monitor Mode時,無論NS位是0還是1,處理器都是在安全世界運行代碼。因此Monitor Mode下總是安全世界,但如果此時NS爲1,訪問CP15的其它寄存器獲取到的是其在非安全世界的值。

非安全世界到Monitor模式的切換

處理器從非安全世界進入Monitor Mode的操作由系統嚴格控制,而且所有這些操作在Monitor Mode看來都屬於異常。 從非安全世界到Monitor Mode的操作可通過以下方式觸發:

  • 軟件執行SMC (Secure Monitor Call)指令
  • 硬件異常機制的一個子集(換而言之,並非所有硬件異常都可以觸發進入Monitor Mode),包括:
    • IRQ
    • FIQ
    • external Data Abort
    • external Prefetch Abort

Monitor Mode

Monitor Mode內執行的代碼依賴於具體的實現,其功能類似於進程切換,不同的是這裏是不同模式間CPU狀態切換。

軟件在Monitor Mode下先保存當前世界的狀態,然後恢復下一個世界的狀態。操作完成後以從異常返回的方式開始運行下一個世界的代碼。

爲什麼安全模式和非安全模式不能直接切換?

非安全世界無權訪問CP15的SCR寄存器,所以無法通過設置NS來直接切換到安全世界,只能先轉換到Monitor Mode,再到安全世界。

如果軟件運行在安全世界(非Monitor Mode)下,通過將CP15的NS位置1,安全世界可以直接跳轉到非安全世界,由於此時CPU的流水線和寄存器還遺留了安全世界的數據和設置,非安全模式下的應用可以獲取到這些數據,會有極大的安全風險。因此,只建議在Monitor Mode下通過設置NS位來切換到非安全模式。

綜上,安全世界和非安全世界不存在直接的切換,所有切換操作都通過Monitor Mode來執行。

圖5展現了安全世界和非安全世界之間的切換方式:

安全世界和非安全世界之間的切換

圖5. 安全世界和非安全世界之間的切換

2.3 隔離機制

除了CPU執行時實行安全世界和非安全世界的隔離外,AMBA3 AXI總線提供了外設隔離的基礎。

2.3.1 內存隔離機制

這裏的內存指外部的DDR和片上的ROM以及SRAM,其隔離和保護通過總線組件TZASC和TZMA的設置來實現。

  • TZASC (TrustZone Address Space Controller)
    • TZASC可以把外部DDR分成多個區域,每個區域可以單獨配置爲安全或非安全區域,非安全世界的代碼和應用只能訪問非安全區域。TZASC只能用於內存設備,不適合用於配置塊設備,如Nand Flash。
  • TZMA (TrustZone Memory Adapter)
    • TZMA可以把片上ROM和SRAM隔離出安全和非安全區域。TZMA最大可以將片上存儲的低2MB配置爲安全區域,其餘部分配置爲非安全區域。大小劃分上,片上安全區域可以在芯片出廠前設置爲固定大小,或運行時通過TZPC動態配置。TZMA使用上有些限制,其不適用於外部內存劃分,而且也只能配置一個安全區域。

2.3.2 外設隔離機制

外設上,基於APB總線的設備不支持AXI總線的NS控制信號,所以AXI到APB總線需要AXI-to-APB bridge設備連接,除此之外,還需要TZPC (TrustZone Protection Controller) 來向APB總線上的設備提供類似AXI上的NS控制信號。

由於TZPC可以在運行時動態設置,這就決定了外設的安全特性是動態變化的,例如鍵盤平時可以作爲非安全的輸入設備,在輸入密碼時可以配置爲安全設備,只允許安全世界訪問。

2.3.3 隔離機制示意圖

整個系統內存和外設隔離機制示意圖見圖6.

系統內存和外設隔離機制示意圖

圖6. 系統內存和外設隔離機制示意圖

此圖來源於網上,實際上TZPC還連接到片內的ROM/RAM設備上,用於配置片上存儲的安全區域。

2.4 安全啓動

AMBA3 AXI總線機制隔離出安全世界和非安全世界,但這是系統啓動之後的事情。如何確保系統本身是安全的呢?這就涉及到系統啓動的過程。

系統上電覆位後,先從安全世界開始執行。安全世界會對非安全世界的bootloader進行驗證,確保非安全世界執行的代碼經過授權而沒有被篡改過。然後非安全世界的bootloader會加載非安全世界的OS,完成整個系統的啓動。

在非安全系統的bootloader加載OS時,仍然需要安全世界對OS的代碼進行驗證,確保沒有被篡改。

圖7是典型的TrustZone芯片的啓動流程:

典型的TruestZone芯片啓動流程

圖7. 典型的TruestZone芯片啓動流程

整個啓動流程跟目前博通平臺的安全啓動原理基本一致,上電後安全芯片先啓動,然後校驗主芯片的bootloader,接下來bootloader提交系統的OS和文件系統給BSP進行校驗,通過後加載主系統,確保主系統是安全的。

從上電覆位開始的整個啓動過程中,下一級的安全基於上一級的驗證,最終依賴於芯片內置的OTP和安全硬件,逐級的驗證構成了整個系統的信任鏈。信任鏈中的某一個環節被破壞,都會導致整個系統不安全。

3. 各家TrustZone實現

基於安全考慮,各家TrustZone都實行閉源,關於其實現細節的介紹都較少。

網上能找到少許關於高通方案上TrustZone的介紹:

  • 安全世界 QSEE (Qualcomm Secure Execution Environment)
  • 非安全世界 HLOS (High Level OS)

整個系統的架構如圖8:

image

圖8. 高通QSEE系統架構圖

4. 其它

  • ARMv8-A架構定義了四個異常等級,分別爲EL0到EL3,其中數字越大代表特權(privilege)越大:

    • EL0: 無特權模式(unprivileged)
    • EL1: 操作系統內核模式(OS kernel mode)
    • EL2: 虛擬機監視器模式(Hypervisor mode)
    • EL3: TrustZone monitor mode ARMv8-A Security Level
  • TrustZone設計的相關方

    • ARM公司,定義TrustZone並實現硬件設計,TEE,TZAPI等
    • 芯片廠家,在具體芯片上實現TrustZone設計,包括三星、高通、MTK、TI、ST、華爲等
    • 應用提供方,如DRM廠家和安全應用開發商,實現DRM、Playready、DTCP-IP和一些其它安全應用開發和認證
  • Trust OS

    TEE環境下也要有一個操作系統,各家都有自己的Trustzone的操作系統,如Trustonic、高通的QSEE、國內的豆莢,還有開源的OPTEE等。在操作系統之上自然要有應用程序,在Trustzone裏面我們一般叫TrustApp,當然TEE裏面每個TrustApp都在一個沙盒裏,互相之間是隔離的。比如說支付,就可以做成一個App(需要注意的是,和Normal World裏面的App是兩個概念),這個App簡單來說就負責用私鑰把網上發來的Challenge籤個名,而這個簽名的動作是需要在Secure World裏面做的,避免惡意程序竊取到私鑰來僞造簽名。

    例如支付寶,其實支付寶也是隻支持幾個Trust OS的。同時,支付寶還定義了一系列標準,用來完成他的行爲。

    現在的Trust OS大都會遵循GlobalPlatform的規範,這個組織致力於制定統一的Trust OS的API的接口規範,這樣一個TrustApp只要用GP API,就可以方便移植到各個不同的TEE操作系統上了。

  • Intel 平臺的 SGX

    針對可信計算,類似ARM的TrustZone,Intel也針對x86平臺提出了自己的安全架構SGX:

    Intel® Software Guard Extensions (Intel® SGX)

    https://software.intel.com/zh-cn/sgx-sdk

    SGX全稱Intel Software Guard Extensions,顧名思義,其是對因特爾體系(IA)的一個擴展,用於增強軟件的安全性。這種方式並不是識別和隔離平臺上的所有惡意軟件,而是將合法軟件的安全操作封裝在一個enclave中,保護其不受惡意軟件的攻擊,特權或者非特權的軟件都無法訪問enclave,也就是說,一旦軟件和數據位於enclave中,即便操作系統或者和VMM(Hypervisor)也無法影響enclave裏面的代碼和數據。Enclave的安全邊界只包含CPU和它自身。SGX創建的enclave也可以理解爲一個可信執行環境TEE(Trusted Execution Environment)。不過其與ARM TrustZone(TZ)還是有一點小區別的,TZ中通過CPU劃分爲兩個隔離環境(安全世界和正常世界),兩者之間通過SMC指令通信;而SGX中一個CPU可以運行多個安全enclaves,併發執行亦可。

    簡單來講, Intel SGX最關鍵的優勢在於將程序以外的software stack如OS和BIOS都排除在了TCB(Trusted Computing Base)以外。換句話說,就是在容器enclave裏的code只信任自己和intel的CPU。

    網上有人是這樣對比TrustZone和SGX的:

    Trustzone默認相信SecureOS,安全世界。SGX僅相信CPU core,通過SGX指令構建enclave容器。簡單比喻,TEE是個公用大保險櫃,什麼東西都裝進去,有漏洞的app可能也進去了,而且保險櫃鑰匙在管理員手上,必須相信管理員。SGX每個app有自己的保險櫃,鑰匙在自己手上

    SGX要進入工業界應用尚需時間,一個重要的問題是現在在intel發行的服務器芯片上還沒有SGX,而SGX的重要應用就是在數據中心和雲端的應用。

5. TrustZone開源項目

除了各傢俬有實現外,ARM也有不少開源項目,知名度較高的有:

6. 參考

2022年8月10日 星期三

[Win10] Pin Device Manager to taskbar

1. Drag "C:\Windows\System32" to desktop and create a shortcut.

2. Right click on the shortcut and click on "Pin to taskbar"

3. Delete the shortcut on desktop.

2022年7月3日 星期日

Reselection, Redirection 與Handover的區別

 Source https://blog.csdn.net/yxy8576/article/details/79224554

1.重選(Idle->Idle)

Reselection是UE在非連接態(Idle)下的行為。UE根據SIB消息中配置的各種與重選相關的參數,確定什麼時間開始進行同頻、異頻或者異RAT的測量。當滿足重選準則後,UE啟動重選流程,重選後UE仍處於Idle態。

2.重定向(已連接->空閒)

Redirection是UE在連接態(Connected)下的行為。重定向分為兩種,一是盲重定向,eNodeB根據事先配置的目標頻點要求UE進行重定,有一定的失敗概率;另一種是基於測量的重定向,UE發送測量報告給eNodeB,然後eNodeB在Redirection請求中會包含要求UE重定向去的頻點信息。重定向後UE處於Idle態。

3. 切換(已連接->已連接)

Handover是UE在連接態(Connected)下的行為。Handover是基於測量的,與重定向的區別在於如果源eNodeB和目標eNodeB之間存在X2接口的情況下,eNodeB會啟動Handover流程,否則就啟動Redirection流程。


2022年6月20日 星期一

NG eCall

 Source https://www.2cm.com.tw/2cm/zh-tw/tech/10FB1DD2837D4B2D97322401D43D8620

力挺新一代車載緊急呼叫 NG eCall測試技術面面俱到

新一代緊急呼叫(NG eCall)是eCall的擴充,這項在歐洲提供的服務旨在縮短道路上發生意外事故或其他緊急情況時的反應時間。

 

本文簡要地說明了NG eCall背後的技術,以及使用相關測試設備進行NG eCall一致性測試的具體內容。搭配適用於NG eCall的測試軟體,讓讀者在使用LTE無線通訊標準進行測試時可既快速又方便。

NG eCall超越現行eCall

eCall使用GSM和UMTS網路,但是歐洲的業者已經宣布,他們會在未來十年中,逐步停止對GSM和UMTS網路的支援。為了滿足未來的IP式通訊需求,新一代eCall(NG eCall)擴充了現有的eCall。其中除了電路交換網路GSM和UMTS,還使用了長期演進技術(LTE)網路。

圖1  NG eCall系統

eCall無法預防車禍事故,但是在事故發生時,可以自動發出呼叫(例如安全氣囊爆開時),通知緊急求助專線112。必要資訊(包括車輛目前的位置)會以標準的資料格式進行傳輸。車載系統(IVS)會收集資料,並將資料透過LTE IP式通訊傳送到公共安全回應點(PSAP)。

圖2  使用GNSS模擬器、無線電通訊測試器和IVS(DUT)的測試解決方案

NG eCall系統在緊急情況下,車輛會向緊急救援服務發出IP式LTE緊急呼叫。車輛會自動傳輸重要資料,包括其位置在內。接下來,緊急救援服務業者就能夠直接與車輛的乘客交談,例如要求額外的資訊。本文說明了NG eCall背後的原理,以及使用相關測試設備進行IVS一致性測試的具體內容。

IVS一致性測試

其所提供的PC軟體和測試解決方案讓使用者更容易專注於實際的測試工作:如PSAP的模擬和透過LTE控制NG eCall、測量時間和解碼最小化資料集(MSD)、顯示交換的協定訊息;毋須深入了解無線通訊和全球導航衛星系統(GNSS)的技術規格,同樣也毋須深入熟悉測試儀器的操作;所有相關的LTE蜂巢式網路參數均可修改,這樣可以產生可再現的測量結果;可以使用緊急求助專線112發出真正的緊急呼叫。

什麼是新一代eCall?

在LTE中啟用語音:IP多媒體子系統

像GSM(2G)和UMTS(3G)這樣的網路,可以為語音連線提供電路交換服務。相反的,像LTE(4G)和即將推出的5G NR這樣的網路,都是IP網路。這表示其中並未實施電路交換機制。為了支援語音等服務(在需要將MSD編碼為語音的情境下),3GPP已開發出一套稱為IP多媒體子系統(IMS)的架構。其中能夠為獨立於無線接取技術的多媒體服務提供功能。

IMS架構非常複雜。為了方便理解在LTE中使用語音的基本概念,圖3顯示語音服務(以及NG eCall)所需全部實體的簡單架構。

圖3  IMS架構與語音相關部分的示意圖
圖4  使用IMS的NG eCall層級模型

・IP-CAN

IP連通接取網路(此處為LTE)。

・呼叫對話控制功能(CSCF)

包含代理(P-CSCF):使用者的第一個接觸點;訊問(I-CSCF):網路內部的接觸點,所有與用戶的連線都要經此接觸點;服務(S-CSCF):負責註冊處理、路由管理、維持對話,以及從HSS下載用戶資訊和服務配置文件。

・本籍用戶伺服器(HSS)

主用戶資料庫,包含訂用相關資訊。

・AS應用伺服器

提供特定IP應用,此處為語音服務。

為了支援不同的多媒體服務,IMS使用一組以網際網路為基礎的通訊協定(不屬於IMS的一部分),例如:對話啟動協定(SIP)能夠建立、修改和終止多媒體對話;對話描述協定能夠在媒體類型、編碼解碼器類型、頻寬、IP位址和連接埠等參數的協助下描述多媒體對話;即時傳送協定(RTP)和RTP控制協定(RTCP)適用於傳輸即時應用(例如音訊)。至於傳輸層則使用UDP和/或TCIP。

eCall和NG eCall:系統與概念

緊急呼叫是一項在歐洲提供的服務,其目標為減少道路上發生意外事故或其他緊急情況時的反應時間。這項服務自2018年3月起,成為法律規定的新車配備。在歐盟以外,eCall也引進了愛爾蘭、挪威和瑞士。NG eCall則是LTE Release 14的一部分(表1),能夠為eCall提供LTE支援。

雖然eCall無法預防車禍事故,但是在事故發生時,可以自動發出呼叫(例如安全氣囊爆開時),通知緊急求助專線112。必要資訊(包括車輛目前的位置)會以標準的資料格式進行傳輸。除了自動呼叫,eCall還可以用於手動發出呼叫(例如在其他類型的緊急情況下)。

每一台汽車中都有整合的車載系統作為關鍵要素。IVS的主要元件為用於判定目前位置的GNSS接收器(通常是GPS),和用於允許最小化資料集(MSD)藉由蜂巢式網路傳輸到公共安全回應點(PSAP)的蜂巢式模組(傳統eCall為GSM或WCDMA,NG eCall為LTE或5G NR)。

NG eCall使用LTE網路將MSD傳輸到PSAP。LTE(VoLTE)中的語音呼叫使用IMS,而IMS是網路整體的一部分。MSD可以作為純粹的資料,放在呼叫建立(SIP邀請)之內非常迅速地傳輸。如果沒有LTE網路可以使用,就會觸發透過GSM或UMTS的標準eCall程序。 eCall和NG eCall的共存,則是在公共交換(PS)網域中,IVS(左側)會在NG eCall中使用語音呼叫,將MSD傳輸到(NG eCall)-PSAP(圖5)。LTE網路會透過eCallOverIMS-support旗標指示對NG eCall的支援。

圖5  eCall和NG eCall的共存

公共安全回應點(PSAP,例如警察、消防、緊急救護等)會回應呼叫(和接收資料),並且啟動適當的回應(例如派遣救護車)。然後可以使用語音連線,要求額外的資訊。IVS會將資料以標準化的MSD傳輸到PSAP(表2)。

時序

圖6使用一般的情境,說明通訊隨著時間的進展。

圖6  一般的NG eCall順序。呼叫建立是透過SIP請求訊息INVITE完成

1. 緊急情況發生時,IVS會自動在LTE上建立連線(緊急呼叫)連結到PSAP(「SIP訊息INVITE」)。網路和PSAP的回答為TRYING和RINGING

2. 呼叫者在INVITE訊息之內傳輸MSD

3. PSAP一旦收到訊息,就會送回OK,呼叫者則回答ACK

4. 呼叫已經建立。可以傳輸任何其他的資料,例如語音呼叫、額外資料或視訊。路由是由SIP中的資源名稱處理:

・urn:service:sos.ecall.manual—手動eCall

・urn:service:sos.ecall.automatic—自動eCall

・urn:service:test.sos.ecall—測試eCall

LTE網路在系統資訊廣播1(SIB1)訊息中指定「eCallOverIMS-Support」(第14版)。如果在LTE網路內部沒有支援,或是根本沒有可用的LTE網路,則會以電路交換後降(CSFB)使用GSM或UMTS。如果僅有LTE網路,但是不支援IMS,IVS會使用頻段內數據機,並嘗試透過VoLTE進行語音呼叫。

標準

NG eCall由幾項不同的標準定義。(請注意這並不是完整的清單):

・IETF rfc8147:新一代的泛歐洲eCall

・IETF rfc7852:緊急呼叫相關的額外資料

・IETF rfc8148:新一代車輛啟動的緊急呼叫

・3GPP TS 23.167:IP多媒體子系統(IMS)緊急對話

・3GPP TS 23.401:用於演進版通用地面無線接取網路(E-UTRAN)存取的一般封包無線服務(GPRS)強化功能

・3GPP TS 24.229:以對話啟動協定(SIP)和對話描述協定(SDP)為基礎的IP多媒體呼叫控制協定

・3GPP TS 26.269:頻段內數據機的IMS eCall一致性

・CEN TS 17184:智慧型傳輸系統—eSafety—使用IMS分封交換網路的eCall高層級應用協定(HLAP)

・CEN TS 17240:基於IMS的分封交換系統的端對端一致性測試規格

本文中介紹的解決方案,能夠滿足這些標準的所有要求,另外如本文後續的討論,還可確保端對端一致性測試遵循CEN TS 17240。

IVS一致性測試

為何要在實驗室中測試?

NG eCall裝置必須在各個層級進行測試:

・模組層級(電路板)

包含研發/設計驗證、生產、維護等。

・裝置層級(IVS)

包含研發/設計驗證、共存、一致性測試、驗收測試、生產、修理/維護。

・系統層級(車輛)

包含輻射效能、特定車體、共存、靈敏度衰減、室外/室內。

本文介紹的解決方案旨在作為模組層級和裝置層級的測試之用。這項解決方案可以直接管理LTE網路設定的所有基本參數,例如頻道或層級。因此,量測可以完整重現。另外還可以在遮蔽環境中,使用緊急求助專線112發出真正的緊急呼叫。這樣可以避免非受控設定(例如網路業者做出的設定)所造成的影響。

測試設備架構

本文介紹的測試解決方案,涵蓋了依照CEN TS 17240進行的NG eCall一致性測試。圖7顯示測試設備架構。

圖7 IVS一致性測試的試驗裝置

CMW能夠模擬蜂巢式網路,並提供LTE(4G)網路,另外還提供IMS。透過RF連線到IVS,在LTE上進行訊號發出(例如建立呼叫)以及封包資料連線。SMBV可提供模擬的GNSS訊號,例如IVS用於定位的GPS和Galileo。安裝在外部PC上的CMWKA096軟體,可以模擬PSAP、在CMW上為NG eCall設定必要的參數,以及完全遙控CMW。它還可以遙控SMBV。此處不會深究CMW或SMBV的操作。NG eCall協定和MSD傳輸也是透過CMW和IVS之間的資料收集進行處理。端對端一致性測試是在外部PC上安裝的PSAP模擬器以及待測IVS之間執行。

・CMW無線通訊綜合測試儀

CMW是無線通訊應用(例如行動裝置或無線連接)的多機一體測試解決方案。此機型支援所有必要的標準,包括:2G的GSM、EGPRS、EGPRS2、EGDE演進和VAMOS;3G的W-CDMA,搭配HSDPA、HSUPA和HSPA+、TD-SCDMA、CDMA2000和1xEV-DO Rev A/B;4G的LTE(FDD和TDD),LTE-A(包含MIMO);以及無線連接如藍牙、WLAN、WiMAX。

CMW可測試所有的OSI層級,從實體層到端對端測試,RF測試及協定測試都包括在內。它還擁有內建的IMS,以支援IP多媒體服務的測試。

・向量訊號產生器

在扮演訊號產生器的角色時,SMBV支援各種無線通訊標準,以及其他的無線電標準。此機型可以作為GNSS訊號的主控端,為eCall產生GNSS訊號。GNSS特性的簡單概述如下:其具備GPS、Glonass、Galileo、BeiDou、QZSS;最多可模擬24個衛星;在自動定位模式中,支援不限模擬時間的自動衛星換手;天空視圖部分顯示衛星目前的位置和狀態(啟用或停用);多路徑情境,例如人口密集的城市(LOS+回波);移動情境可以模擬接收器沿著使用者定義軌跡(例如移動的汽車)移動的動態(支援定位點格式,例如KML、NMEA檔案);地圖視圖部分顯示接收器目前的位置,這表示可以觀察到接收器的軌跡。

至於需要的GNSS選項,eCall/ERA-GLONASS需要表3中的SMBV選項。GPS城市和GLONASS城市情境,兩者都支援下列城市:紐約、雪梨、慕尼黑、莫斯科、東京、首爾。

・PSAP模擬器(NG eCall測試軟體)

如CMW-KA096軟體在外部PC上執行,可作為PSAP模擬器。它還可以遠端操控CMW和SMBV(例如透過LAN)。此軟體可執行端對端一致性測試。MSD已經解碼,並顯示測量結果:

在LTE上為NG eCall進行PSAP模擬、呼叫ID、MSD MIME類型、原始MSD、撥號號碼/URN、觸發類型、依據CEN EN 15722:2015(涵蓋每一個備援版本和上行鏈路資料部分)的MSDv2解碼、選用:固定位置GPS/GLONASS模擬/GPS移動情境。

NG eCall推升車用通訊電子產業發展

eCall帶來眾多優點,包含:由於沒有等待MSD傳輸的時間而能進行快速通訊(帶有SIP邀請的MSD);可靠堅固的解決方案—使用具有糾錯/重傳功能的分組數據服務;實現快速傳輸大量數據(數Mbps)通訊;容易擴展,像是擴展到其他資料類型,例如車輛診斷、醫療/健康、碰撞及周圍環境、環境感測器,車輛減速曲線,以及擴展到其他媒體類型,例如影像電話、影片、視訊會議、高品質的音訊、殘障人士使用的文字,語言翻譯的文字;同時發送語音服務不會中斷語音對話;輕鬆協調其他無線協定之間的標準,例如5G網路。

希望藉由本文能夠讓各位車用電子產業相關人員,對NG eCall有更深的了解,也期望業者如羅德史瓦茲(Rohde&Schwarz)有機會協助解決NG eCall一致性測試相關的挑戰。

(本文作者皆任職於Rohde & Schwarz應用工程開發部門)

2022年4月21日 星期四

EXCEL出現名稱已存在

https://xingzuo69.pixnet.net/blog/post/317996262


問題:

名稱"xxxx"已存在,請按一下是使用該名稱版本,或按否重新命名。

因excel檔案該分頁包含標籤名稱,所以只要在同檔案下複製並建立副本就會出現重複標籤名稱的提示。

解決方法:

1. 按 CTRL+F3 將名稱管理員裡的名稱刪除即可。

2. 如果還是不行,就可能是有隱藏標籤名稱的關係造成。

3. 按 ALT+F11,進入Visual basic編輯器或點選 開發人員→Visual Basic。
   (如果無法開啟,請點此參考教學)
01.png

4. 選取有問題的分頁名稱,按 CTRL+F3,開啟即時運算並輸入 for each n in names : n.visible = true : next

註解 2020-01-11 230725-2.png
註解 2020-01-11 230726.png

5. 點選EXCEL圖示回編輯頁面。
註解 2020-01-11 230725.png


6. 點選公式→名稱管理員。
註解 2020-01-12 135520.png

7. 刪除全部內容既可。
註解 2020-01-11 231015.png

2022年4月4日 星期一

ANSI escape code

 These are ANSI control-code escape sequences that are transmitted when various non alphanumeric keys are pressed on a "terminal" keyboard.

\e means the ASCII "ESCAPE" character (octal 033 hex 1B decimal 27). Which is part of a command sequence introduction (CSI).

Escape [ 2 ~ is a character sequence transmitted when you press the key labelled "Insert" on a VT220 (or later) terminal.

Many of these conventions have been adopted in software such as xterm and Linux consoles / shells - often extended in various, sometimes incompatible ways.

The use of these sequences in bash's READLINE function is described in the man pages for readline

       In  the  second  form,  "keyseq":function-name or macro, keyseq differs
       from keyname above in that strings denoting an entire key sequence  may
       be  specified  by  placing the sequence within double quotes.  Some GNU
       Emacs style key escapes can be used, as in the following example,  but
       the symbolic character names are not recognized.

          "\C-u": universal-argument
          "\C-x\C-r": re-read-init-file
          "\e[11~": "Function Key 1"

To get a list of which escape sequences correspond to which keyboard-keys, you can use a command such as infocmp -L -1 or infocmp -L -1 xterm

BASH rc

========================================================================
= .bashrc
========================================================================
#Colors for 'man' pages
export LESS_TERMCAP_mb=$'\033[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\033[01;38;5;74m' # begin bold
export LESS_TERMCAP_me=$'\033[0m' # end mode
export LESS_TERMCAP_se=$'\033[0m' # end standout-mode
export LESS_TERMCAP_so=$'\033[38;5;246m' # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\033[0m' # end underline
export LESS_TERMCAP_us=$'\033[04;38;5;146m' # begin underline

#EX: PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#        yulin@WNC:/work

# Add git branch if its present to PS1 
GitBranch()
{
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

if [ "$color_prompt" = yes ]; then 
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(GitBranch)\[\033[00m\]\$ ' 
else 
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(GitBranch)\$ ' 
fi



========================================================================
= .screenrc (/etc/input.rc)
========================================================================


========================================================================
= .inputrc (/etc/input.rc)
========================================================================
# Arrow UP/DOWN to triverse matched history inputs.
"\e[A": history-search-backward
"\e[B": history-search-forward
# HOME/END to move cursor to beginning/end of a line.
"\e[1~": beginning-of-line
"\e[4~": end-of-line


"\e[1~": beginning-of-line
"\e[4~": end-of-line
“\e[5~”: history-search-backward
“\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

2022年2月20日 星期日

HSM, TPM, SHE, TEE, Trustzone

Source https://blog.csdn.net/DreamBitByBit/article/details/80231897

TrustZone是什麼


 基本的安全方式有加密和完整性保護等,加密通過密碼口令或是秘鑰方式,鑑權用來檢查資源是否可用,如果資源遭遇破壞則會導致鑑權失敗。由於存在多種攻擊方式,軟件方式包括軟件病毒、惡意軟件等,而硬件方式可以通過JTAG引腳、I/O引腳檢測、電流電壓檢測、顯微鏡查看電路等進行攻擊,所以需要從硬件軟件層面設計有效系統來對抗攻擊。TrustZone是ARM為了防止設備有效資源被拷貝、破壞或篡改,防止被惡意攻擊,對資產包括有形和無形資產進行,以防止惡意軟件、硬件監視、硬件干預等方式破壞或獲取設備信息。Trustzone從處理器、總線、外設等系統層面進行保護,同時考慮減少額外的資源開銷。注意時間、開銷允許的情況下,不可能阻止所有可能的攻擊,只是在一定的時間和資源(錢)的限制內,能夠保證不會受到相應的攻擊。TrustZone 將軟件硬件部分分為安全世界和正常世界,正常世界器件不可訪問安全世界區域器件、存儲空間等。TrustZone可以作為實現TPM功能的HSM (hardware Secure module) 模塊來使用。對於外設的權限控制TrustZone通過AXI-APB橋來實現,以此兼容外設需求。


 ARMv8的特徵


 ARMv8中包含了trustZone功能,同時提供了SHA、AES等一些加密加速器處理(? 沒有註意到TRNG 真隨機數處理的相關模塊)。另外相對於v7,v8中還提供了64位數據的指令處理,同時增加了SIMD ( Single Instruction Multi Data) 的指令處理。所以在v8中有AArch64和AArch32的處理模式,在AArch64模式下支持128比特的SIMD,在AArch32模式下支持64比特的SIMD處理模式,同時v8有三種配置模式,A Application配置,指示虛擬地址系統VMSA(Virtual Memory System Architecture)及MMU,支持A64、A32、T32指令集;R Real-time配置,支持MPU,支持PMSA(Protected Memory System Architecture),支持A32和T32指令集;M 微控製配置。支持PMSA,低延時中斷處理,支持T32變種指令集。三種模式對能力和功耗做了權衡,可適應不同的使用場景。v8 AArch64重新定義了四種等級EL0-EL3模式,其中EL0為最低模式,EL0 用戶應用模式;EL1 系統相關功能特權模式;EL2 為Hypervisor 虛擬功能模式;EL3 Monitor用於切換Secure和Non-Secure兩種模式。對應32模式增加了Hypervisor和Monitor 兩種模式分隊對應EL2和EL3模式,用戶模式為EL0,其他FIQ、IRQ、system等模式對應EL1。為了實現Secure world和Non-Secure world的分離,增加了NS比特位的處理,例如CP15 SCR( Secure Configuration Register ) NS的配置。


 TrustZone的結構


 整體結構: 兩個虛擬world使用同一個物理處理器實現,亦即一個實體核有兩虛擬核模式,非安全核只能訪問非可信系統資源,而安全核可以訪問所有資源。兩種模式不可共存,時分複用,通過Monitor mode(軟件實現兩種模式的信息切換)切換。進入monitor通過軟件指令Secure Monitor Call (SMC) instructio或硬件機制( FRQ、FIQ、external Data Abort and Prefetch Abort ) 。



 軟件調度實現



 在實現兩個不同安全模式切換時,採用Monitor進行兩個世界的上下文切換,而對於兩個模式的配合可以使用多種不同的方式。安全世界可以擁有自己的操作系統,獨立於非安全世界;同樣安全功能也可以作為正常模式調用的子模式,或是採用兩種極端模式的折中方式。


 安全啟動與可信鏈


 常見到secure boot、trusted boot、meased boot等,方式有些類似,都是採用簽名加密等方式來保證啟動及軟件的完整和安全性,當然處理方式細節及概念細節上也存在些許差別,例如關於安全啟動和可信引導secure boot、trusted boot,前者保證boot程序正確,後者引導的程序未被修改,採用數字簽名技術。可信根( 需要NVRAM或OTP One-Time-Progrm方式存儲) 需要從硬件初始化開始保證每個模塊代碼的載入都是可靠可信的,可信鏈即表達了按照鍊式方式保證每個步驟都是可靠的。



 TrustZone典型啟動過程



 硬件安全的一些理解


 通過頻率、電源供電等檢測、電路、時鐘、時序、端口等硬件方式可以得到硬件的具體執行內容,例如正常乘法和加法消耗時間可能就不相同。為了避免這些硬件攻擊方式,硬件可以在物理特性上保證消除不同處理的特徵差異,如統一執行週期,加入指令噪聲,插入特殊或空指令等;而防止ROM / FLASH等內容被讀出進行反彙編,則可以採用加密接口的ROM、FLASH等;防止總線數據被讀取,可以進行極性反轉等操作;同樣檢測數據是否被修改,可以進行奇偶校驗等處理。當然這些處理將帶來更多的資源,更多的功耗,所以需要必要的進行權衡取捨,簡化無效處理。

————————————————

版权声明:本文为CSDN博主「究理观心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/DreamBitByBit/article/details/80231897


Source  https://www.csdn.net/tags/MtTaIg4sNzIwODQzLWJsb2cO0O0O.html

安全加密 - HSM vs Trustzone vs SHE vs Evita ,

千次阅读2020-12-06 22:21:44

基于SAEJ3061,制定了ISO 21434。

基于SHE,扩展了HSM (在EVITA项目中提出)

 

https://www.cnblogs.com/byronsh/p/automotive-cybersecurity-standard-specification.html

 

HSM: 

TrustZone是HSM模块一种。

TrustZone实现TPM功能。

Hsm包含SHE,SHE是针对汽车领域的密钥存储,硬件加解密算法的芯片模块,SHE又分三类

 

SHE: Secure Hardware Extension

TPM:Trusted Platform Module

HSM:hardware Secure module

SHE: 是HIS制定的标准,“安全硬件扩展”。旨在将秘钥的控制从软件领域移到硬件领域。如TPM芯片等。

 

TPM:通常是硬件chip,用于单机授权验证。
HSM:除chip 外,还有支撑的软件,可以扩展为网络上存取验证。

 

 

2022年1月26日 星期三

C-V2X notebook

For MDM9150

     PC5 does not need SIM for calibration

     UU needs SIM for calibration