会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 加密货币地址 / 一种通用型支持多重签名的加密货币保管方法

一种通用型支持多重签名的加密货币保管方法

申请号 CN202111523159.8 申请日 2021-12-07 公开(公告)号 CN114169888B 公开(公告)日 2022-06-28
申请人 北京众信星空网络技术有限公司; 发明人 付东亮; 崇瑞; 吴钢;
摘要 本发明公开了一种通用型支持多重签名的加密货币保管方法,基于多重签名的方式得到主公钥,采用不同区块链的地址生成算法对主公钥进行计算得到适用于不同区块链的加密货币地址,从而解决了多签钱包的通用性问题,同时,本发明将密钥碎片分散到多个硬件中,交由多人保管,单点无法窃取加密货币资产,同时一旦任意一方丢失了密钥碎片均可进行密钥碎片的重置,由此也避免了因保存不当导致的加密货币资产丢失的情况,因此,本发明生成的加密货币存储地址在保护用户资产隐私性的同时有效提高了安全性。
权利要求

1.一种通用型支持多重签名的加密货币保管方法,包括加密货币地址的生成过程及基于加密货币地址的支付或转出过程,其特征在于,所述加密货币地址的生成过程包括:选取N个32字节的数作为种子Seed,将Seed作为私钥,计算与所述私钥对应的公钥,得到N个由公钥和私钥组成的密钥对,所述密钥对校验正确后被分别独立保存;以所述公钥作为签名者,采用多重门限签名算法(T,N)得到主公钥;采用不同区块链的地址生成算法对所述主公钥进行计算得到适用于不同区块链的加密货币地址;

所述基于加密货币地址的支付或转出过程,包括以下步骤:根据需要按照不同区块链的转账脚本格式生成转账脚本,将由T个所述私钥签名的所述转账脚本发送到远程节点进行广播以实现加密货币的支付或转出;

所述加密货币地址的生成过程还包括:

步骤1、令n的初始值为1,n表示编号且1≤n≤N;

步骤2、随机选取一个种子Seedn;

步骤3、将Seedn的16进制字符串作为私钥,计算出与私钥对应的公钥,将密钥对写入设备keyn中,销毁当前内存中的数据;

步骤4、若n≤N,则令n自加1,执行步骤2;否则,执行步骤5;

步骤5、分别以每个所述设备中的公钥作为基准使用Sigma协议对其他公钥进行校验,如果所有校验的结果都一致,则执行步骤6;否则执行步骤2;

步骤6、分别从T个指定的所述设备中读取公钥,使用Sigma协议获取这T个公钥的公共部分作为主公钥;

步骤7、采用不同区块链的地址生成算法计算所述主公钥得到适用于不同区块链的加密货币地址。

2.根据权利要求1所述的加密货币保管方法,其特征在于,所述生成加密货币地址的全过程均不与互联网连接。

3.根据权利要求1所述的加密货币保管方法,其特征在于,所述计算与所述私钥对应的公钥的方式为:使用椭圆曲线加密算法计算出与所述私钥对应的公钥。

4.根据权利要求1所述的加密货币保管方法,其特征在于,所述密钥对写入具有安全芯片的设备中保存。

5.根据权利要求1所述的加密货币保管方法,其特征在于,所述主公钥存储在硬件钱包设备中。

说明书全文

一种通用型支持多重签名的加密货币保管方法

技术领域

[0001] 本发明属于加密货币存管技术领域,具体涉及一种通用型支持多重签名的加密货币保管方法。

背景技术

