一种私钥遗忘时的区块链通证找回方法及系统转让专利

申请号 : CN202010865071.3

文献号 : CN112054907B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨敏孟庆树

申请人 : 武汉大学

摘要 :

本发明提供了一种私钥遗忘时的区块链通证找回方法及系统,建立通证找回框架,由两个部分组成,一个部分负责构造声明数据,该数据声明了通证所有者在私钥遗忘时如何找回该通证的处理规则;另外一个部分负责执行声明数据所表示的具体找回方法,由智能合约实现,智能合约首先用签名验签的方法判断输入数据是否由通证所有者签名,当用户输入的数据和签名数据是吻合的,则按照约定的处理规则处理输入的数据,找回丢失的通证。不同于现有技术中重新生成私钥,或者需要预先加密存储私钥,因此保存或恢复成本高难度大的问题。本发明技术方案实施简单,成本低,具有重要的推广价值。

权利要求 :

1.一种私钥遗忘时的区块链通证找回方法,其特征在于:建立通证找回框架,由两个部分组成,

一个部分负责构造声明数据,该数据声明了通证所有者在私钥遗忘时如何找回该通证的处理规则;

另外一个部分负责执行声明数据所表示的具体找回方法,由智能合约实现,智能合约首先用签名验签的方法判断输入数据是否由通证所有者签名,当用户输入的数据和签名数据是吻合的,则按照约定的处理规则处理输入的数据,找回丢失的通证;

所述构造声明数据采用声明方式1时,包括声明在遗忘私钥的情况下,将被遗忘的通证转移到事先指定的某个地址;

采用声明方式1时,执行以下过程,当用户拥有一个UTXO时,用户也拥有该UTXO的私钥;用户用UTXO的私钥进行以下签名:sig=sigPrk(Hash(类型1||地址1||地址2||...||地址n||找回时间||Hash(用户实体身份))),

并将签名结果sig及(类型1||地址1||地址2||...||地址n||找回时间)保存,其中,

sigPrk( )表示用私钥prk进行签名;

Hash( )表示哈希函数;

n表示输入找回地址的个数,地址1、地址2...地址n为找回地址;

声明方式1的相应处理:当是类型1时,输入数据是(类型1||地址1||地址2||...||地址n||找回时间||Hash(用户实体身份))、签名数据sig以及n个地址中的某一个地址,该地址对应的私钥没有丢失;

合约处理过程:根据输入的数据以及签名数据恢复出公钥,根据公钥判断公钥对应的地址的关联UTXO是否还存在,当前找回时间是否满足声明规定的找回时间;如果仍然是一个合法的UTXO,找回时间合法,则合约计算输入数据的hash值,并用签名数据sig进行验签;

如果都通过,则合约把签名私钥对应地址的UTXO转给输入的地址;至此合约的处理完毕;

所述构造声明数据采用声明方式2时,包括声明满足一定条件下把被遗忘的通证转移到一个新的地址去,这个条件让智能合约能够确认指定新地址的用户是被遗忘通证的所有者;采用声明方式2时,执行以下过程,当用户拥有一个UTXO时,用户也拥有该UTXO的私钥;用户用UTXO的私钥对如下内容进行签名:

sig=sigPrk(Hash(类型2||用户选择的一段文字||常规口令)),并将签名结果保存;

声明方式2的相应处理:当是类型2,输入数据是声明方式2中hash函数的参数(类型2||用户选择的一段文字||常规口令)、签名数据sig以及用户新产生的一个地址;

合约处理过程:根据合约的签名sig,以及输入数据,恢复出公钥,根据公钥判断公钥对应的地址的关联UTXO是否还存在;如果仍然是一个合法的UTXO,则合约计算输入数据的hash值,并用签名数据sig进行验签;如果都通过,则合约把签名私钥对应地址的UTXO转给输入的地址。

2.根据权利要求1所述私钥遗忘时的区块链通证找回方法,其特征在于:采用声明方式

1时,输入的各个找回地址的选择遵循如下原则,用户掌握对应的私钥,或者掌握私钥的其他用户将把转入的UTXO还给用户。

3.根据权利要求1所述私钥遗忘时的区块链通证找回方法,其特征在于:采用声明方式

