首页> 中国专利> 基于椭圆曲线和双线性对密码体制的直接匿名证明方法

基于椭圆曲线和双线性对密码体制的直接匿名证明方法

摘要

本发明公开一种基于椭圆曲线和双线性对密码体制的直接匿名证明方法,包括如下步骤:1)证书颁发方系统初始化,将公共参数发送给证明方和验证方;2)颁发匿名凭证;3)证明方匿名证明DAACert;4)验证方匿名验证证明方的匿名凭证DAACert。本发明的直接匿名证明方法,证明方向验证方进行证明验证的同时保持高度匿名性,完成证明的信息存储在安全芯片中,不会外泄。即使外泄,本发明的方法也能检测到这种真实但已被攻破的证明方,保证了证明信息的安全性。同时,本发明的运算速度快、通信量小。当采用128比特安全强度时,本发明的运算速度至少为基于有限域运算的方案的14倍,而通信量不超过基于有限域运算的方案的10%。

著录项

  • 公开/公告号CN102096778A

    专利类型发明专利

  • 公开/公告日2011-06-15

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN201010588240.X

  • 申请日2010-12-07

  • 分类号G06F21/00(20060101);

  • 代理机构北京君尚知识产权代理事务所(普通合伙);

  • 代理人冯艺东

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2023-12-18 02:34:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-15

    未缴年费专利权终止 IPC(主分类):G06F21/62 专利号:ZL201010588240X 申请日:20101207 授权公告日:20130123

    专利权的终止

  • 2013-01-23

    授权

    授权

  • 2011-08-10

    实质审查的生效 IPC(主分类):G06F21/00 申请日:20101207

    实质审查的生效

  • 2011-06-15

    公开

    公开

说明书

技术领域

本发明主要涉及一种直接匿名证明方法。更确切的说,是一种基于椭圆曲线和双线性对密码体制的直接匿名证明方法,应用于安全芯片。本发明属于计算机技术领域。

背景技术

随着计算机技术的迅速发展,人们对于计算机软件系统的依赖不断加深。与此同时,针对计算机系统的攻击难度却呈下降趋势,攻击事件日益频繁。解决网络软件系统及其计算环境的可信性问题是当前科研和产业领域共同面对的重大挑战。为此,信息技术产业界提出了“可信计算”的概念,以安全芯片等硬件设备为基础增强计算平台和系统的可信性。除了使本地用户信任计算平台和系统以外,可信计算还试图将信任关系扩展到网络环境,使不能直接接触计算平台和系统的远端实体与本地用户一样能够信任计算平台和系统。这种需求客观上要求安全芯片提供远程证明功能,证明完整性状态的一方被称作证明方,对应的远端实体被称作验证方。

由于公开身份的远程证明将破坏证明者的隐私性,故匿名性是远程证明的基本要求之一。最基本的远程证明协议被称作“隐私CA协议”。在该类协议中,证明方每次证明时都向隐私CA申请一个身份证书,据此向验证方进行证明。由于每次证明都需要隐私CA的参与,该协议的效率很低,而且如果隐私CA被攻破或者隐私CA和验证方合谋,则证明方的匿名性还是会遭到破坏。针对上述问题,研究者提出了“直接匿名证明协议”。在该类协议中,证明方只需向可信第三方申请一次凭证就可以“直接”与验证方进行多次证明,而且可信第三方被攻破或者它与验证者合谋都无法破坏证明方的匿名性。

原始的直接匿名证明协议采用的是RSA密码体制,其不但运算速度较慢,证明所需通信量更达到20000比特左右。目前已出现一些基于椭圆曲线和双线性对密码体制的证明协议,在运算和通信效率方面具备很大的优势。

发明内容

针对上述问题,本发明的目的在于提出一个高效的、基于椭圆曲线和双线性对密码体制的直接匿名证明方法。

在直接匿名证明方法中,参与的实体包括证书颁发方、证明方和验证方,三者构成如图1所示的关系。其中证明方根据计算位置不同而分为主机和安全芯片。证明方需要向验证方证明其所在平台的完整性,同时保持高度的匿名性。此处匿名性含义是:验证方不但不能获知证明方身份信息,甚至不能将证明方的多次证明进行关联。同时,只有真实的证明方才能进行匿名证明,其他任何攻击者都无法伪造证明信息,真实但已被攻破的证明方(秘密信息如私钥等泄露的证明方)应被及时检测出来。

