基于id密码学的数字货币双离线交易即时确认方法及系统
技术领域
1.本发明涉及数字货币领域,尤其涉及基于id密码学的数字货币双离线交易即时确认方法及系统。
背景技术:
2.中国人民银行(央行)的数字货币d-rmb体系的核心要素为一种币、两类库和三个中心。一种币,即“d-rmb”(dc/ep),简称d币,特指一串由央行签名的代表具体金额的加密数字串。两类库:分别是d-rmb的发行库和银行库(央行数字货币数据库、商业银行数字货币数据库)。数字货币在发行库中即表现为央行的数字货币基金;数字货币在银行库中即表现为商业银行的库存数字现金。三个中心:一是登记中心(记录货币产生、流通、清点核对及消亡全过程);另外两个是认证中心,即ca认证中心(基于pki体系,对机构和用户证书进行集中管理,如cfca)和ibc认证中心[即基于标识的密码技术建立的认证中心(identity-based cryptograph)]。在登记中心可设计两张表,一为数字货币权属登记表,记录数字货币的归属,另一张为交易流水表。
[0003]
d-rmb系统是一种分级式的体系,即由央行与各商业银行共建,央行数字货币系统是由央行或央行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其主要功能包括负责数字货币的发行与验证监测,商业银行数字货币系统是由商业银行或商业银行指定机构运行维护的用来处理关于数字货币的信息的计算机系统,其执行现有银行的有关货币的各种功能,即银行功能,主要包括从央行申请到数字货币后,负责直接面向社会,满足提供数字货币流通服务的各项需求。
[0004]
现有技术存在的问题:
[0005]
现有中国人民银行(央行)的数字货币双离线交易中,收款方对于收到的数字货币只能本地验证,无法通过网络得到中国人民银行的认证,导致收到的数字货币无法立即使用,只能在联网并通过网络得到中国人民银行的认证后才能使用;由于收到的数字货币无法得到中国人民银行的即时认证,因此存在一定的收款风险,即付款方付出了一笔双重支付(“双花”)的数字货币,导致该数字货币后续无法得到中国人民银行的认证,是无效收款。
技术实现要素:
[0006]
针对相关技术中的问题,本发明提出基于id密码学的数字货币双离线交易即时确认方法及系统,以克服现有相关技术所存在的上述技术问题。
[0007]
为此,本发明采用的具体技术方案如下:
[0008]
根据本发明的一个方面,提供了基于id密码学的数字货币双离线交易即时确认方法,该方法包括以下步骤:
[0009]
s1、使用密钥管理服务器分别为央行数字货币系统、商业银行数字货币系统和用户颁发公私钥;
[0010]
s2、利用身份认证方法实现商业银行数字货币系统与央行数字货币系统之间的身
份认证;
[0011]
s3、依据身份认证方法实现发款方用户与发款方商业银行数字货币系统之间的身份认证;
[0012]
s4、通过货币预交易方法实现发款方用户的数字货币预交易;
[0013]
s5、利用货币离线交易方法实现发款方用户与收款方用户之间的数字货币双离线交易;
[0014]
s6、通过货币回退方法实现发款方用户数字货币预交易的回退;
[0015]
其中,所述s1包括以下步骤:
[0016]
所述央行数字货币系统对应的密钥管理服务器为央行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,并根据该系统私钥计算得到对应的系统公钥;
[0017]
所述央行数字货币系统对应的密钥管理服务器为央行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将央行数字货币系统的id和该公私钥存储在央行数字货币系统本地;
[0018]
所述央行数字货币系统对应的密钥管理服务器为商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将用户的id和该公私钥存储在商业银行数字货币系统本地;
[0019]
所述商业银行数字货币系统对应的密钥管理服务器为商业银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,并根据该系统私钥计算得到对应的系统公钥;
[0020]
所述商业银行数字货币系统对应的密钥管理服务器为用户颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将用户的id和该公私钥存储于用户本地。
[0021]
进一步的,所述s2中利用身份认证方法实现商业银行数字货币系统与央行数字货币系统之间的身份认证包括以下步骤:所述商业银行数字货币系统获取央行数字货币系统的id,利用双方的id进行身份认证及会话密钥协商,并通过协商得到的会话密钥进行后续的保密通信。
[0022]
进一步的,所述身份认证及会话密钥协商包括以下步骤:所述商业银行数字货币系统与央行数字货币系统之间进行类似https的身份认证,形成会话密钥,其中用双方id代替https中的证书,用基于id密码学的理论对流程中的密钥进行加密。
[0023]
进一步的,所述s4中通过货币预交易方法实现发款方用户的数字货币预交易包括以下步骤:
[0024]
s41、所述发款方用户将发送方信息、接收方信息及数字货币组合得到交易,获取第一当前时间戳,并对交易及第一当前时间戳进行签名得到第一签名,同时生成第一签名文件并发送给发款方用户对应的发款方商业银行数字货币系统;
[0025]
s42、所述发款方商业银行数字货币系统接收第一签名文件,并确认第一时间戳,验证第一签名,验证成功则确认发款方用户的身份,同时对第一时间戳及交易进行签名得到第二签名,并生成第二签名文件发送给央行数字货币系统;
[0026]
s43、所述央行数字货币系统接收第二签名文件,并确认第一时间戳,验证第二签名,验证通过后对交易进行验证得到验证结果信息,并记录交易成功后数字货币的归属变化及交易方的余额变化,同时对第一时间戳、交易及验证结果信息进行签名得到第三签名,
并生成第三签名文件发送给收款方商业银行数字货币系统;
[0027]
s44、所述收款方商业银行数字货币系统接收第三签名文件,并确认第一时间戳,验证第三签名,验证通过后本地记录第一时间戳、交易及验证结果信息,并记录交易成功后数字货币的归属变化及交易方的余额变化,同时对第一时间戳、交易及验证结果信息进行签名得到第四签名,并发送给央行数字货币系统;
[0028]
s45、所述央行数字货币系统接收消息后得到第四签名并进行验证,验证通过后对第一时间戳、交易、验证结果信息及第四签名进行签名得到第五签名,并生成第四签名文件发给发款方商业银行数字货币系统;
[0029]
s46、所述发款方商业银行数字货币系统接收第四签名文件,并验证第五签名,验证通过后将第四签名文件作为预交易并进行签名得到第六签名,同时生成第五签名文件发送给发款方用户,且记录交易成功后数字货币的归属变化及交易方的余额变化;
[0030]
s47、所述发款方用户接收第五签名文件并验证第六签名,验证通过后对预交易进行确认并本地存储预交易。
[0031]
进一步的,所述发送方信息包括发送方id、钱包id、联系方式及硬件设备码,接收方信息包括接收方id、钱包id、联系方式及硬件设备码。
[0032]
进一步的,所述s42中基于id密码学数字签名的验证方法包括以下步骤:发款方商业银行数字货币系统根据发款方用户的id计算得到发款方用户的公钥,并利用该公钥及发款方商业银行数字货币系统的系统公钥对签名进行验证。
[0033]
进一步的,所述s5利用货币离线交易方法实现发款方用户与收款方用户之间的数字货币双离线交易包括以下步骤:
[0034]
s51、所述发款方用户通过近距离将预交易发送给收款方用户;
[0035]
s52、所述收款方用户接收预交易,并验证第五签名及第四签名,验证通过后对验证结果信息进行确认,当验证结果信息中包含的是交易成功且交易在有效期限内,则收款方用户从交易中取出数字货币并进行存储,完成双离线交易,且该数字货币可以即时使用。
[0036]
进一步的,所述s6中通过货币回退方法实现发款方用户数字货币预交易的回退包括以下步骤:
[0037]
s61、所述发款方用户发起预交易的回退申请,获取第二当前时间戳,并对第二时间戳及预交易进行签名得到第七签名,同时生成第六签名文件发送给发款方商业银行数字货币系统;
[0038]
s62、所述发款方商业银行数字货币系统接收第六签名文件,并确认第二时间戳,验证第七签名,验证通过后对第二时间戳及预交易进行签名得到第八签名,同时生成第七签名文件发送给央行数字货币系统;
[0039]
s63、所述央行数字货币系统接收第七签名文件,并确认第二时间戳,验证第八签名,验证通过后对预交易进行回退,且记录预交易进行回退后数字货币的归属变化及交易方的余额变化,同时对第二时间戳、预交易及回退成功信息进行签名得到第九签名,并生成第八签名文件发送给收款方商业银行数字货币系统;
[0040]
s64、所述收款方商业银行数字货币系统接收第八签名文件,并确认第二时间戳,验证第九签名,验证通过后,对比收到的预交易和之前存储的交易,若确认是同一件交易相关,则删除之前在本地保存的记录,并记录预交易进行回退后数字货币的归属变化及交易
方的余额变化,同时对第二时间戳、预交易及回退成功信息进行签名得到第十签名并发送给央行数字货币系统;
[0041]
s65、所述央行数字货币系统接收第十签名并进行验证,验证通过后对第二时间戳、预交易及回退成功信息进行签名得到第十一签名,并生成第十签名文件发送给发款方商业银行数字货币系统;
[0042]
s66、所述发款方商业银行数字货币系统接收第十签名文件,并验证第十一签名,验证通过后将预交易进行回退,并对回退成功信息进行签名得到第十二签名,同时将回退成功信息及第十二签名发送给发款方用户,发款方用户记录预交易进行回退后数字货币的归属变化及交易方的余额变化;
[0043]
s67、所述发款方用户接收消息得到回退成功信息及第十二签名,并验证第十二签名,验证通过后,查看回退成功信息,确认预交易回退完成。
[0044]
进一步的,所述s61中放弃预交易的原因包括但不限于预交易的有效期限结束及主动放弃与收款方用户的交易。
[0045]
根据本发明的另一个方面,提供了基于id密码学的数字货币双离线交易即时确认系统,该系统包括央行数字货币系统、商业银行数字货币系统及用户,央行数字货币系统及商业银行数字货币系统均部署有基于id密码学的密钥管理服务器,且央行数字货币系统与商业银行数字货币系统进行身份认证、商业银行数字货币系统与用户进行身份认证都是基于id密码学的理论;
[0046]
其中,央行数字货币系统用于产生和发行数字货币,以及对数字货币进行权属登记;商业银行数字货币系统用于针对数字货币执行银行功能,且商业银行数字货币系统包括发款方商业银行数字货币系统和收款方商业银行数字货币系统;用户则是数字货币使用的主体,且用户包括发款方用户和收款方用户。
[0047]
本发明的有益效果为:本发明针对双离线交易场景下,收款方对于收到的数字货币的有效性的担忧,设计了一种数字货币双离线交易即时确认方法;该方法通过发款方在网络有线状态下进行数字货币预交易,形成了一笔可靠的得到央行认可的未完成交易;在双离线交易场景下,将该未完成交易发送给收款方,由于收款方可以验证央行的签名,因此可以即时确认该交易,从而对交易中收到的数字货币验证通过,因此解决了双离线交易中收款方对于收到的数字货币无法立即使用的问题,同时去除了收款方收到无效收款的可能性。
附图说明
[0048]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0049]
图1是根据本发明实施例的基于id密码学的数字货币双离线交易即时确认方法的流程图;
[0050]
图2是根据本发明实施例的基于id密码学的数字货币双离线交易即时确认方法中用户进行预交易和进行预交易回退的流程图;
[0051]
图3是根据本发明实施例的基于id密码学的数字货币双离线交易即时确认系统的基本结构图。
具体实施方式
[0052]
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
[0053]
根据本发明的实施例,提供了基于id密码学的数字货币双离线交易即时确认方法及系统。
[0054]
现结合附图和具体实施方式对本发明进一步说明,如图1-2所示,根据本发明的一个实施例,提供了基于id密码学的数字货币双离线交易即时确认方法,该方法包括以下步骤:
[0055]
s1、使用密钥管理服务器分别为央行数字货币系统、商业银行数字货币系统和用户颁发公私钥;
[0056]
其中,所述s1包括以下步骤:
[0057]
随机地取sk
ms
∈z
p*
作为央行数字货币系统(s)的系统私钥,并计算央行数字货币系统的系统公钥pk
ms
=sk
ms
*p。
[0058]
kms(央行数字货币系统对应的密钥管理服务器)为s颁发公私钥时,调用哈希函数h1计算公钥pks=h1(ids),再根据公钥pks计算私钥sks=sk
ms
*pks,将s的id和公私钥即ids、pks、sks存储在央行本地。kms为a(收款方商业银行数字货币系统)颁发公私钥时,调用哈希函数h1计算公钥pka=h1(ida),再根据公钥pka计算私钥ska=sk
ms
*pka,将a的id和公私钥即ida、pka、ska存储商业银行a本地。kms为其他商业银行比如b、c...颁发公私钥的过程与此类似。
[0059]
kmsa(商业银行数字货币系统对应的密钥管理服务器)随机地取sk
msa
∈z
p*
作为商业银行数字货币系统a的系统私钥,并计算商业银行数字货币系统a的系统公钥pk
msa
=sk
msa
*p。
[0060]
kmsa为用户a1(收款方用户)颁发公私钥时,调用哈希函数h1计算公钥pk
a1
=h1(id
a1
),再根据公钥pk
a1
计算私钥sk
a1
=sk
msa
*pk
a1
,将a1的id和公私钥即id
a1
、pk
a1
、sk
a1
存储于a1本地。kmsa为其他用户比如a1、a2...颁发公私钥的过程与此类似。其他密钥管理服务器kmsb、kmsc...等为各自所属用户颁发公私钥的方法与此类似。
[0061]
s2、商业银行数字货币系统a/b与央行数字货币系统s进行身份认证(利用身份认证方法实现商业银行数字货币系统与央行数字货币系统之间的身份认证);
[0062]
其中,所述s2包括以下步骤:
[0063]
a/b(收款方商业银行数字货币系统/发款方商业银行数字货币系统)获取央行数字货币系统的id,用双方id进行身份认证及会话密钥协商。例如进行类似https的身份认证,形成会话密钥,其中用双方id代替https中的证书,用基于id密码学的理论对流程中的密钥进行加密。后续通信均用会话密钥进行保密通信。
[0064]
s3、用户b1与商业银行数字货币系统b进行身份认证(依据身份认证方法实现发款
方用户与发款方商业银行数字货币系统之间的身份认证);
[0065]
具体的,所述s3的身份认证方法如步骤s2,用双方id进行身份认证及会话密钥协商。后续通信均用会话密钥进行保密通信。
[0066]
s4、用户b1进行数字货币预交易(通过货币预交易方法实现发款方用户的数字货币预交易);
[0067]
其中,所述s4包括以下步骤:
[0068]
s41、b1签名得到签名文件
[0069]
b1将发送方信息、接收方信息和数字货币等交易信息组合起来称为交易tx,其中发送方信息包括发送方id、钱包id、联系方式和硬件设备码等,接收方信息包括接收方id、钱包id、联系方式和硬件设备码等,并且由于接收方是离线成员,接收方信息需要由发送方到银行柜台取得或者通过接收方本人提供得到。b1取当前时间戳t1(第一当前时间戳),并使用己方私钥sk
b1
对t1||tx作基于id密码学的数字签名得到sig
b1
(第一签名)。
[0070]
b1将消息t1||tx||id
b1
||sig
b1
(第一签名文件)发送给b。
[0071]
s42、b收到签名文件
[0072]
b收到消息后得到t1||tx||id
b1
||sig
b1
,对时间戳t1进行确认。确认后,基于id密码学数字签名验证方法,b根据id
b1
计算得到pk
b1
=h1(id
b1
),用pk
b1
和pk
msb
来验证签名。如果验证成功,则b可以确认发送者b1的身份。
[0073]
b按照3.1中签名的方法使用己方私钥skb对t1||tx作基于id密码学的数字签名得到sigb(第二签名),接着将消息t1||tx||idb||sigb(第二签名文件)发送给s。
[0074]
s43、s收到签名文件
[0075]
s收到消息后得到t1||tx||idb||sigb,对时间戳t1进行确认。确认后,s按照3.2中验证签名的方法对sigb进行验证。验证通过后,s对交易tx进行验证,将验证结果记为ret(验证结果信息),同时ret中还可以包含本次预交易的有效期限。s记录交易成功后数字货币的归属变化及交易方的余额变化。
[0076]
s按照3.1中签名的方法使用己方私钥sks对t1||tx||ret作基于id密码学的数字签名得到sigs(第三签名),并将t1||tx||ret||sigs(第三签名文件)发送给a。
[0077]
s44、a收到签名文件
[0078]
a收到消息后得到t1||tx||ret||sigs,对时间戳t1进行确认。确认后,a按照3.2中验证签名的方法对sigs进行验证。验证通过后,a记录t1||tx||ret在本地。a记录交易成功后数字货币的归属变化及交易方的余额变化。
[0079]
a按照3.1中签名的方法使用己方私钥ska对t1||tx||ret作基于id密码学的数字签名得到siga(第四签名),并将siga发送给s。
[0080]
s45、s收到签名文件
[0081]
s收到消息后得到siga。s按照3.2中验证签名的方法对siga进行验证。验证通过后,s按照3.1中签名的方法使用己方私钥sks对t1||tx||ret||siga作基于id密码学的数字签名得到sig
s-2
(第五签名),并将t1||tx||ret||siga||sig
s-2
(第四签名文件)发送给b。
[0082]
s46、b收到签名文件
[0083]
b收到消息后得到t1||tx||ret||siga||sig
s-2
。b按照3.2中验证签名的方法对sig
s-2
进行验证。验证通过后,b将t1||tx||ret||siga||sig
s-2
作为未完成交易(即预交易)
utx,并按照3.1中签名的方法使用己方私钥skb对utx作基于id密码学的数字签名得到sig
b-2
(第六签名),随即将utx||sig
b-2
(第五签名文件)发送给b1。b记录交易成功后数字货币的归属变化及交易方的余额变化。
[0084]
s47、b1收到签名文件
[0085]
b1收到消息后得到utx||sig
b-2
。b1按照3.2中验证签名的方法对sig
b-2
进行验证。验证通过后,对未完成交易utx进行确认,然后将utx存储在本地。
[0086]
s5、用户b1与用户a1进行数字货币双离线交易(利用货币离线交易方法实现发款方用户与收款方用户之间的数字货币双离线交易);
[0087]
其中,所述s5包括以下步骤:
[0088]
s51、b1发送交易
[0089]
b1将未完成交易utx近距离发送给a1。
[0090]
s52、a1收到交易
[0091]
a1收到utx即t1||tx||ret||siga||sig
s-2
。a1按照3.2中验证签名的方法对sig
s-2
和siga进行验证。验证通过后,对ret进行确认,如果ret中包含的是交易成功且交易在有效期限内,则a1从tx中取出数字货币并进行存储,交易完成。由于此处a1已经获取到了央行、商业银行a对交易的认可签名,因此该双离线交易可以即时完成,无需继续上网与央行、商业银行a进行确认,同时a1对收到的数字货币可以即时使用。
[0092]
s6、用户b1进行数字货币预交易的回退(通过货币回退方法实现发款方用户数字货币预交易的回退);
[0093]
其中,所述s6包括以下步骤:
[0094]
s61、b1发送签名文件给b
[0095]
可能存在b1与a1进行数字货币交易前,因为种种原因放弃预交易,放弃原因可选为:预交易的有效期限结束、主动放弃与收款方a1的交易等,因此b1需要主动发起预交易的回退申请。
[0096]
则获取当前时间戳t2,按照3.1中签名的方法使用己方私钥sk
b1
对t2||utx作基于id密码学的数字签名得到sig
b1-2
(第七签名),并将消息t2||utx||id
b1
||sig
b1-2
(第六签名文件)发送给b。
[0097]
s62、b收到签名文件
[0098]
b收到消息后得到t2||utx||id
b1
||sig
b1-2
,对时间戳t2进行确认。确认后,按照3.2中验证签名的方法对sig
b1-2
进行验证。验证通过后,对t2||utx作基于id密码学的数字签名得到sig
b-3
(第八签名),接着将消息t2||utx||idb||sig
b-3
(第七签名文件)发送给s。
[0099]
s63、s收到签名文件
[0100]
s收到消息后得到t2||utx||idb||sig
b-3
,对时间戳t2进行确认。确认后,s按照3.2中验证签名的方法对sig
b-3
进行验证。验证通过后,s对未完成交易utx进行回退,将回退成功的结果记为ret2(回退成功信息)。s记录utx进行回退后数字货币的归属变化及交易方的余额变化。
[0101]
s对t2||utx||ret2作基于id密码学的数字签名得到sig
s-3
(第九签名),并将t2||utx||ret2||sig
s-3
(第八签名文件)发送给a。
[0102]
s64、a收到签名文件
[0103]
a收到消息后得到t2||utx||ret2||sig
s-3
,对时间戳t2进行确认。确认后,a按照3.2中验证签名的方法对sig
s-3
进行验证。验证通过后,a对比收到的未完成交易utx和之前存储的交易tx,如果确认是同一件交易相关,则删除之前在本地保存的记录t1||tx||ret。a记录utx进行回退后数字货币的归属变化及交易方的余额变化。
[0104]
a对t2||utx||ret2作基于id密码学的数字签名得到sig
a-2
(第十签名),并将sig
a-2
发送给s。
[0105]
s65、s收到签名文件
[0106]
s收到消息后得到sig
a-2
。s按照3.2中验证签名的方法对sig
a-2
进行验证。验证通过后,s按照3.1中签名的方法使用己方私钥sks对t2||utx||ret2作基于id密码学的数字签名得到sig
s-4
(第十一签名),并将t2||utx||ret2||sig
s-4
(第十签名文件)发送给b。
[0107]
s66、b收到签名文件
[0108]
b收到消息后得到t2||utx||ret2||sig
s-4
。b按照3.2中验证签名的方法对sig
s-4
进行验证。验证通过后,b确认将未完成交易utx进行回退,并对ret2作基于id密码学的数字签名得到sig
b-4
,随即将ret2||sig
b-4
发送给b1。b记录utx进行回退后数字货币的归属变化及交易方的余额变化。
[0109]
s67、b1收到签名文件
[0110]
b1收到消息后得到ret2||sig
b-4
。b1按照3.2中验证签名的方法对sig
b-4
进行验证。验证通过后,b1查看ret2,确认未完成交易utx回退完成。
[0111]
根据本发明的另一个方面,如图3所示,提供了基于id密码学的数字货币双离线交易即时确认系统,该系统包括央行数字货币系统、商业银行数字货币系统(在实际中可以是多个商业银行数字货币系统)和用户,其中央行数字货币系统与商业银行数字货币系统进行身份认证、商业银行数字货币系统与用户进行身份认证都是基于id密码学的理论。央行数字货币系统用于产生和发行数字货币,以及对数字货币进行权属登记;商业银行数字货币系统用于针对数字货币执行银行功能;用户则是数字货币使用的主体。
[0112]
假设央行数字货币系统的id为s,其部署有基于id密码学的密钥管理服务器kms;商业银行数字货币系统的id为a、b、c...,各自部署有基于id密码学的密钥管理服务器kmsa、kmsb、kmsc...;商业银行数字货币系统a包括用户a1、a2、a3...,商业银行数字货币系统b包括用户b1、b2、b3...,商业银行数字货币系统c包括用户c1、c2、c3...。
[0113]
kms为某个成员颁发公私钥时,首先需要建立一套基于id密钥学的系统参数,步骤如下:
[0114]
(1)g1,g2是阶为q的gdh(diffie-hellman群)群,q是一个大素数,g1是由椭圆曲线上的点构成的加法循环群,p是群g1的生成元;g2是一个乘法循环群;双线性映射e:g1×
g1→
g2。
[0115]
(2)随机地取sk
ms
∈z
p*
作为央行数字货币系统的系统私钥,并计算央行数字货币系统的系统公钥pk
ms
=sk
ms
*p。
[0116]
(3)kms为s颁发公私钥时,调用哈希函数h1计算公钥pks=h1(ids),再根据公钥pks计算私钥sks=sk
ms
*pks,将s的id和公私钥即ids、pks、sks存储在央行本地。kms为a颁发公私钥时,调用哈希函数h1计算公钥pka=h1(ida),再根据公钥pka计算私钥ska=sk
ms
*pka,将a的id和公私钥即ida、pka、ska存储商业银行a本地。kms为其他商业银行比如b、c...颁发公私钥
的过程与此类似。
[0117]
(4)kmsa随机地取sk
msa
∈z
p*
作为商业银行数字货币系统a的系统私钥,并计算商业银行数字货币系统a的系统公钥pk
msa
=sk
msa
*p。
[0118]
(5)kmsa为用户a1颁发公私钥时,调用哈希函数h1计算公钥pk
a1
=h1(id
a1
),再根据公钥pk
a1
计算私钥sk
a1
=sk
msa
*pk
a1
,将a1的id和公私钥即id
a1
、pk
a1
、sk
a1
存储于a1本地。kmsa为其他用户比如a1、a2...颁发公私钥的过程与此类似。其他密钥管理服务器kmsb、kmsc...等为各自所属用户颁发公私钥的方法与此类似。
[0119]
综上所述,借助于本发明的上述技术方案,本发明针对双离线交易场景下,收款方对于收到的数字货币的有效性的担忧,设计了一种数字货币双离线交易即时确认方法;该方法通过发款方在网络有线状态下进行数字货币预交易,形成了一笔可靠的得到央行认可的未完成交易;在双离线交易场景下,将该未完成交易发送给收款方,由于收款方可以验证央行的签名,因此可以即时确认该交易,从而对交易中收到的数字货币验证通过,因此解决了双离线交易中收款方对于收到的数字货币无法立即使用的问题,同时去除了收款方收到无效收款的可能性。
[0120]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0121]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
技术特征:
1.基于id密码学的数字货币双离线交易即时确认方法,其特征在于,该方法包括以下步骤:s1、使用密钥管理服务器分别为央行数字货币系统、商业银行数字货币系统和用户颁发公私钥;s2、利用身份认证方法实现商业银行数字货币系统与央行数字货币系统之间的身份认证;s3、依据身份认证方法实现发款方用户与发款方商业银行数字货币系统之间的身份认证;s4、通过货币预交易方法实现发款方用户的数字货币预交易;s5、利用货币离线交易方法实现发款方用户与收款方用户之间的数字货币双离线交易;s6、通过货币回退方法实现发款方用户数字货币预交易的回退;其中,所述s1包括以下步骤:所述央行数字货币系统对应的密钥管理服务器为央行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,并根据该系统私钥计算得到对应的系统公钥;所述央行数字货币系统对应的密钥管理服务器为央行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将央行数字货币系统的id和该公私钥存储在央行数字货币系统本地;所述央行数字货币系统对应的密钥管理服务器为商业银行数字货币系统颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将用户的id和该公私钥存储在商业银行数字货币系统本地;所述商业银行数字货币系统对应的密钥管理服务器为商业银行数字货币系统颁发系统公私钥时,取随机数作为系统私钥,并根据该系统私钥计算得到对应的系统公钥;所述商业银行数字货币系统对应的密钥管理服务器为用户颁发公私钥时,调用哈希函数计算得到公钥,根据该公钥计算得到对应的私钥,并将用户的id和该公私钥存储于用户本地。2.根据权利要求1所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s2中利用身份认证方法实现商业银行数字货币系统与央行数字货币系统之间的身份认证包括以下步骤:所述商业银行数字货币系统获取央行数字货币系统的id,利用双方的id进行身份认证及会话密钥协商,并通过协商得到的会话密钥进行后续的保密通信。3.根据权利要求2所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述身份认证及会话密钥协商包括以下步骤:所述商业银行数字货币系统与央行数字货币系统之间进行类似https的身份认证,形成会话密钥,其中用双方id代替https中的证书,用基于id密码学的理论对流程中的密钥进行加密。4.根据权利要求1所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s4中通过货币预交易方法实现发款方用户的数字货币预交易包括以下步骤:s41、所述发款方用户将发送方信息、接收方信息及数字货币组合得到交易,获取第一当前时间戳,并对交易及第一当前时间戳进行签名得到第一签名,同时生成第一签名文件并发送给发款方用户对应的发款方商业银行数字货币系统;
s42、所述发款方商业银行数字货币系统接收第一签名文件,并确认第一时间戳,验证第一签名,验证成功则确认发款方用户的身份,同时对第一时间戳及交易进行签名得到第二签名,并生成第二签名文件发送给央行数字货币系统;s43、所述央行数字货币系统接收第二签名文件,并确认第一时间戳,验证第二签名,验证通过后对交易进行验证得到验证结果信息,并记录交易成功后数字货币的归属变化及交易方的余额变化,同时对第一时间戳、交易及验证结果信息进行签名得到第三签名,并生成第三签名文件发送给收款方商业银行数字货币系统;s44、所述收款方商业银行数字货币系统接收第三签名文件,并确认第一时间戳,验证第三签名,验证通过后本地记录第一时间戳、交易及验证结果信息,并记录交易成功后数字货币的归属变化及交易方的余额变化,同时对第一时间戳、交易及验证结果信息进行签名得到第四签名,并发送给央行数字货币系统;s45、所述央行数字货币系统接收消息后得到第四签名并进行验证,验证通过后对第一时间戳、交易、验证结果信息及第四签名进行签名得到第五签名,并生成第四签名文件发给发款方商业银行数字货币系统;s46、所述发款方商业银行数字货币系统接收第四签名文件,并验证第五签名,验证通过后将第四签名文件作为预交易并进行签名得到第六签名,同时生成第五签名文件发送给发款方用户,且记录交易成功后数字货币的归属变化及交易方的余额变化;s47、所述发款方用户接收第五签名文件并验证第六签名,验证通过后对预交易进行确认并本地存储预交易。5.根据权利要求4所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述发送方信息包括发送方id、钱包id、联系方式及硬件设备码,接收方信息包括接收方id、钱包id、联系方式及硬件设备码。6.根据权利要求4所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s42中基于id密码学数字签名的验证方法包括以下步骤:发款方商业银行数字货币系统根据发款方用户的id计算得到发款方用户的公钥,并利用该公钥及发款方商业银行数字货币系统的系统公钥对签名进行验证。7.根据权利要求1所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s5利用货币离线交易方法实现发款方用户与收款方用户之间的数字货币双离线交易包括以下步骤:s51、所述发款方用户通过近距离将预交易发送给收款方用户;s52、所述收款方用户接收预交易,并验证第五签名及第四签名,验证通过后对验证结果信息进行确认,当验证结果信息中包含的是交易成功且交易在有效期限内,则收款方用户从交易中取出数字货币并进行存储,完成双离线交易,且该数字货币可以即时使用。8.根据权利要求1所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s6中通过货币回退方法实现发款方用户数字货币预交易的回退包括以下步骤:s61、所述发款方用户发起预交易的回退申请,获取第二当前时间戳,并对第二时间戳及预交易进行签名得到第七签名,同时生成第六签名文件发送给发款方商业银行数字货币系统;s62、所述发款方商业银行数字货币系统接收第六签名文件,并确认第二时间戳,验证
第七签名,验证通过后对第二时间戳及预交易进行签名得到第八签名,同时生成第七签名文件发送给央行数字货币系统;s63、所述央行数字货币系统接收第七签名文件,并确认第二时间戳,验证第八签名,验证通过后对预交易进行回退,且记录预交易进行回退后数字货币的归属变化及交易方的余额变化,同时对第二时间戳、预交易及回退成功信息进行签名得到第九签名,并生成第八签名文件发送给收款方商业银行数字货币系统;s64、所述收款方商业银行数字货币系统接收第八签名文件,并确认第二时间戳,验证第九签名,验证通过后,对比收到的预交易和之前存储的交易,若确认是同一件交易相关,则删除之前在本地保存的记录,并记录预交易进行回退后数字货币的归属变化及交易方的余额变化,同时对第二时间戳、预交易及回退成功信息进行签名得到第十签名并发送给央行数字货币系统;s65、所述央行数字货币系统接收第十签名并进行验证,验证通过后对第二时间戳、预交易及回退成功信息进行签名得到第十一签名,并生成第十签名文件发送给发款方商业银行数字货币系统;s66、所述发款方商业银行数字货币系统接收第十签名文件,并验证第十一签名,验证通过后将预交易进行回退,并对回退成功信息进行签名得到第十二签名,同时将回退成功信息及第十二签名发送给发款方用户,发款方用户记录预交易进行回退后数字货币的归属变化及交易方的余额变化;s67、所述发款方用户接收消息得到回退成功信息及第十二签名,并验证第十二签名,验证通过后,查看回退成功信息,确认预交易回退完成。9.根据权利要求8所述的基于id密码学的数字货币双离线交易即时确认方法,其特征在于,所述s61中放弃预交易的原因包括但不限于预交易的有效期限结束及主动放弃与收款方用户的交易。10.基于id密码学的数字货币双离线交易即时确认系统,用以实现权利要求1-9中任一项所述的基于id密码学的数字货币双离线交易即时确认方法的步骤,其特征在于,该系统包括央行数字货币系统、商业银行数字货币系统及用户,央行数字货币系统及商业银行数字货币系统均部署有基于id密码学的密钥管理服务器,且央行数字货币系统与商业银行数字货币系统进行身份认证、商业银行数字货币系统与用户进行身份认证都是基于id密码学的理论;其中,央行数字货币系统用于产生和发行数字货币,以及对数字货币进行权属登记;商业银行数字货币系统用于针对数字货币执行银行功能,且商业银行数字货币系统包括发款方商业银行数字货币系统和收款方商业银行数字货币系统;用户则是数字货币使用的主体,且用户包括发款方用户和收款方用户。
技术总结
本发明公开了基于ID密码学的数字货币双离线交易即时确认方法及系统,该方法包括以下步骤:S1、使用密钥管理服务器分别为央行数字货币系统、商业银行数字货币系统和用户颁发公私钥;S2、实现商业银行数字货币系统与央行数字货币系统之间的身份认证;S3、实现发款方用户与发款方商业银行数字货币系统之间的身份认证;S4、实现发款方用户的数字货币预交易;S5、实现发款方用户与收款方用户之间的数字货币双离线交易;S6、实现发款方用户数字货币预交易的回退。有益效果:本发明解决了双离线交易中收款方对于收到的数字货币无法立即使用的问题,同时去除了收款方收到无效收款的可能性。性。性。
技术研发人员:富尧 钟一民 汪仲祥
受保护的技术使用者:南京如般量子科技有限公司
技术研发日:2020.11.23
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-17901.html