首页 / 专利库 / 银行与财务事项 / 货币 / 数字货币 / 加密货币 / 比特币 / 基于组合公钥的密码学货币地址在线生成方法

基于组合公钥的密码学货币地址在线生成方法

阅读:1023发布:2020-06-02

专利汇可以提供基于组合公钥的密码学货币地址在线生成方法专利检索,专利查询,专利分析的服务。并且本 发明 公布了一种 密码学 货币 地址的在线生成方法,包括系统初始化过程、地址生成过程和支付签名过程;在系统初始化过程中,钱包生成了一个私钥和一个固定大小的公钥矩阵,私钥保存在私钥存储区中,公钥矩阵保存在钱包的在线存储区中;在地址生成过程中,每当钱包接收付款时,钱包通过唯一交易编号从公钥矩阵中导出对应的唯一地址,在这个过程中无需 访问 私钥存储;在支付签名过程中,钱包通过唯一交易编号生成对应的私钥,通过该私钥生成签名以完成支付。密码学货币为 比特币 、莱特币或以太坊等。利用本发明方法,可以快速生成交易地址,无需直接访问私钥,大大减小钱包对私钥和地址管理的开销。,下面是基于组合公钥的密码学货币地址在线生成方法专利的具体信息内容。

1.一种密码学货币地址的在线生成方法,包括系统初始化过程、地址生成过程和支付签名过程;
在系统初始化过程中,钱包生成了一个私钥和一个固定大小的公钥矩阵,所述私钥保存在私钥存储区中,所述公钥矩阵保存在钱包的在线存储区中;通过所述系统初始化过程准备后续交易中用到的相关参数,并完成相关参数的存储;所述参数包括密码哈希算法族、密码哈希函数、主密钥和公钥矩阵;所述系统初始化过程首先选择密码哈希算法族 和密码哈希函数HT,然后随机生成主密钥s存储在私钥存储区,最后生成公钥矩阵 并在线存储;
在地址生成过程中,每当钱包接收付款时,钱包通过唯一交易编号从所述公钥矩阵中导出对应的唯一地址,在这个过程中无需访问私钥存储;所述地址生成过程为完全在线进行,无需访问私钥存储区,具体包括如下步骤:
21)将当前的交易赋予一个唯一交易编号t,t的值是任意的比特串;
22)通过哈希函数HT()将所述唯一交易编号t映射为向量,表示为式4:
{a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k          (式4)
23)将向量的值作索引,从所述公钥矩阵的每一行选择一个元素,选出椭圆曲线点作为椭圆曲线密码中的公钥,并通过椭圆曲线上点的加法操作对所述椭圆曲线密码中的公钥求和,得到一个新的椭圆曲线点Qt,表示为式5:
椭圆曲线点Qt为公钥矩阵中公钥的线性组合,是一个合法的椭圆曲线密码,是组合公钥的结果;
24)通过哈希函数HA()将获得的新公钥Qt映射为地址At,表示为式6:
At←HT(Qt)                  (式6)
25)将新生成的地址At返回给用户作为收款地址;
在支付签名过程中,钱包通过所述唯一交易编号生成对应的私钥,通过该私钥生成签名以完成支付。
2.如权利要求1所述在线生成方法,其特征是,所述系统初始化过程具体包括如下步骤:
11)选择一个整数作为参数k的取值;
12)选择密码哈希算法族 包含k2个密码哈希算法,所述k2个密码哈希算法的定义域和值域相同,均为由素数p定义的有限域Fp,具体为式1:
13)选择密码哈希函数HT,所述密码哈希函数HT的输入为任意长度的比特串,输出为由k个整数构成的向量,向量中的每个元素值的范围为[1,k],表示为式2:
HT:{0,1}*→{a1,a2,…,ak},ai∈[1,k]         (式2)
14)随机生成椭圆曲线密码的私钥s,作为用户的主密钥;s∈[1,p-1];
15)生成k×k的公钥矩阵 表示为式3:
矩阵 中的元素为主密钥经过哈希函数Hi,j映射后的结果和椭圆曲线点群生成元进行标量乘法的结果;
16)将s作为用户的主密钥存储在私钥存储区,公钥矩阵 由钱包在线存储。
3.如权利要求1所述在线生成方法,其特征是,所述支付签名过程用地址关联的私钥生成数字签名,具体包括如下步骤:
31)设定用户获得收款的交易编号为t;
32)访问私钥存储区读取主密钥s;
33)通过哈希函数Ht将交易编号t映射为向量,表示为式7:
{a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k      (式7)
34)通过式8生成私钥dt:
35)用私钥dt完成对付款交易信息做数字签名,完成付款。
4.如权利要求1所述在线生成方法,其特征是,所述密码学货币为比特币、莱特币或以太坊。

说明书全文

基于组合公钥的密码学货币地址在线生成方法

技术领域

[0001] 本发明涉及密码学货币领域,尤其涉及一种基于组合公钥的密码学货币地址在线生成方法。

背景技术

[0002] 比特币等基于链技术的密码学货币的用户客户端被称为钱包(Wallet),钱包作为客户端既可以是应用程序,也可以是硬件。用户通过钱包建立并管理自己的账户,并通过钱包在密码学货币网络中进行交易。交易主要包括将自己账户的余额转账给其他用户,或接收来自于其他用户的付款。
[0003] 用户在交易之前需要首先通过钱包生成基于公钥密码的个人账户。比特币及比特币的衍生密码学货币普遍采用椭圆曲线密码作为构建账户的公钥密码算法。用户通过钱包生成椭圆曲线公私钥对,其中私钥被保存在钱包的私钥存储区中,公钥的哈希值作为用户的公开账号公布给付款方,在密码学货币中将用户公钥的哈希值称为地址(Address),即用户用于收款的账户地址。用户仅在向其他用户付款的时候才需要访问自己的私钥,用于为交易生成数字签名。用户在收款的时候不需要使用自己的私钥,仅需要向付款方提供自己的地址即可。
[0004] 由于密码学货币中地址由用户个人生成,因此不同于传统行系统中每个用户通常仅有少量账户,密码学货币中用户可以生成任意数量的地址(以及对应的私钥)。出于保护用户隐私的目的,密码学货币在实践中也鼓励用户为每一次收款生成一个新的地址,避免攻击者从公开的区块链数据中将多笔交易关联至一个同一个用户,以及分析同一个地址的多次交易情况及总的账户余额。
[0005] 在一些典型场景中用户需要频繁地接收来自其他用户的付款。例如,通过密码学货币接受付款的网店商户,在每一单交易中都需要接收来自用户的付款。如果为了保护其自身隐私,商户需要为每一单交易生成一个不同的地址,保存并管理这些地址及对应的私钥,那么当交易非常频繁、交易数量非常多时,由于地址和私钥的数量与交易的数量成线性关系,对私钥和地址的管理就给钱包系统带来巨大的存储和管理开销。
[0006] 通常地,钱包每当生成新的地址时,都需要将对应的私钥保存至私钥存储区,而访问私钥存储区的过程会给私钥带来巨大的安全险。为了避免频繁访问私钥存储区,目前的钱包通常采用批量批量地生成地址的策略,即一次性生成多个地址及对应的私钥,并一次性地将这批私钥保存在私钥存储区,从而降低对私钥存储区的访问频率。例如比特币钱包在默认配置下每次生成100个私钥及对应的地址,用户可以选择将私钥保存在离线的存储器上,如闪存盘、专用硬件设备,或者打印在纸张上,离线保存。而批量生成的地址在钱包客户端中在线保存。当这批地址使用完毕后,钱包再次批量生成私钥和地址并访问离线存储用于保存私钥。这种策略虽然一定程度上降低了私钥存储区的访问频率,但是仍然要定期地访问私钥存储区,私钥存储区的访问数量和存储开销仍然和交易量成线性关系,并没有降低地址和私钥的存储开销和管理开销。