本发明的方法为:一种基于椭圆曲线和双线性对密码体制的直接匿名证明方法,包括如下步骤:

1)证书颁发方系统初始化

A、证书颁发方确定需采用的盲签名方法和公共参数;证书颁发方可以根据实际情况,选择一种适合的盲签名方法。

B、证书颁发方将公共参数发送给证明方和验证方。

2)匿名证书颁发过程如下:

A、证明方向证书颁发方发送匿名凭证请求;

B、证书颁发方发送随机数ni给证明方;

C、证明方主机接收随机数ni,将ni输入证明方的安全芯片;

D、安全芯片随机选择双线性对映射的输入群G1群上的元素g、G2群上的元素h、f和t,h、f和t属于[2,p-1],p为G1和G2的阶,并计算承诺C=g^f*h^t,(“^”符号表征椭圆曲线点群上的倍点计算,下同。)并将C发送到证书颁证方;这些值当中,C、g和h可以对外公开,f、t则由安全芯片自身保留,f是安全芯片的内部秘密信息,而t是在承诺C中的随机值。t使得每次对同一个信息f的承诺C都是随机的。

E、证明方采用知识签名证明其掌握的“秘密信息f和t”满足关系式C=g^f*h^t(同时将随机数ni作为被知识签名所签名的信息),并将知识签名信息发送到证书颁证方;知识签名信息是指秘密信息f和t经知识签名后得到的结果。

F、证书颁发方根据公共参数,验证知识签名信息的正确性,即验证证明方了解某信息(该信息实际就是证明方的f和t,但证书颁发方并只能确认f和t的存在性,不知道它们的具体值)满足承诺关系式C=g^f*h^t;如果验证未通过,则匿名证书颁发失败。

G、证书颁证方采用基于椭圆曲线和双线性对密码体制的签名,依据承诺C,建立针对f的盲签名DAACert,并发送至证明方;

3)证明方匿名证明DAACert;

4)验证方匿名验证证明方的匿名凭证DAACert。

所述确定采用的盲签名方法,需要盲签名的所有者可对“持有盲签名”这一事实进行知识签名,并且在知识签名的同时可对盲签名的形式进行随机化。随机化的含义是:当持有针对消息m的签名sig但没有签名密钥时,可以自行变化sig的形式为sig’,使得sig’也是m的一个合法盲签名。

所述确定公共参数的方法为:

A、证书颁发方确定双线性对映射的输入群G1和G2,输出群GT,其中,G1的生成元为g1,G2的生成元为g2,阶为p;GT的生成元为gt;选择G1群上的随机数r,r取值范围[2,p-1];

B、证书颁发方保留r,其余参数g1、g2、p和gt确定为公共参数;

所述证明方匿名证明DAACert的步骤如下:

A、验证方向证明方发送证明请求和随机数nv;

B、证明方主机随机化DAACert,得到另一个对f的签名DAACert’;DAACert’也是对f的合法盲签名。

C、证明方使用知识签名证明其掌握的“秘密信息f和t”满足所采用的盲签名方法确定的f、t、r和公共参数之间的关系式,也就是DAACert所确定的关系式,同时将随机数信息nv作为被知识签名所签名的信息,并将知识签名信息发送到验证方

所述验证方匿名验证证明方的匿名凭证DAACert的方法为:

验证方根据所采用的盲签名方法和公共参数,验证知识签名信息的正确性,验证知识证明信息的正确性。

所述证明方针对秘密信息f、t和随机数ni的计算在安全芯片上完成,其余计算在证明方主机上完成;

所述直接匿名证明方法,还包括秘密信息f泄露检查步骤:

A、验证方发送随机数nv的同时发送G1群上的随机数J给证明方;

B、证明方计算K=J^f,K与知识签名证明信息一起发送给验证方;

