ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

可信计算中的身份鉴别和证明-EK、AIK和DAA

2021-10-28 19:57:59  阅读:416  来源: 互联网

标签:ACA DAA EK 证书 TPM 平台 AIK


可信计算

可信计算的概念由来已久,此处罗列几个时间点!

信息安全标准的演变:

  1. 1985年美国国家安全局提出TCSEC标准,又被称为橘皮书,里面第一次提到了TCB(可信基)的概念。
  2. 1987年,NSA又提出了用于可信网络连接方面的TNI标准,被称为红皮书,至此彩虹系列的安全标准应运而生。
  3. 1991年欧洲四国(英、法、德、荷兰)联合提出ITSEC标准。
  4. 1993年,美国提出本国的FC标准。同年加拿大提出自己的CTCPEC标准。
  5. 1996年,欧洲四国和美、加进行六国会议,共同提出CC标准1.0版。
  6. 1998年,CC标准2.0版提出。
  7. 1999年,成立了可信计算平台联盟TCPA。
  8. 2003年,由AMD、惠普、IBM、Intel和微软等企业共同成立了可信计算组织TCG,取代了TCPA。

    可信计算的核心是TPM芯片,既通过物理防护和密码算法,借助杂凑值度量的手段完成可信验证和信任传递。

    可信计算围绕TPM芯片,有三个信任根,既RTR、RTS和RTM。

    信任根可以简单理解为借助TPM芯片完成若干功能的代码片段。其中,RTR是可信报告根、RTS是可信存储根、RTM是可信度量根。

EK证书

    EK证书又叫背书证书,一般是由TPM生产商创造或者植入TPM的,有时也可以由平台的生产商发布。

    一个TPM一生只能有一个EK证书,EK证书是TPM芯片的唯一标识。

平台证书

    平台证书可以证明一个平台中有一个唯一的TPM芯片,且该芯片永久的与一个信任根息息相关。该证书一般由平台生产商发布和制定,包含了一些与EK相关的信息、厂商的平台模块信息以及平台的安全配置信息。

    一般在平台证书中包含了EK证书。

AIK证书

    AIK证书由PrivateCA签发,PrivateCA又叫PCA,也可以叫做ACA(AttestationCA)。AIK证书主要是证明TPM中已经生成了相关的AIK密钥,且已经与对应的EK进行了绑定,以及在AIK注册签发过程中的步骤是否规范。

    其中AIK只能用于签名,不可用去加解密,而且只能用于TPM内部信息的签名使用,这是为了防止攻击者进行AIK破解。

AIK注册过程

1、平台要求TPM生成AIK密钥对

  • 平台或者平台的应用程序向TSS(可信软件栈)发送CollateIdentityRequest命令,TSS向TPM发送MakeIdentity命令,随后TPM生成新的AIK公私钥对。
  • 随着MakeIdentity函数,TPM生成IDENTITY_CONTENTS结构,包括{结构版本,TPM命令序列,PCA的签名标记,AIK的公钥信息}
  • TPM用AIK私钥签名IDENTITY_CONTENTS结构信息,作为注册过程中的identityBinding信息(身份绑定信息)。
  • TPM在MakeIdentity接口中输出两个参数,一个是AIK公钥信息,另一个是identityBinding信息。

2、TSS生成包括AIK的证据数据

  • TSS通过以下的步骤生成了AIK注册请求中需要的证据结构IDENTITY_PROOF。(1)第一个就是identityBinding信息,identityBinding不用加密,他只是用来证明AIK私钥已经存储在TPM中,而且已经被EK证明了,无其他实际意义。(2)TPM的版本说明(3)AIK的公钥(4)IdentityLabel(5)EK证书(6)平台证书。
  • TSS通过TPM接口生成一个对称密钥K1,使用K1加密IDENTITY_PROOF结构数据。
  • TSS使用PCA(或者ACA)的公钥加密K1,这个K1只是向PCA或者ACA解密公开,发送至PCA的其实是密文k1。

3、平台向ACA或者PCA发送AIK证书签发请求。
    平台或者平台应用程序携带着IDENTITY_REQ结果,加密请求数据并发送给ACA。