发明内容

[0007] 为了克服上述现有技术的不足,本发明提供一种基于组合公钥的密码学货币地址在线生成方法,无需访问私钥,而使用公钥矩阵快速生成新的公钥,从而生成收款地址。
[0008] 本发明的原理是:基于区块链技术的密码学货币的用户客户端被称为钱包(Wallet),钱包作为客户端既可以是应用程序,也可以是硬件。用户通过钱包建立并管理自己的账户,并通过钱包在密码学货币网络中进行交易。本发明具体实施中以比特币为例,针对基于区块链技术的密码学货币,提供基于组合公钥的地址在线生成方法,具体针对用户客户端(钱包),在钱包初始化的过程中,钱包会生成一个私钥和一个固定大小的公钥矩阵,利用组合公钥的特性,在不妨问私钥的情况下,使用公钥矩阵可以快速生成新的公钥,从而生成收款地址,在此过程中无需访问私钥。由于钱包需要生成收款的地址,本发明方法用于基于区块链技术的密码学货币(如比特币)的钱包中,能够在线快速地生成密码学货币地址,降低钱包对私钥和地址管理的开销。
[0009] 本发明提供的技术方案是:
[0010] 一种基于组合公钥的密码学货币地址在线生成方法,包括系统初始化过程、地址生成过程和支付签名过程;在系统初始化过程中,钱包生成了一个私钥和一个固定大小的公钥矩阵,所述私钥保存在私钥存储区中,所述公钥矩阵保存在钱包的在线存储区中;在地址生成过程中,每当钱包接收付款时,钱包通过唯一交易编号从所述公钥矩阵中导出对应的唯一地址,在这个过程中无需访问私钥存储;在支付签名过程中,钱包通过所述唯一交易编号生成对应的私钥,通过该私钥生成签名以完成支付。
[0011] 针对上述密码学货币地址的在线生成方法,进一步地,通过所述系统初始化过程准备后续交易中用到的相关参数,并完成相关参数的存储;所述参数包括密码哈希算法族、密码哈希函数、主密钥和公钥矩阵;所述系统初始化过程首先选择密码哈希算法族 和密码哈希函数HT,然后随机生成主密钥s存储在私钥存储区,最后生成公钥矩阵 并在线存储。
[0012] 针对上述密码学货币地址的在线生成方法,更进一步地,所述系统初始化过程具体包括如下步骤:
[0013] 11)选择一个整数作为参数k的取值;
[0014] 12)选择密码哈希算法族 包含k2个密码哈希算法,所述k2个密码哈希算法的定义域和值域相同,均为由素数p定义的有限域Fp,具体为式1:
[0015]
[0016] 13)选择密码哈希函数HT,所述密码哈希函数HT的输入为任意长度的比特串,输出为由k个整数构成的向量,向量中的每个元素值的范围为[1,k],表示为式2:
[0017] HT∶{0,1}*→{a1,a2,…,ak},ai∈[1,k]  (式2)
[0018] 14)随机生成椭圆曲线密码的私钥s,作为用户的主密钥;s∈[1,p-1];
[0019] 15)生成k×k的公钥矩阵 表示为式3:
[0020]
[0021] 矩阵 中的元素为主密钥经过哈希函数Hi,j映射后的结果和椭圆曲线点群生成元进行标量乘法的结果;
[0022] 16)将s作为用户的主密钥存储在私钥存储区,公钥矩阵 由钱包在线存储。
[0023] 针对上述密码学货币地址的在线生成方法,进一步地,所述地址生成过程为完全在线进行,无需访问私钥存储区,具体包括如下步骤:
[0024] 21)将当前的交易赋予一个唯一交易编号t,t的值是任意的比特串;
[0025] 22)通过哈希函数HT()将所述唯一交易编号t映射为向量,表示为式4:
[0026] {a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k  (式4)
[0027] 23)将向量的值作索引,从所述公钥矩阵的每一行选择一个元素,选出椭圆曲线点作为椭圆曲线密码中的公钥,并通过椭圆曲线上点的加法操作对所述椭圆曲线密码中的公钥求和,得到一个新的椭圆曲线点Qt,表示为式5:
[0028]
[0029] 椭圆曲线点Qt为公钥矩阵中公钥的线性组合,是一个合法的椭圆曲线密码,是组合公钥的结果;
[0030] 24)通过哈希函数HA()将获得的新公钥Qt映射为地址At,表示为式6:
[0031] At←HT(Qt)  (式6)
[0032] 25)将新生成的地址At返回给用户作为收款地址。
[0033] 针对上述密码学货币地址的在线生成方法,进一步地,所述支付签名过程用地址关联的私钥生成数字签名,具体包括如下步骤:
[0034] 31)设定用户获得收款的交易编号为t;
[0035] 32)访问私钥存储区读取主密钥s;
[0036] 33)通过哈希函数Ht将交易编号t映射为向量,表示为式7:
[0037] {a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k  (式7)
[0038] 34)通过式8生成私钥dt:
[0039]
[0040] 35)用私钥dt完成对付款交易信息做数字签名,完成付款。
[0041] 本发明方法中,密码学货币可以选用比特币、莱特币或以太坊等任意密码学货币。现有比特币、莱特币以及以太坊使用的地址生成方式都是类似的,实际上,今后还会出现基于这种地址生成方式的新的密码学货币。本发明方法同样适用于这类新的密码货币。
[0042] 本发明方法在钱包初始化过程中,生成了一个私钥和一个固定大小的公钥矩阵,其中私钥保存在私钥存储区中,公钥矩阵保存在钱包的在线存储区中,每当钱包接收付款时,钱包可以通过交易的唯一交易编号从公钥矩阵中导出对应的唯一地址,在这个过程中无需访问私钥存储。
[0043] 与现有技术相比,本发明的有益效果是:
[0044] 本发明提供一种基于组合公钥的密码学货币地址在线生成方法,无需访问私钥,而使用公钥矩阵快速生成新的公钥,从而生成收款地址。使用本发明技术方案的密码学货币钱包具有以下特征:
[0045] (一)可以为用户生成任意数量的地址,可以增强大量接收密码学货币付款的用户的隐私。
[0046] (二)用户私钥离线存储只需要一个私钥的空间,因此用户可以容易地利用现有的私钥离线存储方案,如纸钱包(即将私钥以二维码的形式打印到纸上),或者将私钥存储在硬件USB Key上。密码学货币的私钥通常是一个标准的椭圆曲线密码私钥,因此,可以将本方案的主密钥s存储在任何支持椭圆曲线密码私钥存储的密码设备中。
[0047] (三)用户在接收付款的过程中不需要访问私钥存储区。这意味着本方案的主密钥完全可以离线存储。
[0048] (四)用户的公钥因子矩阵的存储空间为固定的常量,这个存储量不随生成地址数量的增长而增长。
[0049] (五)用户可以更容易地管理地址。用户的地址可以由某个和支付相关的信息生成,因此地址是不需要存储的。
[0050] 因此,利用本发明方法,可以非常快地生成交易地址,且无需直接访问私钥,大大减小了钱包对私钥和地址管理的开销;对于非常频繁的交易,采用本发明方法尤其有效。附图说明
[0051] 图1是本发明提供的地址在线生成方法的流程框图
[0052] 图2为本发明提供的地址在线生成方法中客户端(钱包)初始化的流程框图。
[0053] 图3为本发明实施例提供的收款(地址生成)过程的流程框图。
[0054] 图4为本发明实施例提供的支付过程的流程框图。
[0055] 图5为本发明实施例提供的收款交互流程图
[0056] 图6为本发明实施例提供的一种地址在线生成系统的结构框架图。

