TTAF 001-2023 基于TEE的指紋識(shí)別技術(shù)要求_第1頁(yè)
TTAF 001-2023 基于TEE的指紋識(shí)別技術(shù)要求_第2頁(yè)
TTAF 001-2023 基于TEE的指紋識(shí)別技術(shù)要求_第3頁(yè)
TTAF 001-2023 基于TEE的指紋識(shí)別技術(shù)要求_第4頁(yè)
TTAF 001-2023 基于TEE的指紋識(shí)別技術(shù)要求_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ICS33.050

CCSM30

團(tuán)體標(biāo)準(zhǔn)

T/TAF001—2023

代替T/TAF001—2016

基于TEE的指紋識(shí)別技術(shù)要求

TechnicalrequirementsforfingerprintrecognitionbasedonTEE

2023-02-08發(fā)布2023-02-08實(shí)施

電信終端產(chǎn)業(yè)協(xié)會(huì)發(fā)布

T/TAF001—2023

基于TEE的指紋識(shí)別技術(shù)要求

1范圍

本文件規(guī)范了移動(dòng)智能終端基于TEE指紋識(shí)別的技術(shù)要求。

本文件規(guī)范適用于具有TEE運(yùn)行環(huán)境的移動(dòng)智能終端的指紋識(shí)別研發(fā)、設(shè)計(jì)、測(cè)試等活動(dòng)。

2規(guī)范性引用文件

下列文件中的內(nèi)容通過(guò)文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用

文件,僅該日期對(duì)應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)

適用于本文件。

GB/T41388-2022信息安全技術(shù)可信執(zhí)行環(huán)境基本安全規(guī)范

3術(shù)語(yǔ)和定義

下列術(shù)語(yǔ)和定義適用于本文件。

3.1

可信執(zhí)行環(huán)境trustedexecutionenvironment

移動(dòng)智能終端上基于硬件級(jí)隔離及安全啟動(dòng)機(jī)制,為確保安全敏感應(yīng)用相關(guān)數(shù)據(jù)和代碼的機(jī)密

性、完整性、真實(shí)性和不可否認(rèn)性目標(biāo)構(gòu)建的一種軟件運(yùn)行環(huán)境。

注:硬件級(jí)隔離是指基于硬件安全擴(kuò)展機(jī)制,通過(guò)對(duì)計(jì)算資源的固定劃分或動(dòng)態(tài)共享,保證隔離資源不被富執(zhí)行

環(huán)訪問(wèn)的一種安全機(jī)制。

[來(lái)源:GB/T41388-2022,3.3,有改寫(xiě)]

3.2

富執(zhí)行環(huán)境richexecutionenvironment

移動(dòng)智能終端上為應(yīng)用程序提供基礎(chǔ)功能和計(jì)算資源的一種軟件軟件環(huán)境。

注:富執(zhí)行環(huán)境是相對(duì)可信執(zhí)行環(huán)境獨(dú)立存在的運(yùn)行環(huán)境。

[來(lái)源:GB/T41388-2022,3.4,有改寫(xiě)]

3.3

錯(cuò)誤接受率falseacceptancerate

指紋樣本特征與存儲(chǔ)的指紋模板的比對(duì)過(guò)程中,發(fā)生錯(cuò)誤接受結(jié)果的比對(duì)次數(shù)與總比對(duì)次數(shù)的

比值。

3.4

錯(cuò)誤拒絕率falserejectionrate

指紋樣本特征與存儲(chǔ)的指紋模板的比對(duì)過(guò)程中,發(fā)生錯(cuò)誤拒絕結(jié)果的比對(duì)次數(shù)與總比對(duì)次數(shù)的

比值。

4縮略語(yǔ)

下列縮略語(yǔ)適用于本文件。

API:應(yīng)用程序接口(ApplicationProgramInterface)

3

T/TAF001—2023

FAR:錯(cuò)誤接受率(FalseAcceptanceRate)

FRR:錯(cuò)誤拒絕率(FalseRejectionRate)

REE:富執(zhí)行環(huán)境(RichExecutionEnvironment)

SE:安全元件(SecureElement)

TA:可信應(yīng)用(TrustedApplication)

TEE:可信應(yīng)用執(zhí)行壞境TrustedExecutionEnvironment

5指紋識(shí)別流程

5.1指紋注冊(cè)流程

指紋注冊(cè)消息流程見(jiàn)圖1。

圖1指紋注冊(cè)消息流程

指紋注冊(cè)消息流程具體如下:

a)業(yè)務(wù)客戶端向業(yè)務(wù)服務(wù)器發(fā)起注冊(cè)請(qǐng)求,業(yè)務(wù)服務(wù)器調(diào)用校驗(yàn)服務(wù)器;

