TEE系列之GP规范&TEE API浅析

本文深入探讨了GlobalPlatform在保护数字服务和设备安全方面的角色,介绍了TEE(受信任的执行环境)的API,包括TEEClientAPI和TEEOSAPI,详细阐述了它们的功能和应用场景,如加解密、签名验证、数据流管理和对象操作等,为TEE方案商和TA开发者提供了关键参考。
摘要由CSDN通过智能技术生成

1、GlobalPlatform

GlobalPlatform是一个由100多家成员公司推动的非营利性行业协会。成员们共同的目标是开发GlobalPlatform的规范。这些规范现已被广泛认定为推动数字服务和设备在整个生命周期内受到信任并安全管理的国际标准。

GlobalPlatform通过制定标准和认证安全硬件/硬件组合(合称安全组件,可充当设备上的信任锚)来保护数字服务。这有助于服务提供商和设备制造商之间的协作,使他们能够确保所有设备足够安全,能够防范威胁。

GlobalPlatform规范还制定了实地应用数字服务和设备的安全管理标准。总而言之,GlobalPlatform可为终端用户提供方便、安全的数字服务,同时无论市场部门或设备类型如何,GlobalPlatform都提供隐私保护支持。GlobalPlatform保护的设备包括智能手机、平板电脑、机顶盒、可穿戴设备、联网汽车、其他物联网(IoT)设备和智能卡片。

该技术广泛应用于全球,提高了所有用户的成本和上市时间的效率。采用GlobalPlatform技术的市场领域包括支付、电信、交通、汽车、智能城市、智能家居、公用事业、医疗保健、优质内容、政府和企业ID。

GlobalPlatform成功技术规范开发的成就归功于近二十年来各相关行业充满活力与卓有成效的合作。成员通过参与技术委员会、工作组和战略工作组来影响组织的成果。GlobalPlatform技术是与世界各地的众多标准机构和区域组织合作开发的,确保了持续的相关性和及时性。

在这里插入图片描述
下面分别进行一句话概况:

1,SE管理作为GP标准重要一项,有完善的API、测试套件。
2,TEE API规范主要是TEE方案商和TA开发者必备的案头参考手册。
3,TEE 一致性规范,主要还包含测试相关啦!
4,TEE管理框架,就是应用管理相关,也是需要各大TEE厂商所重视的。
5,TEE PP也就是TEE的安全轮廓,是TEE安全认证的最重要的文档。
备注:把SE也放在一起,因为实际应用中TEE和SE也是一对不可分离的兄弟!

2、TEE GP API介绍

TEE API分两种:

一类是CA与TA通信的API,实现方式就是应用程序调用libteec.so库,libteec.so库是由optee_client编译出的,libteec.so中调用了dev/tee_priv节点陷入kernel mode,在kernel mode中调用smc同步异常指令陷入到ATF,ATF再跳出到TEE OS, TEE OS再将消息发送给相应的TA。该API在globalplatform中的TEE_Client_API_Specification-V1.0_c.pdf文档中有所规定,api的具体实现是在optee_client/libteec
一类是TA系统调用TEE OS的API,这是的实现方式其实就是系统调用,调用SVC同步异常指令,进入kernel mode。该API在globalplatform中的GPD_TEE_Internal_Core_API_Specification_v1.1.pdf文档中有所规定,api的具体实现是在optee_os\lib\libutee

2.1 TEE Client API介绍

这类api不到10个(一共9个)

TEEC_InitializeContext
TEEC_FinalizeContext
TEEC_RegisterSharedMemory
TEEC_AllocateSharedMemory
TEEC_ReleaseSharedMemory
TEEC_OpenSession 
TEEC_CloseSession
TEEC_InvokeCommand
TEEC_RequestCancellation

2.2 TEE OS API

这类api就有很多了,也分好几类:
(1)、Asymmetric

TEE_AsymmetricDecrypt
TEE_AsymmetricEncrypt
TEE_AsymmetricSignDigest
TEE_AsymmetricVerifyDigest

(2)、Authenticated Encryption

TEE_AEDecryptFinal
TEE_AEEncryptFinal
TEE_AEInit
TEE_AEUpdate
TEE_AEUpdateAAD

(3)、Basic Arithmetic

TEE_BigIntAdd
TEE_BigIntDiv
TEE_BigIntMul
TEE_BigIntNeg
TEE_BigIntSquare
TEE_BigIntSub

(4)、Cancellation

TEE_GetCancellationFlag
TEE_MaskCancellation
TEE_UnmaskCancellation

(5)、Converter

TEE_BigIntConvertFromOctetString
TEE_BigIntConvertFromS32
TEE_BigIntConvertToOctetString
TEE_BigIntConvertToS32

(6)、Data Stream Access

TEE_ReadObjectData
TEE_SeekObjectData
TEE_TruncateObjectData
TEE_WriteObjectData

(7)、Deprecated

TEE_BigIntInitFMMContext
TEE_CloseAndDeletePersistentObject
TEE_CopyObjectAttributes
TEE_GetObjectInfo
TEE_RestrictObjectUsage

(8)、Events

