一种硬件钱包绑定授权的方法及装置

文档序号:1649980 发布日期:2019-12-24 浏览:19次 >En<

阅读说明:本技术 一种硬件钱包绑定授权的方法及装置 (Hardware wallet binding authorization method and device ) 是由 陆舟 于华章 于 2019-09-09 设计创作,主要内容包括:本发明公开一种硬件钱包绑定授权的方法及装置,该方法包括:当硬件钱包接收到查询绑定状态指令则判断验证数据存在性标志的值,如为第一预设数据则将绑定对象设置为空,将授权状态设为允许生成授权码;如为第二预设数据则将绑定对象设置为与硬件钱包对应的终端或其他终端;将绑定对象和保存的硬件钱包证书返回给终端;当硬件钱包接收到生成授权码指令时如授权状态为允许生成状态码则生成授权码并缓存和显示,将授权状态设为不能再生成授权码,将硬件钱包状态设为未绑定;当硬件钱包接收到绑定指令则使用获取的授权码对绑定指令进行验证,如验证成功则绑定成功。终端只有通过用户授权才能与硬件钱包进行连接,保证用户资产的安全。(The invention discloses a method and a device for binding and authorizing a hardware wallet, wherein the method comprises the following steps: when the hardware wallet receives a binding state inquiry command, judging the value of a data existence mark, if the value is first preset data, setting a binding object to be null, and setting an authorization state to be an authorization code allowed to be generated; if the binding object is the second preset data, setting the binding object as a terminal corresponding to the hardware wallet or other terminals; returning the binding object and the stored hardware wallet certificate to the terminal; when the hardware wallet receives a command for generating the authorization code, if the authorization state is the permission for generating the status code, the authorization code is generated, cached and displayed, the authorization state is set as the authorization code which can not be generated again, and the hardware wallet status is set as unbound; and when the hardware wallet receives the binding instruction, verifying the binding instruction by using the acquired authorization code, and if the verification is successful, successfully binding. The terminal can be connected with the hardware wallet only through user authorization, and the safety of user assets is guaranteed.)

一种硬件钱包绑定授权的方法及装置

技术领域

本发明涉及信息安全领域,尤其涉及一种硬件钱包绑定授权的方法及装置。

背景技术

硬件钱包是一种将数字资产私钥单独储存在一个芯片中,与互联网隔离,即插即用的设备。在现有技术中,硬件钱包采用配对码和PIN码验证方式,终端与硬件钱包首次连接时需对硬件钱包的配对码和PIN码进行验证,两者均验证成功后才可以连接使用;当硬件钱包丢失后,一旦被非法用户猜中PIN码和配对码,将硬件钱包成功连接到终端,该非法用户便可以转移合法用户的资产,导致合法用户财产存在安全隐患。

发明内容

本发明的目的是为了克服现有技术的不足,提供一种硬件钱包绑定授权的方法及装置。

本发明提供了一种硬件钱包绑定授权的方法,包括:

步骤S1:当硬件钱包接收到终端发送的指令时,判断指令的类型,如为查询绑定状态指令则执行步骤S2,如为生成授权码指令则执行步骤S5,如为绑定指令则执行步骤S7;

步骤S2:所述硬件钱包判断内部保存的验证数据存在性标志的值,如为第一预设数据则将绑定对象设置为空,将授权状态设为允许生成授权码,执行步骤S4;如为第二预设数据则执行步骤S3;

步骤S3:所述硬件钱包判断查询绑定状态指令中的验证数据和保存的验证数据是否一致,是则将绑定对象设置为与所述硬件钱包对应的终端,执行步骤S4,否则将绑定对象设置为其他终端,执行步骤S4;

步骤S4:所述硬件钱包根据绑定对象和保存的硬件钱包证书组织命令响应数据并返回给所述终端,返回步骤S1;

步骤S5:所述硬件钱包判断授权状态是否为允许生成状态码,是则执行步骤S6,否则给所述终端返回错误信息,返回步骤S1;

步骤S6:所述硬件钱包生成授权码并缓存和显示,将授权状态设为不能再生成授权码,将硬件钱包状态设为未绑定,并给终端返回成功信息,返回步骤S1;

步骤S7:所述硬件钱包判断硬件钱包状态是否为未绑定,是则获取缓存的授权码,执行步骤S8,否则获取保存的授权码,执行步骤S10;

步骤S8:所述硬件钱包使用获取的授权码对所述绑定指令进行验证,如验证成功则执行步骤S9,如验证失败则给终端返回验证失败信息,返回步骤S1;

步骤S9:所述硬件钱包保存所述绑定指令中的验证数据和缓存的授权码,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,返回步骤S1;

步骤S10:所述硬件钱包使用获取的授权码对所述绑定指令进行验证,如验证成功则执行步骤S11,如验证失败则给终端返回验证失败信息,返回步骤S1;

步骤S11:所述硬件钱包根据所述绑定指令判断当前连接的终端是否为与所述硬件钱包对应的终端,是则给所述终端返回授权成功过信息,返回步骤S1,否则保存所述绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,返回步骤S1。

进一步地,所述步骤S9和所述步骤S11还包括:所述硬件钱包将硬件钱包与终端的绑定状态码设为预定值;

所述步骤S1还包括:当硬件钱包判断接收到终端发送的指令的类型为签名指令时,所述硬件钱包判断硬件钱包与终端绑定的状态码是否为预定值,是则根据所述签名指令进行签名操作,返回步骤S1,否则给所述终端返回错误信息。

进一步地,所述步骤S2之前还包括:所述硬件钱包从预置缓存中获取验证数据存在性标志的值。

进一步地,所述硬件钱包生成授权码包括:

所述硬件钱包生成预设长度的随机数,根据所述随机数和预设字符编码表生成检索码;将检索码的值顺序拼接组成授权码。

进一步地,所述步骤S7之前还包括:所述硬件钱包判断所述绑定指令是否合法,是则执行步骤S7,否则给所述终端返回错误信息,返回步骤S1。

进一步地,所述硬件钱包判断所述绑定指令是否合法,具体为:所述硬件钱包判断所述绑定指令中的第三字节数据是否为第一预设值或第二预设值、且判断第四字节数据是否为第三预设值,如判断均为是则所述绑定指令合法,否则所述绑定指令不合法。

进一步地,所述步骤S11包括:所述硬件钱包判断所述绑定指令中的第三字节数据是否为第二预设值,是则给所述终端返回授权成功过信息,返回步骤S1,否则保存所述绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,返回步骤S1。

进一步地,所述将硬件钱包状态设为未绑定,具体为:所述硬件钱包将授权码标记设为预设值;

所述步骤S7包括:所述硬件钱包判断授权码标记是否为预设值,是则获取缓存的授权码,执行步骤S8,否则获取保存的授权码,执行步骤S10。

进一步地,所述硬件钱包使用获取的授权码对所述绑定指令进行验证,包括:

步骤A1:所述硬件钱包根据授权码对所述绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据所述授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

步骤A2:所述硬件钱包判断所述设备哈希值与所述第一解密结果是否相等,是则验证成功,否则验证失败。

进一步地,所述步骤A1包括:

步骤b1:所述硬件钱包对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果,对所述第一哈希结果和所述第二哈希结果进行异或计算得到异或结果;

步骤b2:所述硬件钱包将所述异或结果的前16字节做为加解密运行的初始向量;根据密钥协商算法使用保存的验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将所述设备密文的前16字节数据作为第一密钥;

步骤b3:所述硬件钱包使用所述第一密钥和所述初始向量对所述绑定指令中的终端哈希值的密文进行解密得到第一解密结果;根据所述授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值。

进一步地,所述根据所述授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值,具体为:将所述授权码、所述验证数据、所述硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值。

本发明又提供一种硬件钱包绑定授权的装置,包括:

第一判断模块,用于当硬件钱包接收到终端发送的指令时,判断指令的类型,如为查询绑定状态指令则触发第二判断模块,如为生成授权码指令则触发第三判断模块,如为绑定指令则触发第四判断模块;

所述第二判断模块,用于判断判断内部保存的验证数据存在性标志的值,如为第一预设数据则将绑定对象设置为空,将授权状态设为允许生成授权码,触发第一返回模块;如为第二预设数据则触发判断设置模块;

所述判断设置模块,用于判断查询绑定状态指令中的验证数据和保存的验证数据是否一致,是则将绑定对象设置为与所述硬件钱包对应的终端,触发第一返回模块,否则将绑定对象设置为其他终端,触发第一返回模块;

所述第一返回模块,用于根据绑定对象和保存的硬件钱包证书组织命令响应数据并返回给所述终端,触发所述第一判断模块;

所述第三判断模块,用于判断授权状态是否为允许生成状态码,是则触发生成设置模块,否则给所述终端返回错误信息,触发所述第一判断模块;

所述生成设置模块,用于生成授权码并缓存和显示,将授权状态设为不能再生成授权码,将硬件钱包状态设为未绑定,并给终端返回成功信息,触发所述第一判断模块;

