自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于TEE,你需要知道的五大要素

原創(chuàng) 精選
移動(dòng)開(kāi)發(fā) 移動(dòng)應(yīng)用
現(xiàn)在手機(jī)已經(jīng)成為我們每個(gè)人生活的必需品,那安卓手機(jī)的安全就成為了最為重要的一部分。

我們通常提到的安卓手機(jī)不僅僅只有安卓系統(tǒng),還有與安全息息相關(guān)的TEE系統(tǒng),當(dāng)然除了這兩個(gè)系統(tǒng)之外,還會(huì)有其他系統(tǒng),在此我僅僅闡述TEE與安卓是如何并存的,先向大家介紹下這兩個(gè)系統(tǒng)如何部署,緊接著從SMC調(diào)度和通信方式,庫(kù)的角度來(lái)分別說(shuō)明兩個(gè)系統(tǒng)的通信機(jī)制,最后為大家簡(jiǎn)單說(shuō)明一下TEE API的GP標(biāo)準(zhǔn)。

1.TEE和安卓架構(gòu)

首先,我們從整體大方向上,先看一下安卓系統(tǒng)和TEE系統(tǒng)是如何并存的。如下圖 1 TEE和安卓系統(tǒng)并存架構(gòu)所示:

圖 1 TEE和安卓系統(tǒng)并存架構(gòu)

上圖中的左半部分非安全側(cè)(Non-secure)就是大家熟悉的安卓系統(tǒng),通常我們稱之為REE,右半部分安全側(cè)(Secure)就是TEE系統(tǒng),目前市場(chǎng)上存在多種TEE系統(tǒng),如高通的QSEE,Trustonic,開(kāi)源的OPTEE等。

圖中的EL0,EL1,EL3是ARM架構(gòu)中的異常等級(jí),其中EL0和EL1是必須實(shí)現(xiàn)的,可以粗略的認(rèn)為EL0是應(yīng)用層,EL1是系統(tǒng)內(nèi)核層,其中最重要的是REE側(cè)EL1中需要部署TEE相關(guān)驅(qū)動(dòng),REE側(cè)最后是通過(guò)該驅(qū)動(dòng),同后面提到的EL3進(jìn)行通信,進(jìn)而完成一些功能的。EL2主要提供對(duì)虛擬化的支持,在本文中先忽略EL2。EL3是比較重要的部分,提供了REE側(cè)(Non-secure)和安全側(cè)(Secure)的功能切換。從圖中也可以看出,只有EL3橫跨REE側(cè)和安全側(cè),從而為這兩個(gè)系統(tǒng)提供了通信的接口,比如我們常用的指紋功能和支付功能就需要REE側(cè)和安全側(cè)交互的,后面內(nèi)容中我會(huì)給大家具體闡述兩個(gè)系統(tǒng)的通信。

在ARM提供的Trustzone白皮書(shū)中有提到,為了使系統(tǒng)更加健壯,建議EL3中的Monitor模式在執(zhí)行時(shí),關(guān)閉中斷。

2.SMC

在此我首先強(qiáng)調(diào)一點(diǎn),TEE系統(tǒng)和安卓系統(tǒng)是兩個(gè)完全獨(dú)立的系統(tǒng),這兩個(gè)系統(tǒng)獨(dú)立運(yùn)行。但在實(shí)際實(shí)用中,這兩個(gè)系統(tǒng)需要進(jìn)行通信,比如我們手機(jī)鎖屏或者使用指紋進(jìn)行解鎖時(shí),均需要安卓系統(tǒng)和TEE系統(tǒng)共同配合完成,其通信是通過(guò)SMC指令來(lái)完成的,其本質(zhì)上就是觸發(fā)一個(gè)SMC的中斷(如下圖2中紅色框中所示),從而讓安卓或者TEE跳轉(zhuǎn)到Monitor模式(下圖中的Monitor/Firmware),而SMC的中斷處理類似于系統(tǒng)中的上下文切換。

圖 2 環(huán)境切換

至此大家應(yīng)該對(duì)SMC有了簡(jiǎn)單的認(rèn)識(shí),但在此我需要明確一點(diǎn),進(jìn)入Monitor模式并非只有SMC一種方式,比如直接寫(xiě)寄存器CPSR等。

3. REE/TEE傳輸方式

上面簡(jiǎn)單說(shuō)明了SMC,那當(dāng)REE和TEE側(cè)要進(jìn)行數(shù)據(jù)傳輸時(shí),又該如何處理呢?在現(xiàn)有的處理方案中采用了共享內(nèi)存,包括靜態(tài)的共享內(nèi)存和動(dòng)態(tài)的共享內(nèi)存。由于靜態(tài)的共享內(nèi)存是REE側(cè)和TEE側(cè)約定好的一塊共享內(nèi)存,不管是否需要,都會(huì)預(yù)留一塊區(qū)域,比較浪費(fèi)內(nèi)存。動(dòng)態(tài)共享內(nèi)存,操作步驟較復(fù)雜,需要我們先申請(qǐng)內(nèi)存,再進(jìn)行mmap映射(TEE側(cè)和REE側(cè)都需要進(jìn)行映射)),然后通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)傳輸。

