CN107480986B - 一种利用硬件实现数字货币钱包的方法及硬件钱包 - Google Patents

一种利用硬件实现数字货币钱包的方法及硬件钱包 Download PDF

Info

Publication number
CN107480986B
CN107480986B CN201710690690.1A CN201710690690A CN107480986B CN 107480986 B CN107480986 B CN 107480986B CN 201710690690 A CN201710690690 A CN 201710690690A CN 107480986 B CN107480986 B CN 107480986B
Authority
CN
China
Prior art keywords
key
mnemonic
sub
hardware wallet
phrase
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710690690.1A
Other languages
English (en)
Other versions
CN107480986A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201710690690.1A priority Critical patent/CN107480986B/zh
Publication of CN107480986A publication Critical patent/CN107480986A/zh
Priority to US16/620,918 priority patent/US11093934B2/en
Priority to PCT/CN2018/087463 priority patent/WO2019033808A1/zh
Application granted granted Critical
Publication of CN107480986B publication Critical patent/CN107480986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明涉及数字货币领域,特别涉及一种利用硬件实现数字货币钱包的方法及硬件钱包,该方法包括:硬件钱包等待接收来自上位机的指令,当接收到查询余额指令时,硬件钱包根据安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对,并根据子密钥对中的子公钥生成账户地址,将账户地址与子密钥索引绑定并返回给上位机;当接收到交易指令时,硬件钱包根据安全存储区中的主密钥和交易指令中的子密钥索引通过密钥派生算法生成子密钥对,并使用子密钥对中的子私钥对交易指令中的交易数据进行签名得到签名结果,根据子密钥对中的子公钥和所述签名结果生成交易凭据,并将交易凭据返回上位机,本方法解决了密钥保存的安全性问题。

Description

一种利用硬件实现数字货币钱包的方法及硬件钱包
技术领域
本发明涉及数字货币领域,特别涉及一种利用硬件实现数字货币钱包的方法及硬件钱包。
背景技术
现有的数字货币钱包均为软件形式,密钥保存在电脑或者手机上,很容易被攻击并获取,数字货币被盗的风险很大。而且当手机丢失或者电脑数据损坏时,无法恢复密钥。
发明内容
本发明提供了一种利用硬件一种利用硬件实现数字货币钱包的方法,具体包括:
步骤S1、硬件钱包等待接收来自上位机的指令,当接收到查询余额指令时,执行步骤S2;当接收到交易指令时,执行步骤S3;
步骤S2、硬件钱包根据安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对,并根据子密钥对中的子公钥生成账户地址,将账户地址与子密钥索引绑定并返回给上位机;
步骤S3、硬件钱包根据安全存储区中的主密钥和交易指令中的子密钥索引通过密钥派生算法生成子密钥对,并使用子密钥对中的子私钥对交易指令中的交易数据进行签名得到签名结果,根据子密钥对中的子公钥和签名结果生成交易凭据,并将交易凭据返回上位机。
本发明提供了一种硬件钱包,具体包括:
接收模块,用于接收来自上位机的指令;
安全存储模块,用于存储主密钥生成模块生成的主密钥;
第一子密钥对生成模块,用于当接收模块接收到所述上位机发送的查询余额指令时,根据安全存储区中保存的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对;
账户地址生成模块,用于根据子密钥对生成模块生成的子密钥对中的子公钥生成账户地址;
第二子密钥对生成模块,用于当接收模块接收到上位机发送的交易指令时,根据交易指令中的子密钥索引和安全存储模块中存储的主密钥通过密钥派生算法生成子密钥对;
签名模块,用于使用第二子密钥对生成模块生成的子私钥对接收模块接收到的所述交易指令中的交易数据进行签名得到签名结果;
交易凭据生成模块,用于使用第二子密钥对生成模块生成的子密钥对中的子公钥和签名模块生成的签名结果生成交易凭据;
发送模块,用于将所述账户地址生成模块生成的账户地址与所述预置的子密钥索引绑定发送给所述上位机;还用于将交易凭据生成模块生成的交易凭据发送给所述上位机。
本发明的有益效果为数字货币私钥在硬件钱包的内部保存,解决了密钥保存的安全性问题。数字货币私钥参与的所有运算均在硬件内部执行,使私钥不出硬件钱包,解决了私钥在使用过程中的安全性问题。
附图说明
图1为本发明实施例1提供的一种利用硬件实现数字货币的方法的流程图;
图2-图3为本发明实施例2提供的一种利用硬件实现数字货币钱包的方法的流程图;
图4为本发明实施例3提供的一种硬件钱包的方框图。
具体实施方法
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供一种利用硬件实现数字货币钱包的方法,参见图1,包括:
步骤S1、硬件钱包等待接收来自上位机的指令,当接收到查询余额指令时,执行步骤S2;当接收到交易指令时,执行步骤S3;当接收到创建硬件钱包指令时,执行步骤S4;当接收到恢复硬件钱包指令时执行步骤S5;
具体的,步骤S1具体为:当硬件钱包接收到来自上位机的指令后,获取指令的第一预设字段上的数据,并将其作为指令类型标识,根据指令类型标识判断指令的类型,若指令类型标识为第一预设指令类型标识时,判断出指令类型为创建硬件钱包指令,执行步骤S4;若指令类型标识为第二预设指令类型标识时,判断出指令的类型为恢复硬件钱包指令,执行步骤S5;若指令类型标识为第三预设指令类型标识时,判断出指令的类型为查询余额指令,执行步骤S2;若指令类型标识为第四预设指令类型标识时,判断出指令的类型为交易指令,执行步骤S3。
步骤S2、硬件钱包根据安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对,并根据子密钥对中的子公钥生成账户地址,将账户地址与子密钥索引绑定并返回给上位机;
当接收到查询余额指令时,执行步骤S2之前,还包括:硬件钱包判断安全存储区中是否存在主密钥,是则执行步骤S2;否则向上位机返回失败响应。
具体的,本实施例上述步骤S2中,硬件钱包根据安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对具体包括:
步骤401、硬件钱包根据安全存储区中的主密钥生成公钥,并设置当前子密钥索引为预设值;
步骤402、硬件钱包根据公钥和当前子密钥索引通过密钥派生算法派生出子密钥对;
步骤403、硬件钱包根据子密钥对中的子公钥通过预设算法生成账户地址,将账户地址和当前子密钥索引绑定写入子密钥索引列表;
步骤404、硬件钱包更新当前子密钥索引,并判断当前子密钥索引是否小于预设值,是则向上位机返回子密钥索引列表,否则向上位机返回失败响应。
具体的,步骤403中,根据子密钥对中的子公钥生成账户地址具体包括:硬件钱包将子公钥依次经过SHA256和RIPEMD160运算及编码运算后生成的第一数据作为账户地址。
步骤S3、硬件钱包根据安全存储区中的主密钥和交易指令中的子密钥索引通过密钥派生算法生成子密钥对,并使用子密钥对中的子私钥对交易指令中的交易数据进行签名得到签名结果,根据子密钥对中的子公钥和签名结果生成交易凭据,并将交易凭据返回上位机。
优选的,当接收到交易指令时,执行步骤S3之前,还包括:硬件钱包判断安全存储区中是否存在主密钥,是则执行步骤S3;否则向上位机返回失败响应。
具体的,步骤S3中,硬件钱包根据安全存储区中的主密钥和交易指令中的子密钥索引通过密钥派生算法生成子密钥对具体为:硬件钱包根据安全存储区中的主密钥生成公钥,硬件钱包根据公钥和子密钥索引通过密钥派生算法派生出子密钥对。
具体的,步骤S3中,根据子密钥对中的子公钥和签名结果生成交易凭据具体包括:硬件钱包根据子密钥对中的子公钥长度、子公钥、签名结果长度和签名结果计算得到交易凭据长度;并将交易凭据长度、子公钥长度、子公钥、签名结果长度和签名结果顺序拼接生成交易凭据。
步骤S4、硬件钱包生成随机数作为密钥种子,将密钥种子通过预设字典转换为助记短语,将密钥种子通过第一预设算法生成主密钥,将主密钥存储在安全存储区,并将助记短语返回给上位机;
进一步的,当创建硬件钱包指令中包括硬件钱包密码时,
当接收到创建硬件钱包指令之后,执行步骤S4之前还包括:硬件钱包从创建硬件钱包指令中获取硬件钱包密码,判断硬件钱包密码是否合法,是则执行步骤S4,否则提示密码错误,结束。
具体的,步骤S4中,硬件钱包生成随机数作为密钥种子,将密钥种子通过预设字典转换为助记短语具体包括:
步骤101、硬件钱包生成第一预设长度的随机数,并将随机数作为密钥种子;
步骤102、硬件钱包根据密钥种子通过第二预设算法得到第一校验值;将密钥种子与第一校验值拼接得到助记短语标识;将助记短语标识根据预设字典转换为助记短语。
更进一步的,步骤102具体为:硬件钱包根据密钥种子通过第二预设算法得到计算结果,根据第一预设长度计算校验值长度,从计算结果中顺序截取长度为校验值长度的数据作为第一校验值;将密钥种子与第一校验值拼接得到助记短语标识。
当创建硬件钱包指令中包括助记短语长度时,步骤S4中,硬件钱包生成随机数作为密钥种子,将密钥种子通过预设字典转换为助记短语具体包括:
步骤201、硬件钱包根据助记短语长度计算密钥种子长度,生成数据长度为密钥种子长度的随机数,并将随机数作为密钥种子;
更为详细的,步骤201具体为:硬件钱包根据助记短语长度计算密钥种子长度和校验值长度,生成数据长度为密钥种子长度的随机数,并将随机数作为密钥种子;
步骤202、硬件钱包根据密钥种子通过第二预设算法得到第一校验值;将密钥种子与第一校验值拼接得到助记短语标识;将助记短语标识根据预设字典转换为助记短语。
更为详细的,步骤202具体为:硬件钱包根据密钥种子通过第二预设算法得到计算结果,从计算结果中顺序截取长度为校验值长度的数据作为第一校验值;将密钥种子与第一校验值拼接得到助记短语标识;将助记短语标识根据预设字典转换为助记短语。
更进一步的,步骤102或者步骤202中,将助记短语标识根据预设字典转换为助记短语具体包括:硬件钱包依次在助记短语标识中截取第二预设长度的数据作为助记单词标识,并在预设字典中查找与截取到的助记单词标识对应的助记单词,再将助记单词依次组合得到助记短语。
相应的,步骤S4中,将密钥种子通过第一预设算法生成主密钥具体包括:硬件钱包使用预设字符串作为哈希密钥,根据第二预设算法计算密钥种子的哈希值;将计算得到的哈希值的高位端第二预设长度的数据作为主密钥。
当创建硬件钱包指令中还包括:助记短语的语言类型时:
相应地,上述步骤S4具体为:硬件钱包生成随机数作为密钥种子,将主密钥通过与助记短语的语言类型对应的字典转换为助记短语,将助记短语返回给上位机。
步骤S5、硬件钱包将恢复硬件钱包指令中的助记短语根据预设字典转换为密钥种子,将密钥种子通过第一预设算法生成主密钥,将主密钥存储在安全存储区。
具体的,硬件钱包根据助记短语确定助记短语的语言类型具体包括:硬件钱包获取助记短语中的一个助记单词,根据助记单词的unicode码确定助记短语的语言类型。
具体的,步骤S5中硬件钱包将恢复硬件钱包指令中的助记短语根据预设字典转换为密钥种子具体包括:硬件钱包将助记短语根据预设字典转换为助记短语标识;根据助记短语标识长度计算对密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子。
具体的,步骤S5中硬件钱包将恢复硬件钱包指令中的助记短语根据预设字典转换为密钥种子具体包括:硬件钱包将恢复硬件钱包指令中的助记短语根据预设字典转换为助记短语标识,从助记短语标识中获取密钥种子和第二校验值;
更为详细的,从助记短语标识中获取密钥种子和第二校验值具体为:根据助记短语标识长度计算密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子,将助记短语标识中剩余的数据作为第二校验值。
相应的,从助记短语标识中获取密钥种子和第二校验值之后,将密钥种子通过第一预设算法生成主密钥之前还包括:硬件钱包根据密钥种子生成第三校验值,并判断第三校验值和第二校验值是否匹配,是则执行将密钥种子通过第一预设算法生成主密钥,否则向上位机返回失败响应。
具体的,硬件钱包根据密钥种子生成第三校验值具体包括,使用第一预设算法对密钥种子进行运算得到计算结果,顺序截取计算结果中长度为校验值长度的数据作为第三校验值;
优选的,当接收到恢复硬件钱包指令之后,执行步骤S5之前还包括:硬件钱包判断恢复硬件钱包指令中的助记短语中的助记单词的数量是否不大于第三预设值,是则执行步骤S5,否则向上位机返回失败响应。
优选的,当接收到恢复硬件钱包指令之后,执行步骤S5之前还包括:硬件钱包根据助记短语确定助记短语的语言类型,判断助记短语的语言类型是否在预设语言种类范围内,是则执行步骤S5,否则向上位机返回失败响应。
实施例2
本实施例提供了一种利用硬件实现数字货币钱包的方法,如图2-图3所示,包括:
步骤201、硬件钱包上电,初始化;
步骤202、硬件钱包等待接收来自上位机的指令,当接收到创建硬件钱包指令时,执行步骤203;当接收到恢复硬件钱包指令时,执行步骤211;当接收到查询账户余额指令时,执行步骤220;当接收到交易指令时,执行步骤227;
具体地,硬件钱包等待接收来自上位机的指令,当接收到来自上位机的指令后,获取指令中的第一预设字段上的数据,并将其作为指令类型标识,根据指令类型标识判断指令的类型,若指令类型标识为第一预设指令类型标识时,判断出指令类型为创建硬件钱包指令时,执行步骤203;若指令类型标识为第二预设指令类型标识时,判断出指令的类型为恢复硬件钱包指令,执行步骤211;若指令类型标识为第三预设指令类型标识时,判断出指令的类型为查询账户余额指令,执行步骤220;若指令类型标识为第四预设指令类型标识时,判断出指令的类型为交易指令时,执行步骤227。
本实施中,第一预设字段可以但不限于为指令中的前四个字节。第一预设指令类型标识可以但不限于为“0X 00460000”,第二预设指令类型标识可以但不限于为“0X00C40000”,第三预设指令类型标识可以但不限于为“0X 00F60000”,第四预设指令类型标识可以但不限于为“0X 002A0100”。
例如,硬件钱包等待接收来自上位机的指令“0X 00460000530400074F05626C757368047461706505636C756D7007736C656E6465720570756E6368046F7665720772656365697665066865696768740762696F6C6F67790773656374696F6E04636F6F6B066F7074696F6E”,当接收到来自上位机的指令后,获取指令中的前四个字节的数据,并将其作为指令类型标识,其中,指令类型标识为第一预设指令类型标识,判断出指令类型为创建硬件钱包指令时,执行步骤203。
步骤203、硬件钱包从创建硬件钱包指令中获取助记短语长度;
例如,硬件钱包从创建硬件钱包指令中获取助记短语长度为“24”。
优选的,创建硬件钱包指令中还包括:硬件钱包密码;相应的,步骤202和步骤203之间还包括:硬件钱包从创建硬件钱包指令中获取硬件钱包密码,判断硬件钱包密码是否合法,是则执行步骤203,否则提示密码错误,结束。
步骤204、硬件钱包判断助记短语长度是否为第一预设值,如果是,则执行步骤205;否则,执行步骤210;
助记短语长度具体为助记短语中包含的助记单词的个数;
第一预设值具体12或者15或者18或者21或者24;
步骤205、硬件钱包根据助记短语长度计算得到密钥种子长度和校验值长度;并生成长度为密钥种子长度的随机数,将该随机数作为密钥种子;
具体的,硬件钱包将助记短语长度乘以第二预设值生成助记短语标识长度;第二预设值为助记短语中每个助记单词在预设字典中助记单词标识的比特数;本实施例中第二预设值为11bit;本实施例中助记短语长度为24与第二预设值相乘得到的助记短语标识长度为264bit;
由于助记短语标识长度=密钥种子长度+校验值长度,且密钥种子长度与校验值长度的比值为32,根据上述关系,可以根据助记短语标识长度计算出密钥种子长度和校验值长度;本实施例中,密钥种子长度为256bit,校验值长度为8bit
随后硬件钱包使用真随机数生成器生成数据长度为密钥种子长度即256bit的随机数作为密钥种子;例如本实施例中密钥种子具体为0X 6c 55 44 79 7a 91 11 5d c3 330e bd 00 38 51 d2 39 a7 06 ff 2a a2 ab 70 03 9c 55 10 dd f0 64 20;
步骤206、硬件钱包通过第一预设算法对密钥种子进行运算得到计算结果,顺序截取计算结果中长度为校验值长度的数据作为第一校验值,将第一校验值拼接在密钥种子之后得到助记短语标识;
本实施例中,第一预设算法可以但不限于为SHA256算法。
具体地,硬件钱包使用SHA256算法对密钥种子进行运算得到计算结果,顺序截取计算结果中长度为校验值长度的数据作为第一校验值,将第一校验值拼接在密钥种子之后得到助记短语标识。
例如:硬件钱包使用SHA256算法对密钥种子“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420”进行哈希运算得到的计算结果为“0X dcd2f3552379d262d16d46dafd8c2fd3f49619e5ae70bb98ba816d74e868f4fb”,顺序截取计算结果“0X dcd2f3552379d262d16d46dafd8c2fd3f49619e5ae70bb98ba816d74e868f4fb”中中长度为校验值长度的数据作为第一校验值,即“0X dc”,将第一校验值“0X dc”拼接在密钥种子“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420”之后得到助记短语标识“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420dc”。
步骤207、硬件钱包在助记短语标识中依次截取数据长度为第二预设值的数据作为助记单词标识,在预设字典中查找与助记单词标识对应的助记单词,将助记单词依次组合得到助记短语;
步骤208、硬件钱包清空安全存储区中的数据,根据密钥种子通过第二预设算法生成主密钥;并将主密钥存入安全存储区;
具体地,步骤208具体为:硬件钱包使用预设字符串作为哈希密钥,根据第二预设算法计算密钥种子的哈希值;将计算得到的哈希值的高位端预设长度的数据作为主密钥;
本实施例中,第二预设算法优选为HMAC-SHA512算法。
本实施例中,高位端预设长度的数据优选为高256比特的数据,低位端预设长度的数据优选为低256比特的数据。
例如,预设字符串为“Bitcoin seed”的ASCII编码,则计算得到的哈希值如下“OX6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 920ad779104398edc710c1641ef21abb2a198620cc32356ed285499caa301241”;将哈希值的高256bit作为主密钥,得到主密钥为0X 6c 55 44 79 7a 91 11 5d c3 33 0e bd 00 38 51 d2 39 a706 ff 2a a2 ab 70 03 9c 55 10 dd f0 64 20。
需要说明的是,步骤206-207与步骤208的顺序可以互换。
本实施例中,第二预设值为11bit
例如,硬件钱包在助记短语标识“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420dc”中依次截取数据长度为11bit的数据,截取到的数据依次为0110 1100 010/1 0101 0100 01/00 0111 1001 0/111 1010 1001/0001 0001 000/10101 1101 11/00 0011 0011 0/011 0000 1110/1011 1101 000/0 0000 0011 10/000101 0001 1/101 0010 0011/1001 1010 011/1 0000 0110 11/11 1111 0010 1/0101010 0010/1010 1011 011/1 0000 0000 00/11 1001 1100 0/101 0101 0001/0000 1101110/1 1111 0000 01/10 0100 0010 0/000 1101 1100,在预设字典中查找与助记单词标识对应的助记单词“tube/adjust/curious/this/either/banner/cave/engage/treat/stem/whisper/swamp/walnut/box/balcony/never/volume/ordina ry/raw/welcome/until/easily/because/few”,将助记单词依次组合得到助记短语“tube adjust curiousthis either banner cave engage treat stem whisper swamp walnut box balconynever volume ordinary raw welcome until easily because few”;
优选的,创建硬件钱包指令中还包括:语言类型;语言类型具体包括:简体中文、繁体中文和英语;
相应的,步骤208具体为:硬件钱包在助记短语标识中依次截取数据长度为第二预设值的数据,在与创建硬件钱包指令中的助记短语的语言类型对应的字典中查找与助记单词标识对应的助记单词,将助记单词依次组合得到助记短语;
步骤209、硬件钱包向上位机返回助记短语,返回步骤202;
步骤210、硬件钱包向上位机返回失败标识,返回步骤202;
步骤211、硬件钱包从恢复硬件钱包指令中获取助记短语;
例如,从恢复硬件钱包指令中获取助记短语“tube adjust curious this eitherbanner cave engage treat stem whisper swamp walnut box balcony never volumeordinary raw welcome until easily because few”
步骤212、硬件钱包判断助记短语中包括的助记单词数量是否不大于第三预设值,是则执行步骤213,否则执行步骤219;
具体的,第三预设值为预设的助记码短语的最大长度,本实施例中,第三预设值具体为“24”;
步骤213、硬件钱包根据助记短语确定助记短语的语言类型,判断助记短语的语言类型是否在预设语言种类范围内,是则执行步骤214,否则执行步骤219;
具体的,硬件钱包获取助记单词中的一个助记单词,根据助记单词的unicode码确定助记短语语言类型,并判断助记短语语言类型是否为简体中文、繁体中文和英文中的一种,是则判定助记短语语言类型在预设语言种类范围内,否则判定助记短语语言类型不在预设语言种类范围内。
步骤214、硬件钱包在助记短语的语言类型对应的字典中查找与助记短语中的各个助记单词对应的各个助记单词标识,将各个助记单词标识拼接得到助记短语标识;
例如:硬件钱包清空安全存储区中的数据,在预设字典中查找与各个助记单词“tube/adjust/curious/this/either/banner/cave/engage/treat/stem/whisper/swamp/walnut/box/balcony/never/volume/ordinary/raw/welcome/until/easily/because/few”分别对应的各个助记单词标识“0110 1100 010/1 0101 0100 01/00 0111 1001 0/111 1010 1001/0001 0001 000/1 0101 1101 11/00 0011 0011 0/011 0000 1110/10111101 000/0 0000 0011 10/00 0101 0001 1/101 0010 0011/1001 1010 011/1 00000110 11/11 1111 0010 1/010 1010 0010/1010 1011 011/1 0000 0000 00/11 10011100 0/101 0101 0001/0000 1101 110/1 1111 0000 01/10 0100 0010 0/000 11011100”,将各个助记单词标识“0110 1100 010/1 0101 0100 01/00 0111 1001 0/111 10101001/0001 0001 000/1 0101 1101 11/00 0011 0011 0/011 0000 1110/1011 1101 000/0 0000 0011 10/00 0101 0001 1/101 0010 0011/1001 1010 011/1 0000 0110 11/111111 0010 1/010 1010 0010/1010 1011 011/1 0000 0000 00/11 1001 1100 0/1010101 0001/0000 1101 110/1 1111 0000 01/10 0100 0010 0/000 1101 1100”拼接得到助记短语标识“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420dc”;
步骤215、根据助记短语标识长度计算对密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子,将助记短语标识中剩余的数据作为第二校验值;
其中,根据助记短语标识长度计算对密钥种子长度具体为:由于助记短语标识长度=密钥种子长度+校验值长度,且密钥种子长度与校验值长度的比值为32,根据上述关系,可以根据助记短语标识长度计算出密钥种子长度和校验值长度;本实施例中,密钥种子长度为256bit,校验值长度为8bit
将步骤215中得到的助记短语标识0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420dc”;中的前256bit的数据作为密钥种子,密钥种子具体为“0X 6c 55 44 79 7a 91 11 5d c3 33 0e bd 00 38 51 d2 39 a7 06 ff 2a a2 ab 7003 9c 55 10 dd f0 64 20;将助记短语标识的后8bit的数据作为第二校验值;
步骤216、硬件钱包使用第一预设算法对密钥种子进行运算得到计算结果,顺序截取计算结果中的长度为校验值长度的数据作为第三校验值,判断第二校验值是否与第三校验值是否相匹配,如果是,则执行步骤217;否则,执行步骤219;
例如,硬件钱包使用SHA256算法对密钥种子进行运算得到计算结果“0X dcd2f3552379d262d16d46dafd8c2fd3f49619e5ae70bb98ba816d74e868f4fb”,截取计算结果中的前8bit的数据0X dc作为第三校验值,判定第二校验值“0X dc”和第三校验值相匹配,执行步骤218。
步骤217、硬件钱包清空安全存储区中的数据,根据密钥种子通过第二预设算法生成主密钥;并将主密钥存入安全存储区;
具体地,步骤217具体为:硬件钱包使用预设字符串作为哈希密钥,根据第二预设算法计算密钥种子的哈希值;将计算得到的哈希值的高位端预设长度的数据作为主密钥;
本实施例中,第二预设算法优选为HMAC-SHA512算法。
本实施例中,高位端预设长度的数据优选为高256比特的数据,低位端预设长度的数据优选为低256比特的数据。
例如,预设字符串为“Bitcoin seed”的ASCII编码,则计算得到的哈希值如下“OX6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420 920ad779104398edc710c1641ef21abb2a198620cc32356ed285499caa301241”;将哈希值的高256bit作为主密钥,得到主密钥为0X 6c 55 44 79 7a 91 11 5d c3 33 0e bd 00 38 51 d2 39 a706 ff 2a a2 ab 70 03 9c 55 10 dd f0 64 20
步骤218、硬件钱包向上位机返回成功标识,返回步骤202;
步骤219、硬件钱包向上位机返回失败标识,返回步骤202;
步骤220、硬件钱包判断安全存储区中是否存在主密钥,是则执行步骤221;否则,执行步骤226;
步骤221、硬件钱包根据主密钥生成公钥,并设置当前子密钥索引为预设值;
具体的,硬件钱包将主密钥与椭圆曲线基点进行ECC点乘运算得到公钥;
步骤222、硬件钱包根据公钥和当前子密钥索引通过密钥派生算法派生出子密钥对;
步骤222具体为将公钥和当前子密钥索引顺序拼接,使用父链码作为哈希密钥,根据预设算法计算拼接数据的哈希值,根据哈希值截取得到子链码,对截取剩余数据做ECC加法模运算,若运算结果不为预设值,则将运算结果作为子私钥,对子私钥做ECC点乘运算,得到子公钥。
步骤223、硬件钱包根据子密钥对中的子公钥通过预设算法生成账户地址,将账户地址和当前子密钥索引绑定写入子密钥索引列表;
具体的,硬件钱包将子公钥依次经过SHA256和RIPEMD160运算及编码运算后生成160位(20字节)的第一数据作为账户地址;
优选的,当生成第一数据之后,对第一数据进行Base58Check编码,并添加前导字节(表明支持哪种脚本)和四字节校验字节生成第二数据作为账户地址。
步骤224、硬件钱包更新当前子密钥索引,并判断当前子密钥索引是否小于预设值,是则返回步骤222,否则执行步骤225;
步骤225、硬件钱包将子密钥索引列表和成功标识发送给上位机,返回步骤202;
步骤226、硬件钱包向上位机返回失败标识,返回步骤202;
步骤227、硬件钱包从交易指令中获取子密钥索引和交易数据;
具体的,交易数据中包括:上次交易数据,账户地址、交易金额。上次交易数据具体为上次交易的HASH值;
本实施例中,接收到的交易数据具体为:0X 01000000 01
c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab700000000ffffffff 01 00bd010500000000 1976a9 14634228c26cf40a02a05db93f2f98b768a8e0e61b 88ac 00000000;
其中,第六字节至第三十七字节0X c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7为上次交易数据,第四十七字节至第五十四字节0X00bd010500000000为交易金额;第五十九字节至第七十八字节0X 634228c26cf40a02a05db93f2f98b768a8e0e61b为账户地址;
步骤228、硬件钱包判断安全存储区中是否存在主密钥,是则执行步骤229,否则执行步骤234;
步骤229、硬件钱包根据主密钥生成公钥;
具体的,硬件钱包将主密钥与椭圆曲线基点进行ECC点乘运算得到公钥;
步骤230、硬件钱包根据公钥和子密钥索引通过密钥派生算法派生出子密钥对;从子密钥对中获取子私钥;
步骤230具体为将公钥和当前子密钥索引顺序拼接,使用父链码作为哈希密钥,根据预设算法计算拼接数据的哈希值,根据哈希值截取得到子链码,对截取剩余数据做ECC加法模运算,若运算结果不为预设值,则将运算结果作为子私钥,对子私钥做ECC点乘运算,得到子公钥。
步骤231、硬件钱包根据子私钥对所述交易数据进行签名生成签名结果。
具体的,子私钥通过椭圆曲线数字签名算法对交易数据进行签名,例如:本实施例中256比特的子私钥“0X 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420”通过椭圆曲线数字签名算法对交易数据0X 0100000001c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab700000000ffffffff0100bd0105000000001976a914634228c26cf40a02a05db93f2f98b768a8e0e61b88ac00000000进行签名得到签名结果,生成的签名结果为“0X 048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d1005eaafd4b3fbe”
步骤232、硬件钱包根据子密钥对中获取子私钥,根据子公钥和签名结果生成交易凭据;
具体的,硬件钱包根据子公钥长度、子公钥、签名结果长度和签名结果计算得到交易凭据长度;并将交易凭据长度、子公钥长度、子公钥、签名结果长度和签名结果顺序拼接生成交易凭据;
例如,本实施例中得到的交易凭据具体为:
“0X 8a473044022055bac1856ecbc377dd5e869b1a84ed1d5228c987b098c095030c12431a4d5249022055523130a9d0af5fc27828aba43b464ecb1991172ba2a509b5fbd6cac97ff3af0141048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d1005eaafd4b3fbe”
其中,8a:表示交易凭据长度为1104比特,8a=138字节=1104比特位,“8a”这16比特位数据不包含在总交易凭据长度内。
47:表示子公钥长度为568比特,47=71字节=568比特位
子公钥为:0X 3044022055bac1856ecbc377dd5e869b1a84ed1d5228c987b098c095030c12431a4d5249022062723130a9d0af5fc27828aba43b464ecb1991172ba2a509b5fbd6cac97ff3af01,共568比特位
41:表示签名结果长度,41=65字节=520比特位
签名结果为:0X 048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d1005eaafd4b3fbe,共520比特位
步骤233、硬件钱包向上位机返回交易凭据和签名成功标识,返回步骤202;
本实施例中,步骤230中生成子私钥之后还包括保存子私钥,相应地,步骤233中,向上位机返回交易凭据和签名成功标识之前还包括清空子私钥。
步骤234、硬件钱包向上位机返回签名失败标识,返回步骤202。
实施例3
本实施例提供一种硬件钱包,参见图4,包括:
接收模块11,用于接收来自上位机的指令;
具体的,接收模块11,用于接收上位机发送的指令,当接收到指令后,获取指令的第一预设字段上的数据,并将其作为指令类型标识,根据指令类型标识判断指令的类型,若指令类型标识为第一预设指令类型标识时,判定出指令类型为创建硬件钱包指令;若指令类型标识为第二预设指令类型标识时,判定指令的类型为恢复硬件钱包指令;若指令类型标识为第三预设指令类型标识时,判定指令的类型为查询账户余额指令;若指令类型标识为第四预设指令类型标识时,判定指令的类型为交易指令。
安全存储模块12,用于存储主密钥;还用于存储主密钥生成模块15生成的主密钥;
第一子密钥对生成模块16,用于当接收模块11接收到上位机发送的查询余额指令时,根据安全存储模块12中保存的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对;
更为详细的,第一子密钥生成模块具体包括:
公钥生成子模块,用于根据安全存储模块12中存储的主密钥生成公钥;
设置子模块,用于设置当前子密钥索引为预设值;
子密钥对派生子模块,用于根据设置子模块设置的子密钥索引和安全存储模块12存储的主密钥通过密钥派生算法派生出子密钥对;还用于当判断子模块判定更新模块更新后的子密钥索引小于预设值时根据更新模块更新后的子密钥索引和安全存储模块12存储的主密钥通过密钥派生算法派生出子密钥对;
账户地址生成子模块,用于根据子密钥对派生子模块生成的子密钥对中的子公钥通过预设算法生成账户地址;
更进一步的,账户地址生成子模块,用于根据子密钥对派生子模块生成的子密钥依次经过SHA256和RIPEMD160运算及编码运算后生成的第一数据作为账户地址。
绑定子模块,用于将账户地址生成子模块生成的账户地址与子密钥索引进行绑定写入子密钥索引列表;
更新子模块,用于更新当前子密钥索引;
判断子模块,用于判断更新模块更新后的子密钥索引是否小于预设值;
相应的,发送模块21,用于当判断更新模块更新后的子密钥索引不小于预设值时向上位机返回子密钥索引列表。
账户地址生成模块17,用于根据第一子密钥对生成模块16生成的子密钥对中的子公钥生成账户地址;
第二子密钥对生成模块18,用于当接收模块11接收到上位机发送的交易指令时,根据交易指令中的子密钥索引和安全存储模块12中存储的主密钥通过密钥派生算法生成子密钥对;
更进一步的,第二子密钥对生成模块18,具体用于当接收模块11接收到上位机发送的交易指令时,根据安全存储模块12中存储的主密钥生成公钥,根据公钥和交易指令中的子密钥索引通过密钥派生算法生成子密钥对。
签名模块19,用于使用第二子密钥对生成模块18生成的子私钥对接收模块11接收到的交易指令中的交易数据进行签名得到签名结果;
交易凭据生成模块20,用于使用第二子密钥对生成模块18生成的子密钥对中的子公钥和签名模块19生成的签名结果生成交易凭据;
更进一步的,交易凭据生成模块20,具体用于根据子密钥对生成模块生成的子密钥对中的子公钥、子公钥长度、签名模块19中生成的签名结果、签名结果长度计算交易凭据长度,并将交易凭据长度、子公钥长度、子公钥、签名结果长度和签名结果顺序拼接生成交易凭据。
发送模块21,用于将账户地址生成模块17生成的账户地址与预置的子密钥索引绑定发送给上位机;还用于将交易凭据生成模块20生成的交易凭据发送给上位机;还用于将转换模块14生成的助记短语发送给上位机;
随机数生成模块13,用于当接收模块11接收到来自上位机的创建硬件钱包指令时生成随机数,将随机数作为密钥种子;
转换模块14,用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用于当接收模块11接收到恢复硬件钱包指令时,将恢复硬件钱包指令中的助记短语根据预设字典转换为密钥种子;
具体的,转换模块14,用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用有当接收模块11接收到恢复硬件钱包指令时,将助记短语根据预设字典转换为助记短语标识;根据助记短语标识长度计算对密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子。
具体的,随机数生成模块13,用于当接收模块11接收到来自上位机的创建硬件钱包指令时生成第一预设长度的随机数,将随机数作为密钥种子;
相应的,转换模块14具体包括:
助记短语标识生成子模块,用于根据随机数生成模块13生成的密钥种子通过第二预设算法得到第一校验值,将密钥种子与第一校验值拼接得到助记短语标识;
更为详细的,助记短语标识生成子模块,具体用于根据随机数生成模块13生成的密钥种通过第二预设算法计算得到计算结果,根据第一预设长度计算校验值长度,从计算结果中顺序截取长度为校验值长度的数据作为第一校验值,将密钥种子与第一校验值拼接得到助记短语标识。
转换子模块,用于将助记短语标识生成子模块生成的助记短语标识通过预设字典转换成助记短语。
主密钥生成模块15,用于将随机数生成模块13生成的密钥种子通过第一预设算法生成主密钥;还用于将转换模块14生成的密钥种子通过第一预设算法生成主密钥;
若接收模块11接收到的创建硬件钱包指令中包括硬件钱包密码时,硬件钱包还包括:
第一判断模块,用于当接收模块11接收到上位机发送的创建硬件钱包指令时,判断创建硬件钱包指令中的硬件钱包密码是否合法;
随机数生成模块13,具体用于当第一判断模块判定创建硬件钱包指令中的硬件钱包密码合法时生成随机数,将随机数作为密钥种子;
错误提示模块,用于当第一判断模块判定创建硬件钱包指令中的硬件钱包密码不合法时提示密码错误。
当接收模块11接收到的创建硬件钱包指令中包括助记短语长度时:
具体的,随机数生成模块13,具体用于根据创建硬件钱包指令中的助记短语长度计算密钥种子长度,生成数据长度为密钥种子长度的随机数,将随机数作为密钥种子;
更为详细的,随机数生成模块13,具体用于根据创建硬件钱包指令中的助记短语长度计算密钥种子长度和校验值长度,生成数据长度为密钥种子长度的随机数,将随机数作为密钥种子;
相应的,转换模块14具体包括:
助记短语标识生成子模块,用于根据随机数生成模块13生成的密钥种子通过第二预设算法得到第一校验值,将密钥种子与第一校验值拼接得到助记短语标识;
更为详细的,助记短语标识生成子模块,用于根据随机数生成模块13生成的密钥种子通过第二预设算法计算得到的计算结果,从计算结果中顺序截取长度为校验值长度的数据作为第一校验值,将密钥种子与第一校验值拼接得到助记短语标识;
更为详细的,转换子模块,用于将助记短语标识生成子模块生成的助记短语标识通过预设字典转换成助记短语。
更进一步的,转换子模块,具体用于依次在助记短语标识生成子模块生成的助记短语标识中截取第二预设长度的数据作为助记单词标识,并在预设字典中查找与截取到的助记单词标识对应的助记单词,再将助记单词依次组合成助记短语。
更进一步的,主密钥生成模块15,具体用于使用预设字符串作为哈希密钥,根据第二预设算法计算随机数生成模块13生成的密钥种子的哈希值,将计算得到的哈希值的高位段第二预设长度的数据作为主密钥。
当接收模块11接收到的创建硬件钱包指令中还包括:助记短语的语言类型;
相应的,转换模块14,具体用于将随机数生成模块13生成的密钥种子通过与助记短语的语言类型对应的字典转换为助记短语。
优选的,硬件钱包还包括:第二判断模块,用于当接收模块11接收到恢复硬件钱包指令时,判断恢复硬件钱包指令中的助记短语的助记单词的数量是否不大于第三预设值;
相应的,转换模块14,用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用于当第二判断模块判定助记短语的助记单词的数量不大于第三预设值时将恢复硬件钱包指令中的助记短语通过预设字典转换为密钥种子;
相应的,发送模块21,具体用于当第二判断模块判定助记短语的助记单词的数量大于第三预设值时向上位机发送错误响应。
优选的,硬件钱包还包括:
第三判断模块,用于当接收模块11接收到恢复硬件钱包指令时,根据恢复硬件钱包指令中的助记短语确定助记短语的语言类型,并判断助记短语的语言类型是否在预设语言种类范围内;
相应的,转换模块14,用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用于当第三判断模块判定助记短语的语言类型在预设语言种类范围内时将恢复硬件钱包指令中的助记短语通过预设字典转换为密钥种子;
相应的,发送模块21,具体用于当第三判断模块判定助记短语的语言类型不在预设语言种类范围内时向上位机发送错误响应。
更为详细的,第三判断模块具体包括:
确定语言类型子模块,用于当接收模块11接收到恢复硬件钱包指令时,根据恢复硬件钱包指令中的助记短语中的一个助记单词,根据助记单词的unicode码确定助记短语的语言类型;
第三判断模块,用于根据判断确定语言类型子模块确定的助记短语的语言类型是否在预设语言种类范围内。
优选的,转换模块14,具体用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用于当接收模块11接收到恢复硬件钱包指令时,将助记短语根据预设字典转换为助记短语标识;从助记短语标识中获取密钥种子和第二校验值;
更为详细的,转换模块14具体用于将随机数生成模块13生成的密钥种子通过预设字典转换为助记短语;还用有当接收模块11接收到恢复硬件钱包指令时,将助记短语根据预设字典转换为助记短语标识;根据助记短语标识长度计算密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子,将助记短语标识中剩余的的数据作为第二校验值。
硬件钱包还包括:
校验值生成模块,用于根据转换模块14得到的密钥种子生成第三校验值;
更为详细的,校验值生成模块,用于使用第一预设算法对助记短语标识中获取到的密钥种子进行计算得到计算结果,顺序截取计算结果中长度为校验值长度的数据作为第三校验值。
第四判断模块,用于判断转换模块14从助记短语标识中获取到的第二校验值与校验值生成模块生成的第三校验值是否匹配;
主密钥生成模块15,用于将随机数生成模块13生成的密钥种子通过第一预设算法生成主密钥;还用于当第四判断模块判定第二校验值与第三校验值匹配时,将转换模块14中从助记短语标识中获取到的密钥种子通过第一预设算法生成主密钥。
优选的,该硬件钱包还包括:
第五判断模块,用于当接收模块11接收到上位机发送的查询余额指令时判断安全存储区中是否存在主密钥;
第一子密钥对生成模块16,用于当第五判断模块判定安全存储模块12中存在主密钥时根据安全存储区中保存的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对;
发送模块21,还用于当第五判断模块判定安全存储区中不存在主密钥时向上位机发送失败响应。
优选的,硬件钱包还包括:
第六判断模块,用于当接收模块11接收到上位机发送的交易指令时,判断安全存储模块12中是否存在主密钥;
第二子密钥对生成模块18,用于当第六判断模块中判定安全存储模块12中保存的主密钥时根据交易指令中的子密钥索引和安全存储模块12中存储的主密钥通过密钥派生算法生成子密钥对;
相应的,发送模块21,还用于当第六判断模块判定安全存储模块12中不存在主密钥时向上位机发送失败响应。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (44)