所述第四判断模块,用于判断硬件钱包状态是否为未绑定,是则获取缓存的授权码,触发第一验证模块,否则获取保存的授权码,触发第二验证模块;

所述第一验证模块,用于使用获取的授权码对所述绑定指令进行验证,如验证成功则触发保存设置模块,如验证失败则给终端返回验证失败信息,触发所述第一判断模块;

所述保存设置模块,用于保存所述绑定指令中的验证数据和缓存的授权码,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,触发所述第一判断模块;

所述第二验证模块,用于使用获取的授权码对所述绑定指令进行验证,如验证成功则触发判断保存模块,如验证失败则给终端返回验证失败信息,触发所述第一判断模块;

所述判断保存模块,用于根据所述绑定指令判断当前连接的终端是否为与所述硬件钱包对应的终端,是则给所述终端返回授权成功过信息,触发所述第一判断模块,否则保存所述绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,触发所述第一判断模块。

进一步地,所述保存设置模块还用于将硬件钱包与终端的绑定状态码设为预定值;

所述装置还包括判断签名模块,用于当所述第一判断模块判断接收到终端发送的指令的类型为签名指令时,判断硬件钱包与终端绑定的状态码是否为预定值,是则根据所述签名指令进行签名操作,触发所述第一判断模块,否则给所述终端返回错误信息,触发所述第一判断模块。

进一步地,所述装置还包括:第一获取模块,用于从预置缓存中获取验证数据存在性标志的值。

进一步地,所述生成设置模块,用于生成授权码包括:所述生成设置模块用于生成预设长度的随机数,根据随机数和预设字符编码表生成检索码;将检索码的值顺序拼接组成授权码。

进一步地,所述装置还包括第五判断模块,用于当所述第一判断模块判断指令的类型为绑定指令时,判断所述绑定指令是否合法,是则触发所述第四判断模块,否则给所述终端返回错误信息,触发所述第一判断模块。

进一步地,所述第五判断模块具体用于当所述第一判断模块判断指令的类型为绑定指令时,判断所述绑定指令中的第三字节数据是否为第一预设值或第二预设值、且判断第四字节数据是否为第三预设值,如判断均为是则触发所述第四判断模块,否则给所述终端返回错误信息,触发所述第一判断模块。

进一步地,所述判断保存模块具体用于判断所述绑定指令中的第三字节数据是否为第二预设值,是则给所述终端返回授权成功过信息,否则保存所述绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给所述终端返回授权成功信息,触发所述第一判断模块。

进一步地,所述生成设置模块用于将所述硬件钱包状态设为未绑定,具体为时:所述生成设置模块用于将授权码标记设为预设值;

所述第四判断模块具体用于判断授权码标记是否为预设值,是则获取缓存的授权码,触发第一验证模块,否则获取保存的授权码,触发第二验证模块。

进一步地,所述第一验证模块,包括:

计算单元,用于根据授权码对所述绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

第一判断单元,用于判断所述设备哈希值与所述第一解密结果是否相等,是则验证成功,触发保存设置模块,否则验证失败,给终端返回验证失败信息,触发所述第一判断模块;

所述第二验证模块,包括:

计算单元,用于根据授权码对所述绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

第二判断单元,用于判断所述设备哈希值与所述第一解密结果是否相等,是则验证成功,触发判断保存模块,否则验证失败,给终端返回验证失败信息,触发所述第一判断模块。

进一步地,所述计算单元包括:

第一计算子单元,用于对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果,对所述第一哈希结果和所述第二哈希结果进行异或计算得到异或结果;

解密协商子单元,用于将所述异或结果的前16字节做为加解密运行的初始向量;根据密钥协商算法使用保存的验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将所述设备密文的前16字节数据作为第一密钥;

解密计算子单元,用于使用所述第一密钥和所述初始向量对所述绑定指令中的终端哈希值的密文进行解密得到第一解密结果;根据所述授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值。

进一步地,所述解密计算子单元用于根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值,具体为:所述解密计算子单元用于将所述授权码、所述验证数据、所述硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值。

本发明与现有技术相比,具有以下优点:

本发明技术方案将终端与硬件钱包一一对应绑定,若硬件钱包需要连接新的终端则必须先通过授权码判断用户是否授权该终端与硬件钱包进行连接,如授权则允许新的终端与该硬件钱包进行连接,保证了硬件钱包丢失时或未授权时用户资产的安全性。

附图说明

