一种匿名数字证书的生成方法

发表时间:2021/7/1   来源:《科学与技术》2021年3月7期   作者: 刘 新1 阮 诚2
[导读] 为了改善传统数字证书中无法保护用户身份隐私的缺点。本文提出了一种基于隐藏数字证书中的通用名来实现隐藏用户身份的证书生成方法
        刘  新1   阮  诚2
        1身份证号码:1202231989****2866  2身份证号码:4207041989****1111
        摘要:为了改善传统数字证书中无法保护用户身份隐私的缺点。本文提出了一种基于隐藏数字证书中的通用名来实现隐藏用户身份的证书生成方法。在证书认证中心签发用户数字证书的过程中,利用零知识证明技术,在不透露用户身份信息的前提下,完成了证书请求文件合法性的验证及最终数字证书的生成流程。该方法满足了合法性、匿名性的要求。基于零知识证明的匿名数字证书实现了数字证书在签发、使用等所有环节的匿名性。
        关键词:数字证书;匿名性;零知识证明
1  相关技术
1.1   零知识证明
        零知识证明[1-3]是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代提出的,它是一种涉及多方的协议,根据该协议,一方(证明方)可以向另一方(验证方)证明他们知道一个值x,但是无需告知任何信息。零知识证明协议包括证明验证方以及证明提供方两个主体,协议分为交互式和非交互式两种。零知识证明的算法主要包括SNARKs[4],STARKs[5]以及BulletProofs[6]等三类,SNARKs算法的证明时间和验证时间与STARKs算法处于一个量级,在证明文件的大小方面,SNARAKs明显小于STARKs;SNARKs在证明时间、验证时间以及证明文件的大小等方面皆优于Bulletproofs。SNARKs算法具有证明文件小的特点,相较于STARKs以及Bulletproofs更适用于在区块链网络中进行传输。
1.2   数字证书
        数字证书[7,8],即公开密钥证书,是用于证明公钥所有权的电子文档。数字证书中包含其所有者的公钥、身份信息以及证书发行方的数字签名,可以通过验证数字证书的有效性来识别证书拥有者的身份等信息。在基于公共密钥基础结构(PKI)的体系中,数字证书是由证书认证中心CA进行认证和签发的。在联盟链中,使用数字证书即可实现区块链网络的准入机制。例如,在区块链的交易字段中加入数字证书,交易校验时,首先进行数字证书的校验,只有数字证书的认证通过后,才可进行后续的交易校验,而数字证书的颁发是通过认证机构进行认证和签发的,只有经过CA授权的账户才能拥有CA签发的数字证书,这样就通过数字证书的签发和认证实现了区块链网络的准入机制。
2  匿名数字证书的生成方案
2.1   零知识证明协议设计
        解决数字证书匿名性的关键问题在于构建解决匿名数字证书问题的零知识证明协议,由零知识证明算法可知,设计一个零知识证明协议,首先需要确定一个可转化为QAP问题的计算问题。本方案中设计的计算问题Q如公式(2-1)所示,hash(hash(pk), hash(sk))=leaf,为一个hash值的计算问题,root=gen_mtree_root(leaf, path),为一个默克尔树根的计算问题。
                       (2-1)
        本文提出的零知识证明协议MP可分为初始化阶段、Setup阶段、Prove阶段及Verify阶段。首先证书认证中心进行初始化操作,初始化一个信任列表,信任列表中的成员为授权的用户,接着授权的用户上传哈希后的公私钥值,即对应于协议中的hi,然后证书认证中心通过hi组成的哈希值列表H构建默克尔树M;完成初始化操作后,进入协议的Setup阶段,利用计算问题Q转化后的QAP问题,生成证明密钥和验证密钥;Prove阶段中,授权的用户(证书申请者)利用自己的公私钥生成证明π;Verify阶段中,证书申请者提交证明π以及CSR文件,其中CSR文件的通用名为证明π的哈希值,在验证过程中,statements为{hash(pi),MRoot},其中pi取值为CSR文件的公钥值,验证通过后,CA对CSR文件进行签名,生成匿名的数字证书,然后将其返还给证书申请者,同时将匿名数字证书的公钥存入一个公钥列表中,防止用户重复申请匿名数字证书。最终生成的数字证书中的通用名也是一串哈希值,实现了数字证书在生成和使用中的匿名性。
2.2  方案整体流程
        本文所述的匿名数字证书生成方案分为以下三个阶段:
        (1)授权列表初始化阶段。
        该阶段用于初始化授权用户列表。认证服务器Serververify初始化授权申请者列表UList= {U1,...Ui...,Un}和公钥列表PkList={}。公钥列表PkList用于记录已颁发的数字证书公钥,PkListd初始为空,其中Ui代表授权用户i的ID,不同的授权用户的ID不一样。
        (2)零知识证明协议的初始化阶段。
        该阶段包括有关匿名数字证书的计算问题以及QAP问题的构建、证明密钥、验证密钥的生成等,其中匿名数字证书的计算问题即是公式(2-1)所描述的问题Q。具体步骤如下:
        第一步:用户通过椭圆曲线加密算法生成一个公钥对(pki,ski),并将哈希后的公私钥值hi=hash(hash(pi), hash(si))发送给认证服务器,其中H为sha-256函数。
        第二步:验证机构验证用户的权限,判断提交hi的用户是否在授权申请者列表UList中,如果在,则接受hi,反之则拒绝hi,并返回错误信息。


        第三步:验证机构收集哈希后的公私钥值hi ,组建哈希值列表HList={h1,...hi...,hn}。
第四步:验证机构使用HList构建默克尔树MTree,其中MTree的树根为MRoot。
        第五步:验证机构组建零知识证明协议MP中的R, R可通过计算问题Q进行转化,,该步骤可通过libsnark库进行。
第六步:执行MP协议的Setup阶段,生成证明密钥PK以及验证密钥VK。
        (3)数字证书的请求和生成阶段。
        该阶段包括两个步骤,分别为证书签名请求文件的生成以及数字证书的生成。
证书签名请求文件的生成具体步骤分为两步,分别为:
        第一步:Ui从验证模块获取证明密钥PK,公开输入statements={hash(pki), path},隐私输入为witness={H(ski)},执行协议MP的Prove阶段,输入PK、statements及witness,输出为证明proof;
        第二步:用户Ui用自己的私钥ski生成证书签名请求文件CSR,其中CSR文件中的通用名为证明proof的哈希值。
        数字证书生成的具体步骤分为三步,分别为:
        第一步:用户Ui将CSR文件以及证明proof发送给验证机构,验证机构执行MP协议的Verify阶段,其中vk=VK,π= proof,statements为{hash(pi),MRoot},其中pi取值为CSR文件的公钥值;
        第二步:如果Verify阶段验证通过,且CSR文件的公钥不在公钥列表PkList中,验证机构将CSR文件转发到证书签发机构,证书签发机构对CSR文件进行签名生成用户证书Certi,随后验证机构将CSR文件的公钥存入公钥列表PkList中,防止用户重复申请数字证书;
        第三步:认证通过后,用户Ui从验证机构获取数字证书Certi。至此,完成了匿名数字证书生成的全部过程。
3  安全性分析
        本方案中,证书申请者只有通过MP协议的Verify阶段才能获得匿名数字证书,而要通过该阶段,证书申请者需要提供证明文件,此文件只有使用证书申请者的私钥,经过MP的Prove阶段才能生成,鉴于私钥的不可伪造性,从而保证用户身份的合法性。同时,由于公钥列表PkList的存在,保证了授权列表中的用户仅能申请一个匿名的数字证书,重复申请时,会在证书申请的验证阶段被认证服务器拒绝。综上所述,本方案生成的数字证书是合法的。
        在证书申请者申请匿名数字证书过程中,证书申请者始终没有泄露自己的公钥及私钥信息,仅在MP协议的初始化阶段,上传了哈希后的公私钥值,而根据这个哈希后的公私钥值根本无法反推出证书申请者原先的公钥和私钥。同时,匿名数字证书生成后,数字证书中的通用名是一串哈希值,验证机构无法通过该证书上的信息获取到用户的身份信息,只能得知该证书是由证书签发机构签发的合法证书,这样的设计保证了用户在使用该证书时的匿名性。综上所述,本方案具有良好的匿名性。
4  结语
        本文所述的方案通过隐藏数字证书中的通用名来实现隐藏用户个人身份信息,并结合零知识证明技术,在数字证书的申请环节中,证明证书签名请求文件合法性的同时,也隐藏了用户身份,从而最终实现匿名数字证书的生成方案。解决了传统数字证书的通用名中会标有证书持有者的真实名称,用户使用该证书时容易造成个人身份信息的暴露的问题,满足了用户隐私保护的需求。
参考文献
[1]Goldwasser S, Micali S, Rackoff C. The knowledge complexity of interactive proof systems[J]. SIAM Journal on computing, 1989, 18(1): 186-208.
[2]Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1991: 433-444.
[3]贺东博. 基于同态加密和零知识证明的区块链隐私保护研究[D].华中科技大学,2019.
[4]Bitansky N, Canetti R, Chiesa A, et al. Recursive composition and bootstrapping for SNARKs and proof-carrying data[C]//Proceedings of the forty-fifth annual ACM symposium on Theory of computing. 2013: 111-120.
[5]Ben-Sasson E, Bentov I, Horesh Y, et al. Scalable, transparent, and post-quantum secure computational integrity[J]. IACR Cryptology ePrint Archive, 2018, 2018: 46.
[6]Bünz B, Bootle J, Boneh D, et al. Bulletproofs: Short proofs for confidential transactions and more[C]//2018 IEEE Symposium on Security and Privacy (SP). IEEE, 2018: 315-334.
[7]刘知贵,杨立春,蒲洁,张霜.基于PKI技术的数字签名身份认证系统[J].计算机应用研究,2004(09):158-160.
[8]史创明,王立新.数字签名及PKI技术原理与应用[J].微计算机信息,2005(08):122-124.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: