密钥内存管理

内存管理  时间:2021-01-16  阅读:()

1TrustedComputingTSS-TCGSoftwareStackTCGSoftwareStack2010-04-28myslide12IntroductionTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)TCGServiceProvider(TSP)TCGSoftwareStackOverview3IntroductionTSSOverviewTSSArchitectureTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)TCGServiceProvider(TSP)TCGSoftwareStackOverview*IntroductionTSS是与TPM进行交互的核心软件部件TSS的设计规范由TCG颁布TSS1.
2规范已有750余页厂商自行设计的TSS必须符合TSS1.
2标准TSS的设计目的1.
为应用程序提供到TPM功能的单入口点2.
提供对TPM的同步访问3.
按标准构建字节流隐藏应用程序所构建的命令流4.
TPM的资源管理TCGSoftwareStack5IntroductionTSS体系结构TCG服务提供者(TSP)顶层模块提供标准的API接口TSS核心服务(TCS)管理服务TCG设备驱动库(TDDL)提供标准的驱动接口TCGSoftwareStackmyslide36IntroductionTPMInternalsI/O、ExecutionEngine、RNG、……TPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)TCGServiceProvider(TSP)TCGSoftwareStackOverview7TPMInternalsI/O管理流经通信总线的信号流典型的LPC总线(LowPinCountBus)ExecutionEngine命令的校验及解析命令码的执行控制内部执行流微控制器TCGSoftwareStackRSAEngineRSAkey-generatorSHA1EngineRNGOpt-inI/O(LPCBus)ExecutionEngineNon-volatilestorage(specialkeys,ownersecret,…)Volatilestorage(keyslots,PCRregisters,…)TPM8SHA-1Engine(160bits)主要被TPM使用,作为其可信的哈希算法在平台启动过程中,其接口暴露在TPM外以进行度量工作未来的TPM版本会加入更多的哈希算法RNGTPM内部的随机源Nonce,密钥的生成,.
.
.
TCGSoftwareStackRSAEngineRSAkey-generatorSHA1EngineRNGOpt-inI/O(LPCBus)ExecutionEngineNon-volatilestorage(specialkeys,ownersecret,…)Volatilestorage(keyslots,PCRregisters,…)TPMTPMInternals9RSAEngineandKeyGenerator非对称密钥的生成(RSA;存储SK及AIK密钥大小>=2048)必须支持512,1024,2048bit的密钥建议使用2048位的密钥RSA密钥生成遵循PKCS#1标准RSA密钥在使用的时候要加载到TPM内部TCGSoftwareStackRSAEngineRSAkey-generatorSHA1EngineRNGOpt-inI/O(LPCBus)ExecutionEngineNon-volatilestorage(specialkeys,ownersecret,…)Volatilestorage(keyslots,PCRregisters,…)TPMTPMInternals10VolatileMemory密钥槽(10个)、PCR值(24个)密钥句柄、授权会话句柄等Non-VolatileMemoryEK(2048bit)、EK证书SRK(2048bit)及属主(Owner)授权数据(160bit)等Opt-In:平台属主决定是否使用TPMTCGSoftwareStackRSAEngineRSAkey-generatorSHA1EngineRNGOpt-inI/O(LPCBus)ExecutionEngineNon-volatilestorage(specialkeys,ownersecret,…)Volatilestorage(keyslots,PCRregisters,…)TPMTPMInternals11IntroductionTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)TCGServiceProvider(TSP)TCGSoftwareStackOverview12TPMDeviceDriverTPM的驱动程序由厂商提供,并运行在内核模式下;驱动程序所提供的功能接口仅由TDDL调用使用,而不允许其他的组件调用;驱动是除了TSS外,是不提供对其他应用程序的连接TPM服务;提供除基本驱动以外的额外服务例如,电源管理等;TDD接口设计必须参考TIS标准.
TCGSoftwareStack13IntroductionTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)IntroductionTPMCommandsTPMAuthorizationProtocolsTCGCoreServices(TCS)TCGServiceProvider(TSP)TCGSoftwareStackOverview14TCGDeviceDriverLibraryIntroductionTSS用于和TPM通信的组件.
运行于用户空间的第一个TSS组件,提供了内核模式到用户模式的转换.
处于TCS和TDD之间,为TCS提供接口TDDLi.
TDDLi是一个单线程同步接口,发送到TDDLi的TPM命令都已经被串行化.
对于直接访问TPM设备的程序,TDDLi提供了7个功能函数,用于和TDD进行通信.
Tddli_Open()、Tddli_Close()、Tddli_TransmitData(…)、…TDDL必须仅提供对TCS的链接TCGSoftwareStack15TCGDeviceDriverLibraryTPMCommand规范中TPM有122个命令所有TPM命令格式都有相同的头命令索引,唯一标示一个命令,格式:TPM_ORD_XXordinalTPM_COMMAND_CODE43整个命令的大小paramSizeUINT3242TPM命令标签tagTPM_TAG21SZ#SZ#DescriptionNameTypeHMACPARAMTCGSoftwareStackCommandResultTPM_TAG_RSP_AUTH2_COMMAND0x00C6TPM_TAG_RSP_AUTH1_COMMAND0x00C5TPM_TAG_RSP_COMMAND0x00C4TPM_TAG_RQU_AUTH2_COMMAND0x00C3TPM_TAG_RQU_AUTH1_COMMAND0x00C2TPM_TAG_RQU_COMMAND0x00C1NameTagX0x0000006E110TPM_ORD_OwnerSetDisableX0x0000007D125TPM_ORD_OwnerReadPubekX0x00000081129TPM_ORD_OwnerReadInternalPubX0x0000005B91TPM_ORD_OwnerClearX0x0000000B11TPM_ORD_OSAPX0x0000000A10TPM_ORD_OIAP16TCGDeviceDriverLibraryExampleA:FurtherdefinitionofinformationsubCapBYTE[]6SizeofsubCapparametersubCapSizeUINT3245PartitionofcapabilitiestobeinterrogatedcapAreaTPM_CAPABILITY_AREA44Commandordinal:TPM_ORD_GetCapabilityordinalTPM_COMMAND_CODE43TotalnumberofinputbytesincludingparamSizeandtagparamSizeUINT3242TPM_TAG_RQU_COMMANDtagTPM_TAG21SZ#SZ#DescriptionNameTypeHMACPARAMTCGSoftwareStackCommandHowmanyPCRsdoyouhave0x00000101功能子域0c00000004功能子域大小0x00000005功能域0x00000065命令索引0x00000016包大小0x00C1命令标识TPM_GetCapabilityCommand…TPM_TAG_RQU_COMMAND…Commandsize:22bytes(0x16)…TPM_ORD_GetCapability…TPM_CAP_PROPERTY…Subcapabilitysize:4bytes…TPM_CAP_PROP_PCR17TCGDeviceDriverLibraryExampleA:TCGSoftwareStackResultOk,listen:24.
ThecapabilityresponserespBYTE[]5ThelengthofthereturnedcapabilityresponserespSizeUINT3244Thereturncodeoftheoperation.
returnCodeTPM_RESULT43TotalnumberofoutputbytesincludingparamSizeandtagparamSizeUINT3242TPM_TAG_RSP_COMMANDtagTPM_TAG21SZ#SZ#DescriptionNameTypeHMACPARAM0c00000018响应数据大小0x00000004响应净荷大小0x00000000返回码0x00000012包大小0x00C4命令标识TPM_GetCapabilityResponse…TPM_TAG_RSP_COMMAND…Responsesize:18bytes(0x12)…TPM_SUCCESS…Responsepayloadsize:4bytes…Responsedata:0x18…24PCRs*TCGDeviceDriverLibraryProgramme1.
TCGSoftwareStack//获取8个字节随机数;//使能SHA-1;//需加密的数据,64个字节;*TCGDeviceDriverLibraryTPMAuthorizationProtocolsAuthorization能够证明请求者拥有执行某个TPM功能和使用某些对象的许可.
用双方共享秘密(授权数据)进行证明,无其他方式.
AuthorizationData是一个在用户和TPM之间共享的160bit秘密值由用户创建,可以看做是passwordSRK及TPMOwner的授权数据要保存在TPM内部非易失性存储区内,而其他对象的授权数据则要与其自身进行绑定.

TCGSoftwareStack20TCGDeviceDriverLibraryTPMAuthorizationProtocolsObjectIndependentAuthorizationProtocol(OIAP)为提高效率而设计,在一个授权会话中可以验证一个或多个不同的对象验证的过程使用双方共享的秘密值(授权数据)ObjectSpecificAuthorizationProtocol(OSAP)在一个授权会话中仅对一个对象进行操作验证的过程使用双方共享的秘密值(授权数据)设置或重新设置授权数据的时候必须使用该协议TCGSoftwareStack21TPMDeviceDriverLibraryExampleB:(创建并使用密钥—创建密钥)TCGSoftwareStackTPM_OSAP(parentKeyHandle,NonceOdd)ShareSecret=HMAC(parenthKeyAuth;NonceEven,NonceOdd)authHandle,authLastNonceEven,NonceEvenTPM_CreateWrapKey(parentKeyHandle,encAuth,keyInfo,authHandle,NonceOdd)HMAC(ShareSecret;encAuth,keyInfo,authLastNonceEven,NonceOdd)NonceEven',keyBlob,HMAC(ShareSecret;NonceEven',NonceOdd)22TPMDeviceDriverLibraryExampleB:(创建并使用密钥—加载密钥)TCGSoftwareStackTPM_OIAP()authHandle,NonceEvenTPM_LoadKey2(parentKeyHandle,Warppedkey,authHandle,NonceOdd)HMAC(parentKeyauth;Warppedkey,NonceEven,NonceOdd)NonceEven',keyBlob,HMAC(parentKeyauth;NonceEven',NonceOdd)23TPMDeviceDriverLibraryExampleB:(创建并使用密钥—使用密钥)TCGSoftwareStackTPMOSAP(keyHandle,NonceOdd)ShareSecret=HMAC(KeyAuth;NonceEven,NonceOdd)authHandle,authLastNonceEven,NonceEvenTPM_Seal(keyHandle,encAuth,PCRInfo,data,authHandle,NonceOdd)HMAC(ShareSecret;encAuth,PCRInfo,data,authLastNonceEven,NonceOdd)NonceEven',SealedBlob,HMAC(ShareSecret;NonceEven',NonceOdd)24IntroductionTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)IntroductionManagementServicesTCGServiceProvider(TSP)TCGSoftwareStackOverview25TCGCoreServiceIntroductionTPM的缺陷一次只有一个操作可以进行处理速度很慢有限的资源,包括密钥槽、授权槽等只能通过一个驱动程序与其进行串行通信本地软件与之通信是有限制的TCS的优点可以对多个TPM待处理的操作进行排队对于不需要TPM处理的操作,TCS可以自行作出响应对TPM有限资源进行管理,可看作是无限的资源将输入输出的数据进行相应的转换可以对资源提供本地的或者远程的调用方式TCGSoftwareStack26TCGCoreServiceIntroductionTCS的特点TCS是一个后台服务(daemonorsystemservice)为TSP提供标准的接口TCG标准中,TCS对TPM的访问是唯一的每个TPM仅对应一个TCSTCS并不提供加解密功能对TPM有限的资源进行管理密钥、证书管理上下文管理TCS负责调度要执行的TPM命令每个操作都是原子操作允许多线程访问TCSTCS对TPM命令格式进行转换TCGSoftwareStack"软件TPM"27TCGCoreServiceIntroductionTCSInterface(TCSi)类C语言接口允许多个线程访问TCS每个操作都是原子操作作为系统进程而存在,TSP与TCS之间的通信有可能是RPC.
真正的接口定义在TSS发布的.
wsdl文件中.

TCGSoftwareStackPRomatePTSPTSPRPCTCG28TCGCoreServiceManagementServices上下文的管理TCGSoftwareStackTSSCoreServicesInterfaces(TCSi)TCSContextManagerAllocatedMemoryblocksHandles在发送命令到TCS之前,上层(TSP,应用程序)需要打开一个TCS上下文对象TCS上下文管理器管理多个TCS上下文为每一个上下文分配所需内存并设置其中每一类型对象的句柄,同时包括该上下文的句柄对每一个上下文进行内存管理Context29TCGCoreServiceManagementServices密钥、证书的管理TCGSoftwareStackTSSCoreServicesInterfaces(TCSi)Key&CredentialManagerKeyCacheManager证书管理只负责对EK证书、平台证书及一致性证书进行管理,只有Owner有对证书的访问权PersistentStorage(S)30TCGCoreService密钥存储管理定义了一个密钥永久存储层次结构,在其内部对其进行管理所有密钥在其中进行注册,并为每个密钥分配唯一标识的UUID,通过它来加载密钥子密钥的加载依赖于父密钥TCGSoftwareStackKeyManagerEKSRKRSAAuthdataTPMKeySlotsMassStorage………………………………31TCGCoreService密钥缓存管理在密钥加载之后,为其分配一个唯一的TCS密钥句柄当KeySlot没有空间时,将其中某一个密钥换出,然后新密钥加入需要建立一张TCS与TPM密钥句柄的映射表TCGSoftwareStackKeyManagerEKSRKRSAAuthdataTPMKeySlotsMassStorage………………………………32TCGCoreServiceExampleC.
创建TPM密钥RSA引擎创建一个新的RSA密钥对一个父密钥(存储密钥)需要被指定,用于封装(Wrap)使用后的新密钥为新密钥设置授权信息TCGSoftwareStackKeyManagerEKSRKRSAAuthdataTPMKeySlotsMassStorage………………………………33TCGCoreServiceExampleC.
存放TPM密钥在使用完RSA密钥对后,将其存放在密钥结构中,用UUID唯一标识用父密钥对其加密:Enc(Ppk;PK,Enc(Authdata;SK))TCGSoftwareStackKeyManagerEKSRKRSAAuthdataTPMKeySlotsMassStorage…………………………Enc34TCGCoreServiceExampleC.
加载密钥加载一个密钥(签名、存储、AIK等)以备使用首先需要知道该密钥的UUID,然后对其父密钥进行授权解密操作TCGSoftwareStackKeyManagerEKSRKRSAAuthdataTPMKeySlots12MassStorage………………………………35TCGCoreServiceExampleC.
加载密钥第一步:将#1密钥部分用SRK的私钥进行解密,这时候需要SRK的授权数据将#1存放在KeySlot中TCGSoftwareStackKeyManagerEKSRKRSA1AuthdataTPMKeySlots12MassStorage………………………………Dec36TCGCoreServiceExampleC.
加载密钥第二步:用#1的私钥对#2密钥进行解密,并将其放入KeySlot中#1需要授权数据TCGSoftwareStackKeyManagerEKSRKRSA12AuthdataTPMKeySlots12MassStorage………………………………Dec37TCGCoreServiceExampleC.
加载密钥第三步:用#2的私钥对所要加载的密钥进行解密,并将其放入KeySlot中#2需要授权数据这样一个密钥的加载就完成了,在使用该密钥的时候会需要该密钥的授权数据TCGSoftwareStackKeyManagerEKSRKRSA12AuthdataTPMKeySlots12MassStorage………………………………Dec38TCGCoreServiceManagementServices事件的管理TCGSoftwareStackTSSCoreServicesInterfaces(TCSi)EventManager(EventLog)OSTSSruntimeBIOS生成、管理并输出相关的事件(PCR)记录主要的事件记录由TSS来管理,例如运行时的度量(IMA)其他并不受TSS管理的事件,例如BIOS度量由CRTM完成,OS内核模块的度量由VMM(DRTM)完成.
为外部实体提供所需要事件记录事件记录存放于相应的数据库中39TCGCoreServiceExampleD.
TCGSoftwareStack40TCGCoreService参数块生成器TCGSoftwareStackTSSCoreServicesInterfaces(TCSi)ParameterBlockGenerartorTCGDeviceDriverLibrary所有的命令(如,C类型的数据结构)都要转变为TDD能理解的字节流对于TPM响应的字节流要转变为响应的数据结构该生成器与TCS内部的各个模块进行交互41TCGCoreServiceTCS体系结构TCGSoftwareStackTSSCoreServicesInterfaces(TCSi)TCSContextManagerKey&CredentialManagerEventManager(EventLog)OSTSSruntimeBIOSParameterBlockGeneratorKeyCacheManagerPersistentStorage(S)TCGDeviceDriverLibrary资源管理事件管理接口管理42IntroductionTPMInternalsTPMDeviceDriver(TDD)TCGDeviceDriverLibrary(TDDL)TCGCoreServices(TCS)TCGServiceProvider(TSP)IntroductionWorkingObjectsProgrammewithTSPiSomeApplicationsTCGSoftwareStackOverview43TCGServiceProviderIntroduction所提供的服务完整性收集和报告服务保护存储服务加密、解密服务证书服务不仅提供对TPM的访问(经由TCS),也包括额外的功能,比如签名校验、哈希等可以访问远程的TCS,经由RPC或者用标准的SOAP消息永久的用户存储,与TCS类似,但是它针对的是每个用户,提供了隔离机制提供了标准的C语言接口(TSPi)及公共的库函数TCGSoftwareStack44TCGServiceProviderIntroductionTCGServiceProviderInterface是一种面向对象的API接口,每一条API都与对象关联TSPI定义的类上下文类策略类TPM类密钥类加密数据类(密封或绑定的数据)PCR类NVRAM类HASH类每一个Tspi_XXX_(API)都按此命名,以便程序员知道正在操作的是哪种类型的对象TCGSoftwareStack45TCGServiceProviderWorkingObjects上下文对象在概念上类似于进程上下文提供管理资源和释放内存的功能连接到本地或者远程的TCS创建工作对象为工作中的对象建立默认策略,比如为代表TPM所有者的TPM对象建立策略对象提供访问永久性存储器数据库的功能TCGSoftwareStack46TCGServiceProviderWorkingObjects与上下文相关的APITspi_Context_Create(&hContext);//生成了一个上下文对象,创建了一个默认策略Tspi_Context_Connect(hContext,Destination)//上下文连接到TCS,并产生一个上下文句柄,若Destination为空则连接到本地TCS;并隐式地创建一个TPM对象,并与上下文关联Tspi_Context_CreateObject(hContext,TSS_Object_Type,Flags,hObject)//在上下文中创建一个新的对象,除了TPM对象,其余的对象都由此函数创建TCGSoftwareStack47TCGServiceProviderWorkingObjects策略对象三种策略类型:使用策略迁移策略操作策略保存命令所需要用到的授权数据装载密钥迁移密钥加密/解密数据获取TPM所有权获得和设置TPM敏感属性时TCGSoftwareStack48TCGServiceProviderWorkingObjects与策略对象相关的APITspi_Policy_Setsecret(hPolicy,TSS_Secret_Mode,secret)//为该策略设置秘密模式及秘密值,对于每个需要唯一口令的对象,必须创建一个新的策略,然后关联给该对象Tspi_Policy_AssignToObject(hPolicy,hObject);//将该策略关联到一个对象或多个对象TCGSoftwareStack49TCGServiceProviderWorkingObjectsTPM对象当TSP上下文连接到TCS时会隐式地生成一个TPM对象,并为其分配一个既定的策略,该策略处理TPMOwner的授权数据提供了对证书的访问TPM对象的API接口提供了几类操作身份认证管理获取\设置TPM状态TPM测试获取TPM功能获取随机数PCR事件TCGSoftwareStack50TCGServiceProviderWorkingObjectsKey对象用来表示TPM密钥(RSA密钥对)有7种不同的密钥类型SRKAIK密钥存储(Store)密钥签名(Sign)密钥绑定(Bind)密钥密封(Seal)密钥派生(Leavcy)密钥在用户永久存储区保存密钥TCGSoftwareStack51TCGServiceProviderWorkingObjects与Key对象相关的APITspi_Key_Loadkey(hKey,hUnwrappingKey)//加载密钥key到TPM中,需用父密钥对其解密Tspi_Key_CreateKey(hKey,hWrappingKey,hPcrComposite)//创建密钥key,并用父密钥对其私钥部分加密,若使用PCR值则需指明用到哪几个PCR合成对象Tspi_Key_WrapKey(hKey,hWrappingKey,hPcrComposite)//与Tspi_Key_CreateKey功能一样,但不创建密钥TCGSoftwareStack52TCGServiceProviderWorkingObjectsPCR合成对象代表了一批散列值及其合成的摘要值提供了对PCR值选择(Select)、读(Get)、写(Set)和扩展(Extend)等操作TCGSoftwareStack53TCGServiceProviderWorkingObjects与PCR合成对象相关的APITspi_PcrComposite_GetPcrValue(hPcrComposite,PcrIndex,ulPcrValueLength,rgbPcrValue)//从PCR合成对象中获取相应索引的PCR值Tspi_PcrComposite_SetPcrValue(hPcrComposite,PcrIndex,ulPcrValueLength,rgbPcrValue)//设置指定的PCR值到PCR对象中Tspi_PcrComposite_SelectPcrIndex(hPcrComposite,PcrIndex)//选择要使用哪一个PCR值,并记录在PCR合成对象中TCGSoftwareStack54TCGServiceProviderWorkingObjects与PCR合成对象相关的APITspi_TPM_PcrRead(hTPM,PcrIndex,PcrValueLength,PcrValue)//读取TPM中的PCR值Tspi_TPM_PcrExtend(hTPM,PcrIndex,DigestValue,PcrValueLength,PcrValue)//对PCR值进行扩展,TCS记录下扩展事件,并返回扩展后的PCR值.
PCRnew=SHA-1(PCRold||Measure)TCGSoftwareStack55TCGServiceProviderWorkingObjects散列对象TSS仅支持SHA-1算法,若使用其他散列算法,则需一个支持所需算法的外部库支持对hash值的签名及校验操作TCGSoftwareStack56TCGServiceProviderWorkingObjects与散列对象相关的APITspi_Hash_UpdateHashValue(hHash,strlen(data),data);//对data进行SHA-1操作Tspi_Hash_GetHashValue(hHash,&digestlen,&digest)//获取HASH对象的散列值TCGSoftwareStack57TCGServiceProviderWorkingObjects对象之间的关系TCGSoftwareStack需授权对象无授权对象58TCGServiceProviderProgrammewithTSPiExampleD.
D-1.
PCR值的读取(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)获取TPM对象;Tspi_Context_GetTpmObject(hContext,&hTPM);(3)读取TPM对象的PCR值;Tspi_TPM_PcrRead(hTPM,i,&pulPcrValueLength,&prgbPcrValue)TCGSoftwareStack59TCGServiceProviderProgrammewithTSPiExampleD.
D-2.
PCR值的扩展(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)获取TPM对象;Tspi_Context_GetTpmObject(hContext,&hTPM);(3)扩展TPM对象的PCR值,通过TCS扩展到真正TPM的PCR值;Tspi_TPM_PcrExtend(hTPM,i,ulPcrDataLength,pbPcrData,pPcrEvent,&pulPcrValueLength,&prgbPcrValue)TCGSoftwareStack60TCGServiceProviderProgrammewithTSPiExampleD.
D-3.
PCR合成对象的设置(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)创建PCR合成对象;Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_PCR,TSS_PCRS_STRUCT_INFO_LONG,&hPcrs)(3)选择所要设置的PCR;Tspi_PcrComposite_SelectPcrIndex(hPcrs,ulPcrIndex)(4)对所选择的PCR进行设值;Tspi_PcrComposite_SetPcrValue(hPcrs,ulPcrIndex,sizeof(digestValues),digestValues)TCGSoftwareStack61TCGServiceProviderProgrammewithTSPiExampleE.
SHA-1散列函数的使用(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)创建HASH对象;Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_HASH,TSS_HASH_SHA1,&hHash)(3)将数据进行HASHTspi_Hash_UpdateHashValue(hHash,strlen(data),data);(4)取回HASH对象的散列值Tspi_Hash_GetHashValue(hHash,&digestlen,&digest)SHA-1签名及校验(在签名密钥生成并注册之后)TCGSoftwareStack62TCGServiceProviderProgrammewithTSPiExampleF.
F-1(i).
密钥生成并注册(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)创建密钥对象,并设值相应的密钥属性Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_RSAKEY,FLAGS,&hKey);(3)创建策略对象,属性为使用策略Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_POLICY,TSS_POLICY_USAGE,&hKeyPolicy);(4)为策略设置秘密值,也就是授权数据Tspi_Policy_SetSecret(hKeyPolicy,TSS_SECRET_MODE_PLAIN,strlen(secret),secret)TCGSoftwareStack63TCGServiceProviderProgrammewithTSPiExampleF.
F-1(ii).
密钥生成并注册(5)将该策略关联到密钥对象Tspi_Policy_AssignToObject(hKeyPolicy,hKey)(6)加载一个存储密钥,作为其父密钥,此时需要该密钥的授权数据Tspi_Context_LoadKeyByUUID(hContext,TSS_PS_TYPE_SYSTEM,SRK_UUID,&hSRK)(7)创建新的密钥Tspi_Key_CreateKey(hKey,hSRK,0)(8)将新创建的密钥注册,并用UUID唯一标识Tspi_Context_RegisterKey(hContext,hKey,TSS_PS_TYPE_USER,user_storage_UUID,TSS_PS_TYPE_SYSTEM,SRK_UUID)TCGSoftwareStack64TCGServiceProviderProgrammewithTSPiExampleF.
F-2(i).
加载并使用密钥(1)创建上下文并连接到本地TCS;Tspi_Context_Create(&hContext);Tspi_Context_Connect(hContext,0);(2)创建策略对象Tspi_Context_CreateObject(hContext,TSS_OBJECT_TYPE_POLICY,TSS_POLICY_USAGE,&hKeyPolicy)(3)为策略对象设置要加载密钥的授权数据Tspi_Policy_SetSecret(hKeyPolicy,TSS_SECRET_MODE_PLAIN,strlen(secret),secret)(4)加载该密钥的父密钥,Tspi_Context_GetRegisteredKeysByUUIDTspi_Context_LoadKeyByUUID(hContext,TSS_PS_TYPE_SYSTEM,SRK_UUID,&hSRK)TCGSoftwareStack65TCGServiceProviderProgrammewithTSPiExampleF.
F-2(ii).
加载并使用密钥(5)通过密钥的UUID获取该密钥对象Tspi_Context_LoadKeyByUUID(hContext,TSS_PS_TYPE_USER,user_storage_UUID,&hKey)(6)将第(2)&(3)步创建的策略关联到该密钥对象Tspi_Policy_AssignToObject(hKeyPolicy,hKey)(7)使用该密钥TCGSoftwareStack66TCGServiceProviderProgrammewithTSPiExampleG.
Seal操作(条件密码操作)将密钥操作和平台配置信息(PCR)进行绑定,将数据加密绑定到用户指定的PCR.

