一种接收方离线的数字货币抗量子计算交易方法及系统与流程

    专利查询2024-12-11  81



    1.本发明涉及身份认证领域,尤其涉及一种接收方离线的数字货币抗量子计算交易方法及系统。


    背景技术:

    2.中国人民银行的数字货币d-rmb体系的核心要素为一种币、两类库和三个中心。一种币,即“d-rmb”(dc/ep),简称d币,特指一串由央行签名的代表具体金额的加密数字串。两类库:分别是d-rmb的发行库和银行库(中央银行数字货币数据库、商业银行数字货币数据库)。数字货币在发行库中即表现为央行的数字货币基金;数字货币在银行库中即表现为商业银行的库存数字现金。三个中心:一是登记中心(记录货币产生、流通、清点核对及消亡全过程);另外两个是认证中心,即ca认证中心(基于pki体系,对机构和用户证书进行集中管理,如cfca)和ibc认证中心[即基于标识的密码技术建立的认证中心(identity-based cryptograph)]。在登记中心可设计两张表,一为数字货币权属登记表,记录数字货币的归属,另一张为交易流水表。
    [0003]
    d-rmb系统是一种分级式的体系,即由中央银行与各商业银行共建,中央银行数字货币系统是由中央银行或中央银行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其主要功能包括负责数字货币的发行与验证监测,商业银行数字货币系统是由商业银行或商业银行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其执行现有银行的有关货币的各种功能,即银行功能,主要包括从中央银行申请到数字货币后,负责直接面向社会,满足提供数字货币流通服务的各项需求。
    [0004]
    正如大多数人所了解的,量子计算机在密码破解上有着巨大潜力。当今主流的非对称(公钥)加密算法,如rsa加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为rsa、离散对数加密算法的破解提供可能。
    [0005]
    现有技术存在的问题:
    [0006]
    1、现有数字货币系统中的ca认证及ibc认证均无法抗量子计算;
    [0007]
    2、现有基于量子保密通信的抗量子计算身份认证系统中,对用户来说成本过高、对称密钥管理复杂;
    [0008]
    3、现有基于非对称密钥池的抗量子计算身份认证系统中,需要将所有成员的公钥生成非对称密钥池后存储到各密钥卡中,增加了客户端密钥卡的存储成本和操作工作量;
    [0009]
    4、现有基于非对称密钥池的抗量子计算身份认证系统中,改变了传统ca认证及ibc认证系统的整体流程和数据结构,导致ca认证及ibc认证系统,及其对应的用户应用系
    统切换到抗量子计算方案的成本过高。


    技术实现要素:

    [0010]
    针对相关技术中的问题,本发明提出一种接收方离线的数字货币抗量子计算交易方法及系统,以克服现有相关技术所存在的上述技术问题。
    [0011]
    为此,本发明采用的具体技术方案如下:
    [0012]
    根据本发明的一个方面,提供了一种接收方离线的数字货币抗量子计算交易方法,该方法包括以下步骤:
    [0013]
    s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;
    [0014]
    s2、利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证;
    [0015]
    s3、依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证;
    [0016]
    s4、通过离线数字货币交易方法实现接收方所述用户的离线数字货币交易;
    [0017]
    其中,所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥和该系统公钥保存在所述中央银行数字货币系统的抗量子计算装置里;
    [0018]
    所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到对应的私钥,并将所述中央银行数字货币系统的id和该公私钥存入所述中央银行数字货币系统的抗量子计算装置;
    [0019]
    所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;
    [0020]
    所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述中央银行数字货币系统对应的密钥管理服务器的私钥,并将所述商业银行数字货币系统的id和该公私钥存入所述商业银行数字货币系统的抗量子计算装置;
    [0021]
    所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述商业银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;
    [0022]
    所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述商业银行数字货币系统对应的密钥管理服务器的私钥,并将所述用户的id和该公私钥存入所述用户的抗量子计算装置。
    [0023]
    进一步的,所述s2利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证包括以下步骤:
    [0024]
    s21、将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统;
    [0025]
    s22、所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥;
    [0026]
    s23、所述商业银行数字货币系统接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。
    [0027]
    进一步的,所述s21中还包括利用基于所述中央银行数字货币系统对应密钥管理服务器的私钥对第一发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:
    [0028]
    选取第一随机数参数,并计算所述第一随机数参数与所述商业银行数字货币系统的公钥之间的第一乘积,再利用预设函数作用于第一发送消息和所述第一乘积得到第一签名参数,并利用所述第一签名参数得到所述第一发送信息的第一签名。
    [0029]
    进一步的,所述s22中还包括利用所述中央银行数字货币系统的另一私钥对第二发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:
    [0030]
    选取第二随机数参数,并计算所述第二随机数参数与所述中央银行数字货币系统的公钥之间的第二乘积,再利用预设函数作用于第二发送消息和所述第二乘积得到第二签名参数,并利用所述第二签名参数得到所述第二发送信息的第二签名。
    [0031]
    进一步的,所述s3依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证包括以下步骤:
    [0032]
    s31、将待认证的在线所述用户的身份信息发送给所述商业银行数字货币系统;
    [0033]
    s32、所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给在线的所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥;
    [0034]
    s33、在线的所述用户接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。
    [0035]
    进一步的,所述s31中还包括利用基于所述商业银行数字货币系统对应密钥管理服务器的私钥对第三发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:
    [0036]
    选取第三随机数参数,并计算所述第三随机数参数与在线的所述用户的公钥之间的第三乘积,再利用预设函数作用于第三发送消息和所述第三乘积得到第三签名参数,并利用所述第三签名参数得到所述第三发送信息的第三签名。
    [0037]
    进一步的,所述s32中还包括利用所述商业银行数字货币系统的另一私钥对第四发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:
    [0038]
    选取第四随机数参数,并计算所述第四随机数参数与所述商业银行数字货币系统的公钥之间的第四乘积,再利用预设函数作用于第四发送消息和所述第四乘积得到第四签名参数,并利用所述第四签名参数得到所述第四发送信息的第四签名。
    [0039]
    进一步的,所述s4通过离线数字货币交易方法实现接收方所述用户的离线数字货币交易包括以下步骤:
    [0040]
    s41、在线的发送方用户向其所属的发送方商业银行数字货币系统发送签名交易;
    [0041]
    s42、所述发送方商业银行数字货币系统接收所述签名交易并进行解密验证,验证通过后并进行加密发送给所述中央银行数字货币系统,所述中央银行数字货币系统接收消息并进行解密验证,其中,当验证交易失败则将交易失败结果通知给所述发送方商业银行数字货币系统,当验证交易成功则对所述交易及签名时间进行加密,并进行消息认证码的计算,同时将该加密信息及消息认证码发送给离线的接收方用户所属的接收方商业银行数字货币系统;
    [0042]
    s43、所述接收方商业银行数字货币系统接收消息并进行解密验证,其中,当验证交易失败则通知所述中央银行数字货币系统,验证交易成功则对所述交易进行签名及消息认证码的计算,并发送给所述中央银行数字货币系统;
    [0043]
    s44、所述中央银行数字货币系统发送交易结果给所述发送方商业银行数字货币系统,所述发送方商业银行数字货币系统将该交易结果转发给在线的发送方用户,同时,在线的发送方用户将该交易结果转发给离线的接收方用户;
    [0044]
    s45、离线的接收方用户接收消息并进行解密验证,同时确认交易结束,当验证成功则存储收到的数字货币。
    [0045]
    进一步的,所述s41中还包括在线的发送方用户利用基于所述商业银行数字货币系统对应密钥管理服务器的私钥对第五发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:
    [0046]
    选取第五随机数参数,并计算所述第五随机数参数与在线的所述用户的公钥之间的第五乘积,再利用预设函数作用于第五发送消息和所述第五乘积得到第五签名参数,并利用所述第五签名参数得到所述第五发送信息的第五签名。
    [0047]
    根据本发明的另一个方面,提供了一种接收方离线的数字货币抗量子计算交易系统,该系统包括中央银行数字货币系统、商业银行数字货币系统和用户,所述中央银行数字货币系统与所述商业银行数字货币系统之间的身份认证、所述商业银行数字货币系统与所述用户之间的身份认证均基于id密码学的理论进行认证;
    [0048]
    其中,所述中央银行数字货币系统用于生产和发行数字货币,还用于对所述数字货币进行权属登记;
    [0049]
    所述商业银行数字货币系统用于针对数字货币执行银行功能;
    [0050]
    所述用户为所述数字货币的使用主体;
    [0051]
    所述中央银行数字货币系统和所述商业银行数字货币系统中均配置有相应的抗量子计算装置,所述抗量子计算装置中均部署有对应的基于id密码学的密钥管理服务器,且所述用户也配置有相应的抗量子计算装置。
    [0052]
    本发明的有益效果为:
    [0053]
    1)、本发明可以实现抗量子计算的基于id密码学和接收方离线的数字货币交易方法;
    [0054]
    2)、本发明不需要将所有成员的公钥生成非对称密钥池后存储到各密钥卡中,客户端密钥卡只需要存储与自己有关的密钥,因此密钥卡的存储成本和操作工作量小;
    [0055]
    3)、本发明没有改变传统数字货币系统身份认证及交易通信的整体流程和数据结构,只是在现有技术的基础上增加了基于id密码学对称密钥的保护,因此数字货币通信系统切换到抗量子计算方案的成本不高;本发明不采用无法抗量子计算的ca通信系统,代之
    以基于id密码学的密钥颁发服务,既减轻了系统搭建、升级的复杂度,又增强了央行对商业银行的控制能力;
    [0056]
    4)、本发明基于id密码学的密钥颁发服务器对每个不同用户的系统公私钥均不同,即使某个用户的系统公钥丢失导致其对应的系统私钥被量子计算机破解,也不会危及到其他用户的系统公私钥。
    附图说明
    [0057]
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    [0058]
    图1是根据本发明实施例的一种接收方离线的数字货币抗量子计算交易方法的流程图;
    [0059]
    图2是根据本发明实施例的一种接收方离线的数字货币抗量子计算交易方法中基于id密码学和接收方离线的数字货币交易的流程图;
    [0060]
    图3是根据本发明实施例的一种接收方离线的数字货币抗量子计算交易系统中中央银行数字货币系统的基本结构图。
    具体实施方式
    [0061]
    为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
    [0062]
    根据本发明的实施例,提供了一种接收方离线的数字货币抗量子计算交易方法及系统。
    [0063]
    现结合附图和具体实施方式对本发明进一步说明,如图1-2所示,根据本发明的一个实施例,提供了一种接收方离线的数字货币抗量子计算交易方法,该方法包括以下步骤:
    [0064]
    s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;
    [0065]
    其中,所述中央银行数字货币系统对应的密钥管理服务器kms为所述中央银行数字货币系统s颁发系统公私钥时,取随机数作为系统私钥sk
    ms
    ,再根据该系统私钥sk
    ms
    计算得到系统公钥pk
    ms
    =sk
    ms
    *p,并将该系统私钥sk
    ms
    和该系统公钥pk
    ms
    保存在所述中央银行数字货币系统s的抗量子计算装置ts里;
    [0066]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述中央银行数字货币系统s颁发公私钥时,调用哈希函数h1计算得到公钥pks=h1(ids),再根据该公钥pks计算得到对应的私钥sks=sk
    ms
    *pks,并将所述中央银行数字货币系统的id和该公私钥即ids、pks、sks存入所述中央银行数字货币系统s的抗量子计算装置ts;
    [0067]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述商业银行数字货币系统a颁发系统公私钥时,计算消息认证码得到对应的系统私钥sk
    msa(kms)
    =mac(ida,sk
    ms
    )
    [mac(m,k)为使用密钥k对消息m计算消息认证码],再根据该系统私钥sk
    msa(kms)
    计算得到系统公钥pk
    msa(kms)
    =sk
    msa(kms)
    *p,并将该系统私钥sk
    msa(kms)
    保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥pk
    msa(kms)
    保存在对应用户端的抗量子计算装置里,即pk
    msa(kms)
    保存在ta中,pk
    msb(kms)
    保存在tb中;
    [0068]
    所述中央银行数字货币系统对应的密钥管理服务器kms为所述商业银行数字货币系统a颁发公私钥时,调用哈希函数h1计算得到公钥pka=h1(ida),再根据该公钥pka计算得到基于所述中央银行数字货币系统对应的密钥管理服务器kms的私钥sk
    a(kms)
    =sk
    msa(kms)
    *pka,并将所述商业银行数字货币系统a的id和该公私钥即ida、pka、sk
    a(kms)
    存入所述商业银行数字货币系统a的抗量子计算装置ta;
    [0069]
    所述商业银行数字货币系统对应的密钥管理服务器kmsa为所述用户a1颁发系统公私钥时,计算消息认证码得到对应的系统私钥sk
    msa1
    =mac(id
    a1
    ,sk
    msa
    ),再根据该系统私钥sk
    msa1
    计算得到系统公钥pk
    msa1
    =sk
    msa1
    *p,并将该系统私钥sk
    msa1
    保存在所述商业银行数字货币系统的抗量子计算装置里,将该系统公钥pk
    msa1
    保存在对应用户端的抗量子计算装置里,即pk
    msa1
    保存在t
    a1
    中,pk
    msa2
    保存在t
    a2
    中;
    [0070]
    所述商业银行数字货币系统对应的密钥管理服务器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
    中。
    [0071]
    s2、商业银行数字货币系统与中央银行数字货币系统s进行身份认证(利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证);
    [0072]
    以下以商业银行数字货币系统a与中央银行数字货币系统s进行身份认证为例,其他商业银行数字货币系统与中央银行数字货币系统s进行身份认证的流程与此类似。
    [0073]
    其中,所述s2包括以下步骤:
    [0074]
    s21、a发送己方身份信息给s(将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统);
    [0075]
    a根据ids计算得到pks=h1(ids),取出己方基于kms的私钥sk
    a(kms)
    计算a与s之间的对称密钥k
    a-s
    =e(sk
    a(kms)
    ,pks)。获取时间戳t1,使用k
    a-s
    对t1计算消息认证码得到k1=mac(t1,k
    a-s
    )。将组合ida||ids||t1||ainfo作为msga,其中ainfo为将要用来认证的a的身份信息。
    [0076]
    用sk
    a(kms)
    对msga作基于id密码学的数字签名,过程如下:取随机数参数r1,求得r1和pka的乘积r1*pka,再用函数h1作用于msga和r1*pka,可得到签名参数h1=h1(msga,r1*pka)。则可以得到msga的签名sign(msga,sk
    a(kms)
    )=(r1*pka,(r1+h1)*sk
    a(kms)
    )。
    [0077]
    使用k1对ainfo和sign(msga,sk
    a(kms)
    )加密得到{ainfo||sign(msga,sk
    a(kms)
    )}k1,连同ida、ids以及t1一起发送至s,发送的消息可表示为ida||ids||t1|{ainfo||sign(msga,sk
    a(kms)
    )}k1。
    [0078]
    s22、s发送认证结果(认证成功则包含会话密钥)给a(所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥);
    [0079]
    s收到来自a的消息ida||ids||t1|{ainfo||sign(msga,sk
    a(kms)
    )}k1。s中的kms计算
    其对a的系统私钥为sk
    msa(kms)
    =mac(ida,sk
    ms
    ),根据pks=h1(ids)得到sk
    s(kms)
    =sk
    msa(kms)
    *pks。进一步得到s与a之间的对称密钥k
    s-a
    =e(sk
    s(kms)
    ,pka)。根据id密码学可得:k
    a-s
    =e(sk
    a(kms)
    ,pks)=e(sk
    msa(kms)
    *pka,pks)=e(pka,sk
    msa(kms)
    *pks)=e(pka,sk
    s(kms)
    )=e(sk
    s(kms)
    ,pka)=k
    s-a
    。使用k
    s-a
    对t1计算消息认证码得到k
    ′1=mac(t1,k
    s-a
    )。使用k
    ′1解密{ainfo||sign(msga,sk
    a(kms)
    )}k1,得到a的身份信息ainfo和sign(msga,sk
    a(kms)
    )。
    [0080]
    s根据ida计算得到pka=h1(ida),根据前面算出的sk
    msa(kms)
    计算kms对a的系统公钥为pk
    msa(kms)
    =sk
    msa(kms)
    *p,用pka和pk
    msa(kms)
    来验证签名sign(msga,sk
    a(kms)
    )。要验证该签名,只需要验证(p,pk
    msa(kms)
    ,r1*pka+h1*pka,(r1+h1)*sk
    a(kms)
    )是一个有效的diffie-hellman元组。如果验证成功,s生成会话密钥ks
    s-a
    并将其与认证成功的消息组合起来称为rets;如果验证失败则将认证失败消息称为rets。获取时间戳t2,将组合ids||ida||t2||rets作为msgs。
    [0081]
    用sk
    s(kms)
    对msgs作基于id密码学的数字签名,过程如下:取随机数参数r2,求得r2和pks的乘积r2*pks,再用函数h1作用于msgs和r2*pks,可得到签名参数h2=h1(msgs,r2*pks)。则可以得到msgs的签名sign(msgs,sk
    s(kms)
    )=(r2*pks,(r2+h2)*sk
    s(kms)
    )。
    [0082]
    使用k
    s-a
    对t2计算消息认证码得到k2=mac(t2,k
    s-a
    ),使用k2对rets和sign(msgs,sk
    s(kms)
    )加密得到{rets||sign(msgs,sk
    s(kms)
    )}k2,连同ids、ida以及t2一起发送至a,发送的消息可表示为ids||ida||t2|{rets||sign(msgs,sk
    s(kms)
    )}k2。
    [0083]
    s23、a收到认证结果(认证成功则包含会话密钥)(所述商业银行数字货币系统接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥);
    [0084]
    a收到来自s的消息ids||ida||t2|{rets||sign(msgs,sk
    s(kms)
    )}k2。使用k
    a-s
    对t2计算消息认证码得到k
    ′2=mac(t2,k
    a-s
    ),使用k
    ′2解密{rets||sign(msgs,sk
    s(kms)
    )}k2,得到rets和sign(msgs,sk
    s(kms)
    )。
    [0085]
    a用pks和从ta中取出的pk
    msa(kms)
    来验证签名sign(msgs,sk
    s(kms)
    )。要验证该签名,只需要验证(p,pk
    msa(kms)
    ,r2*pks+h2*pks,(r2+h2)*sk
    s(kms)
    )是一个有效的diffie-hellman元组。若a验证签名成功,并且rets中携带的也是s验证签名成功的消息,则可以取出rets中的会话密钥ks
    s-a
    ,由此a和s可以使用该会话密钥进行保密通信;其他情况则不能得到会话密钥。
    [0086]
    同理b和s可以依此方法进行身份认证并协商得到两者之间的会话密钥ks
    b-a

    [0087]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。另外,基于id密码学的kms对a、b、c等不同用户的系统公私钥均不同,即使a的系统公钥pk
    msa(kms)
    丢失导致其对应的系统私钥sk
    msa(kms)
    被量子计算机破解,也不会危及到b、c等其他用户的系统公私钥。
    [0088]
    s3、用户与商业银行数字货币系统进行身份认证(依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证);
    [0089]
    以下以在线用户b1与商业银行数字货币系统b进行身份认证为例,其他在线用户与对应的商业银行数字货币系统进行身份认证的流程与此类似。
    [0090]
    其中,所述s3包括以下步骤:
    [0091]
    s31、b1发送己方身份信息给b(将待认证的在线所述用户的身份信息发送给所述商业银行数字货币系统);
    [0092]
    b1根据idb计算得到pkb=h1(idb),取出己方基于kmsb的私钥sk
    b1
    计算b1与b之间的对称密钥k
    b1-b
    =e(sk
    b1
    ,pkb)。获取时间戳t3,使用k
    b1-b
    对t3计算消息认证码得到k3=mac(t3,k
    b1-b
    )。将组合idb1||idb||t3||b1info作为msg
    b1
    ,其中b1info为将要用来认证的b1的身份信息。
    [0093]
    用sk
    b1
    对msg
    b1
    作基于id密码学的数字签名,过程如下:取随机数参数r3,求得r3和pk
    b1
    的乘积r3*pk
    b1
    ,再用函数h1作用于msg
    b1
    和r3*pk
    b1
    ,可得到签名参数h3=h1(msg
    b1
    ,r3*pk
    b1
    )。则可以得到msg
    b1
    的签名sign(msg
    b1
    ,sk
    b1
    )=(r3*pk
    b1
    ,(r3+h3)*sk
    b1
    )。
    [0094]
    使用k3对b1info和sign(msg
    b1
    ,sk
    b1
    )加密得到{b1info||sign(msg
    b1
    ,sk
    b1
    )}k3,连同id
    b1
    、idb以及t3一起发送至b,发送的消息可表示为id
    b1
    ||idb||t3|{b1info||sign(msg
    b1
    ,sk
    b1
    )}k3。
    [0095]
    s32、b发送认证结果(认证成功则包含会话密钥)给b1(所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给在线的所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥);
    [0096]
    b收到来自b1的消息id
    b1
    ||idb||t3|{b1info||sign(msg
    b1
    ,sk
    b1
    )}k3。b中的kmsb计算其对b1的系统私钥为sk
    msb1
    =mac(id
    b1
    ,sk
    msb
    ),根据pkb=h1(idb)得到sk
    b(msb1)
    =sk
    msb1
    *pkb。进一步得到b与b1之间的对称密钥k
    b-b1
    =e(sk
    b(msb1)
    ,pk
    b1
    )。根据id密码学可得:k
    b1-b
    =e(sk
    b1
    ,pkb)=e(sk
    msb1
    *pk
    b1
    ,pkb)=e(pk
    b1
    ,sk
    msb1
    *pkb)=e(pk
    b1
    ,sk
    b(msb1)
    )=e(sk
    b(msb1)
    ,pk
    b1
    )=k
    b-b1
    。使用k
    b-b1
    对t3计算消息认证码得到k
    ′3=mac(t3,k
    b-b1
    )。使用k
    ′3解密{b1info||sign(msg
    b1
    ,sk
    b1
    )}k3,得到b1的身份信息b1info和sign(msg
    b1
    ,sk
    b1
    )。
    [0097]
    b根据id
    b1
    计算得到pk
    b1
    =h1(id
    b1
    ),根据前面算出的sk
    msb1
    计算kmsb对b1的系统公钥为pk
    msb1
    =sk
    msb1
    *p,用pk
    b1
    和pk
    msb1
    来验证签名sign(msg
    b1
    ,sk
    b1
    )。要验证该签名,只需要验证(p,pk
    msb1
    ,r3*pk
    b1
    +h3*pk
    b1
    ,(r3+h3)*sk
    b1
    )是一个有效的diffie-hellman元组。如果验证成功,b生成会话密钥ks
    b-b1
    并将其与认证成功的消息组合起来称为retb;如果验证失败则将认证失败消息称为retb。获取时间戳t4,将组合idb||id
    b1
    ||t4||retb作为msgb。
    [0098]
    用sk
    b(msb1)
    对msgb作基于id密码学的数字签名,过程如下:取随机数参数r4,求得r4和pkb的乘积r4*pkb,再用函数h1作用于msgb和r4*pkb,可得到签名参数h4=h1(msgb,r4*pkb)。则可以得到msgb的签名sign(msgb,sk
    b(msb1)
    )=(r4*pkb,(r4+h4)*sk
    b(msb1)
    )。
    [0099]
    使用k
    b-b1
    对t4计算消息认证码得到k4=mac(t4,k
    b-b1
    ),使用k4对retb和sign(msgb,sk
    b(msb1)
    )加密得到{retb||sign(msgb,sk
    b(msb1)
    )}k4,连同idb、id
    b1
    以及t4一起发送至b1,发送的消息可表示为idb||id
    b1
    ||t4||{retb||sign(msgb,sk
    b(msb1)
    )}k4。
    [0100]
    s33、b1收到认证结果(认证成功则包含会话密钥)(在线的所述用户接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥);
    [0101]
    b1收到来自b的消息idb||id
    b1
    ||t4||{retb||sign(msgb,sk
    b(msb1)
    )}k4。使用k
    b1-b
    对t4计算消息认证码得到k
    ′4=mac(t4,k
    b1-b
    ),使用k
    ′4解密{retb||sign(msgb,sk
    b(msb1)
    )}k4,得到retb和sign(msgb,sk
    b(msb1)
    )。
    [0102]
    b1用pkb和从t
    b1
    中取出的pk
    msb1
    来验证签名sign(msgb,sk
    b(msb1)
    )。要验证该签名,只需要验证(p,pk
    msb1
    ,r4*pkb+h4*pkb,(r4+h4)*sk
    b(msb1)
    )是一个有效的diffie-hellman元组。若b1验证签名成功,并且retb中携带的也是b验证签名成功的消息,则可以取出retb中的会话
    密钥ks
    b-b1
    ,由此b1和b可以使用该会话密钥进行保密通信;其他情况则不能得到会话密钥。
    [0103]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。另外,基于id密码学的kmsb对b1、b2、b3等不同用户的系统公私钥均不同,即使b1的系统公钥pk
    msb1
    丢失导致其对应的系统私钥sk
    msb1
    被量子计算机破解,也不会危及到b2、b3等其他用户的系统公私钥。
    [0104]
    s4、接收方a1离线的数字货币交易(通过离线数字货币交易方法实现接收方所述用户的离线数字货币交易);
    [0105]
    接收方a1离线,发送方b1在线,现在以双方进行数字货币交易为例,流程图如图2所示。
    [0106]
    其中,所述s4包括以下步骤:
    [0107]
    s41、b1向b发送签名交易;
    [0108]
    a1与b1进行近距离通信互换双方信息。其中发送方信息包括发送方id、钱包id、联系方式、硬件设备码等;接收方信息与此类似。
    [0109]
    b1使用私钥sk
    b1
    对id
    b1
    、t和tx组成的消息msg
    b1
    计算基于id密码学的签名得到sig
    b1
    =sign(msg
    b1
    ,sk
    b1
    ),其中t为签名时间,tx为待签名消息即交易,包括发送方信息、接收方信息、数字货币等交易信息。签名过程如下:
    [0110]
    取随机数参数r5,求得r5和pk
    b1
    的乘积r5*pk
    b1
    ,再用函数h1作用于msg
    b1
    和r5*pk
    b1
    ,可得到签名参数h5=h1(msg
    b1
    ,r5*pk
    b1
    )。则可以得到msg
    b1
    的签名sign(msg
    b1
    ,sk
    b1
    )=(r5*pk
    b1
    ,(r5+h5)*sk
    b1
    )。
    [0111]
    b1使用b1与b之间的会话密钥ks
    b-b1
    加密msg
    b1
    和sig
    b1
    并发送给b1所属的商业银行数字货币系统b。
    [0112]
    s42、b收到签名交易,并发送给央行;
    [0113]
    b收到消息后用ks
    b-b1
    解密得到msg
    b1
    和sig
    b1
    ,然后用pk
    b1
    和pk
    msb1
    来验证签名sig
    b1
    。要验证该签名,只需要验证(p,pk
    msb1
    ,r5*pk
    b1
    +h5*pk
    b1
    ,(r5+h5)*sk
    b1
    )是一个有效的diffie-hellman元组。
    [0114]
    如果验证成功,则说明消息确实来自b。接着b用b与s之间的会话密钥ks
    s-b
    对msg
    b1
    中的t和tx进行加密并发送给中央银行数字货币系统s。
    [0115]
    s收到消息后用ks
    s-b
    解密得到t和tx。s验证交易tx,如果交易失败则通知b,如果交易成功则使用s与a之间的会话密钥ks
    s-a
    对t和tx进行加密得到{t||tx}ks
    s-a
    ,并使用ks
    s-a
    对t||tx计算消息认证码得到mac(t||tx,ks
    s-a
    ),然后将{t||tx}ks
    s-a
    和mac(t||tx,ks
    s-a
    )发送给a1所属的商业银行数字货币系统a。
    [0116]
    s43、a对交易进行签名;
    [0117]
    a收到消息后用ks
    s-a
    解密{t||tx}ks
    s-a
    得到t和tx,并对mac(t||tx,ks
    s-a
    )进行验证。a验证交易tx,如果交易失败则通知s,交易成功则继续后面的步骤。
    [0118]
    a在本地记录t||tx,然后按照步骤s32中的方法计算得到a与a1之间的对称密钥k
    a-a1
    ,用k
    a-a1
    对t计算消息认证码得到kt=mac(t,k
    a-a1
    )。按照步骤s32中的方法计算a的另一种私钥sk
    a(msa1)
    ,并使用sk
    a(msa1)
    对t||tx作基于id密码学的数字签名得到siga=sign(t||tx,sk
    a(msa1)
    )。用kt加密tx和siga得到{tx||siga}kt并称其为reta,然后用ks
    s-a
    加密reta得到
    {reta}ks
    s-a
    ,用ks
    s-a
    对reta计算消息认证码得到mac(reta,ks
    s-a
    ),并将{reta}ks
    s-a
    和mac(reta,ks
    s-a
    )发送给s。
    [0119]
    s44、s发送交易结果给b,b转发给b1,b1转发给a1;
    [0120]
    s收到消息后,如果是交易失败的消息则将该消息命名为ret;否则用ks
    s-a
    解密{reta}ks
    s-a
    得到reta,并对mac(reta,ks
    s-a
    )进行验证。如果验证成功则说明交易成功,则s记录交易成功后数字货币的归属变化,并将交易成功的消息命名为ret。s用ks
    s-b
    加密ret||reta并发送给b。
    [0121]
    b收到消息后用ks
    s-b
    解密得到ret||reta,并用ks
    b-b1
    加密ret||reta然后发送给b1。
    [0122]
    b1收到消息后用ks
    b-b1
    解密得到ret||reta,b1确认ret后,确认交易结束,然后删除tx中的数字货币。b1将t||reta发送给a1。
    [0123]
    s45、a1确认交易;
    [0124]
    a1得到t||reta,即t和{tx||siga}kt。a1按照步骤s31中的方法计算得到a1与a之间的对称密钥k
    a1-a
    ,再用k
    a1-a
    对t计算消息认证码得到kt

    =mac(t,k
    a1-a
    ),用kt

    解密{tx||siga}kt得到tx||siga。a1按照步骤s32中的方法对签名siga进行验证,然后a1确认交易结束,如果成功则存储收到的数字货币。
    [0125]
    由上面的流程可以看到,基于id密码学的系统公钥没有被公开,且基于id密码学的数字签名被对称密钥保护,因此该流程可以抵抗量子计算机对基于id密码学的攻击。
    [0126]
    根据本发明的另一个方面,以中央银行数字货币的运行实例来说,如图3所示,数字货币系统基本结构主要包括中央银行数字货币系统、商业银行数字货币系统(在实际中可以是多个商业银行数字货币系统)和用户,其中,中央银行数字货币系统与商业银行数字货币系统进行身份认证、商业银行数字货币系统与用户进行身份认证都是基于id密码学的理论。中央银行数字货币系统用于产生和发行数字货币,以及对数字货币进行权属登记;商业银行数字货币系统用于针对数字货币执行银行功能;用户则是数字货币使用的主体。
    [0127]
    本实施例中提供了一种接收方离线的数字货币抗量子计算交易系统,该系统由中央银行数字货币系统、商业银行数字货币系统以及用户端组成。假设中央银行数字货币系统的id为s,s具有抗量子计算装置ts,ts中部署有基于id密码学的密钥管理服务器kms;商业银行数字货币系统的id为a、b、c

    ,各自具有抗量子计算装置ta、tb、tc…
    ,而ta、tb、tc…
    上又分别部署有基于id密码学的密钥管理服务器kmsa、kmsb、kmsc

    ;商业银行数字货币系统a包括用户a1、a2、a3

    ,商业银行数字货币系统b包括用户b1、b2、b3

    ,商业银行数字货币系统c包括用户c1、c2、c3

    ,所有用户也都拥有抗量子计算装置t
    a1
    、t
    a2
    、t
    a3
    、t
    b1
    、t
    b2
    、t
    b3
    、t
    c1
    、t
    c2
    、t
    c3


    [0128]
    抗量子计算装置可以是密钥卡、移动终端、密码机、网关等,可与银行货币系统或各个用户端分别进行主板接口通信、近距离无线通信、可控的内网通信等,可保证通信范围内不会被量子计算机窃取信息,例如抗量子计算装置可以是密钥卡插接在银行货币系统的主机主板上,或者抗量子计算装置可以是移动终端与同样是移动终端的双方进行nfc通信,或者抗量子计算装置是密码机或网关与同一内网的用户主机双方进行安全的内网通信。
    [0129]
    kms为某个成员颁发公私钥时,首先需要建立一套基于id密钥学的系统参数,步骤如下:
    [0130]
    (1)g1,g2是阶为q的gdh(diffie

    hellman群)群,q是一个大素数,g1是由椭圆曲线
    上的点构成的加法循环群,p是群g1的生成元;g2是一个乘法循环群;双线性映射e:g1×
    g1→
    g2。
    [0131]
    (2)随机地取sk
    ms
    ∈z
    p*
    作为中央银行数字货币系统的系统私钥,sk
    ms
    仅保存在中央银行数字货币系统的抗量子计算装置中,计算中央银行数字货币系统的系统公钥pk
    ms
    =sk
    ms
    *p,pk
    ms
    保存在中央银行数字货币系统的抗量子计算装置ts中。kms对每个不同商业银行数字货币系统的系统公私钥均不同,对a的系统私钥为sk
    msa(kms)
    =mac(ida,sk
    ms
    )(mac(m,k)为使用密钥k对消息m计算消息认证码),对a的系统公钥为pk
    msa(kms)
    =sk
    msa(kms)
    *p;对b的系统私钥为sk
    msb(kms)
    =mac(idb,sk
    ms
    ),对b的系统公钥为pk
    msb(kms)
    =sk
    msb(kms)
    *p,kms对其他商业银行数字货币系统的系统公私钥的计算方法与此类似。其中基于kms的系统私钥保存在中央银行数字货币系统的抗量子计算装置中,基于kms的系统公钥保存在对应用户端的抗量子计算装置中,即pk
    msa(kms)
    保存在ta中,pk
    msb(kms)
    保存在tb中。
    [0132]
    (3)kms为s颁发公私钥时,调用哈希函数h1计算公钥pks=h1(ids),再根据公钥pks计算私钥sks=sk
    ms
    *pks,将s的id和公私钥即ids、pks、sks存储于s的抗量子计算装置ts中。kms为a颁发公私钥时,调用哈希函数h1计算公钥pka=h1(ida),再根据公钥pka计算基于kms的私钥sk
    a(kms)
    =sk
    msa(kms)
    *pka,将a的id和公私钥即ida、pka、sk
    a(kms)
    存储于a的抗量子计算装置ta中。kms为其他商业银行比如b、c

    颁发公私钥的过程与此类似。
    [0133]
    (4)随机地取sk
    msa
    ∈z
    p*
    作为商业银行数字货币系统a的系统私钥,sk
    msa
    仅保存在a的抗量子计算装置中,计算商业银行数字货币系统的系统公钥pk
    msa
    =sk
    msa
    *p,pk
    msa
    保存在商业银行数字货币系统的抗量子计算装置ta中。kmsa对每个不同用户的系统公私钥均不同,对a1的系统私钥为sk
    msa1
    =mac(id
    a1
    ,sk
    msa
    ),对a1的系统公钥为pk
    msa1
    =sk
    msa1
    *p;对a2的系统私钥为sk
    msa2
    =mac(id
    a2
    ,sk
    msa
    ),对a2的系统公钥为pk
    msa2
    =sk
    msa2
    *p,kmsa对其他用户的系统公私钥的计算方法与此类似。其中基于kmsa的系统私钥保存在商业银行数字货币系统的抗量子计算装置中,基于kmsa的系统公钥保存在对应用户端的抗量子计算装置中,即pk
    msa1
    保存在t
    a1
    中,pk
    msa2
    保存在t
    a2
    中。kmsb、kmsc

    对它们所属不同用户的系统公私钥的计算方法与此类似。
    [0134]
    (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为其他用户比如a1、a2

    颁发公私钥的过程与此类似。其他密钥管理服务器kmsb、kmsc

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

    技术特征:
    1.一种接收方离线的数字货币抗量子计算交易方法,其特征在于,该方法包括以下步骤:s1、使用密钥管理服务器分别为中央银行数字货币系统、商业银行数字货币系统和用户颁发系统公私钥和公私钥;s2、利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证;s3、依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证;s4、通过离线数字货币交易方法实现接收方所述用户的离线数字货币交易;其中,所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥和该系统公钥保存在所述中央银行数字货币系统的抗量子计算装置里;所述中央银行数字货币系统对应的密钥管理服务器为所述中央银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到对应的私钥,并将所述中央银行数字货币系统的id和该公私钥存入所述中央银行数字货币系统的抗量子计算装置;所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述中央银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;所述中央银行数字货币系统对应的密钥管理服务器为所述商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述中央银行数字货币系统对应的密钥管理服务器的私钥,并将所述商业银行数字货币系统的id和该公私钥存入所述商业银行数字货币系统的抗量子计算装置;所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发系统公私钥时,计算消息认证码得到对应的系统私钥,再根据该系统私钥计算得到系统公钥,并将该系统私钥保存在所述商业银行数字货币系统的抗量子计算装置里,将该系统公钥保存在对应用户端的抗量子计算装置里;所述商业银行数字货币系统对应的密钥管理服务器为所述用户颁发公私钥时,调用哈希函数计算得到公钥,再根据该公钥计算得到基于所述商业银行数字货币系统对应的密钥管理服务器的私钥,并将所述用户的id和该公私钥存入所述用户的抗量子计算装置。2.根据权利要求1所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s2利用身份认证方法实现所述商业银行数字货币系统与所述中央银行数字货币系统之间的身份认证包括以下步骤:s21、将待认证的所述商业银行数字货币系统的身份信息发送给所述中央银行数字货币系统;s22、所述中央银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给所述商业银行数字货币系统,其中,当所述认证结果成功时,则包含对应的会话密钥;s23、所述商业银行数字货币系统接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。
    3.根据权利要求2所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s21中还包括利用基于所述中央银行数字货币系统对应密钥管理服务器的私钥对第一发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:选取第一随机数参数,并计算所述第一随机数参数与所述商业银行数字货币系统的公钥之间的第一乘积,再利用预设函数作用于第一发送消息和所述第一乘积得到第一签名参数,并利用所述第一签名参数得到所述第一发送信息的第一签名。4.根据权利要求2所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s22中还包括利用所述中央银行数字货币系统的另一私钥对第二发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:选取第二随机数参数,并计算所述第二随机数参数与所述中央银行数字货币系统的公钥之间的第二乘积,再利用预设函数作用于第二发送消息和所述第二乘积得到第二签名参数,并利用所述第二签名参数得到所述第二发送信息的第二签名。5.根据权利要求1所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s3依据身份认证方法实现所述用户与所述商业银行数字货币系统之间的身份认证包括以下步骤:s31、将待认证的在线所述用户的身份信息发送给所述商业银行数字货币系统;s32、所述商业银行数字货币系统接收所述身份信息并进行认证,同时将所述认证结果返回给在线的所述用户,其中,当所述认证结果成功时,则包含对应的会话密钥;s33、在线的所述用户接收所述认证结果并对该认证结果进行验证,其中,当所述认证结果成功时,则接收到对应的所述会话密钥。6.根据权利要求5所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s31中还包括利用基于所述商业银行数字货币系统对应密钥管理服务器的私钥对第三发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:选取第三随机数参数,并计算所述第三随机数参数与在线的所述用户的公钥之间的第三乘积,再利用预设函数作用于第三发送消息和所述第三乘积得到第三签名参数,并利用所述第三签名参数得到所述第三发送信息的第三签名。7.根据权利要求5所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s32中还包括利用所述商业银行数字货币系统的另一私钥对第四发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:选取第四随机数参数,并计算所述第四随机数参数与所述商业银行数字货币系统的公钥之间的第四乘积,再利用预设函数作用于第四发送消息和所述第四乘积得到第四签名参数,并利用所述第四签名参数得到所述第四发送信息的第四签名。8.根据权利要求1所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s4通过离线数字货币交易方法实现接收方所述用户的离线数字货币交易包括以下步骤:s41、在线的发送方用户向其所属的发送方商业银行数字货币系统发送签名交易;s42、所述发送方商业银行数字货币系统接收所述签名交易并进行解密验证,验证通过后并进行加密发送给所述中央银行数字货币系统,所述中央银行数字货币系统接收消息并进行解密验证,其中,当验证交易失败则将交易失败结果通知给所述发送方商业银行数字
    货币系统,当验证交易成功则对所述交易及签名时间进行加密,并进行消息认证码的计算,同时将该加密信息及消息认证码发送给离线的接收方用户所属的接收方商业银行数字货币系统;s43、所述接收方商业银行数字货币系统接收消息并进行解密验证,其中,当验证交易失败则通知所述中央银行数字货币系统,验证交易成功则对所述交易进行签名及消息认证码的计算,并发送给所述中央银行数字货币系统;s44、所述中央银行数字货币系统发送交易结果给所述发送方商业银行数字货币系统,所述发送方商业银行数字货币系统将该交易结果转发给在线的发送方用户,同时,在线的发送方用户将该交易结果转发给离线的接收方用户;s45、离线的接收方用户接收消息并进行解密验证,同时确认交易结束,当验证成功则存储收到的数字货币。9.根据权利要求8所述的一种接收方离线的数字货币抗量子计算交易方法,其特征在于,所述s41中还包括在线的发送方用户利用基于所述商业银行数字货币系统对应密钥管理服务器的私钥对第五发送信息进行基于id密码学的数字签名,该数字签名具体包括以下步骤:选取第五随机数参数,并计算所述第五随机数参数与在线的所述用户的公钥之间的第五乘积,再利用预设函数作用于第五发送消息和所述第五乘积得到第五签名参数,并利用所述第五签名参数得到所述第五发送信息的第五签名。10.一种接收方离线的数字货币抗量子计算交易系统,用以实现权利要求1-9中任一项所述的基于id密码学的接收方离线的数字货币抗量子计算交易方法的步骤,其特征在于,该系统包括中央银行数字货币系统、商业银行数字货币系统和用户,所述中央银行数字货币系统与所述商业银行数字货币系统之间的身份认证、所述商业银行数字货币系统与所述用户之间的身份认证均基于id密码学的理论进行认证;其中,所述中央银行数字货币系统用于生产和发行数字货币,还用于对所述数字货币进行权属登记;所述商业银行数字货币系统用于针对数字货币执行银行功能;所述用户为所述数字货币的使用主体;所述中央银行数字货币系统和所述商业银行数字货币系统中均配置有相应的抗量子计算装置,所述抗量子计算装置中均部署有对应的基于id密码学的密钥管理服务器,且所述用户也配置有相应的抗量子计算装置。

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


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

    最新回复(0)