1时,相应的处理规则为,利用输入地址数据和签名数据通过验证输入地址的合法性,以及签名的合法性,从而保证把被遗忘通证转给事先指定的正确地址。

4.根据权利要求1所述私钥遗忘时的区块链通证找回方法,其特征在于:采用声明方式

2时,相应的处理规则为,用输入数据和签名数据通过验证输入数据的正确性来检查用户是否知道或者拥有之前声明所需要的条件,如果是则说明通证找回人确实就是被遗忘通证的真实所有者,支持将被遗忘的通证转移给用户指定的地址。

5.根据权利要求1或2或3或4所述私钥遗忘时的区块链通证找回方法,其特征在于:用于区块链采用UTXO模式或账户模式的场景,当为账户模式时视为一个UTXO的情况,与UTXO模式处理过程一致。

6.一种私钥遗忘时的区块链通证找回系统,其特征在于:用于实现如权利要求1至5中任一项所述私钥遗忘时的区块链通证找回方法。

说明书 :

一种私钥遗忘时的区块链通证找回方法及系统

技术领域

[0001] 本发明属于区块链核心技术及应用领域,更具体地,提供了一种私钥遗忘情况下如何找回私钥对应通证的技术方案。

背景技术

[0002] 区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代
码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。随着比特
币概念的普及,出现了大量的区块链项目。区块链由于其去中心化、集体维护、公开透明、不
可篡改、准匿名性等突出特点受到广泛关注。当前区块链按访问范围可分为公链,联盟链和
私链。而通证(token)则是公链的基本且必须功能。通证有基于UTXO
(unspenttransactionoutput)模型的,如比特币平台,也有基于账户模型的,比如以太坊平
台。然而无论是基于UTXO模型的通证还是基于账户模型的通证,都是基于密码学的公私钥
机制实现的,必须拥有私钥才算是拥有对应的通证。然而私钥的管理比较麻烦,还经常发生
因为私钥遗忘导致对应通证的遗失。例如,《财富》杂志曾经做过统计,大约有300万个比特
币因为种种原因,让持有者对自己的地址失去了控制权,即这些地址对应的私钥丢失了,从
而地址中的比特币永久丢失了。这种丢失已经到了严重的地步,要知道Bitcoin总共也就
2100万个比特币。必须要有一种方法来减轻这种现状。我国的数字货币也在推进中,相关技
术支持急需跟进。
[0003] 由于该问题的现实需求,人们开展了大量的研究应对私钥丢失。可以大致分为两类,一是对私钥加密保管,丢失时可以找回;二是在私钥丢失时候可以重新产生私钥。比如
1)用助记符产生私钥,该方案的依据是记忆助记符比记忆私钥要容易些,但助记符本身也
需要安全保管,同时存在遗忘风险。2)利用用户身份信息产生私钥,但安全性不高。3)将基
于用户身份信息的账户和区块链账户绑定,从而通过验证身份找回在服务器保存的私钥。
同样存在安全性缺陷。4)利用门限签名的方案,当用户丢失了其子私钥后,可以从预存的备
份子私钥里取出一个子私钥给用户。这个方案存在问题是无法和现有的区块链签名方案进
行融合。5)对用户的私钥进行加密保存,比如用多个其他可信的用户的公钥依次加密待保
护私钥,在用户私钥丢失时,请求可信方逐次解密最后获得私钥。这个方案的问题是需要信
任最后的解密者,因为他可以直接获得私钥。如果提交的是加密的私钥,则同样存在加密密
钥遗失的可能。

发明内容

[0004] 本发明提供的方案不依赖于私钥重新生成或者妥善保存,其目的是使得用户在丢失私钥的情况下,并不需要找回私钥,却可以找回自己的依赖于此私钥的通证,因此适用范
围更广,更易于实施。
[0005] 本发明技术方案提供一种私钥遗忘时的区块链通证找回方法,建立通证找回框架,由两个部分组成,
[0006] 一个部分负责构造声明数据,该数据声明了通证所有者在私钥遗忘时如何找回该通证的处理规则;
[0007] 另外一个部分负责执行声明数据所表示的具体找回方法,由智能合约实现,智能合约首先用签名验签的方法判断输入数据是否由通证所有者签名,当用户输入的数据和签
名数据是吻合的,则按照约定的处理规则处理输入的数据,找回丢失的通证。
[0008] 而且,所述构造声明数据采用声明方式1,包括声明在遗忘私钥的情况下,将被遗忘的通证转移到事先指定的某个地址。
[0009] 而且,采用声明方式1时,执行以下过程,当用户拥有一个UTXO时,用户也拥有该UTXO的私钥;用户用UTXO的私钥进行以下签名:
[0010] sig=sigPrk(Hash(类型1||地址1||地址2||…||地址n||找回时间||Hash(用户实体身份))),并将签名结果sig及(类型1||地址1||地址2||…||地址n||找回时间)保存,
[0011] 其中,
[0012] sigPrk()表示用私钥prk进行签名;
[0013] Hash()表示哈希函数;
[0014] n表示输入找回地址的个数,地址1、地址2…地址n为找回地址。
[0015] 而且,输入的各个找回地址的选择遵循如下原则,
[0016] 用户掌握对应的私钥,或者掌握私钥的其他用户将把转入的UTXO还给用户。
[0017] 而且,相应的处理规则为,利用输入地址数据和签名数据通过验证输入地址的合法性,以及签名的合法性,从而保证把被遗忘通证转给事先指定的正确地址。
[0018] 或者,所述构造声明数据采用声明方式2,包括声明满足一定条件下把被遗忘的通证转移到一个新的地址去,这个条件让智能合约能够确认指定新地址的用户是被遗忘通证
的所有者。
[0019] 而且,采用声明方式2时,执行以下过程,当用户拥有一个UTXO时,用户也拥有该UTXO的私钥;用户用UTXO的私钥对如下内容进行签名:
[0020] sig=sigPrk(Hash(类型2||用户选择的一段文字||常规口令)),
[0021] 并将签名结果保存。
[0022] 而且,采用声明方式2时,相应的处理规则为,用输入数据和签名数据通过验证输入数据的正确性来检查用户是否知道或者拥有之前声明所需要的条件,如果是则说明通证
找回人确实就是被遗忘通证的真实所有者,支持将被遗忘的通证转移给用户指定的地址。
[0023] 而且,用于区块链采用UTXO模式或账户模式的场景,当为账户模式时视为一个UTXO的情况,与UTXO模式处理过程一致。
[0024] 本发明还提供一种私钥遗忘时的区块链通证找回系统,用于实现如上所述私钥遗忘时的区块链通证找回方法。
[0025] 不同于现有技术中重新生成私钥,或者需要预先加密存储私钥,因此保存或恢复成本高难度大的问题。本发明提供了一种私钥遗忘时的区块链通证找回技术方案,提出新
的通证找回框架,使得用户在丢失私钥的情况下,可以找回自己的通证,解决该方面的技术
空白。本发明技术方案实施简单,成本低,具有重要的推广价值。

附图说明

[0026] 图1是本发明实施例的原理图。

具体实施方式

[0027] 下面将结合附图和实施例具体说明本发明技术方案以及本发明所涉及的技术原理。
[0028] 本发明提供了一种私钥遗忘时的区块链通证找回方法。该方法建立了通证找回框架,由两个部分组成。一个部分负责构造声明数据,该数据声明了通证所有者在私钥遗忘时
如何找回该通证的方法。另外一个部分负责执行声明数据所表示的具体找回方法,由智能
合约实现,智能合约首先用签名验签的方法判断输入数据是否由通证所有者签名,当用户
输入的数据和签名数据是吻合的,确实体现了用户当初声明的处理方法,则智能合约按照
约定的处理规则处理输入的数据,把丢失的通证找回来。在该框架下,可以设计各种具体找
回方法,作为例子本发明给出了2个具体的找回方法。该发明可以减轻密钥丢失造成的通证
丢失问题,也可能产生通证找回服务的新商业模式。
[0029] 为描述的方便,下文以UTXO模式进行介绍,对于账户模式则可以视为一个UTXO的情况,处理过程一致。
[0030] 参见图1,本发明实施例提供的一种私钥遗忘时的区块链通证找回方法由如下两个过程组成:
[0031] 1.UTXO拥有者对通证处理方法声明过程:
[0032] 声明方式1:声明在遗忘私钥的情况下,将被遗忘的通证转移到事先指定的某个地址去。
[0033] 当用户拥有一个UTXO时,那么用户也拥有该UTXO的私钥。该用户客户端用该UTXO的私钥进行以下签名:
[0034] sig=sigPrk(Hash(类型1||地址1||地址2||…||地址n||找回时间||Hash(用户实体身份))),并将签名结果sig及(类型1||地址1||地址2||…||地址n||找回时间)妥善保
存,比如放到其他区块链上保存。
[0035] 其中,
[0036] sigPrk()表示用私钥prk对括号内的内容进行签名;
[0037] Hash( )表示哈希函数;
[0038] n表示输入找回地址的个数。
[0039] 输入的各个找回地址(地址1、地址2…地址n)的选择要遵循如下原则:
[0040] 要么用户掌握对应的私钥,要么掌握私钥的其他用户答应(承诺)把转入的UTXO再还给用户。
[0041] 1)对于用户掌握所有地址对应私钥的情况,有如下应用情景:用户生成若干地址,并把对应的私钥用不同的方法进行保存,以降低所有私钥同时丢失的情况。当然若用户有
多个地址都有UTXO,这些地址可以相互作为找回地址。
[0042] 2)对于掌握私钥的其他用户答应把转入的UTXO再还给用户的情形,比如两个好朋友互相把对方的地址作为找回地址,或者直接建立一个有公信力的找回机构,该机构对找
回地址的私钥有很强的保护能力。
[0043] 具体实施时,以上几种地址可混合使用,只需知道地址的私钥即可。
[0044] 加入找回时间是为了避免如下不利的情况:通证的拥有者没有遗忘通证的私钥,但找回地址的拥有者提前把通证转出来,添加了时间后,系统可以规定在这个时间点之前
不能执行后续的找回操作。
[0045] 而Hash(用户实体身份)的作用如下:当用户向可信机构申请转款时,可以线下出示物理身份证件(例如身份证),并计算hash值以方便可信机构后续的转款,而链上不会留
有用户实体身份,只有身份的hash值,以保护用户隐私。
[0046] 类型1和下文的类型2分别是声明方式1和声明方式2的标识,可以分别取数字1和数字2,以方便智能合约进行不同的处理。
[0047] 声明方式2:声明满足一定条件下把被遗忘的通证转移到一个新的地址去,这个条件让智能合约相信指定新地址的用户确实就是被遗忘通证的所有者。
[0048] 当用户拥有一个UTXO时,那么该用户也拥有该UTXO的私钥。该用户用该UTXO的私钥对如下内容进行签名:sig=sigPrk(Hash(类型2||用户选择的一段文字||常规口令)),并
将签名结果妥善保存,比如可以放到另外一个区块链上链保存,而且不能暴露Hash的输入
信息。该方案把用户对私钥的保存转换为用户容易记住但攻击者难以穷举攻击的数据。所
以输入数据的熵要足够大,因此长度建议至少要有100个字符,同时要容易记住。添加用户
自主选择的一段文字,这段文字具有足够的随机熵,而且容易记忆,比如从一本书里摘录一
段特定的文字。同时需要常规的口令,以增加攻击者的攻击难度。该方案适用于金额不大的
应用场景。
[0049] 以上两种声明方式给出了两种具体处理方案,实际上用户还可以声明其他的处理方法或处理类型。比如用户可以声明让系统把丢失的通证转给一个多签名账户,以防止单
个人作弊,此处不再赘述。具体实施时,声明部分可在用户客户端上执行。
[0050] 2.智能合约处理过程:
[0051] 智能合约根据上述两种声明分别进行处理。对于第一种声明,主要是利用输入地址数据和签名数据通过验证输入地址的合法性,以及签名的合法性,从而保证把被遗忘通
证转给了事先指定的正确地址。对于第二种声明,主要是用输入数据和签名数据通过验证
输入数据的正确性来检查用户是否知道或者拥有当初声明所需要的条件,如果知道说明通
证找回人确实就是被遗忘通证的真实所有者,可以将被遗忘的通证转移给他指定的地址。
[0052] 如果声明采用了其他方式,相应地智能合约也应该采用相应处理。
[0053] 实施例中,区块链系统添加一个智能合约,该合约的功能如下:首先根据输入的数据判断是类型1还是类型2,然后分别处理。
[0054] 具体实施时,区块链系统部署合约就是安装一个合约,不同的系统方法不同,一般是以系统合约的形式存在。
[0055] 声明方式1的相应处理:当是类型1时,输入数据是(类型1||地址1||地址2||…||地址n||找回时间||Hash(用户实体身份))、签名数据sig以及n个地址中的某一个地址(该
地址对应的私钥没有丢失)。
[0056] 合约处理过程:根据输入的数据以及签名数据恢复出公钥,根据公钥判断公钥对应的地址的关联UTXO是否还存在,当前找回时间是否满足声明规定的找回时间。如果仍然
是一个合法的UTXO,找回时间合法,则合约计算输入数据的hash值(哈希值),并用签名数据
sig进行验签。如果都通过,则合约把签名私钥对应地址的UTXO转给输入的地址。至此合约
的处理完毕。后续还需要进行下列处理:
[0057] A.如果这个地址是用户自己掌握私钥的地址则用户不需要再做任何事情。
[0058] B.如果这个地址是朋友的地址,则用户需要给朋友一个新的地址并请求朋友把通证转给自己新的地址。
[0059] C.当输入的地址是可信机构的地址时,还需要进行一个链下的验证过程,即用户出示用户实体身份,可信机构计算其hash值,和链上找回交易输入的hash(用户实体身份)
比较,如果吻合,则执行通证转移交易,从可信机构的地址转给用户出示的新地址。需要说
明的是通证找回交易本身不需要可信机构的参与。
[0060] 具体实施时,恢复公钥可采用现有技术,例如基于椭圆曲线签名方式,根据消息和签名可以恢复出公钥。
[0061] 声明方式2的相应处理:当是类型2,输入数据是声明方式2中hash函数的参数(类型2||用户选择的一段文字||常规口令)、签名数据sig以及用户新产生的一个地址。
[0062] 合约处理过程:根据合约的签名sig,以及输入数据,恢复出公钥,根据公钥判断公钥对应的地址的关联UTXO是否还存在。如果仍然是一个合法的UTXO,则合约计算输入数据
的hash值,并用签名数据sig进行验签。如果都通过,则合约把签名私钥对应地址的UTXO转
给输入的地址。
[0063] 具体实施时,以上提出的方法可由本领域技术人员采用计算机软件技术实现自动运行流程,实现方法的系统装置例如存储本发明技术方案相应计算机程序的计算机可读存
储介质以及包括运行相应计算机程序的计算机设备,也应当在本发明的保护范围内。
[0064] 在一些可能的实施例中,提供一种私钥遗忘时的区块链通证找回系统,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用处理器中的存储指令执行如上所
述的私钥遗忘时的区块链通证找回方法。
[0065] 在一些可能的实施例中,提供一种私钥遗忘时的区块链通证找回系统,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述
的私钥遗忘时的区块链通证找回方法。
[0066] 为便于了解本发明技术效果起见,下面以声明方式1为例说明一种应用场景。假设有3个人协定互相作为对方的找回地址,即a用户用自己地址的私钥签名:sigPrk(Hash(类型
1||b地址||找回时间||hash(用户实体身份))),b用户用自己地址的私钥签名:sigPrk(Hash
(类型1||c地址||找回时间||hash(用户实体身份))),c用户用自己地址的私钥签名:SigPrk
(Hash(类型1||a地址||找回时间||hash(用户实体身份)))。假设一段时间后,a和b都把自
己的私钥遗忘或遗失了,只有c仍然记得自己的私钥。则a可以通过b的地址找回,而b可以通
过c的地址找回,最后c把通证先转给b的新地址,b再转给a的新地址。很自然的,只需互相找
回的人能够串起来(即找回地址形成一个闭环),只要其中一个人记得自己的私钥,则可以
找回丢失的通证。进一步的,理论上如果每个用户从已有地址随机挑选多个地址作为找回
地址,则通证丢失的问题基本解决。
[0067] 本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种的修改或补充或采用类似的方式替代,但
并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。