标准搜索结果: 'GM/T 0079-2020'
标准编号 | GM/T 0079-2020 (GM/T0079-2020) | 中文名称 | 可信计算平台直接匿名证明规范 | 英文名称 | Direct anonymous attestation specification for trusted computing platform | 行业 | Chinese Industry Standard (推荐) | 中标分类 | L80 | 字数估计 | 26,253 | 发布日期 | 2020-12-28 | 实施日期 | 2021-07-01 | 标准依据 | 国家密码管理局公告第41号 | 发布机构 | 国家密码管理局 |
GM/T 0079-2020: 可信计算平台直接匿名证明规范
GM/T 0079-2020 英文名称: Direct anonymous attestation specification for trusted computing platform
中华人民共和国密码行业标准
可信计算平台直接匿名证明规范
国家密码管理局 发 布
1 范围
本文件规定了可信计算平台的直接匿名证明协议的功能、接口和数据结构。
本文件适用于可信计算平台直接匿名证明协议应用、匿名证明服务和匿名证明系统研发。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 32918-2016(所有部分) 信息安全技术 SM2椭圆曲线公钥密码算法
GM/T 0012 可信密码模块接口规范
GM/Z4001 密码术语
3 术语和定义
GM/Z4001界定的以及下列术语适用于本文件。
5 密码算法
本文件采用国家密码管理主管部门认可的密码算法。
6 直接匿名证明功能
6.1 概述
直接匿名证明用于TCM安全芯片的匿名身份证明。功能模型说明了系统的参与方的构成、作用
与目标,以及直接匿名证明的整体流程。功能算法说明了实现模型规定各方所必须执行的原子算法以
及有关的参数选择等。
6.2 模型
6.2.1 系统组成
ECDAA系统主要由凭证颁发方(Issuer)、证明方(Prover)和验证方(Verifier)三方面的参与者构
成见图1,其中证明方根据ECDAA计算位置不同而分为主机和TCM安全芯片,两者协同计算共同完
成了匿名凭证申请和匿名证明过程。
在ECDAA系统中,凭证颁发方负责初始化ECDAA系统参数,为TCM安全芯片颁发ECDAA凭
证,验证TCM安全芯片的身份是否已经被撤销。一般而言,TCM 安全芯片的生产厂商可以作为凭证
颁发方,对于不同厂商的TCM 芯片可以选择不同的ECDAA系统参数。也可以采用一个独立的权威
机构充当凭证颁发方,集中式管理TCM匿名凭证。
证明方平台是硬件上嵌入TCM安全芯片,支持ECDAA规范的安全PC、笔记本等可信计算平台。
证明方平台主要功能是TCM匿名凭证的申请、TCM匿名身份的证明,证明方平台驱动TCM通过执行
TCM_ECDAA_Join命令和相关主机计算向凭证颁发方请求匿名身份凭证;证明方平台执行TCM_EC-
DAA_Sign命令和相关主机计算向验证方平台匿名证明TCM数字身份。
验证方平台主要是通过验证证明方平台提供的证明数据,认证证明方平台TCM身份,保证证明方
平台的确是采用安全芯片TCM作为平台的身份。在验证TCM匿名身份的同时,需要向凭证颁发方请
求验证TCM数字身份是否已经被撤销。
在ECDAA系统中,TCM安全芯片的匿名身份私钥f 只允许保存在TCM 芯片内部,不允许被导
出。TCM的匿名身份私钥和匿名证明凭证可以存在多个,但是推荐只使用一个匿名身份私钥和凭证。
TCM匿名证明过程(包括证明和验证)只有TCM所有者才能执行,并且只有TCM所有者才能够清除
不安全的匿名私钥。TCM匿名身份凭证可以保存在芯片外部的主机平台,或者其他存储设备中。
证明方平台的核心计算功能由TCM 的TCM_ECDAA_Join和TCM_ECDAA_Sign命令来完成,
应当只有较高的权限才能执行这些ECDAA命令。ECDAA命令是非常耗费TCM 和主机计算资源的
命令,它需要大量的TCM芯片内部资源来完成一系列计算操作。在TCM安全芯片执行ECDAA命令
过程中,需要禁止其他TCM命令操作执行。
6.2.2 基本流程
ECDAA系统各个参与者之间主要通信流程包含如下步骤:
a) 系统初始化:设置ECDAA系统的公共参数,生成凭证颁发方用于颁发匿名凭证的公私钥对。
b) 凭证颁发:证明方向凭证颁发方申请和获得匿名凭证。
c) 证明:证明方利用匿名凭证以及对应私钥创建匿名证明数据。
d) 验证:验证方验证特定消息是由合法TCM正确签名的。
6.2.3 安全目标
ECDAA系统主要解决的问题是可信计算平台/TCM芯片用户如何向远程验证方证明自身平台的
确使用可信密码模块TCM,也即是TCM安全芯片如何认证自身的问题。在认证TCM身份的同时,还
需要保护平台身份隐私,要求远程验证方无法知道TCM安全芯片确切的身份,无法链接多次TCM 会
话。为了满足上述安全需求,ECDAA系统需要实现如下安全目标:
a) 不可伪造性:只有配备TCM芯片并依赖芯片申请了匿名身份凭证,证明方才能进行ECDAA
匿名证明,其他任何攻击者都无法伪造ECDAA证明数据。
b) 匿名性:在TCM未被攻破的情况下,任意用户通过协议数据无法获得当前TCM 的唯一性
标识。
c) 不可关联性:验证方平台无法建立两个ECDAA证明会话间的关联性,也即是对于两个不同的
证明会话,验证方平台无法判定是否来自同一个TCM。
d) 恶意TCM检测:当TCM拥有的匿名凭证对应的私钥被泄露后,验证方及凭证颁发方在协议
运行过程中可及时发现该类泄露。
6.3.2 系统初始化2
该算法用于证明方主机和TCM设置凭证颁发方生成的椭圆曲线系统公开参数(详见附录B),其
输入、输出和算法流程如下:
a) 输入:凭证颁发方公钥证书链,凭证颁发方验证的公共参数issuerSetings=(HASH(p),HASH
(h1),HASH(k0)),对公共参数的签名cre=signk-1n (issuerSetings)。
b) 输出:若设置成功,则输出“有效”;否则输出“无效”。
c) 算法流程:
1) 证明方调用TCM的直接匿名证明功能接口TCM_ECDAA_Setup(详见第8章)。具体
地,TCM验证凭证颁发方公钥证书链和凭证颁发方对公共参数的签名cre,然后根据
issuerSettings设置TCM内部凭证颁发方信息ECDAA_TCMSpecific->ECDAA_diges-
tIssuer(按附录A定义)。
2) 证明方主机将gpk可信存储。
6.3.3 凭证颁发算法1
该算法用于证明方生成申请匿名凭证所需的信息,其输入、输出和算法流程如下:
a) 输入:凭证颁发方生成的挑战随机数nI∈{0,1}2λ以及公共参数gpk。
b) 输出:凭证申请信息comm 和证明所需的证明信息aux。
c) 算法流程:
1) TCM首先随机选择f∈Zp*和rf∈Zp,然后计算并输出F=hf1 和R1=hrf1 ;
2) 主机随机选择r'∈Zp 和r2∈Zp,然后计算R'=hr'2、R2=hr22 、C=FR'、R=R1R2 和ch=
H1(gpk‖C‖R),最后向TCM输入ch 和nI;
3) TCM选择随机数nT∈R{0,1}2λ,计算c=H1(ch||nI||nT)和sf=rf+cf(modp),最后
将commT=(c,sf,nT)返回给证明方主机;
4) 主机计算sr'=r2+cr'(modp),输出aux=F 以及comm=(C,c,sf,sr',nT,nI),并将
comm 发送给凭证颁发方。
6.3.4 凭证颁发算法2
该算法用于凭证颁发方为证明方生成匿名凭证,其输入、输出和算法流程如下:
a) 输入:证明方生成的凭证申请comm=(C,c,sf,sr',nT,nI)、凭证颁发方的秘密信息isk=r和
公共参数gpk。
b) 输出:(部分)匿名凭证(A,x,r″)。
c) 算法流程:凭证颁发方首先验证nI的值是否是由自己生成且没有重放,随后凭证颁发方验证
comm 是否有效,验证方式为:计算R'=hsf1hsr'2 C-c和c'h=H1(gpk,C,R'),验证c=H2(c'h,
nI,nT)。然后随机选择r″,x∈RZp,计算A=(g1Chr″2 )1/(x+r),将(A,x,r″)发送给证明方主机。
6.3.5 凭证颁发算法3
该算法用于证明方存储匿名凭证,其输入、输出和算法流程如下:
a) 输入:凭证颁发方为证明方生成的(部分)匿名凭证cre=(A,x,r″)、验证所需信息aux以及公
共参数gpk。
b) 输出:若匿名凭证有效,则输出“有效”;否则输出“无效”。
c) 算法流程:证明方计算r=r'+r″(modp),验证eA,wgx2( )=e(g1Fhr2,g2)是否成立。如果成
立,将cre=(A,x,r)可信存储。并输出“有效”,否则输出“无效”。
6.3.6 证明算法
该算法用于证明方进行匿名证明,生成匿名证明所需的信息,其输入、输出和算法流程如下:
a) 输入:凭证颁发方为证明方生成的匿名凭证cre=(A,x,r)、验证所需信息aux、待签名的消息
m(内含验证方提供的挑战随机数)、验证方的基本名bsn和公共参数gpk。
b) 输出:证明信息σ=(B,K,T,c,sf,sx,sa,sb,nT)。
c) 算法流程:[下述步骤1)~5)可以在算法调用前预计算]
1) TCM随机选择rf∈RZp,计算并输出R=hrf1 ;
2) 主机选择a∈RZp,计算T=Aha2;
3) 主机计算b=ax+r(modp),选择(rx,ra,rb)∈RZp×Zp×Z,计算R=T-rxhrb2 ,R
Traw ,R2=e(RR,g2)R
4) 如果bsn=⊥,主机随机选择d∈RZp并计算B=h1d,K=Fd,R1=Rd;如果bsn≠⊥,主
机计算B=e(h1,H3(bsn)),K=e(F,H3(bsn)),R1=e(R,H3(bsn));
5) 主机计算ch=H1(gpk,B,K,T,R1,R2),当步骤1)由TCM预计算时;
6) 主机向TCM输入(ch,m,bsn),TCM随机选择nT∈R{0,1}2λ,计算c=H4(ch,m,bsn,nT)
以及sf=rf+cf,并输出(c,sf,nT);
7) 主机计算sx=rx+cx modp( ),sa=ra+ca modp( ),sb=rb+cb modp( ),并输出证明信息
σ=(B,K,T,c,sf,sx,sa,sb,nT)。
6.3.7 验证算法
该算法用于验证方验证证明方的匿名证明信息,其输入、输出和算法流程如下:
a) 输入:公共参数gpk、签名的消息m、验证方的基本名bsn、证明方生成的匿名证明信息σ=
(B,K,T,c,sf,sx,sa,sb,nT)。
b) 输出:若证明方的匿名证明信息验证通过,则输出“有效”;否则输出“无效”。
c) 算法流程:
1) 验证方首先验证sf,sx,sa,sb是Zp上的元素,然后验证对于撤消列表上所有的值fi,K
≠Bfi;
2) 若bsn≠⊥且B≠e(h1,H3(bsn)),输出“无效”;
3) 验证方首先计算R'2=eT,g-sx2 w-c( )Tc1Tsf2Tsb3Tsaw ,R'1=BsfK-c,再计算c'h=H1(gpk,
B,K,T,R'1,R'2)和c'=H4(c'h,m,bsn,nT),如果c≠c'输出“无效”,否则输出“有效”。
7 直接匿名证明接口
7.1 概述
TCM安全芯片应提供TCM_ECDAA_Setup、TCM_ECDAA_Join和TCM_ECDAA_Sign三个匿
名证明命令支持,分别用于ECDAA证明的凭证颁发过程和匿名证明过程。由于TCM_ECDAA_Join
和TCM_ECDAA_Sign这两个命令的运行将消耗TCM内部的多数资源,因而厂商可选择在它们执行
期间禁用其他命令。
对于通用的TCM芯片,不同于普通的TCM 命令,在同一次凭证颁发会话中的TCM_ECDAA_
Join或同一次证明-验证会话中的TCM_ECDAA_Sign将分为多个阶段执行。每个阶段完成一个原子
操作,各原子操作合作才能构成完整的直接匿名证明功能。由于每个原子操作只进行少量的运算和存
储,多阶段方式一方面可以最大限度地降低TCM 的资源需求,另一方面可以缩短匿名证明过程独占
TCM的时间,减小对于用户使用TCM的影响。鉴于原子操作之间中断有可能使得TCM 内部存储的
公共参数发生变化,所以应在各执行阶段中检查公共参数的一致性。
TCM芯片匿名证明实现上可以选择支持多个并行的匿名证明会话或仅支持单个匿名证明会话。
如果仅支持单个匿名证明会话,则新调用的TCM_ECDAA_Setup命令将清除TCM内部原有的匿名证
明数据结构。TCM必须验证公共参数的合法性。公共参数必须由合法的凭证颁发方签名,否则敌手
可能选择特殊的公共参数来与TCM执行ECDAA协议,进而获取TCM的秘密值f的部分信息。
本章......
|