密钥内存管理

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

[6.18]IMIDC:香港/台湾服务器月付30美元起,日本/俄罗斯服务器月付49美元起

IMIDC发布了6.18大促销活动,针对香港、台湾、日本和莫斯科独立服务器提供特别优惠价格最低月付30美元起。IMIDC名为彩虹数据(Rainbow Cloud),是一家香港本土运营商,全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。香港服务器   $39/...

DiyVM:50元/月起-双核,2G内存,50G硬盘,香港/日本/洛杉矶机房

DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...

CloudCone(1.99美元),可以额外选择Voxility高防IP

CloudCone 商家也是比较有特点的,和我们熟悉的DO、Vultr、Linode商家均是可以随时删除机器开通的小时计费模式。这个对于有需要短租服务器的来说是比较有性价比的。但是,他们还有一个缺点就是机房比较少,不同于上面几个小时计费服务商可以有多机房可选,如果有这个多机房方案的话,应该更有特点。这次我们可以看到CloudCone闪购活动提供洛杉矶三个促销方案,低至月付1.99美元。商家也可以随...

内存管理为你推荐
中国互联网域名注册什么叫做网络域名 怎么注册网络域名 以及它的收费方式虚拟主机代理个人适合代理虚拟主机的业务吗域名注册查询如何知道域名注册信息?域名主机域名与主机的对应关系在哪里可以看到?国内免费空间国内有没有好的免费空间啊国内ip代理求一些国内《ip代理》地址大全美国服务器托管美国服务器租用有那些机房,他们的优缺点是什么?网站空间商网站空间商的选择??深圳网站空间菜鸟问:网站空间如何选择,与空间的基本知识?apache虚拟主机linux操作系统Apache配置虚拟主机
我的世界服务器租用 payoneer seovip win8.1企业版升级win10 全能主机 发包服务器 qq数据库下载 有益网络 电子邮件服务器 双十一秒杀 河南移动m值兑换 爱奇艺vip免费领取 33456 吉林铁通 独立主机 广州服务器托管 电信主机托管 linux服务器系统 建站行业 一句话木马 更多