密钥内存条的作用

内存条的作用  时间: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,对加密的密文进行解密.

百纵科技,美国独立服务器 E52670*1 32G 50M 200G防御 899元/月

百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。C3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C3机房套餐处理器内存硬盘IP数带宽线路防御价格/月套...

cyun29元/月,香港CN2 GIA云服务器低至起;香港多ip站群云服务器4核4G

cyun怎么样?cyun蓝米数据是一家(香港)藍米數據有限公司旗下品牌,蓝米云、蓝米主机等同属于该公司品牌。CYUN全系列云产品采用KVM架构,SSD磁盘阵列,优化线路,低延迟,高稳定。目前,cyun推出的香港云服务器性价比超高,香港cn2 gia云服务器,1核1G1M/系统盘+20G数据盘,低至29元/月起;香港多ip站群云服务器,16个ip/4核4G仅220元/月起,希望买香港站群服务器的站长...

DMIT:新推出美国cn2 gia线路高性能 AMD EPYC/不限流量VPS(Premium Unmetered)$179.99/月起

DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...

内存条的作用为你推荐
虚拟空间租用我在网上租用了个虚拟空间。带域名。。想在里面放置AVI,等视频。放在目录里,然后怎么设置才能在域名观看呢主机租用电脑租赁多少钱一天,电脑租赁,优易租0元押金美国vps服务器请问国外VPS服务器去哪里买呀,急求?拜托了各位 谢谢美国虚拟空间美国虚拟主机无限空间是什么意思?中国域名注册中国十大域名注册服务商有哪些?美国服务器托管美国服务器租用时要注意什么?深圳网站空间深圳宝安网站设计,深圳网站空间,哪里做的最好???论坛虚拟主机我想买个论坛虚拟主机,但是去了好多网站都不怎么样?西安虚拟主机如何评价虚拟主机的优劣西安虚拟主机西部数码虚拟主机怎么样,西部数码云主机怎么样
服务器租赁 猫咪av永久最新域名 美元争夺战 edis 双11抢红包攻略 工作站服务器 isp服务商 东莞服务器 美国独立日 万网主机管理 免费ftp 湖南idc cdn网站加速 第八届中美互联网论坛 forwarder cpu使用率过高怎么办 linux服务器系统 wannacry勒索病毒 vim 华为云服务器宕机 更多