b)校驗(yàn)服務(wù)器生成注冊(cè)請(qǐng)求(包含用戶名、挑戰(zhàn)數(shù)),返回業(yè)務(wù)服務(wù)器,然后返回業(yè)務(wù)客戶

端,業(yè)務(wù)客戶端將注冊(cè)請(qǐng)求發(fā)送到校驗(yàn)服務(wù);

c)校驗(yàn)服務(wù)調(diào)用可信執(zhí)行環(huán)境中的校驗(yàn)安全應(yīng)用,發(fā)起指紋校驗(yàn)。用戶完成校驗(yàn)后,校驗(yàn)安

全應(yīng)用校驗(yàn)請(qǐng)求消息,生成用戶公私鑰對(duì),在本地保存開(kāi)通記錄(用戶私鑰+用戶名+指紋

索引),生成注冊(cè)響應(yīng)(包含用戶公鑰),將注冊(cè)響應(yīng)消息返回校驗(yàn)服務(wù);

d)校驗(yàn)服務(wù)將注冊(cè)響應(yīng)消息返回業(yè)務(wù)客戶端,然后發(fā)送到業(yè)務(wù)服務(wù)器,最終發(fā)送到校驗(yàn)服務(wù)

器;

e)校驗(yàn)服務(wù)器校驗(yàn)響應(yīng)消息,保存用戶開(kāi)通記錄(用戶公鑰+用戶名+指紋索引+設(shè)備標(biāo)識(shí))。

5.2指紋校驗(yàn)流程

指紋校驗(yàn)消息流程見(jiàn)圖2。

4

T/TAF001—2023

圖2指紋校驗(yàn)消息流程

指紋校驗(yàn)消息流程具體如下:

a)業(yè)務(wù)客戶端進(jìn)行業(yè)務(wù)前置處理,向業(yè)務(wù)服務(wù)器發(fā)起校驗(yàn)請(qǐng)求,業(yè)務(wù)服務(wù)器調(diào)用校驗(yàn)服務(wù)器;

b)校驗(yàn)服務(wù)器生成校驗(yàn)請(qǐng)求(包含用戶名、挑戰(zhàn)數(shù)、交易信息),返回業(yè)務(wù)服務(wù)器,然后返

回業(yè)務(wù)客戶端,業(yè)務(wù)客戶端將校驗(yàn)請(qǐng)求發(fā)送到校驗(yàn)服務(wù);

c)校驗(yàn)服務(wù)發(fā)起指紋校驗(yàn),用戶完成校驗(yàn)后,調(diào)用可信執(zhí)行環(huán)境中的校驗(yàn)安全應(yīng)用,校驗(yàn)安

全應(yīng)用校驗(yàn)請(qǐng)求消息,獲取校驗(yàn)結(jié)果,比對(duì)指紋索引,最后生成校驗(yàn)響應(yīng)(使用注冊(cè)時(shí)生

成的用戶私鑰簽名),將校驗(yàn)響應(yīng)消息返回校驗(yàn)服務(wù);

d)校驗(yàn)服務(wù)將校驗(yàn)響應(yīng)消息返回業(yè)務(wù)客戶端,然后發(fā)送到業(yè)務(wù)服務(wù)器,最終發(fā)送到校驗(yàn)服務(wù)

器;

e)校驗(yàn)服務(wù)器校驗(yàn)響應(yīng)消息,使用用戶開(kāi)通時(shí)生成的公鑰進(jìn)行簽名校驗(yàn),返回結(jié)果到業(yè)務(wù)服

務(wù)器,業(yè)務(wù)服務(wù)器進(jìn)行業(yè)務(wù)推進(jìn)。

5.3指紋去注冊(cè)流程

指紋去注冊(cè)消息流程見(jiàn)圖3。

5

T/TAF001—2023

圖3指紋去注冊(cè)消息流程

指紋去注冊(cè)消息流程具體如下:

a)業(yè)務(wù)客戶端向業(yè)務(wù)服務(wù)器發(fā)起去注冊(cè)請(qǐng)求,業(yè)務(wù)服務(wù)器調(diào)用校驗(yàn)服務(wù)器;

b)校驗(yàn)服務(wù)器生成去注冊(cè)請(qǐng)求,返回業(yè)務(wù)服務(wù)器,然后返回業(yè)務(wù)客戶端,業(yè)務(wù)客戶端將去注

冊(cè)請(qǐng)求發(fā)送到校驗(yàn)服務(wù);

c)校驗(yàn)服務(wù)調(diào)用可信執(zhí)行環(huán)境中的校驗(yàn)安全應(yīng)用,校驗(yàn)安全應(yīng)用校驗(yàn)請(qǐng)求消息,清除用戶開(kāi)

通記錄。

6指紋信息的采集、管理、加密、存儲(chǔ)和驗(yàn)證要求

6.1指紋信息的采集與管理要求

