CN117611158B - 一种基于分组密码算法的电子钱包生成方法及系统 - Google Patents
一种基于分组密码算法的电子钱包生成方法及系统 Download PDFInfo
- Publication number
- CN117611158B CN117611158B CN202410090541.1A CN202410090541A CN117611158B CN 117611158 B CN117611158 B CN 117611158B CN 202410090541 A CN202410090541 A CN 202410090541A CN 117611158 B CN117611158 B CN 117611158B
- Authority
- CN
- China
- Prior art keywords
- key
- digital signature
- block cipher
- wallet
- seedr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 24
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 8
- 230000003044 adaptive effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 18
- 238000012546 transfer Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 3
- 238000005336 cracking Methods 0.000 description 2
- 239000012297 crystallization seed Substances 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
- G06Q20/3674—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
- G06Q20/4014—Identity check for transactions
- G06Q20/40145—Biometric identity checks
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Storage Device Security (AREA)
Abstract
本发明属于数字货币技术领域,提供了一种基于分组密码算法的电子钱包生成方法及系统,获取电子钱包用户的随机种子,随机种子的序列长度和所用分组密码的密钥长度相关;根据随机种子,生成钱包主密钥,钱包主密钥的内容包含链码、数字签名私钥以及与数字签名私钥对应的数字签名系统公钥,三者的长度和分组密码的密钥长度相关;根据钱包主密钥,生成实际收发账的密钥,密钥包括多次会话密钥,每次的会话密钥均包含整数表示的数字签名私钥,及与其对应的数字签名公钥。本发明根据所用分组密码算法的密钥长度,给出相适配的实现形式,充分利用分组密码较小的内部状态与较低的乘法复杂度的有点,提高了电子钱包的生成效率。
Description
技术领域
本发明属于密码货币生成技术领域,具体涉及一种基于分组密码算法的电子钱包生成方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
去中心化密码货币系统是近年最热门的研究领域之一。电子钱包是比特币等去中心化密码货币系统中用于收发转账的计算机软硬件设备,通常由一个热钱包与一个冷钱包构成,热钱包存储基于离散对数假设的数字签名系统的公钥,冷钱包存储与之对应的私钥,私钥保密,公钥则公开,用以标识钱包。钱包持有者生成转账记录,在其中指定转账目标的公钥,而后用自己的私钥对转账记录进行签名,从而实现从本钱包到其它钱包的密码货币转账。实际运用时,热钱包往往是联网运行的软件平台,而冷钱包往往是较少联网的硬件平台等。
私钥的破解往往导致钱包持有者损失大量密码货币,为控制单一私钥被破解导致的损害,一种常见的做法是利用一个初始密钥计算出大量子代公、私钥,每个子代公钥仅用于接收一笔入账,而每个会话私钥也仅用于签发一笔转账。
为保证充裕安全性,数字钱包系统使用的数字签名群阶数至少也是2224量级,这要求数字钱包的密钥导出机制产生至少28字节伪随机值。为此,现有电子钱包方案通常用杂凑函数、HMAC等密码学算法实现密钥生成功能,这些算法输出长度通常多于32字节,可以满足要求。
分组密码的攻击方法与理论是起步更早、发展更成熟的研究方向,分组密码也是最早实现标准化的对称密码算法。分组密码的软硬件实现开销通常低于杂凑函数,密码电路的乘法复杂度往往也较低,在安全多方计算场景中实现时的通信量因此也低于杂凑函数。因此,使用分组密码建构数字钱包有望显著改善钱包性能。
但与杂凑函数、HMAC等不同,现有分组密码标准(例如高级加密标准AES、国密标准SM4、ISO轻量级标准Skinny等)通常只有16字节分组长度,单次调用只能给出16字节输出,远少于数字钱包系统所要求的至少28字节输出长度。用分组密码建构数字钱包因此需要以非平凡的、有密码学意义的方式运用分组密码,组合其输出,形成28、32字节伪随机序列。
据发明人了解,现有技术存在部分方案去解决上述问题,如Bitcoin BIP32是目前最著名的多级电子钱包系统,其设计基于国际密码算法标准HMAC-SHA512,但其系统设计优化程度低,所基于的HMAC-SHA512实现起来需要192字节内部状态,软硬件效率均有显著的提升空间。
中国发明专利《基于国密标准算法的多级电子钱包数据处理方法及系统》(专利号ZL 2020 1 1451017.0)根据国密杂凑函数标准SM3的参数特性,提出了一种基于SM3的(安全的)BIP32变体设计。该设计解决了BIP32与国密适配的问题,并改进了性能,但仍未实现在电子钱包中运用分组密码算法、从而进一步降低实现开销的目标。
发明内容
本发明为了解决上述问题,提出了一种基于分组密码算法的电子钱包生成方法及系统,本发明根据所用分组密码算法的密钥长度,给出相适配的实现形式,充分利用分组密码较小的内部状态与较低的乘法复杂度的优点,提高了电子钱包的生成效率。
根据一些实施例,本发明采用如下技术方案:
一种基于分组密码算法的电子钱包生成方法,包括以下步骤:
获取电子钱包用户的随机种子,所述随机种子的序列长度和所用分组密码的密钥长度相关;
根据随机种子,生成钱包主密钥,所述钱包主密钥的内容包含链码、数字签名私钥以及与数字签名私钥对应的数字签名系统公钥,三者的长度和分组密码的密钥长度相关;
根据钱包主密钥,生成实际收发账的密钥,所述密钥包括多次会话密钥,每次的会话密钥均包含整数表示的数字签名私钥,及与其对应的数字签名公钥。
作为可选择的实施方式,所述随机种子由序列表示,当电子钱包是基于密钥长度k≥24字节的分组密码Ek建构时,序列长度为32字节,当电子钱包基于密钥长度为16字节的分组密码E16建构时,序列长度为28字节。
作为可选择的实施方式,当电子钱包基于密钥长度k≥32字节的分组密码Ek建构时,钱包主密钥内容包括一个32字节链码、一个32字节无符号整数表示的数字签名私钥、与之对应的数字签名系统公钥(群Group256的成员);
生成方法包括:令s=k-32(故s≥0),计算mchL = Ek(seed || [0]_s, [0]_1 ||[0]_15),mchR = Ek(seed || [0]_s, [0]_1 || [1]_15),mch = mchL || mchR,msk1 =Ek(seed || [0]_s, [0]_1 || [2]_15),msk2 = Ek(seed || [0]_s, [0]_1 || [3]_15),msk = Num_p256(msk1 || msk2),mpk = msk×G256。
作为可选择的实施方式,当电子钱包基于密钥长度24字节的分组密码E24建构时,钱包主密钥内容包括一个32字节链码、一个32字节无符号整数表示的数字签名私钥、与之对应的数字签名系统公钥(群Group256的成员);
生成方法为:计算seedL=msb_24(seed),seedR=lsb_8(seed),mchL = E24(seedL,[0]_1 || [0]_7 || seedR) xor ([0]_1 || [0]_7 || seedR),mchR = E24(seedL, [0]_1 || [1]_7 || seedR) xor ([0]_1 || [1]_7 || seedR),mch = mchL || mchR,msk1 =E24(seedL, [0]_1 || [2]_7 || seedR) xor ([0]_1 || [2]_7 || seedR),msk2 = E24(seedL, [0]_1 || [3]_7 || seedR) xor ([0]_1 || [3]_7 || seedR),msk = Num_p256(msk1 || msk2),mpk = msk×G256。
作为可选择的实施方式,当电子钱包基于密钥长度16字节的分组密码E16建构时,钱包主密钥内容包括一个28字节链码、一个28字节无符号整数表示的数字签名私钥,以及与之对应的数字签名系统公钥(群Group224的成员);
生成方法为:计算seedL=msb_16(seed),seedR=lsb_12(seed),mchL = E16(seedL, [0]_1 || [0]_3 || seedR) xor ([0]_1 || [0]_3 || seedR),mchR = lsb_12( E16(seedL, [0]_1 || [1]_3 || seedR) xor ([0]_1 || [1]_3 || seedR)),mch =mchL || mchR,msk1 = E16(seedL, [0]_1 || [2]_3 || seedR) xor ([0]_1 || [2]_3 || seedR),msk2 = lsb_12( E16(seedL, [0]_1 || [3]_3 || seedR) xor ([0]_1 ||[3]_3 || seedR)),msk = Num_p224(msk1 || msk2),mpk = msk×G224。
作为进一步的实施方式,计算钱包主密钥内容时,将随机种子的序列写成两个部分,分别计算每个部分的链码和数字签名私钥,融合各部分,形成最终的链码和数字签名私钥,根据最终的数字签名私钥生成最终的数字签名系统公钥。
作为可选择的实施方式,当基于密钥长度k≥32字节的分组密码Ek建构时,对1≤i≤240,第i次会话密钥(ski, pki)的计算过程为:
令s=k-32(故s≥0),计算deltaiL = Ek(mch || [0]_s, [1]_1 || [i-1]_15),deltaiR = Ek(mch || [0]_s, [2]_1 || [i-1]_15), deltai = Num_p256(deltaiL ||deltaiR), ski = (msk + deltai) mod p256,pki = skiG256;
例如,当i=1时,计算第1次会话密钥(sk1, pk1)的过程是:delta1L = Ek(mch ||[0]_s, [1]_1 || [0]_15), delta1R = Ek(mch || [0]_s, [2]_1 || [0]_15), delta1= Num_p256(delta1L || delta1R), sk1 = (msk + delta1) mod p256,pk1 = sk1×G256。
作为可选择的实施方式,当基于密钥长度24字节的分组密码E24建构时,对1≤i≤240,第i次会话密钥(ski, pki)的计算过程包括:
deltaiL = E24(mchL, [1]_1 || [i-1]_7 || mchR) xor ([1]_1 || [i-1]_7 || mchR),deltaiR = E24(mchL, [2]_1 || [i-1]_7 || mchR) xor ([2]_1 || [i-1]_7 || mchR), deltai = Num_p256(deltaiL || deltaiR), ski = (msk + deltai) modp256,pki = ski×G256;
例如,当i=1时,计算第1次会话密钥(sk1, pk1)的过程是:delta1L = E24(mchL,[1]_1 || [0]_7 || mchR) xor ([1]_1 || [0]_7 || mchR),delta1R = E24(mchL, [2]_1 || [0]_7 || mchR) xor ([2]_1 || [0]_7 || mchR), delta1 = Num_p256(delta1L || delta1R), sk1 = (msk + delta1) mod p256,pk1 = sk1G256。
作为可选择的实施方式,当基于密钥长度16字节的分组密码E16建构时,1≤i≤224,第i次会话密钥(ski, pki)的计算过程包括:
deltaiL = E16(mchL, [1]_1 || [i-1]_3 || mchR) xor ([1]_1 || [i-1]_3 || mchR), deltaiR = lsb_12( E16(mchL, [2]_1 || [i-1]_3 || mchR) xor ([2]_1 ||[i-1]_3 || mchR) ), deltai = Num_p224(deltaiL || deltaiR), ski = (msk +deltai) mod p224,pki = skiG224;
例如,当i=1时,计算第1次会话密钥(sk1, pk1)的过程为:delta1L = E16(mchL,[1]_1 || [0]_3 || mchR) xor ([1]_1 || [0]_3 || mchR), delta1R = lsb_12( E16(mchL, [2]_1 || [0]_3 || mchR) xor ([2]_1 || [0]_3 || mchR) ), delta1 = Num_p224(delta1L || delta1R), sk1 = (msk + delta1) mod p224,pk1 = sk1G224。
一种基于分组密码算法的电子钱包生成系统,包括:
随机种子获取模块,被配置为获取电子钱包用户的随机种子,所述随机种子的序列长度和所用分组密码的密钥长度相关;
钱包主密钥生成模块,被配置为根据随机种子,生成钱包主密钥,所述钱包主密钥的内容包含链码、数字签名私钥以及与数字签名私钥对应的数字签名系统公钥,三者的长度和分组密码的密钥长度相关;
会话密钥生成模块,被配置为根据钱包主密钥,生成实际收发账的密钥,所述密钥包括多次会话密钥,每次的会话密钥均包含整数表示的数字签名私钥,及与其对应的数字签名公钥。
与现有技术相比,本发明的有益效果为:
本发明根据所用分组密码算法的密钥长度,给出三种不同的实现形式。通过调用分组长度为16字节的分组密码算法Ek或E16完成功能,得益于分组密码较小的内部状态与较低的乘法复杂度,效率预期有大幅改善。
本发明以非平凡的、符合密码学相关原理的方式运用16字节分组密码,组合其输出,形成28、32字节伪随机序列,从而实现用16字节分组密码建构数组钱包的目标。
16字节分组密码的软硬件实现开销低于杂凑函数,在安全多方计算场景中实现时的通信量也低于杂凑函数。本发明因此可以显著改善数字钱包性能。
本发明在导出账户密钥时,通过调整成对出现的分组密码Ek调用的输入,使之密钥输入相同,节省分组密码Ek密钥扩展函数的执行次数。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本实施例的系统示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
为使本领域技术人员更加了解本发明的实施例的方案,进行如下术语解释:
1、分组密码(英语:Block cipher)算法,又称分块加密或块密码,是一种对称密钥算法。 它的输入包括一个固定长度的密钥和一个固定长度的明文,输出一个与明文等长的密文。其中,明、密文的长度称为其分组长度,密钥的长度称为其密钥长度。在本文本中,用Ek表示分组长度为16字节、密钥长度为k字节的分组密码,用Y=Ek(K,X)表示用密钥K加密明文X、获得密文Y的计算过程(特别强调,在Ek的两个输入中,密钥在前,明文在后)。特别的,E16表示分组长度为16字节、密钥长度为16字节的分组密码,E24表示分组长度为16字节、密钥长度为24字节的分组密码。
2、数字签名:是一种功能类似写在纸上的普通签名,但是使用了公钥加密领域的技术,以用于鉴别数字信息的方法。一套数字签名通常会定义两种互补的运算,一个用于签名,另一个用于验证。
3、电子钱包:密码货币系统中,用于收发转账的计算机软硬件设备。具体而言,一个电子钱包包含一个联网的热钱包(通常是计算机软件)与一个较少联网的冷钱包(通常是硬件设备),冷热钱包基于特定的规则,从一对数字签名公私钥导出相互匹配的一系列公私钥,用于收发密码货币转账。
4、AES:高级加密标准,其有3个版本AES-128、AES-192、AES-256,3个版本接受的明文X均为16字节序列,接受的密钥K依次为16字节序列、24字节序列、32字节序列,输出密文为16字节序列。
5、SM4:国家密码管理局认定的国产商用分组密码标准,由国家密码管理局于2006年1月发布,相关标准为“GB/T 32907-2016 《信息安全技术SM4分组密码算法》”。另收录于ISO/IEC 18033-3/Amd 1。其明文X为16字节序列,密钥K为16字节序列,输出密文为16字节序列。
6、Skinny:ISO/IEC 18033-7(可调)分组密码标准,其有3个版本Skinny-64/192、Skinny-128/256、Skinny-128/384,其中Skinny-64/192接受的明文X为8字节序列、接受的密钥K为24字节序列,Skinny-128/256接受的明文X为16字节序列、接受的密钥K为32字节序列,Skinny-128/384接受的明文X为16字节序列、接受的密钥K为48字节序列。
7、xor:16字节序列之间的按位异或运算。
8、[i]_a:非负整数i的a字节大端无符号整数表示形式。
9、a mod b:非负整数a模非负整数b所得的余数。
10、Num_a(string):字节序列string以大端表示形式所编码的非负整数模a所得的余数。
11、lsb_a(string):字节序列string大端表示形式的最低位a字节构成的子序列。
12、msb_b(string):字节序列string大端表示形式的最高位b字节构成的子序列。
13、string1 || string2:连接字节序列string1与string2所得的序列。
14、Group:电子钱包系统所使用数字签名系统的群。由于本文本中同时出现了阶数为p256≈2256的群和阶数为p224≈2224的群,用Group256表示阶数为p256的群,Group224表示阶数为p224的群。
15、G:电子钱包系统所使用数字签名系统的群本原元。进一步的,用G256表示群Group256的本原元,用G224表示群Group224的本原元。
16、aG:非负整数a与电子钱包系统所使用数字签名系统的群本原元G的乘积。
实施例一
如图1所示,一种基于分组密码算法的电子钱包生成系统,包括:
1、随机种子
由公司管理部门等用户选取的、具有一定随机性/熵的数据,可以是口令等信息,由序列seed表示:
钱包基于密钥长度k≥24字节的分组密码Ek建构时,seed长度为32字节(此时以128比特安全性为目标);
钱包基于密钥长度为16字节的分组密码E16建构时,seed长度为28字节(此时仅以112比特安全性为目标)。
2、钱包主密钥生成模块
根据钱包用户提供的随机种子seed,生成钱包主密钥(mch, msk, mpk):
基于密钥长度k≥32字节的分组密码Ek(例如AES-256、Skinny-128/256、Skinny-128/384)建构时,钱包主密钥内容包括一个32字节链码mch、一个32字节无符号整数表示的数字签名私钥msk、msk对应的数字签名系统公钥mpk(mpk是群Group256的成员)。生成方法如下:令s=k-32(故s≥0),计算mchL = Ek(seed || [0]_s, [0]_1 || [0]_15),mchR = Ek(seed || [0]_s, [0]_1 || [1]_15),mch = mchL || mchR,msk1 = Ek(seed || [0]_s,[0]_1 || [2]_15),msk2 = Ek(seed || [0]_s, [0]_1 || [3]_15),msk = Num_p256(msk1 || msk2),mpk = msk×G256。
基于密钥长度24字节的分组密码E24(例如AES-192)建构时,钱包主密钥内容包括一个32字节链码mch、一个32字节无符号整数表示的数字签名私钥msk、msk对应的数字签名系统公钥mpk(mpk是群Group256的成员)。生成方法如下:计算seedL=msb_24(seed),seedR=lsb_8(seed),mchL = E24(seedL, [0]_1 || [0]_7 || seedR) xor ([0]_1 || [0]_7 ||seedR),mchR = E24(seedL, [0]_1 || [1]_7 || seedR) xor ([0]_1 || [1]_7 ||seedR),mch = mchL || mchR,msk1 = E24(seedL, [0]_1 || [2]_7 || seedR) xor([0]_1 || [2]_7 || seedR),msk2 = E24(seedL, [0]_1 || [3]_7 || seedR) xor([0]_1 || [3]_7 || seedR),msk = Num_p256(msk1 || msk2),mpk = msk×G256。
基于密钥长度16字节的分组密码E16(例如AES-128、SM4)建构时,钱包主密钥内容包括一个28字节链码mch、一个28字节无符号整数表示的数字签名私钥msk、msk对应的数字签名系统公钥mpk(mpk是群Group224的成员)。生成方法如下:计算seedL=msb_16(seed),seedR=lsb_12(seed),mchL = E16(seedL, [0]_1 || [0]_3 || seedR) xor ([0]_1 ||[0]_3 || seedR),mchR = lsb_12( E16(seedL, [0]_1 || [1]_3 || seedR) xor ([0]_1|| [1]_3 || seedR)),mch = mchL || mchR,msk1 = E16(seedL, [0]_1 || [2]_3 ||seedR) xor ([0]_1 || [2]_3 || seedR),msk2 = lsb_12( E16(seedL, [0]_1 || [3]_3|| seedR) xor ([0]_1 || [3]_3 || seedR)),msk = Num_p224(msk1 || msk2),mpk =msk×G224。
3、收发密钥生成模块
在钱包主密钥(mch, msk, mpk)已生成后,根据收发密钥序号,生成实际收发账的密钥(sk1, pk1),(sk2, pk2),……。其中,第i次收发密钥(ski, pki)内容包括一个无符号整数表示的数字签名私钥ski,及ski对应的数字签名公钥pki(pki是群Group256或Group224的成员)。具体生成方法取决于所用分组密码的密钥长度,如下:
1、基于密钥长度k≥32字节的分组密码Ek建构时:
此时,数字签名使用阶数为p256≈2256的群Group256,数字签名私钥ski是32字节无符号整数,ski对应的数字签名公钥pki是群Group256成员。令s=k-32(因此,s≥0),则对1≤i≤240,第i次会话密钥(ski, pki)通过以下过程计算得来:
令s=k-32(故s≥0),计算deltaiL = Ek(mch || [0]_s, [1]_1 || [i-1]_15),deltaiR = Ek(mch || [0]_s, [2]_1 || [i-1]_15), deltai = Num_p256(deltaiL ||deltaiR), ski = (msk + deltai) mod p256,pki = skiG256。
例如,i=1时,计算第1次会话密钥(sk1, pk1)的过程是:delta1L = Ek(mch ||[0]_s, [1]_1 || [0]_15), delta1R = Ek(mch || [0]_s, [2]_1 || [0]_15), delta1= Num_p256(delta1L || delta1R), sk1 = (msk + delta1) mod p256,pk1 = sk1×G256。
2、基于密钥长度24字节的分组密码E24建构时:
此时,数字签名使用阶数为p256≈2256的群Group256,数字签名私钥ski是32字节无符号整数,ski对应的数字签名公钥pki是群Group256成员。计算mchL=msb_24(mch),mchR=lsb_8(mch)。则对1≤i≤240,第i次会话密钥(ski, pki)通过以下过程计算得来:
deltaiL = E24(mchL, [1]_1 || [i-1]_7 || mchR) xor ([1]_1 || [i-1]_7 || mchR),deltaiR = E24(mchL, [2]_1 || [i-1]_7 || mchR) xor ([2]_1 || [i-1]_7 || mchR), deltai = Num_p256(deltaiL || deltaiR), ski = (msk + deltai) modp256,pki = ski×G256。
例如,i=1时,计算第1次会话密钥(sk1, pk1)的过程是:delta1L = E24(mchL,[1]_1 || [0]_7 || mchR) xor ([1]_1 || [0]_7 || mchR),delta1R = E24(mchL, [2]_1 || [0]_7 || mchR) xor ([2]_1 || [0]_7 || mchR), delta1 = Num_p256(delta1L || delta1R), sk1 = (msk + delta1) mod p256,pk1 = sk1G256。
3、基于密钥长度16字节的分组密码E16建构时:
此时,数字签名使用阶数为p224≈2224的群Group224,数字签名私钥ski是28字节无符号整数,ski对应的数字签名公钥pki是群Group224成员。计算mchL=msb_16(mch),mchR=lsb_12(mch)。则对1≤i≤224,第i次会话密钥(ski, pki)通过以下过程计算得来:
deltaiL = E16(mchL, [1]_1 || [i-1]_3 || mchR) xor ([1]_1 || [i-1]_3 || mchR), deltaiR = lsb_12( E16(mchL, [2]_1 || [i-1]_3 || mchR) xor ([2]_1 ||[i-1]_3 || mchR) ), deltai = Num_p224(deltaiL || deltaiR), ski = (msk +deltai) mod p224,pki = skiG224。
例如,i=1时,计算第1次会话密钥(sk1, pk1)的过程是:delta1L = E16(mchL,[1]_1 || [0]_3 || mchR) xor ([1]_1 || [0]_3 || mchR), delta1R = lsb_12( E16(mchL, [2]_1 || [0]_3 || mchR) xor ([2]_1 || [0]_3 || mchR) ), delta1 = Num_p224(delta1L || delta1R), sk1 = (msk + delta1) mod p224,pk1 = sk1G224。
为保证充裕安全性,数字钱包系统使用的数字签名群阶数至少也是2224量级,这要求数字钱包的密钥导出机制产生至少28字节伪随机序列,远超单次16字节分组密码调用的输出长度。
上述实施例以非平凡的、符合密码学相关原理的方式运用16字节分组密码,组合其输出,形成28、32字节伪随机序列,从而实现用16字节分组密码建构数组钱包的目标。
16字节分组密码的软硬件实现开销低于杂凑函数,在安全多方计算场景中实现时的通信量也低于杂凑函数。上述实施例的方案可以显著改善数字钱包性能。
在导出账户密钥时,通过调整成对出现的分组密码Ek调用的输入,使之密钥输入相同,节省分组密码Ek密钥扩展函数的执行次数。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,本领域技术人员不需要付出创造性劳动所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于分组密码算法的电子钱包生成方法,其特征是,包括以下步骤:
通过运用分组长度为16字节的分组密码,组合其输出,形成28、32字节伪随机序列,实现用16字节分组密码建构数字钱包,具体为:
获取电子钱包用户的随机种子,所述随机种子的序列长度和所用分组密码的密钥长度相关;所述随机种子由序列表示,当电子钱包是基于密钥长度k≥24字节的分组密码Ek建构时,序列长度为32字节,当电子钱包基于密钥长度为16字节的分组密码E16建构时,序列长度为28字节;
根据随机种子,生成钱包主密钥,所述钱包主密钥的内容包含链码、数字签名私钥以及与数字签名私钥对应的数字签名系统公钥,三者的长度和分组密码的密钥长度相关;
根据钱包主密钥,生成实际收发账的密钥,所述密钥包括多次会话密钥,每次的会话密钥均包含整数表示的数字签名私钥,及与其对应的数字签名公钥;
当电子钱包基于密钥长度k≥32字节的分组密码Ek建构时,钱包主密钥内容包括一个32字节链码、一个32字节无符号整数表示的数字签名私钥、与之对应的数字签名系统公钥;
生成方法包括:令s=k-32,计算mchL = Ek(seed || [0]_s, [0]_1 || [0]_15),mchR= Ek(seed || [0]_s, [0]_1 || [1]_15),mch = mchL || mchR,msk1 = Ek(seed ||[0]_s, [0]_1 || [2]_15),msk2 = Ek(seed || [0]_s, [0]_1 || [3]_15),msk = Num_p256(msk1 || msk2),mpk = msk×G256;
当电子钱包基于密钥长度24字节的分组密码E24建构时,钱包主密钥内容包括一个32字节链码、一个32字节无符号整数表示的数字签名私钥、与之对应的数字签名系统公钥;
生成方法为:计算seedL=msb_24(seed),seedR=lsb_8(seed),mchL = E24(seedL,[0]_1 || [0]_7 || seedR) xor ([0]_1 || [0]_7 || seedR),mchR = E24(seedL, [0]_1 || [1]_7 || seedR) xor ([0]_1 || [1]_7 || seedR),mch = mchL || mchR,msk1 =E24(seedL, [0]_1 || [2]_7 || seedR) xor ([0]_1 || [2]_7 || seedR),msk2 = E24(seedL, [0]_1 || [3]_7 || seedR) xor ([0]_1 || [3]_7 || seedR),msk = Num_p256(msk1 || msk2),mpk = msk×G256;
当电子钱包基于密钥长度16字节的分组密码E16建构时,钱包主密钥内容包括一个28字节链码、一个28字节无符号整数表示的数字签名私钥,以及与之对应的数字签名系统公钥;
生成方法为:计算seedL=msb_16(seed),seedR=lsb_12(seed),mchL = E16(seedL,[0]_1 || [0]_3 || seedR) xor ([0]_1 || [0]_3 || seedR),mchR = lsb_12( E16(seedL, [0]_1 || [1]_3 || seedR) xor ([0]_1 || [1]_3 || seedR)),mch = mchL ||mchR,msk1 = E16(seedL, [0]_1 || [2]_3 || seedR) xor ([0]_1 || [2]_3 ||seedR),msk2 = lsb_12( E16(seedL, [0]_1 || [3]_3 || seedR) xor ([0]_1 || [3]_3|| seedR)),msk = Num_p224(msk1 || msk2),mpk = msk×G224。
2.如权利要求1所述的一种基于分组密码算法的电子钱包生成方法,其特征是,计算钱包主密钥内容时,将随机种子的序列写成两个部分,分别计算每个部分的链码和数字签名私钥,融合各部分,形成最终的链码和数字签名私钥,根据最终的数字签名私钥生成最终的数字签名系统公钥。
3.如权利要求2所述的一种基于分组密码算法的电子钱包生成方法,其特征是,当基于密钥长度k≥32字节的分组密码Ek建构时,对1≤i≤240,第i次会话密钥(ski, pki)的计算过程为:
令s=k-32,s≥0,计算deltaiL = Ek(mch || [0]_s, [1]_1 || [i-1]_15), deltaiR= Ek(mch || [0]_s, [2]_1 || [i-1]_15), deltai = Num_p256(deltaiL || deltaiR),ski = (msk + deltai) mod p256,pki = skiG256。
4.如权利要求2所述的一种基于分组密码算法的电子钱包生成方法,其特征是,当基于密钥长度24字节的分组密码E24建构时,对1≤i≤240,第i次会话密钥(ski, pki)的计算过程包括:
deltaiL = E24(mchL, [1]_1 || [i-1]_7 || mchR) xor ([1]_1 || [i-1]_7 ||mchR),deltaiR = E24(mchL, [2]_1 || [i-1]_7 || mchR) xor ([2]_1 || [i-1]_7 ||mchR), deltai = Num_p256(deltaiL || deltaiR), ski = (msk + deltai) mod p256,pki = ski×G256。
5.如权利要求2所述的一种基于分组密码算法的电子钱包生成方法,其特征是,当基于密钥长度16字节的分组密码E16建构时,1≤i≤224,第i次会话密钥(ski, pki)的计算过程包括:
deltaiL = E16(mchL, [1]_1 || [i-1]_3 || mchR) xor ([1]_1 || [i-1]_3 ||mchR), deltaiR = lsb_12( E16(mchL, [2]_1 || [i-1]_3 || mchR) xor ([2]_1 ||[i-1]_3 || mchR) ), deltai = Num_p224(deltaiL || deltaiR), ski = (msk +deltai) mod p224,pki = skiG224。
6.一种基于分组密码算法的电子钱包生成系统,其特征是,包括:
随机种子获取模块,被配置为获取电子钱包用户的随机种子,所述随机种子的序列长度和所用分组密码的密钥长度相关;所述随机种子由序列表示,当电子钱包是基于密钥长度k≥24字节的分组密码Ek建构时,序列长度为32字节,当电子钱包基于密钥长度为16字节的分组密码E16建构时,序列长度为28字节;
钱包主密钥生成模块,被配置为根据随机种子,生成钱包主密钥,所述钱包主密钥的内容包含链码、数字签名私钥以及与数字签名私钥对应的数字签名系统公钥,三者的长度和分组密码的密钥长度相关;
当电子钱包基于密钥长度k≥32字节的分组密码Ek建构时,钱包主密钥内容包括一个32字节链码、一个32字节无符号整数表示的数字签名私钥、与之对应的数字签名系统公钥;
生成方法包括:令s=k-32,计算mchL = Ek(seed || [0]_s, [0]_1 || [0]_15),mchR= Ek(seed || [0]_s, [0]_1 || [1]_15),mch = mchL || mchR,msk1 = Ek(seed ||[0]_s, [0]_1 || [2]_15),msk2 = Ek(seed || [0]_s, [0]_1 || [3]_15),msk = Num_p256(msk1 || msk2),mpk = msk×G256;
会话密钥生成模块,被配置为根据钱包主密钥,生成实际收发账的密钥,所述密钥包括多次会话密钥,每次的会话密钥均包含整数表示的数字签名私钥,及与其对应的数字签名公钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410090541.1A CN117611158B (zh) | 2024-01-23 | 2024-01-23 | 一种基于分组密码算法的电子钱包生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410090541.1A CN117611158B (zh) | 2024-01-23 | 2024-01-23 | 一种基于分组密码算法的电子钱包生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117611158A CN117611158A (zh) | 2024-02-27 |
CN117611158B true CN117611158B (zh) | 2024-04-30 |
Family
ID=89953825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410090541.1A Active CN117611158B (zh) | 2024-01-23 | 2024-01-23 | 一种基于分组密码算法的电子钱包生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117611158B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109034793A (zh) * | 2018-07-05 | 2018-12-18 | 奇酷互联网络科技(深圳)有限公司 | 基于区块链的数字货币交易方法及数字货币钱包硬件 |
CN114760054A (zh) * | 2022-06-14 | 2022-07-15 | 浙江毫微米科技有限公司 | 基于数字钱包的密钥管理方法、装置及存储介质 |
CN115147111A (zh) * | 2022-09-02 | 2022-10-04 | 杭州弦冰科技有限公司 | 密钥生成方法以及装置、电子设备、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI280026B (en) * | 2004-07-02 | 2007-04-21 | Univ Chang Gung | RSA with personalized secret |
US20230123865A1 (en) * | 2018-11-02 | 2023-04-20 | Verona Holdings Sezc | Configuring a set of digital tokens with a temporal attribute that determines a timing of redemption of the set of digital tokens for a corresponding set of items |
-
2024
- 2024-01-23 CN CN202410090541.1A patent/CN117611158B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109034793A (zh) * | 2018-07-05 | 2018-12-18 | 奇酷互联网络科技(深圳)有限公司 | 基于区块链的数字货币交易方法及数字货币钱包硬件 |
CN114760054A (zh) * | 2022-06-14 | 2022-07-15 | 浙江毫微米科技有限公司 | 基于数字钱包的密钥管理方法、装置及存储介质 |
CN115147111A (zh) * | 2022-09-02 | 2022-10-04 | 杭州弦冰科技有限公司 | 密钥生成方法以及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117611158A (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gueron et al. | GCM-SIV: full nonce misuse-resistant authenticated encryption at under one cycle per byte | |
CN105024994B (zh) | 无对运算的安全无证书混合签密方法 | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
US6973187B2 (en) | Block encryption method and schemes for data confidentiality and integrity protection | |
US7809136B2 (en) | Enhanced ANSI X9.17 and FIPS 186 pseudorandom number generators with forward security | |
EP1302022A2 (en) | Authentication method and schemes for data integrity protection | |
US20120076293A1 (en) | Hybrid mode cryptographic method and system with message authentication | |
WO2002093809A2 (en) | A method and apparatus for improved pseudo-random number generation | |
EP1319280A2 (en) | Parallel bock encryption method and modes for data confidentiality and integrity protection | |
CN109474425B (zh) | 一种基于多个共享密钥获得任意指定长度派生密钥的方法 | |
CN111526007B (zh) | 一种随机数生成方法及系统 | |
US6769062B1 (en) | Method and system of using an insecure crypto-accelerator | |
CN111010276A (zh) | 一种多方联合sm9密钥生成、密文解密方法与介质 | |
Bhatele et al. | A novel approach to the design of a new hybrid security protocol architecture | |
CN110855425A (zh) | 一种轻量级多方协同sm9密钥生成、密文解密方法与介质 | |
Alomair et al. | E-MACs: Toward more secure and more efficient constructions of secure channels | |
Paar et al. | Message authentication codes (MACs) | |
CN107301545B (zh) | 一种基于时间戳的交易验证方法 | |
CN117611158B (zh) | 一种基于分组密码算法的电子钱包生成方法及系统 | |
CN105959106A (zh) | 一种低复杂度数字加密方法 | |
Ramtri et al. | Secure banking transactions using RSA and two fish algorithms | |
Gäneysu | Getting post-quantum crypto algorithms ready for deployment | |
KR20220137024A (ko) | 대칭 비동기 생성 암호화 방법 | |
KR20200055672A (ko) | 순열그룹 기반의 암호화 기술을 적용한 암호화시스템 및 방법 | |
Kothandan | Modified Blowfish Algorithm to Enhance its Performance and Security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |