TEE系列之GP规范&TEE API浅析
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
在这里插入图片描述