要求如下:

a)指紋信息的采集和管理工作應(yīng)由設(shè)備廠商提供的指紋管理應(yīng)用完成;

b)指紋管理應(yīng)用應(yīng)運(yùn)行在安全環(huán)境(如TEE)中,指紋傳感器驅(qū)動(dòng)應(yīng)運(yùn)行在安全環(huán)境(如TEE)

中;

c)指紋數(shù)據(jù)在采集成功后,每一個(gè)指紋模版應(yīng)和一個(gè)唯一ID關(guān)聯(lián);

d)指紋傳感器和TEE之間建立安全通道,指紋信息通過(guò)安全通道傳遞到TEE中。

6.2指紋信息加密及存儲(chǔ)要求

要求如下:

a)由指紋原始圖片提取的指紋模板應(yīng)存儲(chǔ)在安全環(huán)境(如TEE、SE)中,并加密存儲(chǔ);

b)安全環(huán)境應(yīng)提供高強(qiáng)度的非對(duì)稱加密算法(如SM2、RSA2048)及對(duì)稱加密算法(如SM4、

AES256CBC)。

6.3指紋比對(duì)要求

要求如下:

a)指紋比對(duì)過(guò)程應(yīng)在安全環(huán)境(如TEE、SE)中完成;

6

T/TAF001—2023

b)應(yīng)提供REE及TEE的指紋校驗(yàn)接口,指紋驗(yàn)證完成后返回校驗(yàn)結(jié)果。如校驗(yàn)通過(guò),還應(yīng)返

回匹配指紋模版對(duì)應(yīng)的唯一ID。

7運(yùn)行環(huán)境要求

7.1總則

指紋關(guān)鍵模塊應(yīng)運(yùn)行在安全環(huán)境(如TEE、SE)中。

7.2性能要求

性能要求如下:

a)RSA2048密鑰對(duì)的生成時(shí)間應(yīng)在6秒以內(nèi);

b)應(yīng)滿足在FAR≤1/50000的情況下FRR≤3%。

8REE指紋接口要求

8.1REE指紋接口功能要求

REE指紋接口應(yīng)支持的功能包括:

a)支持指紋校驗(yàn)查詢接口;

b)啟動(dòng)指紋校驗(yàn);

c)檢查是否存在已經(jīng)注冊(cè)的指紋模版;

d)跳轉(zhuǎn)到系統(tǒng)指紋管理器界面;

e)校驗(yàn)成功之后,返回指紋模板對(duì)應(yīng)的唯一ID;

f)通過(guò)唯一I獲取指紋模版的名稱;

g)啟動(dòng)指紋校驗(yàn)時(shí),可以指定一個(gè)或多個(gè)唯一ID對(duì)應(yīng)的指紋模版來(lái)進(jìn)行校驗(yàn);

h)校驗(yàn)過(guò)程中,可以返回指紋校驗(yàn)過(guò)程的狀態(tài)和結(jié)果;

i)通過(guò)聲明權(quán)限來(lái)保護(hù)指紋的接口。

8.2是否支持指紋校驗(yàn)查詢接口

描述如下:

a)URL:content://rmation;

b)在運(yùn)行Android的設(shè)備上,如果支持指紋識(shí)別器并且具備可信執(zhí)行環(huán)境,設(shè)備可以通過(guò)

ContentProvider的形式來(lái)標(biāo)示該支持的情況,可以在Android層使用API進(jìn)行查詢;

c)model用于標(biāo)示一個(gè)系列的設(shè)備,該設(shè)備使用相同的TEE環(huán)境,并且內(nèi)置相同的私鑰以保

證該環(huán)境和REE中Android環(huán)境通信的安全;

d)fingerprint用于標(biāo)示該設(shè)備是否支持指紋且具有完整的TEE和指紋的安全解決方案。

參數(shù)見(jiàn)表1。

表1是否支持指紋校驗(yàn)查詢接口參數(shù)

列必填說(shuō)明備注

model是型號(hào)格式:OME廠商-型號(hào)

fingerprint是是否支持指紋1:支持,0:不支持

8.3REE環(huán)境指紋相關(guān)操作接口

8.3.1AbstractFingerprint類(lèi)

描述

描述如下:

a)AbstractFingerprint類(lèi)定義了8.1描述的需要實(shí)現(xiàn)的指紋功能;

b)該類(lèi)為abstractclass,需有具體的實(shí)現(xiàn);

7

T/TAF001—2023

c)該類(lèi)應(yīng)被放到系統(tǒng)中,com.ifaa.android.fingerprint域中;

d)應(yīng)通過(guò)動(dòng)態(tài)的方式被調(diào)用,并應(yīng)在相同的package下面實(shí)現(xiàn)Fingerprint類(lèi);