TEE_Event_AddSources
TEE_Event_CancelSources
TEE_Event_CloseQueue
TEE_Event_DropSources
TEE_Event_ListSources
TEE_Event_OpenQueue
TEE_Event_TimerCreate
TEE_Event_Wait

(9)、Fast Modular Multiplication

TEE_BigIntComputeFMM
TEE_BigIntConvertFromFMM
TEE_BigIntConvertToFMM

(10)、Generic Object

TEE_CloseObject
TEE_GetObjectBufferAttribute
TEE_GetObjectInfo (deprecated)
TEE_GetObjectInfo1
TEE_GetObjectValueAttribute
TEE_RestrictObjectUsage (deprecated)
TEE_RestrictObjectUsage1

(11)、Generic Operation

TEE_AllocateOperation
TEE_CopyOperation
TEE_FreeOperation
TEE_GetOperationInfo
TEE_GetOperationInfoMultiple
TEE_IsAlgorithmSupported
TEE_ResetOperation
TEE_SetOperationKey
TEE_SetOperationKey2

(12)、Initialization

TEE_BigIntInit
TEE_BigIntInitFMM
TEE_BigIntInitFMMContext (deprecated)
TEE_BigIntInitFMMContext1

(13)、Internal Client API

TEE_CloseTASession
TEE_InvokeTACommand
TEE_OpenTASession

(14)、Key Derivation

TEE_DeriveKey

(15)、Logical Operation

TEE_BigIntAbs
TEE_BigIntAssign
TEE_BigIntCmp
TEE_BigIntCmpS32
TEE_BigIntGetBit
TEE_BigIntGetBitCount
TEE_BigIntSetBit
TEE_BigIntShiftRight

(16)、MAC

TEE_MACCompareFinal
TEE_MACComputeFinal
TEE_MACInit
TEE_MACUpdate

(17)、Memory Allocation and Size of Objects

TEE_BigIntFMMContextSizeInU32
TEE_BigIntFMMSizeInU32
TEE_BigIntSizeInU32 (macro)

(18)、Memory Management

TEE_CheckMemoryAccessRights
TEE_Free
TEE_GetInstanceData
TEE_Malloc
TEE_MemCompare
TEE_MemFill
TEE_MemMove
TEE_Realloc
TEE_SetInstanceData

(19)、Message Digest

TEE_DigestDoFinal
TEE_DigestExtract
TEE_DigestUpdate

(20)、Modular Arithmetic

TEE_BigIntAddMod
TEE_BigIntExpMod
TEE_BigIntInvMod
TEE_BigIntMod
TEE_BigIntMulMod
TEE_BigIntSquareMod
TEE_BigIntSubMod

(21)、Other Arithmetic

TEE_BigIntComputeExtendedGcd
TEE_BigIntIsProbablePrime
TEE_BigIntRelativePrime

(22)、Panic Function

TEE_Panic

(23)、Peripherals

TEE_Peripheral_Close
TEE_Peripheral_CloseMultiple
TEE_Peripheral_GetPeripherals
TEE_Peripheral_GetState
TEE_Peripheral_GetStateTable
TEE_Peripheral_Open
TEE_Peripheral_OpenMultiple
TEE_Peripheral_Read
TEE_Peripheral_SetState
TEE_Peripheral_Write

(24)、Persistent Object

TEE_CloseAndDeletePersistentObject (deprecated)
TEE_CloseAndDeletePersistentObject1
TEE_CreatePersistentObject
TEE_OpenPersistentObject
TEE_RenamePersistentObject

(25)、Persistent Object Enumeration

TEE_AllocatePersistentObjectEnumerator
TEE_FreePersistentObjectEnumerator
TEE_GetNextPersistentObject
TEE_ResetPersistentObjectEnumerator
TEE_StartPersistentObjectEnumerator

(26)、Property Access

TEE_AllocatePropertyEnumerator
TEE_FreePropertyEnumerator
TEE_GetNextProperty
TEE_GetPropertyAsBinaryBlock
TEE_GetPropertyAsBool
TEE_GetPropertyAsIdentity
TEE_GetPropertyAsString
TEE_GetPropertyAsU32
TEE_GetPropertyAsU64
TEE_GetPropertyAsUUID
TEE_GetPropertyName
TEE_ResetPropertyEnumerator
TEE_StartPropertyEnumerator

(27)、Random Data Generation

TEE_GenerateRandom

(28)、Symmetric Cipher

TEE_CipherDoFinal
TEE_CipherInit
TEE_CipherUpdate

(29)、TA Interface

TA_CloseSessionEntryPoint
TA_CreateEntryPoint
TA_DestroyEntryPoint
TA_InvokeCommandEntryPoint
TA_OpenSessionEntryPoint

(30)、Time

TEE_GetREETime
TEE_GetSystemTime
TEE_GetTAPersistentTime
TEE_SetTAPersistentTime
TEE_Wait

(31)、Transient Object

TEE_AllocateTransientObject
TEE_CopyObjectAttributes (deprecated)
TEE_CopyObjectAttributes1
TEE_FreeTransientObject
TEE_GenerateKey
TEE_InitRefAttribute
TEE_InitValueAttribute
TEE_PopulateTransientObject
TEE_ResetTransientObject

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔的乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值