那大家再思考一個(gè)問(wèn)題, TEE側(cè)傳輸數(shù)據(jù)到REE側(cè)和REE側(cè)傳輸數(shù)據(jù)到TEE側(cè)時(shí),其共享內(nèi)存分別是由誰(shuí)申請(qǐng)的?解答此問(wèn)題前,我需要引入一個(gè)Session的名詞,TEE側(cè)和REE側(cè)通信前都需要建立一個(gè)Session,在REE側(cè)建立Session時(shí),共享內(nèi)存就準(zhǔn)備好了,之后不管數(shù)據(jù)是從哪邊傳遞到哪邊,均使用的是之前已經(jīng)準(zhǔn)備好的共享內(nèi)存。

大家有機(jī)會(huì)看CA(REE側(cè)的一個(gè)可執(zhí)行程序)的代碼,會(huì)發(fā)現(xiàn)都會(huì)先建立Session,之后就可以進(jìn)行響應(yīng)的業(yè)務(wù)處理。目前市場(chǎng)有不同的TEE廠商,他們實(shí)現(xiàn)細(xì)節(jié)會(huì)存在一些差異,但其思路都是一致的。

4. 庫(kù)

一般TEE廠家會(huì)給我們提供TEE相關(guān)的庫(kù),這個(gè)庫(kù)里面會(huì)通過(guò)調(diào)用TEE對(duì)應(yīng)驅(qū)動(dòng)進(jìn)而完成各項(xiàng)功能。通常在開(kāi)發(fā)需要TEE環(huán)境的程序時(shí),最好可以找對(duì)應(yīng)TEE廠家索要Demo,有這個(gè)Demo后,我們就知道該如何基于對(duì)應(yīng)的TEE進(jìn)行程序開(kāi)發(fā)。

5.GP

我在同一些從事安卓的朋友交流時(shí),發(fā)現(xiàn)他們要么是不知道TEE,要么是知道TEE,但不知道GP。試想一下,市場(chǎng)上存在很多TEE廠商,比如我們熟悉的豆莢,Trustonic等,每一家都有他們獨(dú)有的API接口,那對(duì)于一些基于TEE的功能,如指紋,支付等,那是不是需要針對(duì)每一個(gè)TEE,要進(jìn)行不同的適配?而GP全稱是Global Platform,它提供了一些安全相關(guān)的API要求,假如所有項(xiàng)目上均采用GP的方式,那基于TEE的模塊(如常見(jiàn)的指紋,支付等),就無(wú)需做很大的改動(dòng),且在同這類供應(yīng)商溝通時(shí),需要告知供應(yīng)商,當(dāng)前項(xiàng)目上是否采用GP接口的方式。

總結(jié)

至此,我已經(jīng)介紹了我們需要知道的五大要素,此時(shí),我們來(lái)思考一下,假如我的項(xiàng)目上需要增加指紋功能,我需要做什么工作呢?

  • TEE環(huán)境的部署,包含TEE系統(tǒng)本身,Monitor, REE側(cè)同TEE相關(guān)的驅(qū)動(dòng),庫(kù)等,其他的細(xì)節(jié)可以同TEE供應(yīng)商溝通。
  • 同指紋廠商溝通,告知其項(xiàng)目上使用的TEE系統(tǒng)和TEE版本是否采用GP接口,項(xiàng)目上采用的指紋器件型號(hào)等。

本文中,我把TEE拆分為五要素,但實(shí)際上,TEE系統(tǒng)遠(yuǎn)比本文介紹的要復(fù)雜,希望大家可以通過(guò)本文對(duì)TEE有一個(gè)大框架的認(rèn)識(shí),在此基礎(chǔ)上,可以繼續(xù)深入研究。

作者介紹

趙青窕,51CTO社區(qū)編輯,從事多年驅(qū)動(dòng)開(kāi)發(fā)。研究興趣包含安全OS和網(wǎng)絡(luò)安全領(lǐng)域,發(fā)表過(guò)網(wǎng)絡(luò)相關(guān)專利。

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2018-12-27 14:21:31

https安全http

2019-11-15 14:00:39

HTTPSHTTP前端

2010-05-06 08:55:23

ADO.NET

2018-12-28 14:16:11

安全

2010-01-06 15:26:14

JSON語(yǔ)法

2013-09-03 09:18:55

云計(jì)算混合云

2015-03-03 10:41:43

2011-05-06 08:41:33

UI設(shè)計(jì)應(yīng)用程序iPad

2013-08-01 10:38:22

2012-01-03 19:09:42

移動(dòng)應(yīng)用

2023-01-30 11:43:04

開(kāi)源代碼

2014-07-31 17:13:50

編碼程序員

2015-06-30 10:59:22

MobileWeb適配

2023-02-10 08:44:05

KafkaLinkedIn模式

2017-03-28 15:47:17

數(shù)據(jù)治理數(shù)據(jù)庫(kù)

2018-05-16 09:41:13

神經(jīng)網(wǎng)絡(luò)NN函數(shù)

2010-07-26 14:18:08

數(shù)據(jù)中心能效管理

2023-10-16 13:36:00

邊緣計(jì)算數(shù)據(jù)

2020-05-07 10:14:00

企業(yè)架構(gòu)師CIOIT網(wǎng)絡(luò)

2022-09-01 15:26:45

物聯(lián)網(wǎng)人工智能傳感器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)