e)至為該類(lèi)應(yīng)實(shí)現(xiàn)的方法。

open方法

AbstractFingerprintFingerprint.open()throwsUnsupportedException{

}

該方法應(yīng)由設(shè)備廠商使用自己的指紋服務(wù)類(lèi)實(shí)現(xiàn),且Fingerprint類(lèi)應(yīng)繼承于

AbstractFingerprint類(lèi),由該方法返回指紋服務(wù)的實(shí)例,如果不支持指紋或有異常情況應(yīng)拋出異

常。指紋實(shí)例繼承了AbstractFingerprint類(lèi),因此也應(yīng)實(shí)現(xiàn)AbstractFingerprint類(lèi)

所描述的方法。

release方法

/**

*release實(shí)例

*

*@return

*/

publicabstractintrelease();

a)描述

指紋服務(wù)的實(shí)例提供release()接口用于釋放實(shí)例化對(duì)象。當(dāng)使用實(shí)例對(duì)象進(jìn)行識(shí)別完畢

后,或因其他情形不再使用實(shí)例化對(duì)象時(shí),應(yīng)調(diào)用該接口釋放對(duì)象。且應(yīng)和open成對(duì)

使用。

b)返回值

0:調(diào)用成功;

-1:調(diào)用失敗。

getFpIDs方法

/**

*獲取指紋模板ID集合

*

*@return

*/

publicabstractint[]getFpIDs();

a)描述

8

T/TAF001—2023

通過(guò)指紋服務(wù)對(duì)象獲取以及錄入在設(shè)備中的指紋唯一ID集合。該ID在身份認(rèn)證時(shí)傳入

TEE,用于查看其是否存在或者用于身份的驗(yàn)證。

b)返回值

null:未開(kāi)通指紋;

0:用戶未錄入指紋;

int[]:指紋管理器中每個(gè)指紋的唯一ID值的集合。

getFpName()方法

/**

*取id對(duì)應(yīng)的指紋模板的名稱

*

*@paramid指紋索引

*@return指紋模板名稱

*/

publicabstractStringgetFpName(intid);

a)描述

通過(guò)傳入指紋的ID來(lái)獲取指紋模板在指紋管理器中的可視化名稱,例如“指紋1”等。

該信息可以用于可視化的顯示,在交互場(chǎng)景使用。

b)參數(shù)

intid:用于查詢索引名字的唯一ID。

c)返回值

String:索引對(duì)于id的指紋模板名稱。

startFpManager(Contextcontext)方法

/**

*取id對(duì)應(yīng)的指紋模板的名稱

*

*@paramcontext上下文

*@return調(diào)用結(jié)果

*/

publicabstractintstartFpManager(Contextcontext);

a)描述

跳轉(zhuǎn)至設(shè)備廠商的指紋管理器。該接口一般用于未錄入指紋的情況,方便用戶錄入指

紋,以提升用戶體驗(yàn)。指紋管理器通常有密碼控制,因此該接口也不應(yīng)繞過(guò)密碼直接允許用戶

添加或者刪除指紋。

b)參數(shù)

Contextcontext:Android上下文。

c)返回值

9

T/TAF001—2023

0:調(diào)用成功;

-1:調(diào)用失敗。

startFpIdentify()方法

/**

*開(kāi)始指紋校驗(yàn)

*

*@paramidentifyListener回調(diào)listener

*@paramtimeout超時(shí)時(shí)間,<=0:無(wú)超時(shí);>0:超時(shí)時(shí)間(毫秒)

*@paramids期望的指紋索引集

*@paramuserData用戶數(shù)據(jù)

*@returnIFingerprintAPI.CMD_RESULT_OK:成功;IFingerprintAPI.CMD_RESULT_FAIL:失

*/

publicabstractintstartFpIdentify(IdentifyListeneridentifyListener,inttimeout,int[]ids,Bundle

userData);

a)描述

該接口是指紋校驗(yàn)服務(wù)在Android層的重要接口。通過(guò)指紋服務(wù)對(duì)象調(diào)用指紋芯片對(duì)

已經(jīng)錄入的指紋進(jìn)行識(shí)別。并且動(dòng)態(tài)的返回手指觸碰指紋芯片的情況以及校驗(yàn)的結(jié)果;

該接口應(yīng)支持2個(gè)特性:可以在任意的位置調(diào)用該接口,包括主線程或者其他的線程。

該接口調(diào)用之后指紋識(shí)別器應(yīng)一直對(duì)放上去的手指進(jìn)行校驗(yàn),直至方法中設(shè)定的超時(shí)

時(shí)間為止。

b)參數(shù)

IdentifyListeneridentifyListener:指紋回調(diào)接口類(lèi)。見(jiàn)8.3.2;