图1为本发明实施例一提供的一种硬件钱包绑定授权的方法流程图;

图2和图3为本发明实施例二提供的一种硬件钱包绑定授权的方法流程图;

图4为本发明实施例三提供的一种硬件钱包绑定授权的装置方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本发明实施例一提供一种硬件钱包绑定授权的方法,如图1所示,包括:

步骤S1:当硬件钱包接收到终端发送的指令时,判断指令的类型,如为查询绑定状态指令则执行步骤S2,如为生成授权码指令则执行步骤S5,如为绑定指令则执行步骤S7;

步骤S2:硬件钱包判断内部保存的验证数据存在性标志的值,如为第一预设数据则将绑定对象设置为空,将授权状态设为允许生成授权码,执行步骤S4;如为第二预设数据则执行步骤S3;

可选的,在本实施例中,步骤S2之前还包括:硬件钱包从预置缓存中获取验证数据存在性标志的值;

步骤S3:硬件钱包判断查询绑定状态指令中的验证数据和保存的验证数据是否一致,是则将绑定对象设置为与硬件钱包对应的终端,执行步骤S4,否则将绑定对象设置为其他终端,执行步骤S4;

可选的,本实施例中的验证数据可以为终端公钥或者其他数据;

步骤S4:硬件钱包根据绑定对象和保存的硬件钱包证书组织命令响应数据并返回给终端,返回步骤S1;

步骤S5:硬件钱包判断授权状态是否为允许生成状态码,是则执行步骤S6,否则给终端返回错误信息,返回步骤S1;

步骤S6:硬件钱包生成授权码并缓存和显示,将授权状态设为不能再生成授权码,将硬件钱包状态设为未绑定,并给终端返回成功信息,返回步骤S1;

具体的,在本实施例中,硬件钱包生成授权码包括:硬件钱包生成预设长度的随机数,根据随机数和预设字符编码表生成检索码;将检索码的值顺序拼接组成授权码;

可选的,将硬件钱包状态设为未绑定,具体为:硬件钱包将授权码标记设为预设值;

步骤S7:硬件钱包判断硬件钱包状态是否为未绑定,是则获取缓存的授权码,执行步骤S8,否则获取保存的授权码,执行步骤S10;

具体的,步骤S7包括:硬件钱包判断授权码标记是否为预设值,是则获取缓存的授权码,执行步骤S8,否则获取保存的授权码,执行步骤S10;

可选的,步骤S7之前还包括:硬件钱包判断绑定指令是否合法,是则执行步骤S7,否则给终端返回错误信息,返回步骤S1;

其中,硬件钱包判断绑定指令是否合法,具体为:硬件钱包判断绑定指令中的第三字节数据是否为第一预设值或第二预设值、且判断第四字节数据是否为第三预设值,如判断均为是则绑定指令合法,否则绑定指令不合法;

步骤S8:硬件钱包使用获取的授权码对绑定指令进行验证,如验证成功则执行步骤S9,如验证失败则给终端返回验证失败信息,返回步骤S1;

具体的,在本实施例中,硬件钱包使用获取的授权码对绑定指令进行验证,包括:

步骤A1:硬件钱包根据授权码对绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

本实施例中的步骤A1包括:

步骤b1:硬件钱包对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果,对第一哈希结果和第二哈希结果进行异或计算得到异或结果;

步骤b2:硬件钱包将异或结果的前16字节做为加解密运行的初始向量;根据密钥协商算法使用保存的验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将设备密文的前16字节数据作为第一密钥;

例如,在本实施例中,硬件钱包将异或结果的前16字节做为AES加解密运行的初始向量;

步骤b3:硬件钱包使用第一密钥和初始向量对绑定指令中的终端哈希值的密文进行解密得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

在本实施例中,根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值,具体为:将授权码、验证数据、硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值;

步骤A2:硬件钱包判断设备哈希值与第一解密结果是否相等,是则验证成功,否则验证失败;

步骤S9:硬件钱包保存绑定指令中的验证数据和缓存的授权码,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,返回步骤S1;

步骤S10:硬件钱包使用获取的授权码对绑定指令进行验证,如验证成功则执行步骤S11,如验证失败则给终端返回验证失败信息,返回步骤S1;

在本实施例中,步骤S10的实现与步骤S8一致,在此不再赘述;

步骤S11:硬件钱包根据绑定指令判断当前连接的终端是否为与硬件钱包对应的终端,是则给终端返回授权成功过信息,返回步骤S1,否则保存绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,返回步骤S1;

