本发明涉及流量掩护技术领域,具体是一种用于区块链的用户私钥保护方法。
背景技术:
在区块链技术领域,私钥具有非常重要的地位,可以说是区块链世界的钥匙。目前,主要用于控制虚拟数字资产,但预期未来可能扩展到各种资产及身份控制上,例如汽车钥匙、数字身份、证书等。私钥的丢失,意味着由该私钥控制的各种资产的控制权也随之丢失,与此同时,还无法要求其他个人或组织帮忙寻回私钥。私钥的存储及恢复方案将成为区块链普及应用道路上的基础配置。目前比较通用的私钥恢复方案有以下几种:
1、助记词,预先备份一份助记词(私钥的另一种形式),备份方式取决于用户自己,通常是抄写在纸张/记事本上,存放于家中,甚至锁入家中保险柜内,该解决方案面临诸如张纸/记事本丢失的“单点失败”风险。
2、密钥共享,其原理是将一个秘密分散、加密存储在多个参与者手里,达到一定数量的参与者一起才能拼出原始秘密,这样既可以减少单一节点失败造成的风险,又能在一定条件下恢复私钥。这一技术本身不难实现,难点是将秘密存储和恢复过程标准化、产品化。私钥分散存储于何处,恢复时如何验证身份,如何保证驱动存储方,如何避免存储方联合起来欺诈私钥所有者。
为此,行业内有提供相关解决方案,例如,vault12提供的解决方案是,私钥持有人邀请亲朋好友作为保管人,每月支付保管费,根据保管数据的安全等级来设定恢复的难易程度,恢复前需要朋友通过视频、电话等方式确认身份。总体说来,该方案比较完善、详细,具备灵活性和可操作性,也足够专注在密钥恢复上。
然而,该方案的最大问题是,一定数量的亲朋好友可以联合起来,在未经私钥持有人允许的情况下,窃取其帐户的访问权。在理想情况下,保管一个私钥的保管人不应该知道还有谁同样在保管该私钥,但是这样的话,当私钥持有人需要寻回私钥时,交互流程又会过于复杂,使用体验大打折扣。
3、标准kyc程序,与现代银行对新客户执行kyc程序的方式类似,用户可以向kyc提供商表明自己的身份,以便重新获得资金,但是用户需要执行一次已经设置好的流程,以便kyc提供商知道地址背后的标识。kyc验证的不足之处是,该过程通常由第三方kyc提供商处理,不仅成本高昂,而且某种程度上违反了区块链去中心化的设计初衷。
技术实现要素:
针对现有区块链技术无法应对私钥丢失的技术问题,本发明提供一种用于区块链的用户私钥保护方法。
一种用于区块链的用户私钥保护方法,用户注册时,客户端自动生成私钥,用户自主设置登录密码password、安全问题及其答案;
客户端对登录密码进行散列运算,得到其哈希值passhash;
客户端利用登录密码对私钥进行加密,得到加密私epk1;
客户端先利用安全问题答案对私钥进行加密处理得到epk’,再利用平台公钥进行二次加密处理形成恢复私钥epk2。
进一步的,常规登录交易流程包括以下步骤:
步骤a1,用户登录客户端,输入登录密码,客户端对用户输入的登录密码进行散列运算,得到其哈希值;
步骤a2,比较步骤a1得到的哈希值与平台存储的passhash,若相同,则返回加密私钥epk1;
步骤a3,利用用户输入的登录密码对加密私钥epk1进行解密,得到私钥.
进一步的,私钥寻回流程包括以下步骤:
步骤b1,用户输入重置密码newpass,客户端对重置密码进行散列运算,得到其哈希值;
步骤b2,比较步骤b1得到的哈希值与平台存储的passhash,若不同,则使用平台私钥解密epk2得到epk’,返回客户端epk’;
步骤b3,用户回答客户端弹出的安全问题,若回答正确,则从epk’恢复出私钥;
步骤b4,客户端利用重置密码newpass对私钥进行加密,得到新的加密私钥epk1。
本发明的有益效果:平台不直接存储私钥和安全问题答案,避免私钥被盗,给用户带来损失;用户通过输入正确的登录密码,即可获得私钥,进行常规签名交易;当登录密码忘记时,可以通过重置的方式进行找回,重置登录密码的门槛是安全问题对应的答案;整个过程中不涉及私钥实质内容。
附图说明
图1为加密私钥epk1形成示意图;
图2为恢复私钥epk2形成示意图;
图3为相关数据转换关系示意图;
图4为常规登录交易流程图;
图5为重置登录密码寻回私钥流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
实施例1
一种用于区块链的用户私钥保护方法,用户注册时,客户端自动生成私钥,用户自主设置登录密码password、安全问题及其答案,用户私钥的存储与恢复由登录密码password、安全问题及其答案、平台公钥配合完成。
客户端对登录密码进行散列运算,得到其哈希值passhash;客户端利用登录密码对私钥进行加密,得到加密私钥epk1,如图1所示;客户端先利用安全问题答案对私钥进行加密处理得到epk’,再利用平台公钥进行二次加密处理形成恢复私钥epk2,如图2所示。
为了便于理解,图3直观展示了私钥、登录密码password、安全问题及其答案、平台公钥之间的转换关系,平台数据库存储了加密私钥epk1、登录密码哈希值passhash、恢复私钥epk2、安全问题、以及平台公钥,并不直接存储用户私钥和安全问题答案。
常规登录交易流程,如图3所示,包括以下步骤:
步骤a1,用户登录客户端,输入登录密码,客户端对用户输入的登录密码进行散列运算,得到其哈希值;
步骤a2,比较步骤a1得到的哈希值与平台存储的passhash,若相同,则返回加密私钥epk1;
步骤a3,利用用户输入的登录密码对加密私钥epk1进行解密,得到私钥.
私钥丢失时的寻回流程,如图4所示,包括以下步骤:
步骤b1,用户输入重置密码newpass,客户端对重置密码进行散列运算,得到其哈希值;
步骤b2,比较步骤b1得到的哈希值与平台存储的passhash,若不同,则使用平台私钥解密epk2得到epk’,返回客户端epk’;
步骤b3,用户回答客户端弹出的安全问题,若回答正确,则从epk’恢复出私钥;
步骤b4,客户端利用重置密码newpass对私钥进行加密,得到新的加密私钥epk1,更新平台数据库中原先保存的加密私钥。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
1.一种用于区块链的用户私钥保护方法,其特征在于,用户注册时,客户端自动生成私钥,用户自主设置登录密码password、安全问题及其答案;
客户端对登录密码进行散列运算,得到其哈希值passhash;
客户端利用登录密码对私钥进行加密,得到加密私钥epk1;
客户端先利用安全问题答案对私钥进行加密处理得到epk’,再利用平台公钥进行二次加密处理形成恢复私钥epk2。
2.根据权利要求1所述的用户私钥保护方法,其特征在于,常规登录交易流程包括以下步骤:
步骤a1,用户登录客户端,输入登录密码,客户端对用户输入的登录密码进行散列运算,得到其哈希值;
步骤a2,比较步骤a1得到的哈希值与平台存储的passhash,若相同,则返回加密私钥epk1;
步骤a3,利用用户输入的登录密码对加密私钥epk1进行解密,得到私钥。
3.根据权利要求1所述的用户私钥保护方法,其特征在于,私钥寻回流程包括以下步骤:
步骤b1,用户输入重置密码newpass,客户端对重置密码进行散列运算,得到其哈希值;
步骤b2,比较步骤b1得到的哈希值与平台存储的passhash,若不同,则使用平台私钥解密epk2得到epk’,返回客户端epk’;
步骤b3,用户回答客户端弹出的安全问题,若回答正确,则从epk’恢复出私钥;
步骤b4,客户端利用重置密码newpass对私钥进行加密,得到新的加密私钥epk1。
技术总结