C、验证方根据已经泄漏秘密信息的列表中的每个fi,i=1..n,计算Ki=J^fi,并检查Ki是否等于K,如果Ki=K,则说明证明方安全芯片的秘密信息已经暴露。泄露秘密信息列表是标明了通过各种渠道确认的、已经暴露了的秘密信息表。

所述安全芯片为可信密码模块。

所述可信密码模块具有两个接口ECDAA_Join()和ECDAA_Sign(),所述2)步骤在ECDAA_Join()接口进行;所述3)步骤在ECDAA_Sign()接口进行。

本发明的有益效果;

本发明基于椭圆曲线和双线性对密码体制的直接匿名证明方法,证明方向验证方进行证明验证的同时保持高度匿名性,完成证明的信息存储在安全芯片中,不会外泄。即使外泄,本发明的方法也能检测到这种真实但已被攻破的证明方,保证了证明信息的安全性。

由于采用了基于椭圆曲线和双线性对密码体制的算法,在保持相同安全性的情况下,本发明的运算速度远远快于、通信量远远小于采用传统的基于有限域运算的类似方案。例如当采用128比特安全强度(该安全强度被国产安全芯片——可信密码模块采用)时,本发明的运算速度至少为基于有限域运算的方案14倍,而通信量不超过基于有限域运算的方案的10%。

附图说明

图1为直接匿名证明协议的参与实体关系图。

具体实施方式

一种基于椭圆曲线和双线性对密码体制的直接匿名证明方法,该方法的参与实体包括证书颁发方、证明方和验证方,其方法主要包括如下步骤:

1)证书颁发方系统初始化

A、证书颁发方确定需采用的盲签名方法;证书颁发方可以根据实际情况,选择一种适合的盲签名方法,例如可以选用CL-LRSW方法(J.Camenisch,and A.Lysyanskaya.Signature schemes and anonymous credentials from bilinear maps.In:Franklin,M.(ed.)CRYPTO2004.LNCS,vol.3152,pp.56-72.Springer,Heidelberg(2004))或者BBS+方法(M.H.Au,W.Susilo and Y.Mu.Constant-size dynamic k-TAA.In the Proceedings of 5th International Conference on Security and Cryptography for Networks(SCN 2006).LNCS,vol.4116,pp.111-125.Springer-Verlag,2006.)。所选择的盲签名方法需要盲签名的所有者可对“持有盲签名”这一事实进行知识签名,并且在知识签名的同时能对盲签名的形式进行随机化。

B、证书颁发方确定公共参数:

证书颁发方确定双线性对映射的输入群G1和G2(它们的生成元为g1和g2,阶为p)、输出群GT(及其生成元gt)以及一个G1群上的随机数r,r取值范围[2,p-1],证书颁发方自己保留r,其余参数g1、g2,p和gt全部作为公共参数;

C、证书颁发方将公共参数发送给证明方和验证方。

2)证书颁发方将匿名凭证发送给证明方:

A、证明方向证书颁发方发送匿名凭证请求;

B、证书颁发方发送随机数ni给证明方;

C、证明方主机接收随机数ni,将ni输入证明方的安全芯片;

D、安全芯片随机选择G1群上的元素g、G2群上的元素h以及f、t属于[2,p-1],并计算承诺C=g^f*h^t,并将C发送到证书颁证方;这些值当中,C、g和h可以对外公开,f、t则由安全芯片自身保留,f是安全芯片的核心内部秘密信息,而t是在承诺C中的随机值(使得每次对同一个信息f的承诺C都是随机的);

E、证明方使用知识签名技术证明其掌握的“秘密信息f和t”满足关系式C=g^f*h^t(同时将随机数信息ni作为被知识签名技术所签名的信息),并将知识签名信息发送到证书颁证方;证明过程中需要有关秘密信息f、t和随机数ni的计算由安全芯片完成,其余计算由证明方主机完成;

F、证书颁发方根据公共参数,验证知识签名信息的正确性,即验证证明方了解某信息(该信息实际就是证明方的f和t,但证书颁发方只能确认f和t的存在性,不知道它们的具体值)满足承诺关系式C=g^f*h^t;