在本实施例中,步骤S11包括:硬件钱包判断绑定指令中的第三字节数据是否为第二预设值,是则给终端返回授权成功过信息,返回步骤S1,否则保存绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,返回步骤S1。

可选的,在本实施例中,只要授权成功则用户就可使用硬件钱包进行操作(例如签名等),即步骤S9和步骤S11还包括:硬件钱包将硬件钱包与终端的绑定状态码设为预定值;相应的,步骤S1还包括:当硬件钱包判断接收到终端发送的指令的类型为签名指令时,硬件钱包判断硬件钱包与终端绑定的状态码是否为预定值,是则根据签名指令进行签名操作,返回步骤S1,否则给终端返回错误信息。

实施例二

本发明实施例二提供一种硬件钱包绑定授权的方法,如图2和图3所示,包括:

步骤101:当硬件钱包接收到终端发送的指令时,判断指令的类型,如为查询绑定状态指令在执行步骤102,如为生成授权码指令在执行步骤112,如为绑定指令则执行步骤118,如为签名指令则执行步骤143;

具体的,在本实施例中,硬件钱包判断接收到的指令中的第二个字节数据,如为0x71则指令的类型为查询绑定状态指令;如为0x72指令的类型为生成授权码指令;如为0x73则指令的类型为绑定指令;

在本实施例中,硬件钱包接收到指令后首先将指令保存在APDU缓存中,然后在进行处理;

步骤102:硬件钱包从查询绑定状态指令中获取验证数据:

具体的,在本实施例中,步骤102包括:硬件钱包将接收到的查询绑定状态指令保存在APDU缓存中,并从APDU缓存的第5字节开始获取65个字节数据作为验证数据,并存储在第一缓存区中;例如,本实施例中的验证数据可以为终端公钥;

步骤103:硬件钱包从预置缓存区中获取验证数据存在性标志;

优选的,在本实施例中,步骤103之前还包括:硬件钱包判断预置缓存中是否有数据,是则执行步骤103,否则报错;

步骤104:硬件钱包从预置缓存区中获取硬件钱包证书并存储到第二缓存区中;

在本实施例中,硬件钱包证书中包括硬件钱包公钥;

步骤105:硬件钱包判断验证数据存在性标志的值,如为第一预定数据则执行步骤106,如为第二预定数据则执行步骤108;

可选的,第一预定数据为0x0000;第二预定数据为0x5AA5;

步骤106:硬件钱包设置绑定对象设置为空;

例如,在本实施例中,硬件钱包将绑定对象的值设置为0x00;

步骤107:硬件钱包将授权状态设置为允许生成授权码,执行步骤111;

在本实施例中,硬件钱包将授权状态设置为0xA5;

步骤108:硬件钱包判断查询绑定状态指令中的验证数据与保存的验证数据是否相等,是则执行步骤109,否则执行步骤110;

步骤109:硬件钱包设置绑定对象设置为与硬件钱包对应的终端,执行步骤111;

例如,在本实施例中,硬件钱包将绑定对象的值设置为0x55;

步骤110:硬件钱包将绑定对象设置为其它终端,执行步骤111;

例如,在本实施例中,硬件钱包将绑定对象的值设置为0xAA;

步骤111:硬件钱包根据绑定对象和硬件钱包证书组织命令响应数据并返回给终端,返回步骤101;

在本实施例中,终端从接收到的响应数据中获取绑定对象的值,如为0x00则硬件钱包未绑定新设备,终端给硬件钱包设备发送绑定指令;如为0x55则硬件钱包绑定的设备就是当前终端,如为0xAA则硬件钱包绑定了其它终端,终端给硬件钱包发送生成授权码指令;

在本实施例中,如终端接收到响应数据后,解析响应数据获知绑定对象为空则会给硬件钱包下发生成授权码指令,如解析响应数据获知绑定对象为与该硬件钱包对应的终端或其他终端,则会给硬件钱包下发绑定指令;

步骤112:硬件钱包判断授权状态是否为允许生成授权码,是则执行步骤113,否则给终端返回错误信息;

例如,该步骤中硬件钱包判断授权状态是否为0xA5,是则执行步骤113,否则给终端返回错误信息;优选的,错误信息为9000;

步骤113:硬件钱包生成8个字节的随机数,根据随机数和预设字符编码表生成检索码;

在本实施例中,硬件钱包根据随机数和预设字符编码表生成检索码包括:硬件钱包对随机数的第n字节在预设字符编码表中所对应的字符编码值模32得到的索引做为SEED的检索码;预设字符编码表为以下字符编码RANDOM_SEED(0~9,A-Z中去除了'0'、'1'、'I'、'O')共32个;

