TEE系列之ARM Trustzone 技術淺析(四)
- 1、GlobalPlatform
- 2、TEE GP API介紹
- 2.1 TEE Client API介紹
- 2.2 TEE OS 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
在這里插入圖片描述
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298443.html
標籤:其他