4、ACA验证签发请求。

  • ACA首先使用自身的私钥解密K1密文,得到对称密钥k1信息。
  • ACA然后使用K1解密IDENTITY_PROOF结构。
  • ACA重新创建IDENTITY_CONTENTS结构,并验证identityBinding结构的正确性。同时也可以验证整个IDENTITY_PROOF结构。

5、ACA生成一个新的AIK证书。
    ACA可以使用收到的AIK公钥生成新的AIK证书。使用自己的AIK签名密钥来签发AIK证书。

6、ACA加密AIK证书
    ACA依靠TPM来加密AIK证书。使用接口TPM_ActivateIdentity命令,TPM输入一个TPM_EK_BLOB或者ASYM_CA_CONTENTS结构。

  • ACA生成对称密钥k2,一个AIK对应唯一的k2。
  • ACA使用k2加密AIK证书。
  • ACA创建一个TPM_EK_BLOB结构,包括一下内容:(1)AIK公钥的哈希值 (2)k2(3)附带PCR信息,供TPM来检查确保TPM的pcr寄存器的装饰是否正确。
  • ACA使用EK公钥加密TPM_EK_BLOB结构的数据。确保只有对应的TPM才能收到ACA签发的AIK证书。

7、ACA将加密的TPM_EK_BLOB结构数据和加密后的AIK证书发送至TPM平台。

8、平台收到之后使用TPM解密AIK证书
    向TPM发送Tspi_TPM_ActivateIdentity命令来解密TPM_EK_BLOB结构。取出k2,然后解密AIK证书。

AIK挑战和证明

1、一个挑战者的请求,包括若干的PCR寄存器值以及其他相关信息,比如TPM版本信息等,还包括挑战者需要平台返回的临时随机信息。由挑战者发送至被待证明的平台。

    该请求可以用Req(PCR列表S_pcr,是否需要TPM版本信息的开关标识,临时信息N_value)。

2、平台或者应用程序收到相关请求,由TSS调用TPM_Quote或者TPM_Quote2命令,TPM得到命令后,使用AIK私钥对S_pcr指向的寄存器列表值,TPM版本信息以及N_value信息进行签名,返回SG_tpm值、S_pcr指向的寄存器的值列表,以及TPM的版本信息。

3、TSS受到TPM的接口返回,收集相关信息,将TPM版本信息、SG_tpm值、详细度量记录日志和证书(包括平台证书、一致性证书以及AIK证书)一起发送给挑战者。

4、挑战者从PCA处验证证书信息,然后使用AIK证书将TPM版本信息,和从度量日志中重新计算出来的各个PCR寄存器的值,进行二次签名,并于SG_tpm签名做比对,从而得出此次证明挑战是否完成。

DAA直接匿名证明

    在TPM1.2版本中,取消了上面的注册以及证明的流程,使用DAA直接匿名证明,也就是零知识证明。

    原因:

    1、从上述注册流程中可知,TPM每生成一个AIK密钥对,都需要PCA或者ACA给签发一个AIK证书,当AIK密钥对需求量较大时,势必会对PCA平台的稳定性和可用性造成影响。

    2、PCA平台存在上帝视角,当挑战者发起挑战时,需要跟PCA发起请求来验证TPM平台的真伪,PCA中存在这所有的EK证书和AIK证书的对应关系,也就是TPM芯片与AIK证书的关系。存在一定程序的信息泄露风险。

    DAA方法:

    在DAA方法中,存在join和sign/verify等几种协议,此处不做讨论。

    TPM平台使用EK与DAA的issue发行方进行交互,交互之后TPM芯片中就同时存在DAA证书、EK证书以及生成的AIK证书等。

    当挑战者A向TPM平台发起证明挑战,平台方将DAA签名的AIK_A信息发送给A,A即可验证当前信息是否来自有效的TPM平台,但A并不知晓来自哪个TPM平台。

    当挑战者B向TPM平台发起证明挑战,平台方将DAA签名的AIK_B信息发送给B,B即可验证当前信息是否来自有效的TPM平台,但B也并不知晓来自哪个TPM平台。

    在DAA证明中,一方面减少了与DAA发行方的交互,另一方面保障了TPM的隐匿。

标签:ACA,DAA,EK,证书,TPM,平台,AIK
来源: https://blog.csdn.net/u013250169/article/details/121021008

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有