1.一种利用硬件实现数字货币钱包的方法,其特征在于,包括:
步骤S1、硬件钱包等待接收来自上位机的指令,当接收到查询余额指令时,执行步骤S2;当接收到交易指令时,执行步骤S3;
步骤S2、所述硬件钱包根据安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对,并根据所述子密钥对中的子公钥生成账户地址,将所述账户地址与所述子密钥索引绑定并返回给上位机;
步骤S3、所述硬件钱包根据所述安全存储区中的主密钥和所述交易指令中的子密钥索引通过密钥派生算法生成子密钥对,并使用所述子密钥对中的子私钥对所述交易指令中的交易数据进行签名得到签名结果,根据所述子密钥对中的子公钥和所述签名结果生成交易凭据,并将所述交易凭据返回上位机;
所述步骤S1中还包括:当接收到创建硬件钱包指令时,执行步骤S4;当接收到恢复硬件钱包指令时执行步骤S5;
步骤S4、所述硬件钱包生成随机数作为密钥种子,将所述密钥种子通过预设字典转换为助记短语,将所述密钥种子通过第一预设算法生成主密钥,将所述主密钥存储在安全存储区,并将所述助记短语返回给上位机;
步骤S5、所述硬件钱包将所述恢复硬件钱包指令中的助记短语根据所述预设字典转换为密钥种子,将所述密钥种子通过所述第一预设算法生成主密钥,将所述主密钥存储在所述安全存储区;
所述硬件钱包生成随机数作为密钥种子,将密钥种子通过预设字典转换为助记短语具体包括:
步骤101、所述硬件钱包生成第一预设长度的随机数,并将所述随机数作为密钥种子;
步骤102、所述硬件钱包根据所述密钥种子通过第二预设算法得到第一校验值;将所述密钥种子与所述第一校验值拼接得到助记短语标识;将所述助记短语标识根据预设字典转换为助记短语。
2.如权利要求1所述的方法,其特征在于,所述步骤S1具体为:当硬件钱包接收到来自上位机的指令后,获取所述指令的第一预设字段上的数据,并将其作为指令类型标识,根据所述指令类型标识判断指令的类型,若指令类型标识为第一预设指令类型标识时,判断出指令类型为所述创建硬件钱包指令,执行步骤S4;若指令类型标识为第二预设指令类型标识时,判断出指令的类型为所述恢复硬件钱包指令,执行步骤S5;若指令类型标识为第三预设指令类型标识时,判断出指令的类型为所述查询余额指令,执行步骤S2;若指令类型标识为第四预设指令类型标识时,判断出指令的类型为所述交易指令,执行步骤S3。
3.如权利要求1所述的方法,其特征在于,所述创建硬件钱包指令中包括硬件钱包密码;
所述当接收到所述创建硬件钱包指令之后,执行步骤S4之前还包括:所述硬件钱包从所述创建硬件钱包指令中获取所述硬件钱包密码,判断所述硬件钱包密码是否合法,是则执行步骤S4,否则提示密码错误,结束。
4.如权利要求1所述的方法,其特征在于,所述步骤102具体为:所述硬件钱包根据所述密钥种子通过所述第二预设算法得到计算结果,根据所述第一预设长度计算校验值长度,从所述计算结果中顺序截取长度为校验值长度的数据作为第一校验值;将所述密钥种子与所述第一校验值拼接得到助记短语标识。
5.如权利要求1所述的方法,其特征在于,所述创建硬件钱包指令中包括助记短语长度;所述硬件钱包生成随机数作为密钥种子,将密钥种子通过预设字典转换为助记短语具体包括:
步骤201、所述硬件钱包根据所述助记短语长度计算密钥种子长度,生成数据长度为密钥种子长度的随机数,并将所述随机数作为密钥种子;
步骤202、所述硬件钱包根据所述密钥种子通过第二预设算法得到第一校验值;将所述密钥种子与所述第一校验值拼接得到助记短语标识;将所述助记短语标识根据预设字典转换为助记短语。
6.如权利要求5所述的方法,其特征在于,
所述步骤201具体为:所述硬件钱包根据助记短语长度计算密钥种子长度和校验值长度,生成数据长度为密钥种子长度的随机数,并将所述随机数作为密钥种子;
所述步骤202具体为:所述硬件钱包根据所述密钥种子通过所述第二预设算法得到计算结果,从所述计算结果中截取前校验值长度的数据作为第一校验值;将所述密钥种子与所述第一校验值拼接得到助记短语标识;将所述助记短语标识根据预设字典转换为助记短语。
7.如权利要求1或5所述的方法,其特征在于,所述将所述助记短语标识根据预设字典转换为助记短语具体包括:所述硬件钱包依次在所述助记短语标识中截取第二预设长度的数据作为助记单词标识,并在预设字典中查找与截取到的助记单词标识对应的助记单词,再将助记单词依次组合得到助记短语。
8.如权利要求1或5所述的方法,其特征在于,所述将密钥种子通过第一预设算法生成主密钥具体包括:所述硬件钱包使用预设字符串作为哈希密钥,根据所述第二预设算法计算所述密钥种子的哈希值;将计算得到的所述哈希值的高位端第二预设长度的数据作为主密钥。
9.如权利要求1所述的方法,其特征在于,所述创建硬件钱包指令中还包括:助记短语的语言类型;
所述步骤S4具体为:硬件钱包生成随机数作为密钥种子,将所述主密钥通过与所述助记短语的语言类型对应的字典转换为助记短语,将助记短语返回给上位机。
10.如权利要求1所述的方法,其特征在于,当接收到恢复硬件钱包指令之后,执行步骤S5之前还包括:所述硬件钱包判断所述恢复硬件钱包指令中的助记短语中的助记单词的数量是否不大于第三预设值,是则执行步骤S5,否则向上位机返回失败响应。
11.如权利要求1所述的方法,其特征在于,当接收到所述恢复硬件钱包指令之后,执行步骤S5之前还包括:硬件钱包根据助记短语确定助记短语的语言类型,判断助记短语的语言类型是否在预设语言种类范围内,是则执行步骤S5,否则向上位机返回失败响应。
12.如权利要求11所述的方法,其特征在于,硬件钱包根据助记短语确定助记短语的语言类型具体包括:硬件钱包获取助记短语中的一个助记单词,根据助记单词的unicode码确定助记短语的语言类型。
13.如权利要求1所述的方法,其特征在于,所述硬件钱包将所述恢复硬件钱包指令中的助记短语根据所述预设字典转换为密钥种子具体包括:硬件钱包将所述助记短语根据所述预设字典转换为助记短语标识;根据助记短语标识长度计算对密钥种子长度,从助记短语标识中的顺序获取长度为密钥种子长度的数据作为密钥种子。
14.如权利要求1所述的方法,其特征在于,所述硬件钱包将所述恢复硬件钱包指令中的助记短语根据所述预设字典转换为密钥种子具体包括:硬件钱包将所述恢复硬件钱包指令中的助记短语根据所述预设字典转换为助记短语标识,从助记短语标识中获取密钥种子和第二校验值;
所述从助记短语标识中获取密钥种子和第二校验值之后,所述将所述密钥种子通过所述第一预设算法生成主密钥之前还包括:所述硬件钱包根据所述密钥种子生成第三校验值,并判断所述第三校验值和所述第二校验值是否匹配,是则执行所述将所述密钥种子通过所述第一预设算法生成主密钥,否则向上位机返回失败响应。
15.如权利要求14所述的方法,其特征在于,所述从助记短语标识中获取密钥种子和第二校验值具体为:所述硬件钱包根据助记短语标识长度计算密钥种子长度,从所述助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子,将所述助记短语标识中剩余的数据作为第二校验值。
16.如权利要求15所述的方法,其特征在于,所述硬件钱包根据所述密钥种子生成第三校验值具体包括,所述硬件钱包使用第二预设算法对密钥种子进行运算得到计算结果,顺序截取计算结果中长度为校验值长度的数据作为第三校验值。
17.如权利要求1所述的方法,其特征在于,当接收到所述查询余额指令时,执行步骤S2之前,还包括:硬件钱包判断所述安全存储区中是否存在所述主密钥,是则执行步骤S2;否则向上位机返回失败响应。
18.如权利要求1所述的方法,其特征在于,所述硬件钱包根据所述安全存储区中的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对具体包括:
步骤401、硬件钱包根据安全存储区中的主密钥生成公钥,并设置当前子密钥索引为预设值;
步骤402、所述硬件钱包根据所述公钥和所述当前子密钥索引通过密钥派生算法派生出所述子密钥对;
步骤403、所述硬件钱包根据所述子密钥对中的子公钥通过预设算法生成账户地址,将所述账户地址和所述当前子密钥索引绑定写入子密钥索引列表;
步骤404、所述硬件钱包更新当前子密钥索引,并判断所述当前子密钥索引是否小于预设值,是则返回步骤402,否则向上位机返回子密钥索引列表。
19.如权利要求1所述的方法,其特征在于,所述根据所述子密钥对中的子公钥生成账户地址具体包括:所述硬件钱包将子公钥依次经过SHA256和RIPEMD160运算及编码运算后生成的第一数据作为账户地址。
20.如权利要求1所述的方法,其特征在于,当接收到所述交易指令时,执行步骤S3之前,还包括:硬件钱包判断所述安全存储区中是否存在所述主密钥,是则执行步骤S3;否则向上位机返回失败响应。
21.如权利要求1所述的方法,其特征在于,所述硬件钱包根据安全存储区中的主密钥和所述交易指令中的子密钥索引通过密钥派生算法生成子密钥对具体为:所述硬件钱包根据安全存储区中的主密钥生成公钥,硬件钱包根据公钥和子密钥索引通过密钥派生算法派生出子密钥对。
22.如权利要求1所述的方法,其特征在于,根据所述子密钥对中的子公钥和所述签名结果生成交易凭据具体包括:所述硬件钱包根据子密钥对中的子公钥长度、子公钥、签名结果长度和签名结果计算得到交易凭据长度;并将交易凭据长度、子公钥长度、子公钥、签名结果长度和签名结果顺序拼接生成交易凭据。
23.一种硬件钱包,其特征在于,包括:
接收模块,用于接收来自上位机的指令;
安全存储模块,用于存储主密钥;
第一子密钥对生成模块,用于当所述接收模块接收到所述上位机发送的查询余额指令时,根据所述安全存储模块中保存的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对;
账户地址生成模块,用于根据所述第一子密钥对生成模块生成的子密钥对中的子公钥生成账户地址;
第二子密钥对生成模块,用于当所述接收模块接收到所述上位机发送的交易指令时,根据所述交易指令中的子密钥索引和所述安全存储模块中存储的主密钥通过密钥派生算法生成子密钥对;
签名模块,用于使用所述第二子密钥对生成模块生成的子私钥对所述接收模块接收到的所述交易指令中的交易数据进行签名得到签名结果;
交易凭据生成模块,用于使用所述第二子密钥对生成模块生成的所述子密钥对中的子公钥和所述签名模块生成的所述签名结果生成交易凭据;
发送模块,用于将所述账户地址生成模块生成的所述账户地址与所述预置的子密钥索引绑定发送给所述上位机;还用于将所述交易凭据生成模块生成的所述交易凭据发送给所述上位机;
所述的硬件钱包还包括:
随机数生成模块,用于当所述接收模块接收到来自上位机的创建硬件钱包指令时生成随机数,将所述随机数作为密钥种子;
转换模块,用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用于当所述接收模块接收到恢复硬件钱包指令时,将所述恢复硬件钱包指令中的助记短语根据所述预设字典转换为密钥种子;
主密钥生成模块,用于将所述随机数生成模块生成的所述密钥种子通过第一预设算法生成主密钥;还用于将所述转换模块生成的所述密钥种子通过所述第一预设算法生成主密钥;
所述安全存储模块,具体用于存储所述主密钥生成模块生成的所述主密钥;
所述发送模块,还用于将所述转换模块生成的所述助记短语发送给所述上位机;
所述随机数生成模块,具体用于当所述接收模块接收到来自上位机的创建硬件钱包指令时生成第一预设长度的随机数,将所述随机数作为密钥种子;
所述转换模块具体包括:
助记短语标识生成子模块,用于根据所述随机数生成模块生成的所述密钥种子通过第二预设算法得到第一校验值,将所述密钥种子与所述第一校验值拼接得到助记短语标识;
转换子模块,用于将所述助记短语标识生成子模块生成的所述助记短语标识通过预设字典转换成助记短语。
24.如权利要求23所述的硬件钱包,其特征在于,所述接收模块,具体用于,接收所述上位机发送的指令,当接收到指令后,获取所述指令的第一预设字段上的数据,并将其作为指令类型标识,根据所述指令类型标识判断指令的类型,若指令类型标识为第一预设指令类型标识时,判定出指令类型为所述创建硬件钱包指令;若指令类型标识为第二预设指令类型标识时,判定指令的类型为所述恢复硬件钱包指令;若指令类型标识为第三预设指令类型标识时,判定指令的类型为所述查询账户余额指令;若指令类型标识为第四预设指令类型标识时,判定指令的类型为所述交易指令。
25.如权利要求23所述的硬件钱包,其特征在于,所述创建硬件钱包指令中包括硬件钱包密码;
所述硬件钱包还包括:
第一判断模块,用于当所述接收模块接收到所述上位机发送的创建硬件钱包指令时,判断所述创建硬件钱包指令中的硬件钱包密码是否合法;
所述随机数生成模块,具体用于当所述第一判断模块判定所述创建硬件钱包指令中的硬件钱包密码合法时生成随机数,将所述随机数作为密钥种子;
错误提示模块,用于当所述第一判断模块判定所述创建硬件钱包指令中的硬件钱包密码不合法时提示密码错误。
26.如权利要求23所述的硬件钱包,其特征在于,所述助记短语标识生成子模块,具体用于根据所述随机数生成模块生成的所述密钥种通过所述第二预设算法计算得到计算结果,根据所述第一预设长度计算校验值长度,从所述计算结果中顺序截取长度为校验值长度的数据作为第一校验值,将所述密钥种子与所述第一校验值拼接得到助记短语标识。
27.如权利要求23所述的硬件钱包,其特征在于,所述创建硬件钱包指令中包括助记短语长度;
所述随机数生成模块,具体用于根据所述创建硬件钱包指令中的所述助记短语长度计算密钥种子长度,生成数据长度为密钥种子长度的随机数,将所述随机数作为密钥种子;
所述转换模块具体包括:
助记短语标识生成子模块,用于根据所述随机数生成模块生成的所述密钥种子通过第二预设算法得到第一校验值,将所述密钥种子与所述第一校验值拼接得到助记短语标识;
转换子模块,用于将所述助记短语标识生成子模块生成的所述助记短语标识通过预设字典转换成助记短语。
28.如权利要求27所述的硬件钱包,其特征在于,
所述随机数生成模块,具体用于根据所述创建硬件钱包指令中的所述助记短语长度计算密钥种子长度和校验值长度,生成数据长度为密钥种子长度的随机数,将所述随机数作为密钥种子;
所述转换模块具体包括:
助记短语标识生成子模块,用于根据所述随机数生成模块生成的所述密钥种子通过第二预设算法计算得到的计算结果,从所述计算结果中顺序截取长度为校验值长度的数据作为第一校验值,将所述密钥种子与所述第一校验值拼接得到助记短语标识;
转换子模块,用于将所述助记短语标识生成子模块生成的所述助记短语标识通过预设字典转换成助记短语。
29.如权利要求23或27所述的硬件钱包,其特征在于,所述转换子模块,具体用于依次在所述助记短语标识生成子模块生成的所述助记短语标识中截取第二预设长度的数据作为助记单词标识,并在预设字典中查找与截取到的助记单词标识对应的助记单词,再将助记单词依次组合成助记短语。
30.如权利要求23或者27所述的硬件钱包,其特征在于,所述主密钥生成模块,具体用于使用预设字符串作为哈希密钥,根据所述第二预设算法计算所述随机数生成模块生成的所述密钥种子的哈希值,将计算得到的哈希值的高位段第二预设长度的数据作为主密钥。
31.如权利要求23所述的硬件钱包,其特征在于,所述创建硬件钱包指令中还包括:助记短语的语言类型;
转换模块,具体用于将所述随机数生成模块生成的密钥种子通过与所述助记短语的语言类型对应的字典转换为助记短语。
32.如权利要求23所述的硬件钱包,其特征在于,还包括:
第二判断模块,用于当所述接收模块接收到所述恢复硬件钱包指令时,判断所述恢复硬件钱包指令中的助记短语的助记单词的数量是否不大于第三预设值;
所述转换模块,用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用于当所述第二判断模块判定所述助记短语的助记单词的数量不大于第三预设值时将所述恢复硬件钱包指令中的助记短语通过所述预设字典转换为密钥种子;
所述发送模块,具体用于当所述第二判断模块判定所述助记短语的助记单词的数量大于第三预设值时向所述上位机发送错误响应。
33.如权利要求23所述的硬件钱包,其特征在于,还包括:
第三判断模块,用于当所述接收模块接收到所述恢复硬件钱包指令时,根据所述恢复硬件钱包指令中的所述助记短语确定助记短语的语言类型,并判断所述助记短语的语言类型是否在预设语言种类范围内;
转换模块,用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用于当所述第三判断模块判定所述助记短语的语言类型在所述预设语言种类范围内时将所述恢复硬件钱包指令中的助记短语通过所述预设字典转换为密钥种子;
所述发送模块,具体用于当所述第三判断模块判定所述助记短语的语言类型不在所述预设语言种类范围内时向所述上位机发送错误响应。
34.如权利要求33所述的硬件钱包,所述第三判断模块具体包括:
确定语言类型子模块,用于当所述接收模块接收到所述恢复硬件钱包指令时,根据所述恢复硬件钱包指令中的所述助记短语中的一个助记单词,根据助记单词的unicode码确定助记短语的语言类型;
所述第三判断模块,具体用于判断所述确定语言类型子模块确定的所述助记短语的语言类型是否在预设语言种类范围内。
35.如权利要求23所述的硬件钱包,其特征在于,
所述转换模块,具体用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用于当所述接收模块接收到所述恢复硬件钱包指令时,将所述助记短语根据所述预设字典转换为助记短语标识;根据助记短语标识长度计算对密钥种子长度,从助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子。
36.如权利要求23所述的硬件钱包,其特征在于,
所述转换模块,用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用有当所述接收模块接收到所述恢复硬件钱包指令时,将所述助记短语根据所述预设字典转换为助记短语标识;从所述助记短语标识中获取密钥种子和第二校验值;
所述硬件钱包还包括:
校验值生成模块,用于根据所述转换模块得到的所述密钥种子生成第三校验值;
第四判断模块,用于判断所述转换模块从所述助记短语标识中获取到的第二校验值与所述校验值生成模块生成的所述第三校验值是否匹配;
主密钥生成模块,用于将所述随机数生成模块生成的所述密钥种子通过第一预设算法生成主密钥;还用于当所述第四判断模块判定所述第二校验值与所述第三校验值匹配时,将所述转换模块中从所述助记短语标识中获取到的密钥种子通过第一预设算法生成主密钥。
37.如权利要求36所述的硬件钱包,其特征在于,所述转换模块具体用于将所述随机数生成模块生成的密钥种子通过预设字典转换为助记短语;还用于当所述接收模块接收到所述恢复硬件钱包指令时,将所述助记短语根据所述预设字典转换为助记短语标识;用于根据助记短语标识长度计算密钥种子长度,从所述助记短语标识中顺序获取长度为密钥种子长度的数据作为密钥种子,将所述助记短语标识中剩余的数据作为第二校验值。
38.如权利要求37所述的硬件钱包,其特征在于,所述校验值生成模块,用于使用第二预设算法对从所述助记短语标识中获取到的密钥种子进行计算得到计算结果,顺序截取计算结果中的长度为校验值长度的数据作为第三校验值。
39.如权利要求23所述的硬件钱包,其特征在于,还包括:
第五判断模块,用于当所述接收模块接收到所述上位机发送的查询余额指令时判断安全存储区中是否存在主密钥;
第一子密钥对生成模块,用于当所述第五判断模块判定所述安全存储模块中存在主密钥时根据所述安全存储模块中保存的主密钥和预置的子密钥索引通过密钥派生算法生成子密钥对;
所述发送模块,还用于当所述第五判断模块判定所述安全存储模块中不存在主密钥时向所述上位机发送失败响应。
40.如权利要求23所述的硬件钱包,其特征在于,所述第一子密钥生成模块具体包括:
公钥生成子模块,用于根据所述安全存储模块中存储的主密钥生成公钥;
设置子模块,用于设置当前子密钥索引为预设值;
子密钥对派生子模块,用于根据所述设置模块设置的子密钥索引和所述安全存储模块存储的主密钥通过密钥派生算法派生出子密钥对;还用于当判断子模块判定更新模块更新后的所述子密钥索引小于预设值时所述根据所述更新模块更新后的子密钥索引和所述安全存储模块存储的主密钥通过密钥派生算法派生出子密钥对;
账户地址生成子模块,用于根据所述子密钥对派生子模块生成的子密钥对中的子公钥通过预设算法生成账户地址;
绑定子模块,用于将所述账户地址生成子模块生成的所述账户地址与所述子密钥索引进行绑定写入子密钥索引列表;
更新子模块,用于更新当前子密钥索引;
判断子模块,用于判断更新模块更新后的所述子密钥索引是否小于预设值;
所述发送模块,还用于当所述判断更新模块更新后的所述子密钥索引不小于预设值时向所述上位机返回子密钥索引列表。
41.如权利要求40所述的硬件钱包,其特征在于,所述账户地址生成子模块,具体用于根据所述子密钥对派生子模块生成的子公钥依次经过SHA256和RIPEMD160运算及编码运算后生成的第一数据作为账户地址。
42.如权利要求23所述的硬件钱包,其特征在于,还包括:
第六判断模块,用于当所述接收模块接收到所述上位机发送的交易指令时,判断所述安全存储模块中是否存在主密钥;
第二子密钥对生成模块,用于当所述第六判断模块中判定所述安全存储模块中保存的主密钥时根据所述交易指令中的子密钥索引和所述安全存储模块中存储的主密钥通过密钥派生算法生成子密钥对;
所述发送模块,还用于当所述第六判断模块判定所述安全存储模块中不存在主密钥时向所述上位机发送失败响应。
43.如权利要求23所述的硬件钱包,其特征在于,所述第二子密钥对生成模块,具体用于当所述接收模块接收到所述上位机发送的交易指令时,根据所述安全存储模块中存储的主密钥生成公钥,根据所述公钥和所述交易指令中的子密钥索引通过密钥派生算法生成子密钥对。
44.如权利要求23所述的硬件钱包,其特征在于,所述交易凭据生成模块,具体用于根据所述子密钥对生成模块生成的子密钥对中的子公钥、子公钥长度、所述签名模块中生成的签名结果、签名结果长度计算交易凭据长度,并将交易凭据长度、子公钥长度、子公钥、签名结果长度和签名结果顺序拼接生成交易凭据。
CN201710690690.1A 2017-08-14 2017-08-14 一种利用硬件实现数字货币钱包的方法及硬件钱包 Active CN107480986B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201710690690.1A CN107480986B (zh) 2017-08-14 2017-08-14 一种利用硬件实现数字货币钱包的方法及硬件钱包
US16/620,918 US11093934B2 (en) 2017-08-14 2018-05-18 Method for realizing digital currency wallet by using hardware, and hardware wallet
PCT/CN2018/087463 WO2019033808A1 (zh) 2017-08-14 2018-05-18 一种利用硬件实现数字货币钱包的方法及硬件钱包

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710690690.1A CN107480986B (zh) 2017-08-14 2017-08-14 一种利用硬件实现数字货币钱包的方法及硬件钱包