inttimeout:此次執(zhí)行識(shí)別的整個(gè)過(guò)程的超時(shí)時(shí)間,如果超過(guò)傳入的時(shí)間,應(yīng)主動(dòng)調(diào)

用cancel接口;

int[]ids:指紋模板列表集合,指定需要進(jìn)行驗(yàn)證的指紋模板集合。該集合是指紋管

理器中所有模板的子集,為null時(shí)表示認(rèn)證所有手機(jī)上的指紋;否則表示認(rèn)證限制

在指定的指紋ID列表當(dāng)中進(jìn)行,只有進(jìn)行校驗(yàn)的指紋在指定的ID中,才認(rèn)為通過(guò);

BundleuserData:用于傳入額外的擴(kuò)展信息。

c)返回值

RESULT_SUCCESS=100:調(diào)用成功;

RESULT_FAILURE=101:調(diào)用失敗。

cancel()方法

10

T/TAF001—2023

/**

*canceltheoperation

*

*@return

*/

publicabstractintcancel();

a)描述

取消正在進(jìn)行的認(rèn)證操作,調(diào)用該接口可觸發(fā)IdentifyListener的onResult返回

RESULT_USER_CANCEL。通常和startFpIdentify成對(duì)使用。

b)返回值

0:調(diào)用成功;

-1:調(diào)用失敗。

8.3.2IdentifyListener類(lèi)

描述

描述如下:

a)IdentifyListener類(lèi)定義調(diào)用指紋識(shí)別的時(shí)候回調(diào)的方法以及值;

b)該類(lèi)是一個(gè)接口類(lèi),需要被實(shí)現(xiàn);

c)和為該類(lèi)應(yīng)實(shí)現(xiàn)的方法。

onResult方法

/**

*onRult

*

*@paramresult結(jié)果,見(jiàn)"8.3.3"表格RESULT_開(kāi)頭

*@paramid索引

*@paramuserData用戶數(shù)據(jù)

*/

voidonResult(intresult,intid,B

a)描述

IdentifyListener的回調(diào)方法。用于接收調(diào)用認(rèn)證方法的返回結(jié)果。

b)參數(shù)

intresult:回調(diào)接口的返回值,見(jiàn)8.3.3RESULT_開(kāi)頭;

intid:如指紋識(shí)別成功并且匹配,此id則為校驗(yàn)匹配的指紋模板ID;

BundleuserData:識(shí)別成功后可以附帶的額外信息。

onStatus()方法

11

T/TAF001—2023

/**

*onStatus

*

*@paramstatus狀態(tài),見(jiàn)"8.3.3"表格STATUS_開(kāi)頭

*@paramuserData用戶數(shù)據(jù)

*/

voidonStatus(intstatus,BundleuserData);

a)描述

IdentifyListener的回調(diào)方法。用于接收手指和指紋識(shí)別器的交互狀態(tài)。

b)參數(shù)

intstatus:標(biāo)示用戶和指紋傳感器的交互的狀態(tài),見(jiàn)8.3.3表格STATUS_開(kāi)頭的定

義;

BundleuserData:狀態(tài)返回后可以附帶的額外信息。

8.3.3指紋識(shí)別狀態(tài)及結(jié)果定義

指紋識(shí)別結(jié)果定義見(jiàn)表2,指紋識(shí)別狀態(tài)定義見(jiàn)表3。

表2指紋識(shí)別結(jié)果定義

結(jié)果取值說(shuō)明

RESULT_SUCCESS100成功

RESULT_FAILURE101失敗

RESULT_CANCELED102用戶取消

RESULT_NO_MATCH103無(wú)匹配指紋

RESULT_NOT_SUPPORT111機(jī)器不支持指紋

RESULT_NO_ENROLLED114本機(jī)未錄入任何指紋

RESULT_TIMEOUT113超時(shí)

RESULT_SENSOR_ERROR116傳感器錯(cuò)誤

RESULT_NOT_ENABLED115指紋功能未開(kāi)啟

表3指紋識(shí)別狀態(tài)定義

狀態(tài)取值說(shuō)明

STATUS_WAITING_INPUT1等待輸入指紋

STATUS_INPUTTING2正在輸入指紋

STATUS_INPUT_COMPLETED3輸入指紋完成

9TEE指紋接口要求

9.1TEE指紋接口功能要求

12

T/TAF001—2023

TEE指紋接口需要支持的功能如下:

a)支持40字節(jié)硬件唯一ID,此ID用來(lái)唯一標(biāo)識(shí)一臺(tái)設(shè)備;

b)能夠正確獲得上次成功驗(yàn)證指紋的模版ID,同時(shí)能夠保證此ID在3s外是失效的;

c)能夠正確獲得已經(jīng)在設(shè)備中成功錄入指紋的模版ID列表及個(gè)數(shù);

d)能夠使用檢驗(yàn)器私鑰對(duì)原始數(shù)據(jù)正確簽名;