步骤114:硬件钱包将检索码的值顺序拼接组成的授权码并缓存;

在本实施例中,授权码缓存后如发生掉电,则缓存的授权码将被清除;

步骤115:硬件钱包显示授权码;

在本实施例中,用户将硬件钱包显示的授权码记录在纸上,并安全保存,等硬件钱包绑定当前设备或其他设备时,用户将保存记录的授权码输入到终端,终端根据授权码计算终端数据并将其发送给硬件钱包,硬件钱包通过缓存或保存的授权码对接收到的终端数据进行验证;

步骤116:硬件钱包将授权状态设置为不能再生成授权码;

例如,在本实施例中,步骤116中硬件钱包将授权状态设置为0x5A;

步骤117:硬件钱包将授权码标记设置为硬件钱包第一次绑定设备,并给终端返回成功信息,返回步骤101:

具体的,在本实施例中,硬件钱包将授权码标记设置为0xA5;

步骤118:硬件钱包根据绑定指令中的第三字节判断是否为绑定设备操作或验证设备操作,是则执行步骤119,否则设置状态码,根据设置的状态码给终端返回错误信息;

优选的,步骤118还包括:硬件钱包判断绑定指令的第四字节数据是否为0;

具体的,硬件钱包判断绑定指令的第三字节的值,如为0x00或0x80则终端为绑定设备操作或验证设备操作;设置的状态码为6a86,表示P1、P2的值错误;

步骤119:硬件钱包根据授权码标记判断硬件钱包是否为第一次绑定设备用,是则获取缓存的授权码,执行步在120,否则获取保存的授权码,执行步骤131;

具体的,在本实施例中,硬件钱包判断授权码标记是否为0xA5,是则可以直接使用缓存的授权码,执行步在120,否则获取保存的授权码,执行步骤120;在本实施例中,授权码保存后如发生掉电,则保存的授权码在下次硬件钱包开机后可以继续使用;

步骤120:硬件钱包对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果;

例如,本实施例中的预置常数为0x62 0x69 0x6e 0x64 0x69 0x6e 0x67 0x430x6f 0x64 0x65;

步骤121:硬件钱包对第一哈希结果和第二哈希结果进行异或计算得到异或结果;

步骤122:硬件钱包将异或结果的前16字节做为AES加解密运行的初始向量;

步骤123:硬件钱包获取验证数据,根据密钥协商算法使用验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将设备密文的前16字节数据作为第一密钥;

可选的,硬件钱包将APDU缓存中的第6到70字节处的数据作为是验证数据;密钥协商算法具体为ECDH;

在本实施例中,步骤122与步骤123的顺序可调换;

步骤124:硬件钱包使用第一密钥和初始向量对APDU缓存中的终端哈希值的密文进行解密得到第一解密结果;

具体的,终端哈希值的密文位于于APDU缓存的第70字节之后的32字节;

步骤125:硬件钱包根据授权码、验证数据、硬件钱包公钥进行计算设备哈希值;

在本实施例中,计算设备哈希值具体为:将授权码、验证数据、硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值;

本实施例中的步骤124与步骤125的顺序可调换;

步骤126:硬件钱包判断设备哈希值与第一解密结果是否相等,是则执行步骤127,否则执行步骤130;

步骤127:硬件钱包将APDU缓存区中的第一字节设置为验证成功信息:

具体的,硬件钱包将APDU缓存区中的第一字节设置为0x5A;

步骤128:硬件钱包保存授权码和绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,执行步骤129;

具体的,在本实施例中,将验证数据存在性标志的值设为0x5AA5;

步骤129:硬件钱包通过屏幕提示授权成功,并将APDU缓存区中的验证通过信息和状态码返回给终端,返回步骤101;

具体的,硬件钱包通过屏幕提示授权成功为:硬件钱包在屏幕上显示授权成功提示信息;

例如,本实施例中的状态码为9000;

步骤130:硬件钱包将APDU缓存区中的第一字节设置为验证失败,通过屏幕提示授权失败并给终端返回验证失败信息,返回步骤101;

在本实施例中,硬件钱包APDU缓存区的第一字节设置为验证通过,具体为:硬件钱包APDU缓存区的第一字节数据设置为0xA5;

具体的,硬件钱包通过屏幕提示授权失败为:硬件钱包在屏幕上显示授权失败提示信息;

步骤131:硬件钱包对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果;