G、证书颁证方采用基于椭圆曲线和双线性对密码体制的签名,依据承诺C,建立针对f的盲签名DAACert,并发送至证明方;

3)验证方匿名验证证明方的匿名凭证DAACert。

A、验证方向证明方发送证明请求和随机数nv

B、证明方主机随机化DAACert,得到另一个对f的签名DAACert’;

C、证明方使用知识签名技术证明其掌握的“秘密信息f和t”满足DAACert所确定(实际上是最初选定的盲签名算法所确定的)的f、t、r和公共参数之间关系式(同时将随机数信息nv作为被知识签名技术所签名的信息),并将知识签名信息发送到验证方;证明过程中需要有关秘密信息f、t和随机数nv的计算由安全芯片完成,其余计算由证明方主机完成;

4)验证方匿名验证证明方的匿名凭证DAACert:

验证方根据盲签名算法和公共参数,验证知识签名信息,验证知识签名信息的正确性。

为了检测出真实但已被攻破的证明方,在3)、4)步骤中还可以加入秘密信息f泄露检查步骤:

A、如果验证方要求进行秘密信息泄露检查(检查安全芯片中的秘密信息f是否已经泄漏),则验证方可在发送nv的同时发送G1群上的随机数J。与此对应,证明方需要计算K=J^f,并将K与知识签名信息一起发送给验证方。

B、根据已经泄漏秘密信息的列表(其中标明了通过各种渠道确认的、已经暴露了的秘密信息fi,i=1..n),针对每个fi,计算Ki=J^fi,并检查Ki是否等于K。如果Ki=K,则说明证明方安全芯片的秘密信息已经暴露。

证明方对信息f进行知识签名后,根据C和已经泄漏秘密信息f的安全芯片的情报,检查证明方证明的f是否是已经被攻击的安全芯片。

直接匿名证明是安全芯片的主要功能之一,作为目前最典型的安全芯片,可信密码模块(Trusted Cryptography Module,下文中简称TCM)的相关规范却未对此进行规定。因而下文以本文方法在TCM上的应用为例,从三方面说明具体实施方式:与安全芯片其他功能的协调、椭圆曲线的选择和计算的优化。

一.安全芯片匿名证明功能接口定义

TCM的功能以“命令”形式提供给应用层用户。对于直接匿名证明功能,也可以为TCM定义相关接口。在前述的直接匿名证明方法中,安全芯片与主机存在多次交互,不可能为每次交互定义单独的接口(否则接口过多),因而可以定义两个接口:ECDAA_Join()和ECDAA_Sign()。前者完成前述方案中的匿名凭证申请过程中TCM的计算,后者完成证明与验证过程中TCM的计算。在此种定义方式下,必然出现的情况是:多次交互对应于对同一接口的调用。为了区分不同交互,引入一个变量stage专门用于标识不同阶段的交互。接口划分的每次交互(即每个stage值对应的阶段)都只完成有限工作,以便减少TCM内部的计算和存储资源,降低造价。

二.椭圆曲线的选择

在实现具体接口时,首先要考虑密码学方案中椭圆曲线的选择问题。曲线的密码学性质直接决定了方案的安全性和运算性能。首先应确定方案所需的安全强度,在此基础上尽可能选择可高效计算的曲线。由于TCM采用了SM2椭圆曲线公钥密码体制,运算域(一个椭圆曲线点群)规模为256比特(群中元素需要约256比特表示),而一般认为规模为3000-5000比特的有限域才能在安全强度上与之匹配。所以双线性对运算的输入群(椭圆曲线点群)规模应为256比特,输出域规模可取3072比特,如此可以使整个密码学方案的安全强度与原有TCM实现相匹配。在符合此要求的各类曲线中,推荐使用Barreto-Naehrig曲线,原因包括:

1.基于Barreto-Naehrig曲线构建的双线性对计算的输入群的基群规模与输入群相同,运算速度最快。

2.Barreto-Naehrig曲线允许最大程度的双线性对计算优化,例如其存在较高次数的扭曲度且输出群呈塔型结构。

以上通过简单的说明描述了本发明提供的方案,本领域的技术人员应该理解,在不超出本发明实质和范围的情况下,可以进行修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号