e)能夠提供正確的檢驗(yàn)器版本,和檢驗(yàn)器的私鑰匹配,不同版本的檢驗(yàn)器對(duì)應(yīng)不同的私鑰;

f)能夠提供正確生成大于2048位非對(duì)稱密鑰的生成方法;

g)能夠提供私鑰簽名接口;

h)能夠提供公鑰驗(yàn)證簽名接口;

i)能夠提供key/value存取及刪除接口。

9.2指紋接口

9.2.1TEE_EXT_GetDeviceUniqueId

TEE_ResultTEE_EXT_GetDeviceUniqueId(

[inbuf/outbuf]uint32_t*output,

[inbuf/outbuf]uint32*outlen)

a)描述

獲取本設(shè)備唯一ID。設(shè)備廠商需要提供硬件級(jí)的、永久不變的,40字節(jié)的唯一ID。用來(lái)標(biāo)

識(shí)一臺(tái)設(shè)備。提供給業(yè)務(wù)方在開(kāi)通指紋的時(shí)候使用。

b)參數(shù)

uint32_t*output輸入:設(shè)備指紋分配的buf,由外部分配和釋放,長(zhǎng)度應(yīng)大于40字節(jié);

輸出:設(shè)備唯一ID;

uint32*outlen輸入:為設(shè)備指紋分配buf的長(zhǎng)度;

輸出:設(shè)備指紋的長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_FAIL:失敗。

d)能夠確保REE與TEE通道正確、穩(wěn)定通信。

9.2.2TEE_FpGetLastIdentifyResult

intTEE_FpGetLastIdentifyResult(

[inbuf/outbuf]int*id)

a)描述

獲取上一次成功驗(yàn)證指紋模版對(duì)應(yīng)唯一ID。在TEE中根據(jù)獲取的指紋模版ID和注冊(cè)時(shí)綁定

的指紋模版ID比對(duì),判斷是否驗(yàn)證通過(guò)。觸發(fā)在REE,在實(shí)現(xiàn)時(shí)需要確保從REE真正觸發(fā)

到TEE成功獲取的時(shí)間間隔不超過(guò)3s。超過(guò)3s則返回失敗,id置0。

b)參數(shù)

Int*id:上一次成功調(diào)用指紋驗(yàn)證接口對(duì)應(yīng)的ID。內(nèi)存需要由調(diào)用方分配和管理,傳入整型

指針,成功后輸出指紋模版ID。

c)返回值

TEE_SUCCESS:成功;

TEE_FP_GET_ID_ERROR:獲取指紋ID失敗。

9.2.3TEE_FpGetIds

13

T/TAF001—2023

intTEE_FpGetIds(

[inbuf/outbuf]int*ids,

[inbuf/outbuf]int*idsCount)

a)描述

獲取本設(shè)備上已注冊(cè)的指紋模版?zhèn)€數(shù)及指紋模版對(duì)應(yīng)的唯一ID列表。業(yè)務(wù)方需根據(jù)此ID

列表查詢指定指紋模版ID是否在已注冊(cè)的指紋模版列表中。

b)參數(shù)

int*ids:輸入整型數(shù)組,由調(diào)用方維護(hù)內(nèi)存,返回已經(jīng)錄入的指紋唯一ID列表;

int*idsCount:輸入整型指針,由調(diào)用方維護(hù)內(nèi)存,輸出為已經(jīng)錄入指紋唯一ID的

個(gè)數(shù)。如ids的buf過(guò)小,則直接返回需要buf的大小。

c)返回值

TEE_SUCCESS:成功;

TEE_FP_GET_IDS_FAIL:獲取指紋ID列表失敗。

9.2.4TEE_FpGetAuthorticatorVersion

intTEE_FpGetAuthorticatorVersion(

[inbuf/outbuf]uint32*ver)

a)描述

獲取指紋檢驗(yàn)器的版本,此方法用與TEE_FpAuthenticatorSign的私鑰配對(duì)。不同的

版本匹配不同的TEE_FpAuthenticatorSign私鑰。

b)參數(shù)

uint32*ver:檢驗(yàn)器的版本。

c)返回值

TEE_SUCCESS:成功;

TEE_FP_FAIL:獲取指紋ID列表失敗。

9.2.5TEE_FpAuthenticatorSign

intTEE_Fp_AuthenticatorSign(

[inbuf]uint32_t*src,[inbuf]uint32src_len,

[outbuf]uint32_t*des,[outbuf]uint32*deslen)

a)描述

使用指紋檢驗(yàn)器的私鑰對(duì)傳入的數(shù)據(jù)簽名。指紋檢驗(yàn)器的私鑰由設(shè)備廠商維護(hù),不能