例如,本实施例中的预置常数为0x62 0x69 0x6e 0x64 0x69 0x6e 0x67 0x430x6f 0x64 0x65;

步骤132:硬件钱包对第一哈希结果和第二哈希结果进行异或计算得到异或结果;

步骤133:硬件钱包将异或结果的前16字节做为AES加解密运行的初始向量;

步骤134:硬件钱包获取验证数据,根据密钥协商算法使用验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将设备密文的前16字节数据作为第一密钥;

可选的,硬件钱包将APDU缓存中的第6到70字节处的数据作为是验证数据;密钥协商算法具体为ECDH;

在本实施例中,步骤133与步骤134的顺序可调换;

步骤135:硬件钱包使用第一密钥和初始向量对APDU缓存中的终端哈希值的密文进行解密得到第一解密结果;

具体的,终端哈希值的密文位于于APDU缓存的第70字节之后的32字节;

步骤136:硬件钱包根据授权码、验证数据、硬件钱包公钥进行计算设备哈希值;

在本实施例中,计算设备哈希值具体为:将授权码、验证数据、硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值;

本实施例中的步骤136与步骤137的顺序可调换;

步骤137:硬件钱包判断设备哈希值与第一解密结果是否相等,是则执行步骤138,否则执行步骤142;

步骤138:硬件钱包将APDU缓存区中的第一字节设置为验证成功信息:

具体的,硬件钱包将APDU缓存区中的第一字节设置为0x5A;

步骤139:硬件钱包根据绑定指令中的第三字节数据判断当前连接的终端是否为与硬件钱包对应的终端,是则执行步骤141,否则执行步骤140;

具体的,硬件钱包判断绑定指令中的第三字节数据是否为0x80,是则终端为绑定设备操作,否则终端不为绑定设备操作;

步骤140:硬件钱包保存绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,执行步骤141;

具体的,在本实施例中,将验证数据存在性标志的值设为0x5AA5;

步骤141:硬件钱包通过屏幕提示授权成功,并将APDU缓存区中的验证通过信息和状态码返回给终端,返回步骤101;

具体的,硬件钱包通过屏幕提示授权成功为:硬件钱包在屏幕上显示授权成功提示信息;

例如,本实施例中的状态码为9000;

步骤142:硬件钱包将APDU缓存区中的第一字节设置为验证失败,通过屏幕提示授权失败并给终端返回验证失败信息,返回步骤101;

在本实施例中,硬件钱包APDU缓存区的第一字节设置为验证通过,具体为:硬件钱包APDU缓存区的第一字节数据设置为0xA5;

具体的,硬件钱包通过屏幕提示授权失败为:硬件钱包在屏幕上显示授权失败提示信息;

步骤143:硬件钱包判断硬件钱包与终端绑定的状态码是否为预定值,是则使用硬件钱包私钥对签名指令中的待签名数据进行签名并将签名结果返回给终端,返回步骤101;否则给终端返回错误信息,返回准备101。

本发明技术方案将终端与硬件钱包一一对应绑定,若硬件钱包需要连接终端则必须通过授权码判断用户是否授权该终端与硬件钱包进行连接,如授权则允许该终端与该硬件钱包进行连接,保证了硬件钱包丢失时用户资产的安全性。

实施例三

本发明实施例三提供一种硬件钱包绑定授权的装置,如图4所示,包括:

第一判断模块30,用于当硬件钱包接收到终端发送的指令时,判断指令的类型,如为查询绑定状态指令则触发第二判断模块31,如为生成授权码指令则触发第三判断模块34,如为绑定指令则触发第四判断模块36;

第二判断模块31,用于判断判断内部保存的验证数据存在性标志的值,如为第一预设数据则将绑定对象设置为空,将授权状态设为允许生成授权码,触发第一返回模块33;否则触发判断设置模块32;

判断设置模块32,用于判断查询绑定状态指令中的验证数据和保存的验证数据是否一致,是则将绑定对象设置为与硬件钱包对应的终端,触发第一返回模块33,否则将绑定对象设置为其他终端,触发第一返回模块33;

第一返回模块33,用于根据绑定对象和保存的硬件钱包证书组织命令响应数据并返回给终端,触发第一判断模块30;

第三判断模块34,用于判断授权状态是否为允许生成状态码,是则触发生成设置模块35,否则给终端返回错误信息,触发第一判断模块30;

生成设置模块35,用于生成授权码并缓存和显示,将授权状态设为不能再生成授权码,将硬件钱包状态设为未绑定,并给终端返回成功信息,触发第一判断模块30;