[0002] 在网络空间环境中,基于区块链技术的加密货币承载了巨大的价值。因为加密货币存在匿名、跨国流通等特性,个人用户、公司机构甚至政府机关,都出现过大量加密货币资产丢失或被滥用的行为。出现上述情况的原因大致包括办案人员监守自盗、未归案犯罪成员通过私钥将资金转移、第三方托管公司将托管资金私自使用等等,最根本的原因还是加密货币钱包本身存在的安全隐患。
[0003] 为了预防加密货币钱包的隐患,目前惯常的做法是使用加密货币钱包中存储的资产时需要通过多人的审计,这也是业内具有共识的可靠安全的方案,一方面可以杜绝网络黑客攻击,另外一方面还可以杜绝单独掌握私钥的人员犯罪。然而不同区块链技术所采用的实现机制不同,目前业内并未形成能够适配于不同区块链的通用型多签技术,通常采用的方式是根据区块链本身特性制定相应的多签方案,甚至有些类型区块链的特性决定其无法使用多签技术。此外,由于区块链技术的迅速发展,上述方案已无法保障所有类型加密货币资产的安全,而且由于上述方案的使用需要专业技术人员的指导,可能导致执法机构、传统企业财务人员等非专业技术人员无法正常使用,从而造成加密货币资产丢失。
[0004] 现有典型技术方案包括:Ownbit钱包(ownbit.io)和Casa钱包(keys.casa)。
[0005] Ownbit钱包支持比特币、以太坊以及上述两种区块链衍生版本的其他区块链加密货币钱包的多签。Ownbit钱包针对比特币的多重签名技术采用比特币原生的多重签名脚本技术实现,针对以太坊的多重签名技术则是依托在区块链上运行的智能合约(程序)实现,相当于采用托管账户形式实现的多签。
[0006] Ownbit钱包的多签方式具有以下缺点:通用性差,其仅支持有限的几种类型的加密货币,且必须根据加密货币所在的区块链进行单独适配;隐私泄露风险较高,部分加密货币需要智能合约(程序)保管,但运行在区块链上的智能合约是公开透明的,任何人都可以进行查看和记录,这会导致用户资产信息的泄露;资金安全风险高,一旦智能合约编写存在漏洞,则可能导致所有用户的加密货币资产的丢失。
[0007] Casa钱包是一款比特币(BTC)的多签钱包,它采用了比特币原生的多签技术,将私钥分别存储在多个硬件设备上,其中部分硬件设备授权签名即可转移比特币资产。Casa钱包的缺点是通用性较差,仅支持比特币一种加密货币,技术方案无法扩展。
[0008] 综上所述,现有支持多签的加密货币钱包主要存在以下问题:
[0009] 一是加密货币存储安全性问题。加密货币价值巨大,但是传统的存储手段一般依赖单点安全,易遭受盗窃、丢失,造成巨大经济损失。此外,现有的多重签名方案,在托管以太坊(ETH)等加密货币资产时,往往采用智能合约的方式,相当于将用户资产托管到同一个网络公开的程序中,此时如果合约程序编写存在漏洞,托管的资产将面临丢失风险。
[0010] 二是多签钱包的通用性问题。现实生活中对加密货币资产存管,存在很多需要多方共同授权才能使用的场景,例如企业大额资金存管、罚没资金存管、公共账户资金存管等,但由于加密货币种类太多,目前还没有通用的多签钱包能够支持所有类型加密货币的存管。
[0011] 三是用户资产隐私性问题。目前涉及到多方加密货币存管的场景,以太坊等区块链上的加密货币资产都存储于智能合约中,资金的多少、由谁存入,都公开透明,导致用户的隐私易遭泄露。

发明内容

[0012] 有鉴于此,本发明提供了一种通用型支持多重签名的加密货币保管方法,能够解决多签钱包的通用性问题,支持所有类型加密货币资产的保管。
[0013] 本发明提供的一种通用型支持多重签名的加密货币保管方法,包括加密货币地址的生成过程及基于加密货币地址的支付或转出过程,所述加密货币地址的生成过程包括:
[0014] 选取N个32字节的数作为种子Seed,将Seed作为私钥,计算与所述私钥对应的公钥,得到N个由公钥和私钥组成的密钥对,所述密钥对校验正确后被分别独立保存;以所述公钥作为签名者,采用多重门限签名算法(T,N)得到主公钥;采用不同区块链的地址生成算法对所述主公钥进行计算得到适用于不同区块链的加密货币地址;
[0015] 所述基于加密货币地址的支付或转出过程,包括以下步骤:根据需要按照不同区块链的转账脚本格式生成转账脚本,将由T个所述私钥签名的所述转账脚本发送到远程节点进行广播以实现加密货币的支付或转出。
[0016] 进一步地,所述生成加密货币地址的全过程均不与互联网连接。
[0017] 进一步地,所述计算与所述私钥对应的公钥的方式为:使用椭圆曲线加密算法计算出与所述私钥对应的公钥。
[0018] 进一步地,所述密钥对写入具有安全芯片的设备中保存。
[0019] 进一步地,所述加密货币地址的生成过程还包括:
[0020] 步骤1、令n的初始值为1,n表示编号且1≤n≤N;
[0021] 步骤2、随机选取一个种子Seedn;
[0022] 步骤3、将Seedn的16进制字符串作为私钥,计算出与私钥对应的公钥,将密钥对写入设备keyn中,销毁当前内存中的数据;
[0023] 步骤4、若n≤N,则令n自加1,执行步骤2;否则,执行步骤5;
[0024] 步骤5、分别以每个所述设备中的公钥作为基准使用Sigma协议对其他公钥进行校验,如果所有校验的结果都一致,则执行步骤6;否则执行步骤2;
[0025] 步骤6、分别从T个指定的所述设备中读取公钥,使用Sigma协议获取这T 个公钥的公共部分作为主公钥;
[0026] 步骤7、采用不同区块链的地址生成算法计算所述主公钥得到适用于不同区块链的加密货币地址。
[0027] 进一步地,所述主公钥存储在硬件钱包设备中。
[0028] 有益效果:
[0029] 1、本发明基于多重签名的方式得到主公钥,采用不同区块链的地址生成算法对主公钥进行计算得到适用于不同区块链的加密货币地址,从而解决了多签钱包的通用性问题,同时,本发明将密钥碎片分散到多个硬件中,交由多人保管,单点无法窃取加密货币资产,同时一旦任意一方丢失了密钥碎片均可进行密钥碎片的重置,由此也避免了因保存不当导致的加密货币资产丢失的情况,因此,本发明生成的加密货币存储地址在保护用户资产隐私性的同时有效提高了安全性。
[0030] 2、本发明涉及的区块链加密货币资产的生成及存储过程均在处于离线状态的处理设备中完成,因此,采用本发明的方案保管加密货币不存在因处理程序存在漏洞所导致的加密货币资产损失风险。
[0031] 3、本发明将密钥碎片分散保存在具有SE(Secure Element)安全芯片的硬件设备中,能够进一步提高加密货币保管过程的安全性。