離開(kāi)TEE(SE)。在初期測(cè)試階段,設(shè)備廠商需要提供測(cè)試公鑰給業(yè)務(wù)方,完成簽名驗(yàn)

證。線上環(huán)境需要更新線上的密鑰。簽名算法使用SM2_SM3或RSA_SHA256。

b)參數(shù)

uint32_t*src:需要簽名的原數(shù)據(jù);

uint32src_len:需求簽名的原數(shù)據(jù)的長(zhǎng)度;

uint32_t*des:簽名后的數(shù)據(jù);

14

T/TAF001—2023

uint32*des_len:簽名后的數(shù)據(jù)長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_FP_SIGN_FAIL:指紋檢驗(yàn)器簽名失敗。

9.3基礎(chǔ)接口

9.3.1TEE_Generatekey

TEE_ResultTEE_GenerateKey(

TEE_ObjectHandleobject,uint32_t

keySize,TEE_Attribute*params,uint32_t

paramCount)

a)描述

生成隨機(jī)密鑰或密鑰對(duì)。

b)參數(shù)

TEE_ObjectHandleobject:密鑰操作對(duì)象;

uint32_tkeySize:所生成的密鑰的大??;

TEE_Attribute*params:生成密鑰所需要的參數(shù);

uint32_tparamCount:生成密鑰所需要的參數(shù)個(gè)數(shù)。

c)返回值

TEE_SUCCESS:成功;

TEE_ERROR_BAD_PARAMETERS:輸入的參數(shù)錯(cuò)誤。

9.3.2TEE_FpRsaPrivateSign

TEE_ResultTEE_FpRsaPrivateSign(

[in]TEE_OperationHandleoperation,[inbuf]unsignedchar*src,

[inbuf]intsrc_len,[inbuf/outbuf]unsignedchar*des,

[inbuf/outbuf]int*des_len,[inbuf]sign_typetype)

a)描述

使用私鑰對(duì)傳入的數(shù)據(jù)根據(jù)指定的type簽名,type支持SM3和sha256,優(yōu)先選擇

sha256。

b)參數(shù)

TEE_OperationHandleoperation:密鑰操作對(duì)象;

unsignedchar*src:需要簽名的原始數(shù)據(jù);

intsrc_len:需要簽名的原始數(shù)據(jù)的長(zhǎng)度;

unsigneddes:簽名后的數(shù)據(jù);

int*des_len:簽名后數(shù)據(jù)的長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_RSA_PRI_SIGN_FAIL:私鑰簽名失敗。

9.3.3TEE_FP_Rsa_Pubverify

15

T/TAF001—2023

TEE_ResultTEE_FP_Rsa_PubVerify(

[in]TEE_OperationHandleoperation,[inbuf]unsignedchar*src,

[inbuf]intsrc_len,[inbuf/outbuf]unsignedchar*des,

[inbuf/outbuf]int*des_len,[inbuf]sign_typetype)

a)描述

使用公鑰對(duì)指定的數(shù)據(jù)按照指定的type驗(yàn)證簽名。type和私鑰簽名支持的類(lèi)型一

致;

sign_typetype:簽名類(lèi)型。

b)參數(shù)

TEE_OperationHandleoperation:密鑰操作對(duì)象;

unsignedchar*src:私鑰生成簽名的原數(shù)據(jù);

intsrc_len:私鑰生成簽名的原始數(shù)據(jù)的長(zhǎng)度;

unsignedchar*des:私鑰簽名后的數(shù)據(jù);

int*des_len:私鑰簽名后數(shù)據(jù)的長(zhǎng)度;

sign_typetype:簽名類(lèi)型。

c)返回值

TEE_SUCCESS:成功;

TEE_RSA_PUB_VERIFY_FAIL:公鑰驗(yàn)簽失敗。

9.3.4TEE_GenerrateRandom

voidTEE_GenerateRandom(

[inbuf/outbuf]void*randomBuffer,

[inbuf]size_trandomBufferLen)

a)描述

生成指定長(zhǎng)度的真隨機(jī)數(shù)。

b)參數(shù)

void*randomBuffer:真隨機(jī)數(shù)buf,輸入為外部分配需要長(zhǎng)度的buf,由外部管理;

輸出為指定長(zhǎng)度的隨機(jī)數(shù);

size_trandomBufferLen:生成的真隨機(jī)數(shù)長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_FP_RANDOM_FAIL:生成隨機(jī)數(shù)失敗。

9.3.5TEE_GetSystemTime

voidTEE_GetSystemTime(

[outbuf]TEE_Time*time

)

a)描述

16

T/TAF001—2023

獲取時(shí)間。

b)參數(shù)

time:參見(jiàn)GP標(biāo)準(zhǔn)time。

c)返回值

無(wú)。

9.3.6TEE_Save

intTEE_save(

[inbuf]uint32_t*key,[inbuf]uint32key_len,[inbuf]uint32_t*value,

[inbuf]uint32value_len)

a)描述

存儲(chǔ)數(shù)據(jù)到TEE。一些需要存儲(chǔ)的敏感數(shù)據(jù)需要調(diào)用此接口。

b)參數(shù)

uint32_t*key:存儲(chǔ)數(shù)據(jù)的關(guān)鍵字;

uint32key_len:存儲(chǔ)數(shù)據(jù)關(guān)鍵字的長(zhǎng)度;

uint32_t*value:需要存儲(chǔ)數(shù)據(jù);

uint32value_len:要存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功。

9.3.7TEE_Load

intTEE_load(

[inbuf]uint32_t*key,[inbuf]uint32key_len,[outbuf]

uint32_t*value,[outbuf]uint32value_len)

a)描述

從TEE讀取數(shù)據(jù)。

b)參數(shù)

uint32_t*key:需要讀取數(shù)據(jù)的關(guān)鍵字;

uint32key_len:需要讀取數(shù)據(jù)的關(guān)鍵字的長(zhǎng)度;

uint32_t*Value:需要讀取數(shù)據(jù)的buf;

uint32value_len:需要讀取數(shù)據(jù)的長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_FAIL:失??;

FAIL:失敗。

9.3.8TEE_Remove

intTEE_Remove(

[inbuf]uint32_t*key,[inbuf]uint32

key_len)

17

T/TAF001—2023

a)描述

從TEE根據(jù)關(guān)鍵字刪除數(shù)據(jù)。

b)參數(shù)

uint32_t*key:需要讀取數(shù)據(jù)的關(guān)鍵字;

uint32key_len:需要讀取數(shù)據(jù)的關(guān)鍵字的長(zhǎng)度。

c)返回值

TEE_SUCCESS:成功;

TEE_FAIL:失敗。

9.3.9TEE_Malloc

void*TEE_Malloc([inbuf]size_tsize,[inbuf]

uint32_thint)

a)描述

分配指定大小的內(nèi)存。

b)參數(shù)

size_tsize:需要分配的內(nèi)存大?。?/p>

uint32_thint:初始化值。

c)返回值

如果分配成功,則返回指針指向特定大小的空間buffer;

如果分配失敗,則返回NULL。

9.3.10TEE_Free

voidTEE_Free(void*buffer)

a)描述

釋放指定buffer的內(nèi)存空間。如果傳入的參數(shù)是NULL,則不需要做任何事情,如果

傳入的內(nèi)存空間不是TEE_MALLOC分配的,則會(huì)出現(xiàn)參數(shù)錯(cuò)誤。

b)參數(shù)

void*buffer:需要釋放內(nèi)存空間的buffer的指針。

c)返回值

無(wú)。

9.4數(shù)據(jù)結(jié)構(gòu)

typedefenumrsa_sign_type{

RSA_SIGN_TYPE_SM3=0,//RSASIGNWITHSM3

RSA_SIGN_TYPE_SHA256//RSASIGNWITHSHA256

}sign_type;

描述:RSA簽名類(lèi)型,目前支持SM3和sha256。

9.5狀態(tài)碼

18

T/TAF001—2023

狀態(tài)碼見(jiàn)表4。

表4狀態(tài)碼

名稱值

TEE_SUCCESS0x00000000

TEE_FAIL0xffffffff

TEE_FP_NOT_MATCH0x00010000

TEE_FP_GET_ID_FAIL0x00020000

TEE_GEN_RSA_KEY_FAIL0x00030000

TEE_EXT_RSA_PRI_SIGN_FAIL0x00040000

TEE_EXT_RSA_PUB_VERIFY_FAIL0x00050000

TEE_FP_SIGN_FAIL0x00060000

TEE_FP_GET_IDS_FAIL0x00070000

10REE與TEE通信及TA更新接口要求

10.1總則

REE與TEE通信及TA更新接口應(yīng)實(shí)現(xiàn)以下功能:

a)支持REE到TEE的數(shù)據(jù)透明傳輸;

b)支持根據(jù)指定路徑更新TA。

10.2AbstractTEEClient類(lèi)

10.2.1描述

描述如下:

a)AbstractTEEClient類(lèi)定義了需要實(shí)現(xiàn)的REE與TEE通信及TA更新接口;

b)該類(lèi)是一個(gè)abstractclass,應(yīng)有具體的實(shí)現(xiàn)。

10.2.2AbstractTEEClient()方法

/**

*TEEClient的構(gòu)造方法

*

*/

publicAbstractTEEClient(Contextcontext,Stringpath);

a)描述

構(gòu)造AbstractTEEClient對(duì)象,其生命周期和teeclient一致。在此構(gòu)造方法中實(shí)

現(xiàn)teeclient的創(chuàng)建。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論