KPUB-S{VPCR-x,K},K是用于加密消息的对称密钥,只有当当前的平台配置信息符合VPCR-x时,解密出K,对加密的密文进行解密.

美国VPS 美国高防VPS 香港VPS 日本VPS 首月9元 百纵科技

百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...

3G流量免费高防CDN 50-200G防御

简介酷盾安全怎么样?酷盾安全,隶属于云南酷番云计算有限公司,主要提供高防CDN服务,高防服务器等,分为中国境内CDN,和境外CDN和二个产品,均支持SSL。目前CDN处于内测阶段,目前是免费的,套餐包0.01一个。3G流量(高防CDN)用完了继续续费或者购买升级包即可。有兴趣的可以看看,需要实名的。官方网站: :点击进入官网云南酷番云计算有限公司优惠方案流量3G,用完了不够再次购买或者升级套餐流量...

Tudcloud(月付7.2美元),香港VPS,可选大带宽或不限流量

Tudcloud是一家新开的主机商,提供VPS和独立服务器租用,数据中心在中国香港(VPS和独立服务器)和美国洛杉矶(独立服务器),商家VPS基于KVM架构,开设在香港机房,可以选择限制流量大带宽或者限制带宽不限流量套餐。目前提供8折优惠码,优惠后最低每月7.2美元起。虽然主机商网站为英文界面,但是支付方式仅支付宝和Stripe,可能是国人商家。下面列出部分VPS主机套餐配置信息。CPU:1cor...

内存管理为你推荐
服务器空间租用租用服务器一年我要交多少钱美国主机空间美国主机空间不限制内容吗虚拟主机购买虚拟主机哪里购买的好?美国服务器托管美国服务器租用时要注意什么?什么是虚拟主机虚拟主机是什么?100m虚拟主机万网和新网虚拟主机有100M的吗万网虚拟主机万网云虚拟主机怎么用,如何配置安徽虚拟主机有没有免费使用的主机,网站刚做完,本地测试没有问题,想在线测试一下页面会不会跑版。有谁知道有没有免费的虚拟主机试用,两三天即可。华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题华众虚拟主机管理系统华众虚拟主机管理系统怎么样?
日本动态vps 域名服务器上存放着internet主机的 warez eq2 网盘申请 毫秒英文 jsp空间 seednet 老左来了 服务器是干什么的 傲盾官网 1美金 免费网页申请 多线空间 域名dns 登陆空间 便宜空间 外贸空间 永久免费空间 ledlamp 更多