具体实施方式

[0057] 下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
[0058] 本发明提供一种基于组合公钥的密码学货币地址在线生成方法,无需访问私钥,而使用公钥矩阵快速生成新的公钥,从而生成收款地址。本发明提供的地址在线生成方法可以选择比特币、莱特币或以太坊等任意密码学货币作为钱包方案。
[0059] 以下以比特币为例说明本发明的具体实施,假设某个互联网在线零售商选择比特币作为支付方式,该零售商的顾客在完成订单都需要向零售商的比特币地址转账一定数额的比特币。该零售商通过网站完成销售。利用本发明提供的地址在线生成方法实现的地址在线生成系统的一种结构如图6所示,包括三层结构:公用服务器,公钥矩阵在线存储层;用户层;私钥离线存储层。
[0060] 本发明提供的地址在线生成方法中,给定定义在有限域上的椭圆曲线E,点构成的循环群 点G是该循环群的生成元,P的阶为大素数n。密码学货币中通常采用的椭圆曲线参数中,n为256比特。椭圆曲线密码中的密钥对为(d,Q),其中d是[1,n-1]之间的随机整数,Q=[d]P为椭圆曲线点,运算[d]P表示整数和椭圆曲线点的标量乘法计算。在密码学货币中,用户在支付的过程中需要用私钥d为交易生成椭圆曲线数字签名(如ECDSA)。密钥对对应的用户地址是公钥经过哈希算法生成的哈希值,即Addr=Ha(Q),其中哈希算法Ha()通常基于标准的密码哈希算法(如SHA-1,SHA-256,RIPEMD160等)构造并将最后输出的二进制哈希值编码为可打印的字符串。通常对于密码学货币,椭圆曲线密码参数和生成地址的哈希算法HA是选定的。
[0061] 图1是本发明提供的地址在线生成方法的流程框图,本发明提供的地址在线生成方法由系统初始化过程、地址生成过程和支付签名过程三个部分构成。在系统初始化过程中,钱包生成一个主密钥和一个公钥矩阵,其中主密钥可以离线存储的方式保存在安全的私钥存储区中,公钥矩阵可以在线存储(在线存储意味着存储设备和所存储的数据时刻保持“在线”状态,可以随时读取和修改;离线存储是指存储设备和所存储的数据是离线的,在读取和修改前都要进行相应的物理操作);在地址生成过程中,钱包通过交易的唯一编号生成对应的地址,并且可以生成几乎无限数量的地址,生成的地址可以由交易编号唯一确定,因此钱包无需保存地址;在支付签名过程中,钱包可以通过编号生成对应的私钥,通过该私钥生成签名以完成支付。
[0062] 本发明提供的地址在线生成方法中的系统初始化过程、地址生成过程和支付签名过程具体执行如下步骤:
[0063] 1)系统初始化过程
[0064] 系统初始化即准备后续交易中用到的相关参数,并完成相关参数的存储。其中需要准备的参数包括密码哈希算法族、密码哈希函数、以及主密钥和公钥矩阵。大致过程如下,首先选择密码哈希算法族 和密码哈希函数HT,然后随机生成主密钥s存储在私钥存储区离线存储,最后生成公钥矩阵 并在线存储,至此,该系统的初始化任务已经完成。
[0065] 本发明具体实施中,系统初始化的过程如图2所示,具体包括如下步骤:
[0066] 11)选择参数k,k为一个较小的整数,如32或64。
[0067] 12)选择密码哈希算法族 其中包含k2个密码哈希算法,这些哈希算法的定义域和值域相同,均为由素数p定义的有限域Fp,具体为式1:
[0068]
[0069] 13)选择密码哈希函数HT,其输入为任意长度的比特串,其输出为由k个整数构成的向量,向量中的每个元素值的范围为[1,k],表示为式2:
[0070] HT∶{0,1}*→{a1,a2,…,ak},ai∈[1,k]  (式2)
[0071] 14)随机生成椭圆曲线密码的私钥s,作为用户的主密钥;s∈[1,p-1];
[0072] 15)生成k×k的公钥矩阵 表示为式3:
[0073]
[0074] 矩阵 中的元素为主密钥经过哈希函数Hi,j映射后的结果和椭圆曲线点群生成元进行标量乘法的结果。
[0075] 16)将s作为用户的主密钥存储在私钥存储区,公钥矩阵P由钱包在线存储。
[0076] 2)收款(地址生成)过程
[0077] 在每次收款需要新的地址时,钱包可以由在线存储的公钥矩阵 生成一个新的地址,无需访问私钥存储中的主密钥s,也无需向私钥存储中写入新的私钥。因此在本发明中,生成地址的过程完全无需访问私钥存储区,因此可以完全在线进行。
[0078] 地址生成的具体过程如图3所示,具体包括如下步骤:
[0079] 21)将当前的交易赋予一个唯一的交易编号t,t的值可以是任意的比特串,其格式由实际应用来决定,仅需保证交易编号t不重复使用。
[0080] 22)通过哈希函数HT()将交易编号t映射为向量,表示为式4:
[0081] {a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k  (式4)
[0082] 23)将向量的值作索引,从公钥矩阵的每一行选择一个元素,并通过椭圆曲线上点的加法操作对这些选出的椭圆曲线点(即椭圆曲线密码中的公钥)求和,得到一个新的椭圆曲线点Qt,表示为式5:
[0083]
[0084] 椭圆曲线点Qt可以视为公钥矩阵中公钥的线性组合,这种通过公钥线性组合方式生成新公钥的方法又称为组合公钥,Qt即是组合公钥的结果,也是一个合法的椭圆曲线密码;
[0085] 24)通过哈希函数HA()将组合公钥获得的新公钥Qt映射为地址At,表示为式6:
[0086] At←HT(Qt)  (式6)
[0087] 25)将新生成的地址At返回给用户作为收款地址。
[0088] 在本方案中,钱包仅需要保存公钥矩阵,并记录完成付款的交易的交易编号,而无需保存该交易的地址及地址生成过程中的其他中间结果。因为地址和中间结果均可由公钥矩阵和交易编号即时生成。
[0089] 3)支付签名过程
[0090] 用户通过某次交易(交易编号为t)得到一定数额的比特币,这意味着该交易的地址中有一定数额的比特币。如果用户希望将该地址中的比特币支付给其他用户,那么需要用地址关联的私钥,用于生成数字签名。
[0091] 本实施例的支付签名过程如图4所示,具体包括如下步骤:
[0092] 31)给定用户获得收款的交易编号为t;
[0093] 32)访问私钥存储区读取主密钥s;
[0094] 33)通过哈希函数Ht将交易编号t映射为向量,表示为式7:
[0095] {a1,a2,…,ak}←HT(t),ai∈[1,k],1≤i≤k  (式7)
[0096] 34)通过式8生成私钥dt:
[0097]
[0098] 35)用私钥dt完成对付款交易信息做数字签名,完成付款。
[0099] 本发明提供的地址在线生成方法中,假设在线零售网店系统中维护了每笔订单的订单号,零售商通过公钥因子矩阵、订单号,生成该订单对应的地址;并将地址提供给客户(也可以将订单号直接提供给客户,客户向服务器发起请求,获得本次交易地址,收款交互流程如图5所示过程),客户可以通过向该地址付款完成交易。网店的系统中会记录已经付款的订单的订单号。零售商可以根据交易订单号对应的交易信息进行验证,以确定订单支付已经完成。
[0100] 需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