附图说明

[0032] 图1为本发明提供的一种通用型支持多重签名的加密货币保管方法的加密货币地址生成过程的流程图。
[0033] 图2为本发明提供的一种通用型支持多重签名的加密货币保管方法的基于加密货币地址的支付或转出过程流程图。
[0034] 图3为传统加密货币地址生成过程的流程图。

具体实施方式

[0035] 下面结合附图并举实施例,对本发明进行详细描述。
[0036] 本发明主要涉及以下相关概念:
[0037] 区块链,作为加密货币的底层技术,其本质上是一个去中心化的数据库,由分布在世界各地的节点对数据库的内容进行维护,保障其不被篡改,加密货币需要依托区块链存在,不同区块链上会产生不同类型的加密货币。
[0038] 加密货币,是数字货币的一种,又称密码学货币,是一种基于数学、密码学算法和去中心化网络技术,由程序员发行得到世界范围广泛认可的交易媒介,主要代表有比特币(Bitcoin,BTC)、以太坊(Ethereum,ETH)、泰达币(USDT) 等。
[0039] 加密货币钱包,是用于保管和使用加密货币的程序或设备,由于加密货币体系是基于密码学算法建立的,即密钥成为了其唯一凭证,拥有密钥则拥有加密货币的所有权和使用权,因此,钱包则通过生成、保护和管理密钥来保管和使用加密货币资产。
[0040] 加密货币硬件钱包,是用于管理加密货币相关私钥的硬件设备,硬件钱包本身不联网,在固件层面生成、管理和使用私钥,不会将私钥暴露在联网设备上因此极大保障了加密货币资产的安全。
[0041] 多重签名,是指加密货币资产需经一定数量的用户同时签名验证才能使用的保护机制,多重签名的形式可以表现为m/n,也就是说当存在n个具有签名权的用户时,只要其中的m个用户完成对加密货币资产的签名即可使用该加密货币资产。
[0042] 多签钱包,是指由多个用户共同管理资金的钱包,必须由多人共同授权签名,才能使用钱包里的资金。
[0043] 智能合约,是指一种运行在区块链上旨在以信息化方式传播、验证或执行合同的计算机协议。
[0044] 门限签名,是指具有多个私钥时仅需同时使用其中的部分私钥即可达成签名结果的一种算法,以Schnoor算法为代表是现有成熟的签名方案。例如,m/n 门限,共有n份私钥,只需其中m份私钥参与签名即可达成签名结果。
[0045] 多方安全计算,是指某组互相不信任的参与者在保护个人隐私的同时进行协同计算的方式,用于满足隐私数据可用不可见的需求。多方安全计算的核心功能包括同态加密和秘密分享。
[0046] 同态加密,是一种具有特殊自然属性的可在密文域下进行数据运算的加密算法。与一般加密算法相比,同态加密除了能实现基本的加密操作之外,还能实现密文间的多种计算功能,即先计算后解密等价于先解密后计算等。
[0047] 秘密分享,也被称为秘密分割,是一种管理秘密信息的方式,它将秘密进行拆分,拆分后的每个分片由不同的参与者管理,单个参与者无法恢复秘密信息,需要超过一定门限数量的人一同协作进行合并才能恢复秘密文件。秘密分享通常采用门限签名的算法进行秘密分割。
[0048] 本发明提供的一种通用型支持多重签名的加密货币保管方法,其核心思想是:基于采用多重门限签名(T,N)的方式得到多个公钥及主公钥,再采用不同区块链的地址生成算法对主公钥进行计算得到适用于不同区块链的加密货币地址,基于得到的加密货币地址实现对加密货币资产的保管。
[0049] 本发明提供了一种通用型支持多重签名的加密货币保管方法,包括加密货币地址的生成过程及基于加密货币地址的支付或转出过程。
[0050] 其中,加密货币地址的生成过程,流程如图1所示,具体包括以下步骤:
[0051] 步骤1.1、确保生成加密货币地址的全过程均不与互联网连接;令n表示编号,且n的初始值为1。
[0052] 具体来说,生成加密货币地址的全过程一般由处理设备完成,可以通过处理设备底层的网络接口探测处理设备的网卡状态,如果网卡处于开启状态则弹出消息窗口,提示用户关闭网卡。
[0053] 步骤1.2、随机选取一个32字节的数作为种子,种子记为Seedn,使Seedn满足1≤Seedn≤A,其中A为“0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141”。种子是由椭圆曲线数字签名算法(ECDSA)中的Secp256k1算法标准决定的。
[0054] 步骤1.3、将Seedn的16进制字符串作为私钥,使用椭圆曲线加密算法计算出与私钥对应的公钥,并将私钥及公钥作为密钥对写入具有SE(Secure Element) 安全芯片的设备Key中,采用keyn表示第n个设备Key,同时销毁处理设备内存中保存的当前数据。
[0055] 步骤1.4、若n<N,则令n自加1,执行步骤1.2;否则,执行步骤1.5。
[0056] 步骤1.5、从步骤1.4得到的所有具有SE安全芯片的设备中提取出公钥,分别以每个公钥作为基准使用Sigma协议对其他公钥进行校验,如果所有校验的结果都一致,则证明所有设备Key中保存的私钥是一致的,执行步骤1.6;否则说明验证未通过,执行步骤1.2。
[0057] 例如,对于多重门限签名算法(2,3)来说,将主公钥命名为P,将分片公钥分别命名为p1、p2、p3,校验的过程即为分片密钥两两计算的过程,当校验的结果满足(p1+p2)=(p2+p3)=(p1+p3)=P时,则说明校验的结果都一致,证明三个分片公钥均为有效公钥。
[0058] 步骤1.6、分别从T个指定的设备Key中读取出公钥,并使用Sigma协议获取这T个公钥的公共部分作为主公钥,再将主公钥存储在硬件钱包设备中用于计算生成硬件钱包设备的地址。
[0059] 例如,对于多重门限签名算法(2,3)来说,指定从key1和key2中读取公钥。
[0060] 步骤1.7、步骤1.6生成的主公钥为非压缩公钥,主公钥是长度为64字节的字符串;采用不同区块链的地址生成算法对主公钥进行计算,即可得到适用于不同区块链的加密货币地址。
[0061] 下面以比特币为例,说明步骤1.7的计算过程:
[0062] 步骤1.7.1、将主公钥先进行SHA‑256哈希计算,再进行RIPEMD‑160哈希计算得到结果字符串;在结果字符串头部加上比特币网络的版本号,例如主网版本号为“00”,即可得到临时公钥哈希字符串。
[0063] 步骤1.7.2、将临时公钥哈希字符串进行两次SHA‑256计算,得到哈希字符串。
[0064] 步骤1.7.3、将步骤1.7.2得到的哈希字符串的前4个字节(8位字符)作为校验码,将校验码添加到步骤1.7.1得到的临时公钥哈希字符串的尾部。
[0065] 步骤1.7.4、将步骤1.7.3得到的字符串进行Base‑58编码,得到最终的比特币地址。
[0066] 基于本发明生成的加密货币地址的支付或转出过程,流程如图2所示,具体包括以下步骤:
[0067] 步骤2.1、用户指定转账地址和金额,根据不同区块链的转账脚本格式生成转账脚本。
[0068] 步骤2.2、钱包程序分别从上述任意两个具有SE安全芯片的设备中读取私钥,根据读取到的私钥采用Schnorr签名算法对转账脚本进行签名。
[0069] 步骤2.3、将签名后的转账脚本发送到远程节点,进行P2P广播。
[0070] 步骤2.4、销毁处理设备内存中的私钥。
[0071] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。