基于数字货币的发送方离线抗量子计算交易方法及系统与流程

    专利查询2024-12-18  53



    1.本发明涉及数字货币领域,尤其涉及基于数字货币的发送方离线抗量子计算交易方法及系统。


    背景技术:

    2.中国人民银行的数字货币d-rmb体系的核心要素为一种币、两类库和三个中心。一种币,即“d-rmb”(dc/ep),简称d币,特指一串由央行签名的代表具体金额的加密数字串。两类库:分别是d-rmb的发行库和银行库(中央银行数字货币数据库、商业银行数字货币数据库)。数字货币在发行库中即表现为央行的数字货币基金;数字货币在银行库中即表现为商业银行的库存数字现金。三个中心:一是登记中心(记录货币产生、流通、清点核对及消亡全过程);另外两个是认证中心,即ca认证中心(基于pki体系,对机构和用户证书进行集中管理,如cfca)和ibc认证中心[即基于标识的密码技术建立的认证中心(identity-based cryptograph)]。在登记中心可设计两张表,一为数字货币权属登记表,记录数字货币的归属,另一张为交易流水表。
    [0003]
    d-rmb系统是一种分级式的体系,即由中央银行与各商业银行共建,中央银行数字货币系统是由中央银行或中央银行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其主要功能包括负责数字货币的发行与验证监测,商业银行数字货币系统是由商业银行或商业银行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其执行现有银行的有关货币的各种功能,即银行功能,主要包括从中央银行申请到数字货币后,负责直接面向社会,满足提供数字货币流通服务的各项需求。
    [0004]
    为了使数字签名系统能够抗量子计算,行业内提出了抗量子计算数字签名系统,如专利cn109861813a提出一种基于非对称密钥池的抗量子计算https通信方法和系统,并具体公开了一种通信方法,该方法的参与方包括服务器、证书授权中心及客户端,客户端配置密钥卡,密钥卡内存储有非对称密钥池;所述抗量子计算https通信方法,包括以下步骤:服务器端获取证书授权中心颁发的数字证书,并向客户端发送该数字证书,所述数字证书中记载有服务器的公钥指针随机数;客户端获取证书授权中心颁发的与所述数字证书相匹配的根数字证书,依据所述根数字证书对服务器发送的数字证书进行验证,根据验证通过的数字证书中记载的服务器的公钥指针随机数,在所述非对称密钥池中获取服务器公钥;利用服务器公钥对随机生成的共享密钥进行加密,向服务器发送加密结果以进行密钥协商;与服务器利用所述共享密钥进行https通信。
    [0005]
    专利cn109861813a提出的方案虽然能够实现基于量子保密通信的抗量子计算,但是存在以下缺陷:
    [0006]
    1、专利cn109861813a所提出的技术方案中,客户端需要配置存储了所有成员的公钥的量子密钥卡,增加了客户端密钥卡的存储成本和操作工作量,且用户端密钥管理工作较为复杂;
    [0007]
    2、专利cn109861813a所提出的技术方案中,改变了传统ca及基于数字证书的数字
    签名系统的整体流程和数据结构,例如导致数字证书的格式和使用方式的改变,导致ca及用户应用系统切换到抗量子计算方案的成本过高。


    技术实现要素:

    [0008]
    针对相关技术中的问题,本发明提出基于数字货币的发送方离线抗量子计算交易方法及系统,以克服现有相关技术所存在的上述技术问题。
    [0009]
    为此,本发明采用的具体技术方案如下:
    [0010]
    根据本发明的一个方面,提供了基于数字货币的发送方离线抗量子计算交易方法,该方法包括以下步骤:
    [0011]
    s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;
    [0012]
    s2、利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证;
    [0013]
    s3、依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证;
    [0014]
    s4、通过离线数字货币交易方法实现不同用户之间发送方离线的数字货币交易;
    [0015]
    其中,所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥和该系统公钥保存在所述中央银行数字货币系统的抗量子计算装置里;
    [0016]
    所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到对应的私钥,并将所述中央银行数字货币系统的id和该公私钥存入所述中央银行数字货币系统的抗量子计算装置;
    [0017]
    所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应所述商业银行数字货币系统的抗量子计算装置里;
    [0018]
    所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到私钥,并将所述商业银行数字货币系统的id和该公私钥存入所述商业银行数字货币系统的抗量子计算装置;
    [0019]
    所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发系统公私钥时,取随机数作为对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述商业银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;
    [0020]
    所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述商业银行数字货币系统对应的密钥管理服务器的私钥,并将所述用户的id和该公私钥存入所述用户的抗量子计算装置。
    [0021]
    进一步的,所述s2利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证包括以下步骤:
    [0022]
    s21、将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统;
    [0023]
    s22、所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥;
    [0024]
    s23、所述商业银行数字货币系统接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。
    [0025]
    进一步的,所述s3依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证包括以下步骤:
    [0026]
    s31、将待认证的所述用户的身份信息发送给所述商业银行数字货币系统;
    [0027]
    s32、所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥;
    [0028]
    s33、所述用户接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。
    [0029]
    进一步的,所述s4通过离线数字货币交易方法实现不同用户之间发送方离线的数字货币交易包括以下步骤:
    [0030]
    s41、发送方用户端签名得到签名交易,并将该签名交易发送给接收方用户端;
    [0031]
    s42、所述接收方用户端接收所述签名交易,并转发给所述接收方用户端对应的接收方商业银行数字货币系统,所述接收方商业银行数字货币系统通过所述中央银行数字币系统转发给所述发送方用户端对应的发送方商业银行数字货币系统;
    [0032]
    s43、所述发送方商业银行数字货币系统接收验证交易,并转发给所述中央银行数字货币系统;
    [0033]
    s44、所述中央银行数字货币系统接收交易并进行验证,同时记录交易成功后数字货币的归属变化,并转发给所述接收方商业银行数字货币系统,所述接收方商业银行数字货币系统接收交易进行验证后转发给所述接收方用户端,所述接收方用户端接收交易进行验证后转发给所述发送方用户端;
    [0034]
    s45、所述发送方用户端接收交易并进行验证,验证后确认交易结果。
    [0035]
    进一步的,所述发送方用户端为离线成员,且所述发送方用户端与所述接收方用户端之间通过近距离通信的方式互换双方信息,所述信息包含但不限于用户端id、钱包id、联系方式及硬件设备码的数据内容。
    [0036]
    根据本发明的另一个方面,提供了基于数字货币的发送方离线抗量子计算交易系统,该系统包括中央银行数字货币系统、商业银行数字货币系统和用户,所述中央银行数字货币系统与所述商业银行数字货币系统之间的身份认证、所述商业银行数字货币系统与所述用户之间的身份认证均基于id密码学的理论进行认证;
    [0037]
    其中,所述中央银行数字货币系统用于生产和发行数字货币,还用于对所述数字货币进行权属登记;
    [0038]
    所述商业银行数字货币系统用于针对数字货币执行银行功能;
    [0039]
    所述用户为所述数字货币的使用主体。
    [0040]
    进一步的,所述中央银行数字货币系统和所述商业银行数字货币系统中均配置有
    相应的抗量子计算装置,所述抗量子计算装置中均部署有对应的基于id密码学的密钥管理服务器,所述用户也配置有相应的抗量子计算装置,且所述商业银行数字货币系统的抗量子计算装置由所述中央银行数字货币系统的密钥管理服务器颁发,所述用户的抗量子计算装置由所述商业银行数字货币系统的密钥管理服务器颁发。
    [0041]
    进一步的,所述抗量子计算装置包含但不限于密钥卡、移动终端、密码机及网关,且所述抗量子计算装置可与银行货币系统或各个用户端分别进行通信,该通信包含但不限于主板接口通信、近距离无线通信及可控的内网通信多种通信方式。
    [0042]
    本发明的有益效果为:
    [0043]
    1)、本发明可以实现抗量子计算的基于id密码学的发送方离线的数字货币通信系统;
    [0044]
    2)、本发明不需要将所有成员的公钥生成非对称密钥池后存储到各密钥卡中,客户端密钥卡只需要存储与自己有关的密钥,因此密钥卡的存储成本和操作工作量小;
    [0045]
    3)、本发明没有改变传统数字货币系统身份认证及交易通信的整体流程和数据结构,只是在现有技术的基础上增加了基于id密码学对称密钥的保护,因此数字货币通信系统切换到抗量子计算方案的成本不高;本发明不采用无法抗量子计算的ca通信系统,代之以基于id密码学的密钥颁发服务,既减轻了系统搭建、升级的复杂度,又增强了央行对商业银行的控制能力;
    [0046]
    4)、本发明基于id密码学的密钥颁发服务器对每个不同用户的系统公私钥均不同,即使某个用户的系统公钥丢失导致其对应的系统私钥被量子计算机破解,也不会危及到其他用户的系统公私钥。
    附图说明
    [0047]
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    [0048]
    图1是根据本发明实施例的基于数字货币的发送方离线抗量子计算交易方法的流程图;
    [0049]
    图2是根据本发明实施例的基于数字货币的发送方离线抗量子计算交易方法中涉及的交易方法的流程图;
    [0050]
    图3是根据本发明实施例的基于数字货币的发送方离线抗量子计算交易系统的基本结构图。
    具体实施方式
    [0051]
    为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
    [0052]
    根据本发明的实施例,提供了基于数字货币的发送方离线抗量子计算交易方法及
    系统。
    [0053]
    现结合附图和具体实施方式对本发明进一步说明,如图1-2所示,根据本发明的一个实施例,提供了基于数字货币的发送方离线抗量子计算交易方法,该方法包括以下步骤:
    [0054]
    s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;
    [0055]
    其中,所述中央银行数字货币系统对应的密钥管理服务器kms为所述中央银行数字货币系统s颁发系统公私钥时,取随机数作为系统私钥sk
    ms
    ,再根据该系统私钥sk
    ms
    计算得到系统公钥pk
    ms
    =sk
    ms
    *p,并将该系统私钥sk
    ms
    和该系统公钥pk
    ms
    保存在所述中央银行数字货币系统的抗量子计算装置ts里;
    [0056]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述中央银行数字货币系统s颁发公私钥时,调用哈希函数h1计算得到公钥pks=h1(ids),再根据该公钥pks计算得到对应的私钥sks=sk
    ms
    *pks,并将所述中央银行数字货币系统的id和该公私钥即ids、pks、sks存入所述中央银行数字货币系统s的抗量子计算装置ts;
    [0057]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述商业银行数字货币系统a颁发系统公私钥时,计算消息认证码(mac(m,k)得到对应的系统私钥sk
    msa
    =mac(ida,sk
    ms
    ),再根据该系统私钥sk
    msa
    计算得到系统公钥pk
    msa
    =sk
    msa
    *p,并将该系统私钥sk
    msa
    保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥pk
    msa
    保存在对应所述商业银行数字货币系统的抗量子计算装置里ta;
    [0058]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述商业银行数字货币系统a颁发公私钥时,调用哈希函数h1计算得到公钥pka=h1(ida),再根据该公钥pka计算得到私钥ska=sk
    msa
    *pka,并将所述商业银行数字货币系统的id和该公私钥即ida、pka、ska存入所述商业银行数字货币系统a的抗量子计算装置ta;
    [0059]
    所述商业银行数字货币系统对应的密钥管理服务器kmsa为所述用户a1颁发系统公私钥时,取随机数作为对应的系统私钥sk
    msa1
    =mac(id
    a1
    ,sk
    msa0
    ),再根据该系统私钥sk
    msa1
    计算得到系统公钥pk
    msa1
    =sk
    msa1
    *p,并将该系统私钥sk
    msa1
    保存在所述商业银行数字货币系统a的抗量子计算装置里,将该系统公钥pk
    msa1
    保存在对应用户端的抗量子计算装置里;
    [0060]
    所述商业银行数字货币系统对应的密钥管理服务器kmsa为所述用户a1颁发公私钥时,调用哈希函数h1计算得到公钥pk
    a1
    =h1(id
    a1
    ),再根据该公钥pk
    a1
    计算得到基于所述商业银行数字货币系统对应的密钥管理服务器kmsa的私钥sk
    a1
    =sk
    msa1
    *pk
    a1
    ,并将所述用户的id和该公私钥即id
    a1
    、pk
    a1
    、sk
    a1
    存入所述用户a1的抗量子计算装置t
    a1

    [0061]
    s2、商业银行数字货币系统与中央银行数字货币系统s进行身份认证(利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证);
    [0062]
    以下以商业银行数字货币系统a与中央银行数字货币系统s进行身份认证为例,其他商业银行数字货币系统与中央银行数字货币系统s进行身份认证的流程与此类似。
    [0063]
    其中,所述s2包括以下步骤:
    [0064]
    s21、a发送己方身份信息给s(将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统);
    [0065]
    a根据ids计算得到pks=h1(ids),取出己方基于kms的私钥ska计算a与s之间的对称密钥k
    a-s
    =e(ska,pks)。获取时间戳t1,使用k
    a-s
    对t1计算消息认证码得到k1=mac(t1,k
    a-s
    )。
    将组合ida||ids||t1||ainfo作为msga,其中ainfo为用于认证的a的身份信息。
    [0066]
    用ska对msga作基于id密码学的数字签名,过程如下:取随机数参数r,计算umsga=r*pks,h=h3(msga,umsga),vmsga=(r+h)*ska。其中,h3(*)是一种哈希运算。得到签名siga=sign(msga,ska)=(umsga,vmsga)。
    [0067]
    使用k1对ainfo和siga加密得到{ainfo||siga}k1,连同ida、ids以及t1一起发送至s,发送的消息可表示为ida||ids||t1|{ainfo||siga}k1。
    [0068]
    s22、s发送认证结果(认证成功则包含会话密钥)给a(所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥);
    [0069]
    s收到来自a的消息后,s中的kms计算其对a的系统私钥为sk
    msa
    =mac(ida,sk
    ms
    ),根据pks=h1(ids)得到s对a的私钥sk
    sa
    =sk
    msa
    *pks。进一步得到s与a之间的对称密钥k
    s-a
    =e(sk
    sa
    ,pka)。根据id密码学可得:k
    a-s
    =e(ska,pks)=e(sk
    msa
    *pka,pks)=e(pka,sk
    msa
    *pks)=e(pka,sk
    sa
    )=e(sk
    sa
    ,pka)=k
    s-a
    。使用k
    s-a
    对t1计算消息认证码得到k
    ′1=mac(t1,k
    s-a
    )。使用k
    ′1解密{ainfo||siga}k1,得到a的身份信息ainfo和siga。
    [0070]
    s根据ida计算得到pka=h1(ida),根据sk
    msa
    计算kms对a的系统公钥为pk
    msa
    =sk
    msa
    *p,用pka和pk
    msa
    来验证签名siga。要验证该签名,只需要验证(p,pk
    msa
    ,umsga+h*pka,vmsga)是一个有效的diffie-hellman元组。如果验证成功,s生成会话密钥ks
    s-a
    并将其与认证成功的消息组合起来称为rets;如果验证失败则将认证失败消息称为rets。获取时间戳t2,将组合ids||ida||t2||rets作为msgs。
    [0071]
    用sk
    sa
    对msgs作基于id密码学的数字签名,过程与上文相同,得到签名sigs=sign(msgs,sk
    sa
    )=(umsgs,vmsgs)。
    [0072]
    使用k
    s-a
    对t2计算消息认证码得到k2=mac(t2,k
    s-a
    ),使用k2对rets和sigs加密得到{rets||sigs}k2,连同ids、ida以及t2一起发送至a,发送的消息可表示为ids||ida||t2|{rets||sigs}k2。
    [0073]
    s23、a收到认证结果(认证成功则包含会话密钥)(所述商业银行数字货币系统接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥);
    [0074]
    a收到来自s的消息后,使用k
    a-s
    对t2计算消息认证码得到k
    ′2=mac(t2,k
    a-s
    ),使用k
    ′2解密{rets||sigs}k2,得到rets和sigs。
    [0075]
    a使用与上文相同的方式验证签名sigs。若a验证签名成功,并且rets中携带的也是s验证签名成功的消息,则可以取出rets中的会话密钥ks
    s-a
    ,由此a和s可以使用该会话密钥进行保密通信;其他情况则不能得到会话密钥。
    [0076]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。另外,基于id密码学的kms对a、b、c等不同用户的系统公私钥均不同,即使a的系统公钥pk
    msa
    丢失导致其对应的系统私钥sk
    msa
    被量子计算机破解,也不会危及到b、c等其他用户的系统公私钥。
    [0077]
    s3、用户与商业银行数字货币系统进行身份认证(依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证);
    [0078]
    以下以用户a1与商业银行数字货币系统a进行身份认证为例。其他用户与对应的商业银行数字货币系统进行身份认证的流程与此类似。
    [0079]
    其中,所述s3包括以下步骤:
    [0080]
    s31、a1发送己方身份信息给a(将待认证的所述用户的身份信息发送给所述商业银行数字货币系统);
    [0081]
    a1根据ida计算得到pka=h1(ida),取出己方基于kmsa的私钥sk
    a1
    计算a1与a之间的对称密钥k
    a1-a
    =e(sk
    a1
    ,pka)。获取时间戳t3,使用k
    a1-a
    对t3计算消息认证码得到k3=mac(t3,k
    a1-a
    )。将组合id
    a1
    ||ida||t3||a1info作为msg
    a1
    ,其中a1info为用于认证的a1的身份信息。
    [0082]
    用sk
    a1
    对msg
    a1
    作基于id密码学的数字签名,过程与上文相同,得到签名sig
    a1
    =sign(msg
    a1
    ,sk
    a1
    )=(umsg
    a1
    ,vmsg
    a1
    )。
    [0083]
    使用k3对a1info和sig
    a1
    加密得到{a1info||sig
    a1
    }k3,连同id
    a1
    、ida以及t3一起发送至a,发送的消息可表示为id
    a1
    ||ida||t3|{a1info||sig
    a1
    }k3。
    [0084]
    s32、a发送认证结果(认证成功则包含会话密钥)给a1(所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥);
    [0085]
    a收到来自a1的消息后,a中的kmsa计算其对a1的私钥为sk
    msa1
    =mac(id
    a1
    ,sk
    msa0
    ),根据pka=h1(ida)得到a对a1的私钥sk
    aa1
    =sk
    msa1
    *pka。进一步得到a与a1之间的对称密钥k
    a-a1
    =e(sk
    aa1
    ,pk
    a1
    )。根据id密码学可得:k
    a1-a
    =e(sk
    a1
    ,pka)=e(sk
    msa1
    *pk
    a1
    ,pka)=e(pk
    a1
    ,sk
    msa1
    *pka)=e(pk
    a1
    ,skaa1)=e(sk
    aa1
    ,pk
    a1
    )=k
    a-a1
    。使用k
    a-a1
    对t3计算消息认证码得到k
    ′3=mac(t3,k
    a-a1
    )。使用k
    ′3解密{a1info||sig
    a1
    }k3,得到a1的身份信息a1info和sig
    a1

    [0086]
    a使用与上文相同的方式验证签名sig
    a1
    。如果验证成功,a生成会话密钥ks
    a-a1
    并将其与认证成功的消息组合起来称为reta;如果验证失败则将认证失败消息称为reta。获取时间戳t4,将组合ida||id
    a1
    ||t4||reta作为msg
    ′a。
    [0087]
    用sk
    aa1
    对msg
    ′a作基于id密码学的数字签名,过程与上文相同,得到签名sig
    ′a=sign(msg
    ′a,sk
    aa1
    )=(umsg
    ′a,vmsg
    ′a)。
    [0088]
    使用k
    a-a1
    对t4计算消息认证码得到k4=mac(t4,k
    a-a1
    ),使用k4对reta和sig
    ′a加密得到{reta||sig
    ′a}k4,连同ida、id
    a1
    以及t4一起发送至a1,发送的消息可表示为ida||id
    a1
    ||t4||{reta||sig
    ′a}k4。
    [0089]
    s33、a1收到认证结果(认证成功则包含会话密钥)(所述用户接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥);
    [0090]
    a1收到来自a的消息后,使用k
    a1-a
    对t4计算消息认证码得到k
    ′4=mac(t4,k
    a1-a
    ),使用k
    ′4解密{reta||sig
    ′a}k4,得到reta和sig
    ′a。
    [0091]
    a1使用与上文相同的方式来验证签名sig
    ′a。若a1验证签名成功,并且reta中携带的也是a验证签名成功的消息,则可以取出reta中的会话密钥ks
    a-a1
    ,由此a1和a可以使用该会话密钥进行保密通信;其他情况则不能得到会话密钥。
    [0092]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。另外,基于id密码学的kmsa对a1、a2、a3等不同用户的系统公私钥均不同,即使a1的系统公钥pk
    msa1
    丢失导致其对应的系统私钥sk
    msa1
    被量子计算机破解,也不会危及到a2、a3等其他用户
    的系统公私钥。
    [0093]
    用户b1、b2、b3等与商业银行数字货币系统b进行身份认证的过程与上文相同,如用户b1与商业银行数字货币系统b完成身份认证后,有会话密钥ks
    b-b1

    [0094]
    s4、不同用户之间进行发送方离线的数字货币交易(通过离线数字货币交易方法实现不同用户之间发送方离线的数字货币交易);
    [0095]
    以下以用户a1与用户b1进行数字货币交易为例。其他不同用户之间进行数字货币交易的的流程与此类似。
    [0096]
    用户a1在交易中为离线成员,与b1进行近距离通信,从而进行数字货币交易。
    [0097]
    用户a1与b1通过近距离通信互换双方信息,发送方信息包括发送方id、钱包id、联系方式、硬件设备码等;接收方信息与此类似。
    [0098]
    流程图如图2所示,具体步骤文字描述如下:
    [0099]
    s41、a1签名得到签名交易(发送方用户端签名得到签名交易,并将该签名交易发送给接收方用户端);
    [0100]
    用户端a1计算与a之间的对称密钥k
    a1-a
    =e(sk
    a1
    ,pka)。使用k
    a-ca
    对签名时间t加密计算得到最终密钥k
    t
    =mac(t,k
    a1-a
    )。待签名消息即交易为tx,包括发送方信息、接收方信息、数字货币等交易信息。将id
    a1
    、t和tx一起作为msg

    a1
    ,可表示为msg

    a1
    =id
    a1
    ||t||tx。
    [0101]
    使用a1的私钥sk
    a1
    对msg

    a1
    计算基于id密码学的签名得到sig

    a1
    =sign(msg

    a1
    ,sk
    a1
    )=(umsg

    a1
    ,vmsg

    a1
    )。
    [0102]
    使用k
    t
    对tx||sig

    a1
    进行加密得到{tx||sig

    a1
    }k
    t
    。连同id
    a1
    和t一起作为txs,可表示为txs=id
    a1
    ||t||{tx||sig

    a1
    }k
    t
    。a1通过近距离通信将txs发送给b1。
    [0103]
    s42、b1收到签名交易并转发至a;
    [0104]
    b1收到后,在与b之间的会话密钥ks
    b-b1
    的保护下将txs发送至b。
    [0105]
    b在与s之间的会话密钥ks
    s-b
    的保护下将txs发送至s。
    [0106]
    s在与a之间的会话密钥ks
    s-a
    的保护下将txs发送至a。
    [0107]
    s43、a验证交易并转发央行(所述发送方商业银行数字货币系统接收验证交易,并转发给所述中央银行数字货币系统);
    [0108]
    a收到txs后,a中的kmsa计算对a1的系统私钥sk
    msa1
    =mac(id
    a1
    ,sk
    msa
    ),进一步计算得到对a1的私钥sk
    aa1
    =sk
    msa1
    *pka。计算与a1之间的对称密钥k
    a-a1
    =e(sk
    aa1
    ,pk
    a1
    )。根据id密码学可得:k
    a-a1
    =e(sk
    aa1
    ,pk
    a1
    )=e(sk
    msa1
    *pka,pk
    a1
    )=e(pka,sk
    msa1
    *pk
    a1
    )=e(pka,sk
    a1
    )=e(sk
    a1
    ,pka)=k
    a1-a
    。使用k
    a-a1
    对t计算消息认证码得到k

    t
    =mac(t,k
    a-a1
    )。使用k

    t
    解密{tx||sig

    a1
    }k
    t
    ,得到tx和sig

    a1

    [0109]
    使用pk
    a1
    验证sig

    a1
    ,证实消息来自于a1。将数字货币交易结果即为ret,包含成功或失败等结果信息。
    [0110]
    用ska对t||ret作基于id密码学的数字签名,过程与上文相同,得到签名sig
    ″a=sign(t||ret,ska)。将sig
    ″a与ret组合并使用k

    t
    对其加密得到reta={ret||sig
    ″a}k

    t
    。将t||tx||ret||reta在与s之间的会话密钥ks
    s-a
    的保护下发送至s。
    [0111]
    s44、央行验证交易并转发;
    [0112]
    s收到t||tx||ret||reta后,记录交易成功后数字货币的归属变化,然后将t||tx||ret||reta在与b之间的会话密钥ks
    s-b
    的保护下发送至b。b收到后,验证央行的消息并将t|
    |tx||ret||reta与b1之间的会话密钥ks
    b-b1
    的保护下发送至b1。b1收到后,验证b的消息并保存tx中的数字货币,然后将t||reta发送给a1。
    [0113]
    s45、a1确认交易;
    [0114]
    a1使用k
    t
    解密reta得到ret和sig
    ″a,使用pka对sig
    ″a进行验证后,确认交易结果。
    [0115]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。并且在每次的数字货币交易过程中,交易的实际内容均被对称密钥加密,因此该流程可以保护交易隐私,使得用户的交易更加安全。
    [0116]
    根据本发明的另一个方面,如图3所示,提供了基于数字货币的发送方离线抗量子计算交易系统,该系统由中央银行数字货币系统、商业银行数字货币系统(在实际中可以是多个商业银行数字货币系统)以及用户端组成。其中中央银行数字货币系统与商业银行数字货币系统进行身份认证、商业银行数字货币系统与用户进行身份认证都是基于id密码学的理论。中央银行数字货币系统用于产生和发行数字货币,以及对数字货币进行权属登记;商业银行数字货币系统用于针对数字货币执行银行功能;用户端则是数字货币使用的主体。
    [0117]
    中央银行数字货币系统记为s,其id为ids,具有抗量子装置ts,ts中部署有基于id密码学的密钥管理服务器kms;
    [0118]
    商业银行数字货币系统记为a、b、c...,其id分别为ida、idb、idc...,各自具有抗量子计算装置ta、tb、tc...,由kms颁发。ta、tb、tc...上又分别部署有基于id密码学的密钥管理服务器kmsa、kmsb、kmsc...;
    [0119]
    商业银行数字货币系统a包括用户a1、a2、a3...,其id分别为id
    a1
    、id
    a2
    、id
    a3
    ...,商业银行数字货币系统b包括用户b1、b2、b3...,其id分别为id
    b1
    、id
    b2
    、id
    b3
    ...,所有用户也都拥有抗量子计算装置t
    a1
    、t
    a2
    、t
    a3
    、t
    b1
    、t
    b2
    、t
    b3
    ...,分别由kmsa、kmsb颁发。
    [0120]
    抗量子计算装置可以是密钥卡、移动终端、密码机、网关等,可与银行货币系统或各个用户端分别进行主板接口通信、近距离无线通信、可控的内网通信等,可保证通信范围内不会被量子计算机窃取信息,例如抗量子计算装置可以是密钥卡插接在银行货币系统的主机主板上,或者抗量子计算装置可以是移动终端与同样是移动终端的双方进行nfc通信,或者抗量子计算装置是密码机或网关与同一内网的pc主机双方进行安全的内网通信。
    [0121]
    为某个成员颁发公私钥时,首先需要建立一套基于id密钥学的系统参数,步骤如下:
    [0122]
    (1)g1,g2是阶为q的gdh(diffie-hellman群)群,q是一个大素数,g1是由椭圆曲线上的点构成的加法循环群,p是群g1的生成元;g2是一个乘法循环群;双线性映射e:g1×
    g1→
    g2。
    [0123]
    (2)随机地取sk
    ms
    ∈z
    p*
    作为中央银行数字货币系统的系统私钥,sk
    ms
    仅保存在中央银行数字货币系统的抗量子计算装置中,计算中央银行数字货币系统的系统公钥pk
    ms
    =sk
    ms
    *p,pk
    ms
    保存在中央银行数字货币系统的抗量子计算装置ts。kms对每个不同商业银行数字货币系统的系统公私钥均不同,对于a,kms会生成唯一编码作为ida,a的系统私钥为sk
    msa
    ,系统私钥可以为真随机数或者由计算得到,例如sk
    msa
    =mac(ida,sk
    ms
    )(mac(m,k)为使用密钥k对消息m计算消息认证码),a的系统公钥为pk
    msa
    =sk
    msa
    *p;对于b,kms会生成唯一编
    码作为idb,b的系统私钥为sk
    msb
    ,系统私钥可以为真随机数或者由计算得到,例如sk
    msb
    =mac(idb,sk
    ms
    ),b的系统公钥为pk
    msb
    =sk
    msb
    *p;系统私钥保存在中央银行数字货币系统的抗量子计算装置中,系统公钥保存在对应商业银行数字货币系统的抗量子计算装置中,即pk
    msa
    保存在ta中,pk
    msb
    保存在tb中。如果系统私钥为真随机数,则kms将系统私钥及其对应的用户端id存储在数据库中,在需要时直接取用;如果系统私钥由计算得到,则kms在需要时实时计算生成,无需存储;以下实施例以系统私钥由计算得到为例。
    [0124]
    (3)kms为s颁发公私钥时,生成唯一编码作为ids,调用哈希函数h1计算公钥pks=h1(ids),再根据公钥pks计算私钥sks=sk
    ms
    *pks,将s的id和公私钥即ids、pks、sks存储于s的抗量子计算装置ts。
    [0125]
    kms为a颁发公私钥时,调用哈希函数h1计算公钥pka=h1(ida),再根据公钥pka计算私钥ska=sk
    msa
    *pka,将a的id和公私钥即ida、pka、ska存储于a的抗量子计算装置ta。kms为其他商业银行比如b、c

    颁发公私钥的过程与此类似。
    [0126]
    (4)kmsa随机地取sk
    msa0
    ∈z
    p*
    作为商业银行数字货币系统a的系统私钥,sk
    msa0
    仅保存在a的抗量子计算装置中,计算商业银行数字货币系统的系统公钥pk
    msa0
    =sk
    msa0
    *p,pk
    msa0
    保存在商业银行数字货币系统的抗量子计算装置ta中。kmsa对每个不同用户的系统公私钥均不同,对a1的系统私钥为sk
    msa1
    =mac(id
    a1
    ,sk
    msa0
    ),对a1的系统公钥为pk
    msa1
    =sk
    msa1
    *p;对a2的系统私钥为sk
    msa2
    =mac(id
    a2
    ,sk
    msa0
    ),对a2的系统公钥为pk
    msa2
    =sk
    msa2
    *p,kmsa对其他用户的系统公私钥的计算方法与此类似。其中基于kmsa的系统私钥保存在a的抗量子计算装置中,基于kmsa的系统公钥保存在对应用户端的抗量子计算装置中,即pk
    msa1
    保存在t
    a1
    中,pk
    msa2
    保存在t
    a2
    中。kmsb、kmsc...对它们所属不同用户的系统公私钥的计算方法与此类似。
    [0127]
    (5)kmsa为用户a1颁发公私钥时,调用哈希函数h1计算公钥pk
    a1
    =h1(id
    a1
    ),再根据公钥pk
    a1
    计算基于kmsa的私钥sk
    a1
    =sk
    msa1
    *pk
    a1
    ,将a1的id和公私钥即id
    a1
    、pk
    a1
    、sk
    a1
    存储于a1的抗量子计算装置t
    a1
    中。kmsa为其他用户比如a2、a3...颁发公私钥的过程与此类似。其他密钥管理服务器kmsb、kmsc...等为各自所属用户颁发公私钥的方法与此类似。
    [0128]
    综上所述,借助于本发明的上述技术方案,本发明可以实现抗量子计算的基于id密码学的发送方离线的数字货币通信系统;此外,本发明不需要将所有成员的公钥生成非对称密钥池后存储到各密钥卡中,客户端密钥卡只需要存储与自己有关的密钥,因此密钥卡的存储成本和操作工作量小;此外,本发明没有改变传统数字货币系统身份认证及交易通信的整体流程和数据结构,只是在现有技术的基础上增加了基于id密码学对称密钥的保护,因此数字货币通信系统切换到抗量子计算方案的成本不高;本发明不采用无法抗量子计算的ca通信系统,代之以基于id密码学的密钥颁发服务,既减轻了系统搭建、升级的复杂度,又增强了央行对商业银行的控制能力;此外,本发明基于id密码学的密钥颁发服务器对每个不同用户的系统公私钥均不同,即使某个用户的系统公钥丢失导致其对应的系统私钥被量子计算机破解,也不会危及到其他用户的系统公私钥。
    [0129]
    以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
    [0130]
    以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并
    不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

    技术特征:
    1.基于数字货币的发送方离线抗量子计算交易方法,其特征在于,该方法包括以下步骤:s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;s2、利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证;s3、依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证;s4、通过离线数字货币交易方法实现不同用户之间发送方离线的数字货币交易;其中,所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥和该系统公钥保存在所述中央银行数字货币系统的抗量子计算装置里;所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到对应的私钥,并将所述中央银行数字货币系统的id和该公私钥存入所述中央银行数字货币系统的抗量子计算装置;所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应所述商业银行数字货币系统的抗量子计算装置里;所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到私钥,并将所述商业银行数字货币系统的id和该公私钥存入所述商业银行数字货币系统的抗量子计算装置;所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发系统公私钥时,取随机数作为对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述商业银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述商业银行数字货币系统对应的密钥管理服务器的私钥,并将所述用户的id和该公私钥存入所述用户的抗量子计算装置。2.根据权利要求1所述的基于数字货币的发送方离线抗量子计算交易方法,其特征在于,所述s2利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证包括以下步骤:s21、将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统;s22、所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥;s23、所述商业银行数字货币系统接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。3.根据权利要求1所述的基于数字货币的发送方离线抗量子计算交易方法,其特征在
    于,所述s3依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证包括以下步骤:s31、将待认证的所述用户的身份信息发送给所述商业银行数字货币系统;s32、所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥;s33、所述用户接收所述认证结果并进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。4.根据权利要求1所述的基于数字货币的发送方离线抗量子计算交易方法,其特征在于,所述s4通过离线数字货币交易方法实现不同用户之间发送方离线的数字货币交易包括以下步骤:s41、发送方用户端签名得到签名交易,并将该签名交易发送给接收方用户端;s42、所述接收方用户端接收所述签名交易,并转发给所述接收方用户端对应的接收方商业银行数字货币系统,所述接收方商业银行数字货币系统通过所述中央银行数字币系统转发给所述发送方用户端对应的发送方商业银行数字货币系统;s43、所述发送方商业银行数字货币系统接收验证交易,并转发给所述中央银行数字货币系统;s44、所述中央银行数字货币系统接收交易并进行验证,同时记录交易成功后数字货币的归属变化,并转发给所述接收方商业银行数字货币系统,所述接收方商业银行数字货币系统接收交易进行验证后转发给所述接收方用户端,所述接收方用户端接收交易进行验证后转发给所述发送方用户端;s45、所述发送方用户端接收交易并进行验证,验证后确认交易结果。5.根据权利要求4所述的基于数字货币的发送方离线抗量子计算交易方法,其特征在于,所述发送方用户端为离线成员,且所述发送方用户端与所述接收方用户端之间通过近距离通信的方式互换双方信息,所述信息包含但不限于用户端id、钱包id、联系方式及硬件设备码的数据内容。6.基于数字货币的发送方离线抗量子计算交易系统,用以实现权利要求1-5中任一项所述的基于数字货币的发送方离线抗量子计算交易方法的步骤,其特征在于,该系统包括中央银行数字货币系统、商业银行数字货币系统和用户,所述中央银行数字货币系统与所述商业银行数字货币系统之间的身份认证、所述商业银行数字货币系统与所述用户之间的身份认证均基于id密码学的理论进行认证;其中,所述中央银行数字货币系统用于生产和发行数字货币,还用于对所述数字货币进行权属登记;所述商业银行数字货币系统用于针对数字货币执行银行功能;所述用户为所述数字货币的使用主体。7.根据权利要求6所述的基于数字货币的发送方离线抗量子计算交易系统,其特征在于,所述中央银行数字货币系统和所述商业银行数字货币系统中均配置有相应的抗量子计算装置,所述抗量子计算装置中均部署有对应的基于id密码学的密钥管理服务器,所述用户也配置有相应的抗量子计算装置,且所述商业银行数字货币系统的抗量子计算装置由所述中央银行数字货币系统的密钥管理服务器颁发,所述用户的抗量子计算装置由所述商业
    银行数字货币系统的密钥管理服务器颁发。8.根据权利要求7所述的基于数字货币的发送方离线抗量子计算交易系统,其特征在于,所述抗量子计算装置包含但不限于密钥卡、移动终端、密码机及网关,且所述抗量子计算装置可与银行货币系统或各个用户端分别进行通信,该通信包含但不限于主板接口通信、近距离无线通信及可控的内网通信多种通信方式。

    技术总结
    本发明公开了基于数字货币的发送方离线抗量子计算交易方法及系统,该方法包括以下步骤:该方法包括以下步骤:S1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;S2、实现商业银行数字货币系统与中央银行数字货币系统之间的身份认证;S3、实现用户与商业银行数字货币系统之间的身份认证;S4、实现不同用户之间发送方离线的数字货币交易。有益效果:不仅可以实现抗量子计算的基于ID密码学的发送方离线的数字货币通信系统,而且通过使用基于ID密码学的密钥颁发服务,既减轻了系统搭建、升级的复杂度,又增强了央行对商业银行的控制能力。控制能力。控制能力。


    技术研发人员:富尧 钟一民 杨羽成
    受保护的技术使用者:南京如般量子科技有限公司
    技术研发日:2020.11.05
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-25452.html

    最新回复(0)