本发明实施例涉及区块链技术领域,尤其涉及一种密钥处理方法、装置、设备和存储介质。
背景技术:
随着区块链技术的快速发展,各种应用的区块链客户端逐渐进入人们的生活当中,用户可以通过在区块链客户端进行账户的创建和使用,由此来管理区块链账户中的用户资产,因此区块链账户的安全性尤为重要。
考虑到区块链账户的安全性,目前通常可以对用户的私钥进行加密处理,以此将加密得到的私钥密文存储在区块链客户端中,而非用户私钥原文。其中,用户私钥密文的产生过程是:对用户的支付密码进行加密处理得到支付密码密文;基于加密算法,采用支付密码密文,对用户私钥原文进行加密得到私钥密文。
然而,鉴于区块链代码的开源性,如果包含有加密算法的区块链客户端公开了源代码,那么攻击者在获得密钥密文后,暴力逆推回原始私钥的难度将大幅降低,影响账户安全。
技术实现要素:
本发明实施例提供了一种密钥处理方法、装置、设备和存储介质,能够在开源区块链客户端加密算法的基础上,极大地增强了用户的本地设备上的区块链账户密钥的安全性。
第一方面,本发明实施例提供了一种密钥处理方法,由用户终端设备执行,所述方法包括:
根据本地区块链账户的助记词信息,生成本地用户的密码扭曲函数;
根据本地用户的事务密码和所述密码扭曲函数,生成本地用户的扭曲事务密码;
采用所述本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,所述密钥密文用于记录在用户终端设备中。
第二方面,本发明实施例提供了一种密钥处理装置,配置于用户终端设备,所述装置包括:
密码扭曲函数生成模块,用于根据本地区块链账户的助记词信息,生成本地用户的密码扭曲函数;
扭曲事务密码生成模块,用于根据本地用户的事务密码和所述密码扭曲函数,生成本地用户的扭曲事务密码;
密钥处理模块,用于采用所述本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,所述密钥密文用于记录在用户终端设备中。
第三方面,本发明实施例提供了一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的密钥处理方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的密钥处理方法。
本发明实施例在用户终端设备上创建区块链账户时,以区块链账户的助记词信息为依据,通过生成本地用户的密码扭曲函数,并利用密码扭曲函数对本地用户的事务密码进行处理,生成本地用户的扭曲事务密码,从而采用本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,并记录存储在本地用户的用户终端设备中。本发明实施例基于本地用户的助记词信息以及助记词信息的复杂性和唯一性,通过生成区块链账户专属的密码扭曲函数,实现了不同用户采用不同加密密码生成方式,增加了密钥密文生成的多样性。从而在将区块链客户端软件的源代码开源的情况下,即使攻击者窃取了区块链账户的密钥密文,由于不同区块链账户使用不同的密码扭曲函数,因此导致攻击者无从暴力破解出不同用户的密钥原文,极大地增强了用户区块链账户密钥的安全性。
附图说明
图1为本发明实施例一提供的一种密钥处理方法的流程图;
图2为本发明实施例二提供的一种密钥处理方法的流程图;
图3为本发明实施例二提供的密钥加密处理过程的示意图;
图4为本发明实施例三提供的密钥使用需求响应的流程图;
图5为本发明实施例三提供的密钥密文解密过程的示意图;
图6为本发明实施例四提供的设备更换时密钥使用需求响应的流程图;
图7为本发明实施例五提供的一种密钥处理装置的结构示意图;
图8为本发明实施例六提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种密钥处理方法的流程图,本实施例可适用于在用户使用本地终端设备进行区块链账户创建时,对用户在本地终端设备中存储的密钥信息进行加密处理的情况,该方法可由一种密钥处理装置来执行,该装置可以采用软件和/或硬件的方式实现,优选是配置于安装有区块链客户端的用户终端设备中。该方法具体包括如下:
s110、根据本地区块链账户的助记词信息,生成本地用户的密码扭曲函数。
在本发明具体实施例中,用户终端设备中安装有区块链客户端,用户通过在本地终端设备的区块链客户端上进行操作,实现本地区块链账户的创建或使用。其中,应不同安全级别的需求,本地区块链账户可以是指在本地终端设备上创建的区块链账户,也可以是指在区块链网络创建的账户。相应的,创建的区块链账户还可以切换到其他终端设备上进行登录和使用。
在区块链客户端中,只要保留了区块链账户的密钥尤其是私钥,就能解锁区块链账户,获取其中的用户资产。由于通常来说私钥是由64位的很长的字符串组成,当用户创建多个账户时,或者为了交易安全每次都生成新的区块链账户时,对于大量的区块链账户密钥的完善记录和妥善保存难度较大。相应的,区块链账户的助记词由此而生。使用助记词帮用户管理所有账户信息,用户不需要为区块链上的每一笔交易生成专有地址。
具体的,在助记词的生成过程中,首先生成一个长度为128至256位的随机数,例如128位、160位、192位、224位以及256位随机数。取随机数哈希后的前n位作为校验和,其中,n=随机数长度/32,就可以创造一个随机数的校验和。其次将校验和添加在随机数的末尾,以11位为单位,将重组的随机数拆分为分别包含11位的不同部分,并将每个包含11位部分的值与预先定义的助记词库进行比对,从而将随机数转换为由具有排列顺序的单词组成的助记词。例如,若随机数为128,则校验和为4位,构成132位的重组随机数,经拆分后可生成12个单词构成助记词。因此,助记词通常由12至24个单词组成,且助记词语言支持多种主流语言,便于用户记忆。通过区块链账户的助记词即可创建大量的私钥,由私钥可以推导出公钥,公钥经过变换可以得到区块链账户地址。本实施例中,在本地终端设备中创建区块链账户时,本地终端设备通过提供一个随机数,生成本地所创建的区块链账户的助记词信息,提供给用户进行保存,还可以保存与本地终端设备中。
本实施例中,密码扭曲函数是指用于对用户的事务密码进行处理,以生成对密钥原文进行加密的加密密码,以增加加密密码的安全性。密码扭曲函数是根据本地区块链账户的助记词信息而生成,基于助记词的唯一性,区块链账户具有自己专属的密码扭曲函数,对于不同区块链账户,其各自的密码扭曲函数都是不同的。密码扭曲函数可以记录在本地中,供本地在监测到本地区块链账户的密钥使用需求时,对密钥密文进行解密使用。
具体的,在生成密码扭曲函数的过程中,可以根据本地区块链账户的助记词信息进行助记特征值的抽取,通过密码扭曲函数生成函数提供的候选扭曲算法中确定本地扭曲算法,从而依据助记特征值来运行本地扭曲算法,以生成本地区块链账户的密码扭曲函数。其中,候选扭曲算法可以包括哈希类算法和/或伪随机类算法。本实施例将在后续的实施例中对密码扭曲函数的生成过程进行详细解释说明。
因此,本实施例中的密码扭曲函数不仅受到助记特征值的影响,使得不同区块链账户均具有不同的密码扭曲函数;而且计算复杂度较高,计算过程比较耗时且不可逆,极大提高了攻击者暴力遍历输入来获得输出的难度。
s120、根据本地用户的事务密码和密码扭曲函数,生成本地用户的扭曲事务密码。
在本发明具体实施例中,事务密码是指用户交易时进行确认的密码,例如支付密码,或者是区块链账户的登录密码。事务密码可以为用户输入的自然语义字符串,例如数字、所支持语言的字母或其组合等。为了便于用户记忆,事务密码形式简单,可以为长度较短的字符串,例如6位字符串。不同于区块链账户的密钥,事务密码可以根据用户需求进行修改,例如可以通过输入原始事务密码、导入助记词信息或者私钥进行身份认证后,对事务密码进行重置。
本实施例中,由于事务密码较为简单,以事务密码对密钥原文进行加密的抗攻击性较低,因此为了提高攻击者对密钥原文进行暴力逆推的难度,可以利用本地用户的密码扭曲函数,对本地用户的事务密码进行处理,生成本地用户的扭曲事务密码,实现对本地用户的事务密码的转换,以转换后的扭曲事务密码作为加密密码对密钥原文进行加密。其中,由于密码扭曲函数的计算不可逆性,以及密码扭曲函数与本地区块链账户助记词信息的强耦合性,转换后的扭曲事务密码的抗逆推性较强,以转换后的扭曲事务密码作为加密密码,大幅度提高了后续所加密密钥的安全性。
s130、采用本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,密钥密文用于记录在用户终端设备中。
在本发明具体实施例中,密钥原文是指区块链账户的密钥原始信息,例如私钥、公钥以及区块链账户地址等信息。其中,密钥原文是在区块链账户创建时,基于设备提供的随机数以及密钥生成算法生成的字符串。与助记词的生成方式对应,当用户在本地终端设备进行区块链账户创建时,通过系统生成的随机数,该随机数与生成助记词所需的随机数相同,依据密钥生成算法,例如椭圆加密算法,来生成区块链账户的私钥和公钥;并利用哈希算法对公钥进行处理,生成区块链账户地址信息。从而在区块链账户创建后,区块链账户的密钥原文以及助记词信息都是固定不变的。
本实施例中,将转换后的扭曲事务密码作为加密密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,并记录存储与用户终端设备中。其中,当本地用户修改事务密码时,则相应的扭曲事务密码也发生变化,利用扭曲事务密码进行加密得到的密钥密文也会发生变化,增加了密钥密文的破解难度。
因此,首先本实施例在本地终端设备创建区块链账户时,实现了将区块链账户的密钥密文存储在本地终端设备中,避免用户每次访问都需要输入自己的助记词或者密钥原文,增加了区块链客户端与用户之间的友好。其次,将密钥密文保存在本地终端设备上,避免密钥原文的泄露和窃取。同时,在区块链代码开源的情况下,通过密码扭曲函数与本地区块链账户助记词信息之间的强耦合性,即使是攻击者窃取了保存在本地终端设备上的密钥密文,基于密码扭曲函数的特性,攻击者也无从依据密钥密文暴力破解出本地区块链账户的密钥原文。
本实施例的技术方案,在用户终端设备上创建区块链账户时,以区块链账户的助记词信息为依据,通过生成本地用户的密码扭曲函数,并利用密码扭曲函数对本地用户的事务密码进行处理,生成本地用户的扭曲事务密码,从而采用本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,并记录存储在本地用户的用户终端设备中。本发明实施例基于本地用户的助记词信息以及助记词信息的复杂性和唯一性,通过生成区块链账户专属的密码扭曲函数,实现了不同用户采用不同加密密码生成方式,增加了密钥密文生成的多样性。从而在将区块链客户端软件的源代码开源的情况下,即使攻击者窃取了区块链账户的密钥密文,由于不同区块链账户使用不同的密码扭曲函数,因此导致攻击者无从暴力破解出不同用户的密钥原文,极大地增强了用户区块链账户密钥的安全性。
实施例二
本实施例在上述实施例一的基础上,提供了密钥处理方法的一个优选实施方式,能够生成本地区块链账户专属的密码扭曲函数。图2为本发明实施例二提供的一种密钥处理方法的流程图,其中,步骤s110具体还可以具体包括步骤s210-s230,如图2所示,该方法包括以下具体:
s210、根据本地区块链账户的助记词信息,生成助记词比特数组。
在本发明具体实施例中,在本地终端设备上创建区块链账户时,可以直接获取创建账户时所生成的助记词信息。从而将助记词信息中的全部或部分助记词转换为以数值数据的表现形式,构成助记词比特数组。
可选的,提取位于固定位置处的本地区块链账户的助记词片段;将助记词片段映射成助记词比特数组。
本实施例中,鉴于助记词由12至24个单词组成,且各单词之间具有排列顺序,因此可以预先设置至少一个固定的单词排列位置,或者基于特定算法,依据区块链账户唯一的助记词信息,计算得到相对于一个区块链账户固定的单词排列位置,从而从该至少一个固定的单词排列位置中提取出单词,构成助记词片段。进而在区块链账户创建时,其助记词片段也是确定的,且与用户唯一关联的。用户可以采用自己的方式完善记录并妥善保存助记词以及助记词片段,相对于完整的助记词信息更容易保存,且不易泄露完整的助记词信息。
本实施例中,通过字符串向数字的转换方式,将助记词片段映射成以数字形式表示的助记词比特数组,便于后续的运算。其中,本实施例不对字符串向数字的转换方式进行限定,任何能够进行字符串向数字转换的方式都可以应用于本实施例中。例如,可以依据随机数向助记词单词的转换方式,将助记词片段中的单词逆向映射为对应的数字组合;还可以将助记词片段中的各个字符进行ascii码的转换,得到助记词片段的比特数组。其中,基于统一一致的转换算法,其产生的比特数组的位数可以是相同的,便于后续对于同一区块链账户的统一运算。
示例性的,假设本地区块链账户的助记词信息中包括12个单词,并预先设定以1、3和7为固定位置。从而在本地终端设备中创建区块链账户时,在完成助记词的生成并获取后,可以从12个单词中,提取位于第1、3和7位置上的单词构成助记词片段。并依据助记词库,将该助记词片段映射为33位的助记词比特数组。
s220、从助记词比特数组中抽取至少一个助记特征值。
在本发明具体实施例中,类似于上述助记词片段的选取方式,本实施例不对比特数组中助记特征值的抽取方式进行限定,任何抽取特征值的方式都可以应用于本实施例中。示例性的,基于助记词比特数组的生成方式,可以依据生成方式所生成的比特数组的位数,预先设置至少一个固定的特征值位置,或者可以依据生成方式所关联的特定算法,基于特定算法,依据生成方式所生成的比特数组的位数,计算得到相对于一个区块链账户固定的特征值位置,从而从该至少一个固定的特征值位置中提取出至少一个数值,构成助记特征值。其中,基于统一一致的抽取算法,其产生的助记特征值的位数可以是相同的,便于后续对于同一区块链账户的统一运算。
s230、将至少一个助记特征值输入密码扭曲函数生成函数,生成本地用户的密码扭曲函数。
在本发明具体实施例中,密码扭曲函数生成函数是指由助记特征值生成密码扭曲函数的函数。其中,密码扭曲函数生成函数中包括扭曲算法,通过助记特征值运行扭曲算法,生成密码扭曲函数。
在一个可选的实施例中,根据至少一个助记特征值,从密码扭曲函数生成函数提供的至少两种候选扭曲算法中确定本地扭曲算法,并且确定本地扭曲算法的运行参数;根据本地扭曲算法以及本地扭曲算法的运行参数,生成本地用户的密码扭曲函数。
其中,密码扭曲函数生成函数中可以提供至少两种候选扭曲算法供选择,并可以规定各个扭曲算法的运行顺序和迭代次数等运行参数。具体的,通过将至少一个助记特征值输入密码扭曲函数生成函数,密码扭曲函数生成函数可以依据预设规则,从候选扭曲算法中确定本地采用的扭曲算法以及运行参数,从而运行生成本地用户的密码扭曲函数。其中,本地采用的扭曲算法可以为一个,也可以为多个;依据运行参数,各个本地扭曲算法可以顺序运行、交替运行以及迭代多次运行等。
可选的,根据至少一个助记特征值,从密码扭曲函数生成函数提供的哈希类算法中确定本地哈希算法;和/或,根据至少一个助记特征值,从密码扭曲函数生成函数提供的伪随机类算法中确定本地伪随机算法。
本实施例中,密码扭曲函数生成函数提供的候选扭曲算法可以为哈希类算法。哈希算法又叫散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。由于哈希算法的不可逆性,相应的也增加了本实施例中加密处理的破解难度。密码扭曲函数生成函数提供的候选扭曲算法还可以为伪随机类算法,用于生成伪随机数。密码扭曲函数可以是哈希类算法和/或伪随机类算法的任意运算方式的组合。
s240、根据本地用户的事务密码和密码扭曲函数,生成本地用户的扭曲事务密码。
s250、采用本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,密钥密文用于记录在用户终端设备中。
示例性的,图3为密钥加密处理过程的示意图。如图3所示,用户在本地终端设备进行区块链账户创建时,采用固定的密码扭曲函数生成函数,依据创建本地区块链账户所生成的助记词信息,生成本地用户的密码扭曲函数;利用本地用户的密码扭曲函数,对本地用户输入的事务密码进行处理,得到扭曲事务密码;将转换后的扭曲事务密码作为加密密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,并记录存储与用户终端设备中。其中,当用户更换一个新的终端设备进行区块链账户的登录和使用时,基于用户输入的助记词片段,在该新终端设备上进行密码扭曲函数的重建,进而避免用户对于助记词的全部输入,更加提高账户的安全性。
因此,首先本实施例在本地终端设备创建区块链账户时,实现了将区块链账户的密钥密文存储在本地终端设备中,避免用户每次访问都需要输入自己的助记词或者密钥原文,增加了区块链客户端与用户之间的友好。其次,将密钥密文保存在本地终端设备上,避免密钥原文的泄露和窃取。同时,在区块链代码开源的情况下,通过密码扭曲函数与本地区块链账户助记词信息之间的强耦合性,即使是攻击者窃取了保存在本地终端设备上的密钥密文,基于密码扭曲函数的特性,攻击者也无从依据密钥密文暴力破解出本地区块链账户的密钥原文。
本实施例的技术方案,在用户终端设备上创建区块链账户时,以区块链账户的助记词信息为依据,通过有助记词信息转换为助记词比特数组,由助记词比特数组转换为助记特征值,以助记特征值为输入,确定本地扭曲算法和运行参数,通过密码扭曲函数生成函数生成密码扭曲函数。并利用密码扭曲函数对本地用户的事务密码进行处理,生成本地用户的扭曲事务密码,从而采用本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,并记录存储在本地用户的用户终端设备中。本发明实施例基于本地用户的助记词信息以及助记词信息的复杂性和唯一性,通过生成区块链账户专属的密码扭曲函数,实现了不同用户采用不同加密密码生成方式,增加了密钥密文生成的多样性。从而在将区块链客户端软件的源代码开源的情况下,即使攻击者窃取了区块链账户的密钥密文,由于不同区块链账户使用不同的密码扭曲函数,因此导致攻击者无从暴力破解出不同用户的密钥原文,极大地增强了用户区块链账户密钥的安全性。
实施例三
本实施例在上述实施例一的基础上,提供了对生成的密钥密文进行使用的一个优选实施方式,用户在本地终端设备创建区块链账户后,在本地终端设备使用区块链账户时备,通过从本地终端设备获取本地区块链账户的密钥密文,能够利用本地用户的密码扭曲函数以及本地用户输入的事务密码,对本地区块链账户的密钥密文进行解密,以对本地用户的密钥使用需求进行响应。图4为本发明实施例三提供的密钥使用需求响应的流程图,如图4所示,该方法包括以下具体:
s410、在监测到本地区块链账户的密钥使用需求时,根据用户输入的事务密码和本地用户的密码扭曲函数,生成本地用户的扭曲事务密码。
在本发明具体实施例中,本地区块链账户是指通过在本地创建的区块链账户,相应的,本地区块链账户的助记词信息、密码扭曲函数以及密钥密文等信息可以都保存在本地终端设备中。其中,密钥密文这种已加密的信息还可是保存于本地终端设备能够通信拉取信息的其他终端设备中,例如云端。
本实施例中,事务密码在区块链账户创建时由用户设定,事务密码形式简单,容易记忆和保存。事务密码可以理解为,相对于私钥更加简单的登录密码。因此,当用户在本地终端设备进行本地区块链账户的登录时,即监测到本地区块链账户的密钥使用需求时,用户可以通过本地终端设备中区块链客户端的登录页面,向本地终端设备中输入事务密码。本地终端设备由此获得用户输入的事务密码。同时可以通过用户输入的其他账户信息,例如账户名等,从本地终端设备获取该本地用户的密码扭曲函数。并根据本地用户的密码扭曲函数,对用户输入的事务密码进行处理,以此生成本地用户的扭曲事务密码。
s420、采用该扭曲事务密码,对本地区块链账户的密钥密文进行解密,得到本地区块链账户的密钥原文。
在本发明具体实施例中,当用户在本地终端设备进行本地区块链账户的登录时,即监测到本地区块链账户的密钥使用需求时,同时本地终端设备可以通过用户输入的账户信息,例如账户名等,从本地终端设备或云端获取该本地用户的密钥密文。并同上述区块链账户创建中密钥原文的加密过程,以扭曲事务密码作为解密密码,对获取的统一用户的密钥密文进行解密,从而得到本地区块链账户的密钥原文。
s430、根据本地区块链账户的密钥原文,响应密钥使用需求。
在本发明具体实施例中,通过密钥原文,即可对区块链账户进行解锁,从中获取区块链账户信息。因此根据本地区块链账户的密钥原文,进行本地区块链账户登录,并响应用户的其他区块链操作需求。例如区块链账户中的资产交易等。
示例性的,图5为密钥密文解密过程的示意图。如图5所示,用户在本终端设备创建区块链账户之后,或者在用户非第一次使用本地终端设备进行区块链账户访问时,采用在本地终端设备中已生成的密码扭曲函数,对本地用户输入的事务密码进行处理,得到扭曲事务密码;将转换后的扭曲事务密码作为解密密码,对本地区块链账户的密钥密文进行解密,得到本地区块链账户的密钥原文。
因此,首先本实施例在已创建本地区块链账户的本地终端设备进行本地区块链账户使用时,实现了直接利用本地终端设备存储的密钥密文进行使用,避免用户每次访问都需要输入自己的助记词或者密钥原文,用户在每次输入简单的事务密码,即可实现区块链账户的登录和使用,增加了区块链客户端与用户之间的友好。同时在区块链代码开源的情况下,通过用户专属的密码扭曲函数与本地区块链账户助记词信息之间的强耦合性,即使是攻击者窃取了保存在本地终端设备上的密钥密文,基于密码扭曲函数的多样性,攻击者也无从依据密钥密文暴力破解出本地区块链账户的密钥原文。
本实施例的技术方案,用户在已创建本地区块链账户的本地终端设备进行本地区块链账户使用时,通过本地终端设备中已存储的密钥密文以及密码扭曲函数,基于用户输入的事务密码能够直接进行区块链账户的使用。提高了区块链客户端与用户之间的友好,降低用户对于使用时密码的保存难度,同时提高了密钥密文的安全性,提高暴力攻击难度。
实施例四
本实施例在上述实施例一的基础上,提供了对生成的密钥密文进行使用的一个优选实施方式,当本地终端设备进行其他区块链账户的使用时,即当用户更换一个新终端设备进行区块链账户的使用时,需要在该新终端设备的使用时,尤其是新终端设备的首次使用,依据用户输入的助记词信息,来重建其他区块链账户在该新终端设备中的密码扭曲函数,从而基于该新终端设备的密码扭曲函数进行密钥的解密。图6为本发明实施例四提供的设备更换时密钥使用需求响应的流程图,如图6所示,该方法包括以下具体:
s610、在监测到本地使用其他区块链账户的密钥使用需求时,获取其他区块链账户的密钥密文。
在本发明具体实施例中,在监测到本地使用其他区块链账户的密钥使用需求时,也就是说,其他区块链账户并非是在本地终端设备中创建的,或者说是在其他终端设备中创建的区块链账户,更换了使用终端设备,在本地终端设备中进行使用。则在这种情况下,尤其是本地终端设备首次进行其他区块链账户的使用时,本地终端设备中并没有保存其他区块链账户的助记词信息、密码扭曲函数以及密钥密文等信息。因此,本地终端设备在监测到本地使用其他区块链账户的密钥使用需求时,可以通过其他用户输入的账户信息,例如账户名等,从中间设备例如云端,获取其他区块链账户的密钥密文,或者本地终端设备也可以接收其他区块链账户的原终端设备传递的密钥密文。
s620、根据其他区块链账户的助记词信息,生成其他用户的密码扭曲函数。
在本发明具体实施例中,由于其他区块链账户使用设备的切换,尤其是本地终端设备的首次使用,本地终端设备中并没有保存其他区块链账户的密码扭曲函数。因此,鉴于密码扭曲函数的安全性,中间设备中并没有存储区块链账户的密码扭曲函数。由于密码扭曲函数生成函数是固定不变的,此时,用户在新终端设备中进行区块链账户的使用时,可以通过本地终端设备中区块链客户端的使用页面,将助记词信息输入至本地终端设备中,以供本地终端设备依据助记词信息以及密码扭曲函数生成函数,在本地终端设备中重建其他区块链账户的密码扭曲函数。其中,用户输入的助记词信息优选为区块链创建时,提示用户进行记录保存的助记词片段。因此密码扭曲函数的重建无需重新输入完整的助记词信息,进一步保障了助记词信息的安全性。至此,对于其他区块链账户,本地终端设备中重新进行了必要信息的收集和重建,以使其他区块链账户与本地终端设备进行绑定,确保了本地终端设备中其他区块链账户的顺利且安全使用。
其中,本地终端设备的区块链客户端还可以向其他用户提供是否保存选项,当其他用户选择允许保存时,则上述信息可以存储于本地终端设备中,以便后续再次使用时的快速使用;当其他用户选择不允许保存时,则上述信息只在本次使用时使用,以提高用户在新终端设备的临时使用的安全性,此时若该其他用户后续再次使用本地终端设备,则还需要重复上述信息的收集与重建过程。
s630、根据其他用户的事务密码和其他用户的密码扭曲函数,生成其他用户的扭曲事务密码。
在本发明具体实施例中,其他用户可以通过本地终端设备中区块链客户端的使用页面,向本地终端设备中输入其他用户的事务密码。本地终端设备由此获得其他用户输入的事务密码,收集了其他区块链账户的密钥密文,重建了其他用户的密码扭曲函数。因此,本地终端设备可以根据其他用户的密码扭曲函数,对其他用户输入的事务密码进行处理,以此生成其他用户的扭曲事务密码。
s640、采用其他用户的扭曲事务密码,对其他区块链账户的密钥密文进行解密,得到其他区块链账户的密钥原文。
在本发明具体实施例中,当其他用户在本地终端设备进行其他区块链账户的登录时,即监测到其他区块链账户的密钥使用需求时,可以同上述区块链账户创建中密钥原文的加密过程,以扭曲事务密码作为解密密码,对获取的其他用户的密钥密文进行解密,从而得到其他区块链账户的密钥原文。
本实施例的技术方案,在本地终端设备中,使用在其他终端设备中已创建的其他区块链账户时,尤其是首次使用,本地终端设备通过获取其他区块链账户的密钥密文,依据其他用户输入的助记词信息重建其他用户的密码扭曲函数,基于其他用户输入的事务密码,能够在本地终端设备中直接进行区块链账户的使用。提高了区块链客户端与用户之间的友好,降低用户对于使用时密码的保存难度,同时提高了区块链账户与设备的绑定关系、其他区块链账户密钥密文的安全性以及暴力攻击难度。
实施例五
图7为本发明实施例五提供的一种密钥处理装置的结构示意图,本实施例可适用于在用户使用本地终端设备进行区块链账户创建时,对用户在本地终端设备中存储的密钥信息进行加密处理的情况,该装置可实现本发明任意实施例所述的密钥处理方法。该装置具体包括:
密码扭曲函数生成模块710,用于根据本地区块链账户的助记词信息,生成本地用户的密码扭曲函数;
扭曲事务密码生成模块720,用于根据本地用户的事务密码和所述密码扭曲函数,生成本地用户的扭曲事务密码;
密钥处理模块730,用于采用所述本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,所述密钥密文用于记录在用户终端设备中。
可选的,所述密码扭曲函数生成模块710包括:
助记词比特数组生成单元7101,用于根据所述本地区块链账户的助记词信息,生成助记词比特数组;
助记特征值抽取单元7102,用于从所述助记词比特数组中抽取至少一个助记特征值;
密码扭曲函数生成单元7103,用于将所述至少一个助记特征值输入密码扭曲函数生成函数,生成所述本地用户的密码扭曲函数。
可选的,所述助记词比特数组生成单元7101具体用于:
提取位于固定位置处的本地区块链账户的助记词片段;
将所述助记词片段映射成所述助记词比特数组。
可选的,所述密码扭曲函数生成单元7103具体用于:
根据所述至少一个助记特征值,从密码扭曲函数生成函数提供的至少两种候选扭曲算法中确定本地扭曲算法,并且确定所述本地扭曲算法的运行参数;
根据所述本地扭曲算法以及所述本地扭曲算法的运行参数,生成本地用户的密码扭曲函数。
可选的,所述密码扭曲函数生成单元7103具体用于:
根据所述至少一个助记特征值,从密码扭曲函数生成函数提供的哈希类算法中确定本地哈希算法;和/或,
根据所述至少一个助记特征值,从密码扭曲函数生成函数提供的伪随机类算法中确定本地伪随机算法。
进一步的,所述装置还包括密钥使用响应模块740;所述密钥使用响应模块740具体用于:
在所述得到本地区块链账户的密钥密文之后,在监测到本地区块链账户的密钥使用需求时,根据用户输入的事务密码和本地用户的密码扭曲函数,生成本地用户的扭曲事务密码;
采用该扭曲事务密码,对本地区块链账户的密钥密文进行解密,得到本地区块链账户的密钥原文;
根据所述本地区块链账户的密钥原文,响应密钥使用需求。
进一步的,所述装置还包括其他区块链账户响应模块750;所述其他区块链账户响应模块750具体用于:
在监测到本地使用其他区块链账户的密钥使用需求时,获取其他区块链账户的密钥密文;
根据其他区块链账户的助记词信息,生成其他用户的密码扭曲函数;
根据其他用户的事务密码和其他用户的密码扭曲函数,生成其他用户的扭曲事务密码;
采用所述其他用户的扭曲事务密码,对其他区块链账户的密钥密文进行解密,得到其他区块链账户的密钥原文。
可选的,所述事务密码为用户输入的自然语义字符串,所述密钥原文是根据随机数和密钥生成算法生成的字符串。
本实施例的技术方案,通过各个功能模块之间的相互配合,实现了区块链账户的创建、助记词的生成、密钥的生成、密码扭曲函数的生成、事务密码的接收、扭曲事务密码的生成、密钥原文的加密以及密钥使用的响应等功能。本发明实施例基于本地用户的助记词信息以及助记词信息的复杂性和唯一性,通过生成区块链账户专属的密码扭曲函数,实现了不同用户采用不同加密密码生成方式,增加了密钥密文生成的多样性。从而在将区块链客户端软件的源代码开源的情况下,即使攻击者窃取了区块链账户的密钥密文,由于不同区块链账户使用不同的密码扭曲函数,因此导致攻击者无从暴力破解出不同用户的密钥原文,极大地增强了用户区块链账户密钥的安全性。
实施例六
图8为本发明实施例六提供的一种设备的结构示意图,图8示出了适于用来实现本发明实施例实施方式的示例性设备的框图。图8显示的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
图8显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。该设备12优选为安装有区块链客户端的终端设备。
如图8所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器16,系统存储器28,连接不同系统组件(包括系统存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
处理器16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的密钥处理方法。
实施例七
本发明实施例七还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行一种密钥处理方法,该方法包括:
根据本地区块链账户的助记词信息,生成本地用户的密码扭曲函数;
根据本地用户的事务密码和所述密码扭曲函数,生成本地用户的扭曲事务密码;
采用所述本地用户的扭曲事务密码,对本地区块链账户的密钥原文进行加密,得到本地区块链账户的密钥密文,所述密钥密文用于记录在用户终端设备中。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。