Publications (2)

Publication Number Publication Date
CN107480986A CN107480986A (zh) 2017-12-15
CN107480986B true CN107480986B (zh) 2019-08-09

Family

ID=60600385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710690690.1A Active CN107480986B (zh) 2017-08-14 2017-08-14 一种利用硬件实现数字货币钱包的方法及硬件钱包

Country Status (3)

Country Link
US (1) US11093934B2 (zh)
CN (1) CN107480986B (zh)
WO (1) WO2019033808A1 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480986B (zh) * 2017-08-14 2019-08-09 飞天诚信科技股份有限公司 一种利用硬件实现数字货币钱包的方法及硬件钱包
CN108305071B (zh) * 2017-12-28 2020-11-24 中国人民银行数字货币研究所 一种查询数字货币明细信息的方法和装置
CN108092778B (zh) * 2017-12-28 2021-02-02 中国人民银行数字货币研究所 基于数字货币钱包查询关联账户的方法和系统
CN108173648B (zh) * 2017-12-29 2021-01-26 数安时代科技股份有限公司 基于私钥托管的数字安全处理方法、设备及存储介质
US10742411B2 (en) 2018-01-22 2020-08-11 Microsoft Technology Licensing, Llc Generating and managing decentralized identifiers
CN110135840A (zh) * 2018-02-09 2019-08-16 库币科技有限公司 电子货币包的产生及还原方法
CN108876605A (zh) * 2018-05-27 2018-11-23 北京轻松筹信息技术有限公司 数字资产交易方法及装置
CN108830576A (zh) * 2018-05-28 2018-11-16 夸克链科技(深圳)有限公司 一种单个硬件钱包中不同冷钱包之间的数字资产转移实现
CN110945553A (zh) * 2018-06-07 2020-03-31 北京光合信诚科技有限公司 交易方法、硬件钱包和交易设备
WO2019232766A1 (zh) * 2018-06-07 2019-12-12 北京光合信诚科技有限公司 交易方法、硬件钱包和交易设备
CN108833093A (zh) * 2018-06-14 2018-11-16 百度在线网络技术(北京)有限公司 账户密钥的确定方法、装置、设备及存储介质
CN110677250B (zh) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 密钥和证书分发方法、身份信息处理方法、设备、介质
CN109214167B (zh) * 2018-08-01 2021-04-16 深圳市文鼎创数据科技有限公司 一种智能密钥安全设备及其密钥恢复方法、存储介质
CN110795742B (zh) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 高速密码运算的度量处理方法、装置、存储介质及处理器
CN110795774B (zh) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 基于可信高速加密卡的度量方法、设备和系统
CN109067526A (zh) * 2018-08-15 2018-12-21 数字钱包(北京)科技有限公司 层次公私钥对生成方法和装置
CN109257332B (zh) * 2018-08-15 2020-06-02 飞天诚信科技股份有限公司 数字货币硬件钱包应用更新的安全通道的创建方法及装置
CN110874478B (zh) 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
CN109167662A (zh) * 2018-09-04 2019-01-08 上海易酷信息技术服务有限公司 一种种子生成方法及其设备
CN109345236A (zh) * 2018-09-06 2019-02-15 海南新软软件有限公司 一种远程隔离的秘钥访问方法、装置及系统
CN109754241B (zh) * 2018-12-27 2022-02-22 恒宝股份有限公司 一种硬钱包及基于硬钱包的验证方法
CN109687975B (zh) * 2018-12-29 2020-11-03 飞天诚信科技股份有限公司 一种硬件钱包可脱机进行初始化的实现方法及装置
CN109784888A (zh) * 2019-01-28 2019-05-21 杭州复杂美科技有限公司 红包处理方法、设备和存储介质
CN109816362B (zh) * 2019-01-28 2021-07-06 杭州复杂美科技有限公司 红包处理方法、设备和存储介质
CN110310104B (zh) * 2019-06-06 2022-04-08 武汉卓目科技有限公司 一种自毁型硬件钱包
CN110310108B (zh) * 2019-06-06 2022-04-08 武汉卓目科技有限公司 一种带拆机自毁的新型硬件钱包
CN110310105B (zh) * 2019-06-28 2022-03-18 飞天诚信科技股份有限公司 一种安全的恢复硬件钱包主密钥的实现方法及装置
CN110490589B (zh) * 2019-08-30 2022-07-26 新明华区块链技术(深圳)有限公司 硬件钱包创建方法、装置及硬件钱包
CN110544090A (zh) * 2019-09-06 2019-12-06 东信和平科技股份有限公司 一种数字货币硬钱包应用实现方法、sim卡及系统
CN110610360B (zh) * 2019-09-09 2022-03-18 飞天诚信科技股份有限公司 一种硬件钱包绑定授权的方法及装置
CN110535664B (zh) * 2019-09-20 2021-03-26 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、服务器及存储介质
CN112543103B (zh) * 2019-09-23 2024-06-25 百度在线网络技术(北京)有限公司 账户地址的生成方法和校验方法、装置、设备和介质
CN110796444B (zh) * 2019-09-29 2023-11-28 北京昇广科技有限公司 一种双硬件钱包的处理方法及系统
CN110874726A (zh) * 2019-11-20 2020-03-10 上海思赞博微信息科技有限公司 一种基于tpm的数字货币安全保护方法
US11509467B2 (en) 2020-02-25 2022-11-22 Microsoft Technology Licensing, Llc Story assisted mnemonic phrase
CN111447063B (zh) * 2020-05-13 2021-02-26 江苏恒宝智能系统技术有限公司 一种冷钱包派生密钥的生成方法及装置
CN116628762A (zh) * 2020-06-28 2023-08-22 江苏恒宝智能系统技术有限公司 一种基于区块链技术的数据管理方法、装置及系统
CN111709060B (zh) * 2020-08-20 2020-11-24 飞天诚信科技股份有限公司 一种电子设备及其保护种子数据包的方法
US11588632B2 (en) * 2020-09-22 2023-02-21 International Business Machines Corporation Private key creation using location data
US11424865B2 (en) * 2020-12-10 2022-08-23 Fisher-Rosemount Systems, Inc. Variable-level integrity checks for communications in process control environments
CN112561511B (zh) * 2020-12-10 2022-12-20 山东区块链研究院 基于国密标准算法的多级电子钱包数据处理方法及系统
CN112688845B (zh) * 2020-12-23 2022-08-05 北京天融信网络安全技术有限公司 车载can网络的通信方法及装置
CN112822182A (zh) * 2020-12-31 2021-05-18 北京握奇数据股份有限公司 硬件钱包介质替换系统及方法
CN113037499B (zh) * 2021-03-15 2024-01-05 杭州链网科技有限公司 一种区块链加密通讯方法及系统
CN113190471B (zh) * 2021-06-30 2021-09-28 飞天诚信科技股份有限公司 一种助记词的管理方法及装置
AU2023219009A1 (en) * 2022-02-09 2024-07-25 Thirdwayv, Inc. Access control systems and methods for cryptowallets
CN114465726B (zh) * 2022-04-13 2022-06-28 北京银联金卡科技有限公司 基于安全单元和可信执行环境的数字钱包安全框架系统
CN115147111A (zh) * 2022-09-02 2022-10-04 杭州弦冰科技有限公司 密钥生成方法以及装置、电子设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN205003731U (zh) * 2015-09-30 2016-01-27 深圳市招股科技有限公司 一种基于双界面ic卡的数字货币硬件钱包
CN106411506A (zh) * 2016-08-31 2017-02-15 飞天诚信科技股份有限公司 适用于数字货币的密钥派生方法及装置
CN106651363A (zh) * 2016-12-28 2017-05-10 飞天诚信科技股份有限公司 一种硬件钱包及其持有者身份验证方法
CN106651331A (zh) * 2016-12-22 2017-05-10 飞天诚信科技股份有限公司 一种基于数字货币的电子交易方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8768834B2 (en) 2011-09-20 2014-07-01 E2Interactive, Inc. Digital exchange and mobile wallet for digital currency
US10102510B2 (en) * 2012-11-28 2018-10-16 Hoverkey Ltd. Method and system of conducting a cryptocurrency payment via a mobile device using a contactless token to store and protect a user's secret key
CN107480986B (zh) * 2017-08-14 2019-08-09 飞天诚信科技股份有限公司 一种利用硬件实现数字货币钱包的方法及硬件钱包

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN205003731U (zh) * 2015-09-30 2016-01-27 深圳市招股科技有限公司 一种基于双界面ic卡的数字货币硬件钱包
CN106411506A (zh) * 2016-08-31 2017-02-15 飞天诚信科技股份有限公司 适用于数字货币的密钥派生方法及装置
CN106651331A (zh) * 2016-12-22 2017-05-10 飞天诚信科技股份有限公司 一种基于数字货币的电子交易方法及系统
CN106651363A (zh) * 2016-12-28 2017-05-10 飞天诚信科技股份有限公司 一种硬件钱包及其持有者身份验证方法

