密钥应用程序错误该内存不能为read

应用程序错误该内存不能为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,对加密的密文进行解密.

FBICDN,0.1元解决伪墙/假墙攻击,超500 Gbps DDos 防御,每天免费流量高达100G,免费高防网站加速服务

最近很多网站都遭受到了伪墙/假墙攻击,导致网站流量大跌,间歇性打不开网站。这是一种新型的攻击方式,攻击者利用GWF规则漏洞,使用国内服务器绑定host的方式来触发GWF的自动过滤机制,造成GWF暂时性屏蔽你的网站和服务器IP(大概15分钟左右),使你的网站在国内无法打开,如果攻击请求不断,那么你的网站就会是一个一直无法正常访问的状态。常规解决办法:1,快速备案后使用国内服务器,2,使用国内免备案服...

Digital-VM暑期全场六折优惠,8个机房

Digital-VM商家目前也在凑热闹的发布六月份的活动,他们家的机房蛮多的有提供8个数据中心,包括日本、洛杉矶、新加坡等。这次六月份的促销活动全场VPS主机六折优惠。Digital-VM商家还是有一点点特点的,有提供1Gbps和10Gbps带宽的VPS主机,如果有需要大带宽的VPS主机可以看看。第一、商家优惠码优惠码:June40全场主机六折优惠,不过仅可以月付、季付。第二、商家VPS主机套餐1...

HostMem,最新优惠促销,全场75折优惠,大硬盘VPS特价优惠,美国洛杉矶QuadraNet机房,KVM虚拟架构,KVM虚拟架构,2核2G内存240GB SSD,100Mbps带宽,27美元/年

HostMem近日发布了最新的优惠消息,全场云服务器产品一律75折优惠,美国洛杉矶QuadraNet机房,基于KVM虚拟架构,2核心2G内存240G SSD固态硬盘100Mbps带宽4TB流量,27美元/年,线路方面电信CN2 GT,联通CU移动CM,有需要美国大硬盘VPS云服务器的朋友可以关注一下。HostMem怎么样?HostMem服务器好不好?HostMem值不值得购买?HostMem是一家...

应用程序错误该内存不能为read为你推荐
美国虚拟空间美国虚拟主机无限空间是什么意思?免费云主机有永久免费的云主机吗?域名备案查询如何查询自己域名是否备案,怎么查询备案号?美国网站空间美国空间做什么网站好?重庆网站空间重庆建网站选择哪家比较好,还有域名空间等,下载虚拟主机虚拟机怎么使用和下载云南虚拟主机大家觉得云南天成科技服务器租用给力吗?虚拟主机提供商找个比较好的虚拟主机提供商华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题二级域名一级域名与二级域名有啥区别
广西虚拟主机 企业域名备案 荣耀欧洲 plesk 20g硬盘 evssl win8升级win10正式版 NetSpeeder lighttpd 地址大全 域名dns vul 网页加速 群英网络 购买空间 googlevoice winserver2008 cx域名 winserver2008下载 性能测试工具 更多