具体的,在本实施例中,生成设置模块35,用于生成授权码包括:生成设置模块35用于生成预设长度的随机数,根据随机数和预设字符编码表生成检索码;将检索码的值顺序拼接组成授权码;

第四判断模块36,用于判断硬件钱包状态是否为未绑定,是则获取缓存的授权码,触发第一验证模块37,否则获取保存的授权码,触发第二验证模块39;

第一验证模块37,用于使用获取的授权码对绑定指令进行验证,如验证成功则触发保存设置模块38,如验证失败则给终端返回验证失败信息,触发第一判断模块30;

保存设置模块38,用于保存绑定指令中的验证数据和缓存的授权码,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,触发第一判断模块30;

第二验证模块39,用于使用获取的授权码对绑定指令进行验证,如验证成功则判断保存模块40,如验证失败则给终端返回验证失败信息,触发第一判断模块30;

判断保存模块40,用于根据绑定指令判断当前连接的终端是否为与硬件钱包对应的终端,是则给终端返回授权成功过信息,触发第一判断模块30,否则保存绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,触发第一判断模块30。

在本实施例中,保存设置模块38还用于将硬件钱包与终端的绑定状态码设为预定值;

相应的,装置还包括判断签名模块,用于当第一判断模块30判断接收到终端发送的指令的类型为签名指令时,判断硬件钱包与终端绑定的状态码是否为预定值,是则根据签名指令进行签名操作,触发第一判断模块,否则给终端返回错误信息,触发第一判断模块。

本实施例中的装置还包括:第一获取模块,用于从预置缓存中获取验证数据存在性标志的值。

本实施例中的装置还包括第五判断模块,用于当第一判断模块30判断指令的类型为绑定指令时,判断绑定指令是否合法,是则触发第四判断模块36,否则给终端返回错误信息,触发第一判断模块30。

在本实施例中,第五判断模块具体用于当第一判断模块30判断指令的类型为绑定指令时,判断绑定指令中的第三字节数据是否为第一预设值或第二预设值、且判断第四字节数据是否为第三预设值,如判断均为是则触发第四判断模块36,否则给终端返回错误信息,触发第一判断模块30。

在本实施例中,判断保存模块40具体用于判断绑定指令中的第三字节数据是否为第二预设值,是则给终端返回授权成功过信息,否则保存绑定指令中的验证数据,将验证数据存在性标志的值设为第二预定数据,并给终端返回授权成功信息,触发第一判断模块。

可选的,生成设置模块35用于将硬件钱包状态设为未绑定,具体为:生成设置模块35用于将授权码标记设为预设值;则第四判断模块36具体用于判断授权码标记是否为预设值,是则获取缓存的授权码,触发第一验证模块37,否则获取保存的授权码,触发第二验证模块39。

具体的,在本实施例中,第一验证模块37,包括:

计算单元,用于根据授权码对绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

其中,计算单元包括:

第一计算子单元,用于对授权码进行哈希运算得到第一哈希结果,对预置常数进行哈希运算得到第二哈希结果,对第一哈希结果和第二哈希结果进行异或计算得到异或结果;

解密协商子单元,用于将异或结果的前16字节做为加解密运行的初始向量;根据密钥协商算法使用保存的验证数据和硬件钱包公钥进行密钥协商得到设备密文并保存,将设备密文的前16字节数据作为第一密钥;

例如,在本实施例中,解密协商子单元用于将异或结果的前16字节做为AES加解密运行的初始向量;

解密计算子单元,用于使用第一密钥和初始向量对绑定指令中的终端哈希值的密文进行解密得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

在本实施例中,解密计算子单元用于根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值,具体为:解密计算子单元用于将授权码、验证数据、硬件钱包公钥顺序拼接得到拼接值,对拼接值进行哈希运算得到设备哈希值;

第一判断单元,用于判断设备哈希值与第一解密结果是否相等,是则验证成功,触发保存设置模块38,否则验证失败,给终端返回验证失败信息,触发第一判断模块30;

第二验证模块39,包括:

计算单元,用于根据授权码对绑定指令中的终端哈希值的密文进行计算得到第一解密结果;根据授权码、验证数据、硬件钱包公钥进行计算得到设备哈希值;

本实施例中第一验证模块37中的计算单元与第二验证模块39中的计算单元实现过程相同,在此不再赘述;

第二判断单元,用于判断设备哈希值与第一解密结果是否相等,是则验证成功,触发判断保存模块,否则验证失败,给终端返回验证失败信息,触发第一判断模块。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于区块链的企业数据签名方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!