Also Published As

Publication number Publication date
US20200226586A1 (en) 2020-07-16
CN107480986A (zh) 2017-12-15
US11093934B2 (en) 2021-08-17
WO2019033808A1 (zh) 2019-02-21

Similar Documents

Publication Publication Date Title
CN107480986B (zh) 一种利用硬件实现数字货币钱包的方法及硬件钱包
US10885216B2 (en) Secure substring search to filter encrypted data
CN109687975B (zh) 一种硬件钱包可脱机进行初始化的实现方法及装置
CN103488952B (zh) 文件完整性验证方法及文件处理器
US20150134971A1 (en) Apparatus and method for decrypting encrypted file
EP4101122B1 (en) Generating emoji sequence identifications to identify wallet addresses for blockchain wallets
CN115051798B (zh) 一种随机数生成方法、装置、电子设备及存储介质
CN113255007B (zh) 一种安全隐匿三要素查询方法
CN110071917B (zh) 用户口令检测方法、设备、装置及存储介质
CN115567188A (zh) 一种多键值隐匿求交方法、装置及存储介质
CN109167662A (zh) 一种种子生成方法及其设备
CN106712968A (zh) 密钥获取方法、数字签名方法和装置
CN107291898B (zh) 基于FPGA的MySQL认证密码恢复系统及其方法
CN102045170B (zh) 一种实现口令安全保护的方法及系统
CN107612969A (zh) 基于B‑Tree布隆过滤器的云存储数据完整性审计方法
CN109905366A (zh) 终端设备安全验证方法、装置、可读存储介质及终端设备
CN108694186A (zh) 数据发送方法及服务器应用、计算设备及计算机可读介质
CN113963468B (zh) 开锁码的生成方法及装置
CN112651835B (zh) 联盟链的交易方法、装置、电子设备及存储介质
CN115577374A (zh) 一种基于md5的加密融合存储方法、设备及介质
Chan et al. Evolution of Bitcoin addresses from security perspectives
CN108256327A (zh) 一种文件检测方法及装置
CN114238131A (zh) 代码检测方法、装置、计算机可读介质及电子设备
CN114884646B (zh) 基于改进md5加密处理的系统密码存储方法
CN115130149A (zh) 区块链处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared