密钥0x00000000内存不能为read

0x00000000内存不能为read  时间:2021-01-19  阅读:()

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,对加密的密文进行解密.

Boomer.Host(年付3.5美)休斯敦便宜VPS

Boomer.Host是一家比较新的国外主机商,虽然LEB自述 we’re now more than 2 year old,商家提供虚拟主机和VPS,其中VPS主机基于OpenVZ架构,数据中心为美国得克萨斯州休斯敦。目前,商家在LET发了两款特别促销套餐,年付最低3.5美元起,特别提醒:低价低配,且必须年付,请务必自行斟酌确定需求再入手。下面列出几款促销套餐的配置信息。CPU:1core内存:...

收到几个新商家投稿(HostMem,无忧云,青云互联,TTcloud,亚洲云端,趣米云),一起发布排名不分先后

7月份已经过去了一半,炎热的夏季已经来临了,主机圈也开始了大量的夏季促销攻势,近期收到一些商家投稿信息,提供欧美或者亚洲地区主机产品,价格优惠,这里做一个汇总,方便大家参考,排名不分先后,以邮件顺序,少部分因为促销具有一定的时效性,价格已经恢复故暂未列出。HostMem部落曾经分享过一次Hostmem的信息,这是一家提供动态云和经典云的国人VPS商家,其中动态云硬件按小时计费,流量按需使用;而经典...

RackNerd提供四款高配美国服务器促销活动低至月$189

RackNerd 商家给的感觉就是一直蹭节日热点,然后时不时通过修改配置结构不断的提供低价年付的VPS主机,不过他们家还是在做事的,这么两年多的发展,居然已经有新增至十几个数据中心,而且产品线发展也是比较丰富。比如也有独立服务器业务,不过在他们轮番的低价年付VPS主机活动下,他们的服务器估摸着销路不是太好的。这里,今天有看到RackNerd商家的独立服务器业务有促销。这次提供美国多个机房的高配独立...

0x00000000内存不能为read为你推荐
域名价格这个域名有价值吗域名空间代理哪里的域名空间商比较好?com域名空间域名和空间是什么意思虚拟主机推荐谁可以给推荐下好用的虚拟主机英文域名中文域名和英文域名有什么区别,越具体越好台湾vps台湾服务器租用托管那里好免费域名空间哪个免费空间的域名最好美国网站空间美国空间做什么网站好?虚拟主机评测浅谈建站新手如何挑选虚拟主机郑州虚拟主机什么是双线虚拟主机?
最新代理服务器ip virpus locvps godaddy续费优惠码 阿里云代金券 typecho 太原联通测速平台 个人域名 北京双线 lol台服官网 太原网通测速平台 电信主机 申请免费空间和域名 华为云盘 联通网站 帽子云排名 双11促销 博客域名 cc加速器 连连支付 更多