SIM卡、终端机和数字货币管理系统的制作方法

文档序号:17376280发布日期:2019-04-12 23:20阅读:431来源:国知局
SIM卡、终端机和数字货币管理系统的制作方法

本发明涉及数字货币领域。



背景技术:

2008年,中本聪在比特币论坛发表了题为《bitcoin:apeertopeerelectroniccashsystem》的论文,首次提出区块链的概念,并由此构建了交易信息加密传输的技术基础和比特币网络。从2009年比特币数字货币平台建立至今,比特币系统稳定运行,自动实现了从发行到交易流通的过程。同时,区块链作为基础支持技术,逐渐独立出来应用于更多场景,诞生了多种基于此概念的数字货币,比如莱特币、狗狗币、瑞波币等。2015年,随着以太坊开源项目带来的智能合约平台概念,实现了各种不同4类型资产及合约的注册和转移,方便了数字货币的发行和流通,极大程度的丰富了数字货币类型。特别是从2017年初开始,通过ico的方式,各种代币层出不穷,带来了数字货币市场新一轮的繁荣。在2018年年初,在coinmarketcap网站有统计的数字货币类型已经接近1000种,总市值突破8000亿美元。

数字货币市场的蓬勃发展,催生了数字货币钱包的诞生和发展。在数字资产世界里,钱包是一个密钥(包含私钥和公钥)的管理容器。用户使用私钥进行签名交易,从而证明拥有该交易的输出权,其交易信息存储在区块链中,而不是存储在该钱包内。钱包软件根据不同的定义,有不同的分类方法。

例如按照私钥的管理和交易签名的实现方式可以分类为软件钱包和硬件钱包。软件钱包是指私钥的管理主要由手机软件或者pc软件来实现,私钥通过加密的方式存在系统中。交易签名直接通过软件里面的算法实现。当前主流的软件钱包包括:imtoken,kcash,58wallet,tigerwallet,myetherwallet,metamask等。硬件钱包是指把私钥的管理和交易签名都放在硬件中,提供更高级别的安全保护功能。当前主流的硬件钱包包括:trezor,legder,库神,coolwallet等。

按照数字货币钱包是否集中管理,可以分类为中心化钱包和去中心钱包。区块链技术的去中心化,导致大部分钱包没有账号的概念,也不存在用户名+密码这种传统互联网的注册登录方式,需要用户存储私钥或者助记码的方式,导致用户门槛使用比较高。所以,有些钱包为了解决这个问题,直接采用中心化托管的方式来管理用户的私钥,即中心化钱包。典型的代表有:cobo。一般的交易所其实也是这种方式在处理。但这种中心化钱包存在很高的安全风险问题。如果中心化钱包提供商由于内部的监管问题或者外部黑客的入侵,就会导致用户托管资产的流失。

根据钱包管理数字资产的种类来划分多币种钱包和单币种钱包。由于主链技术发展,出现了技术差异大的数字货币资产。钱包软件可能支持其中某一币种或者支持多种币种。但随着市场的发展,越来越多的钱包软件为了获取尽量多的用户都会支持多币种。

钱包软件在发展的过程中,在安全性和便利性上很难兼顾。有些实现方案通过牺牲安全性来保证便利性,有些通过降低便利性保证安全性。因此,必须在二者之前有一个很好的平衡,才能真正满足用户的需求。



技术实现要素:

鉴于现有技术中的上述问题,本发明提供一种能够管理数字货币钱包的sim卡、能够管理数字货币钱包的终端机和包括该终端机和sim卡的数字货币管理系统。

根据本发明的一个实施方式,一种用户身份识别sim卡,其特征在于,包括:

数字货币信息存储单元,被配置成存储数字货币的私钥;

sim卡i/o接口,可通信地与安装有数字货币管理程序的终端机连接;

sim卡处理器,可操作地与所述数字货币信息存储单元和所述sim卡i/o接口连接,所述sim卡处理器被配置成响应于来所述终端机的数字货币管理程序的钱包创建命令,基于数字货币协议生成包括私钥和公钥的数字货币的密钥对和钱包地址,从而创建数字货币钱包,或者响应于来自所述数字管理程序的钱包管理命令,管理已创建的数字货币钱包,其中所生成的私钥加密存储于所述数字货币信息存储单元中。

所述数字货币协议可以是比特币改进建议bip协议。

所述数字货币协议是可以基于分层确定性钱包协议。

所述钱包地址可以存储到所述sim卡的服务提供商的sim卡管理服务器中。

所述sim卡处理器还可以被配置成当创建数字货币钱包时,创建助记码,并将该助记码发送到所述终端机进行备份。

所述sim卡处理器还可以被配置成,当所述管理命令为恢复数字货币钱包命令时,从所述终端机的数字货币管理程序接收所述助记码,利用该助记码计算出对应的包括所述私钥和所述公钥的密钥对和所述钱包地址,将所述私钥存储到数字货币信息存储单元,以恢复数字货币钱包。

所述sim卡处理器还可以被配置成当所述货币管理程序请求访问所述sim卡时,验证用户输入的pin码是否正确,若正确,则允许所述货币管理程序的访问,否则,禁止所述货币管理程序的访问。

当所述管理命令为转账命令时,所述sim卡处理器可以被配置成利用所述私钥对转账信息进行签名,获得签名信息,并将该签名信息发送给所述终端机的所述数字货币管理程序。

根据本发明的另一个实施方式,一种终端机,包括:

终端机存储器,存储有数字货币管理程序;

终端机处理器,用于执行所述数字货币管理程序,所述数字货币管理程序当被所述终端机处理器执行时,将钱包创建命令发送给sim卡,使所述sim卡基于数字货币协议生成包括私钥和公钥的数字货币的密钥对和钱包地址,从而创建数字货币钱包,或者将钱包管理命令发送给sim卡,使所述sim卡管理已创建的数字货币钱包。

所述数字货币协议可以是比特币改进建议bip协议。

所述数字货币协议可以是基于分层确定性钱包协议。

所述数字货币管理程序当被所述终端机处理器执行时还可以被配置成,当创建数字货币钱包时,接收由所述sim卡创建的助记码,并对该助记码进行备份。

所述货币管理程序当被所述终端机处理器执行时还可以被配置成,当所述sim卡被更换为新的sim卡时,将所述助记码发送给新的sim卡,使所述新的sim卡基于所述助记码计算出所述密钥对和钱包地址,以恢复数字货币钱包。

所述货币管理程序当被所述终端机处理器执行时还可以被配置成,当访问所述sim卡时,接收用户输入的pin码并将其发送给所述sim卡进行验证。

当所述管理命令为转账命令时,所述数字货币管理程序当被所述终端机处理器执行时还可以被配置成,将所述转账命令与转账信息一同发送给所述sim卡,待所述sim卡利用所述私钥对转账信息进行签名获得签名信息后,接收来自所述sim卡的所述签名信息,并将该签名信息发送给区块链节点。

根据本发明的另一个实施方式,一种数字货币管理系统,其特征在于,包括:

如上所述的sim卡;和

如上所述的终端机。

根据如上所述的本发明的技术方案,相比于现有的数字货币钱包有两大优势:

1.安全:相对于纯软件的数字货币钱包,本发明的数字货币钱包类似于硬件钱包,把私钥的管理集成到sim卡中,能实现极高的安全防护。

2.便利:硬件钱包一般需要携带一个独立的硬件,还要带上连接线,甚至还需要带上特殊的充电设备。但本发明的基于sim卡的数字货币钱包与智能手机等终端机配套使用,完全省掉了这些麻烦,极大地增加了便携性。

因此,能够在安全性和便利性之间取得极佳的平衡。

附图说明

图1是说明本发明的一个实施方式的数字货币管理系统的架构图。

图2是说明本发明的一个实施方式的sim卡的架构和运行原理的架构图。

图3是表示本发明的一个实施方式的终端机200的架构和运行原理的架构图。

具体实施方式

下面,对本发明的一个实施方式的数字货币管理系统1进行详细说明。图1是说明本发明的一个实施方式的数字货币管理系统的架构图。

数字货币管理系统1包括能够实现数字货币钱包管理的sim卡(subscriberidentificationmodulecard,用户身份识别卡)100和终端机200。本发明的数字货币管理系统1在sim卡100中实现数字货币钱包,存储私钥,实现了对数字货币钱包的硬件管理。对于支持多币种,采用hd(hierarchicaldeterministic分层确定性)协议,从而实现了hd钱包。为了方便用户的管理,在终端机200中存储有数字货币管理程序203,从而驱动sim卡100创建数字货币钱包并对已创建的钱包进行管理。通过数字货币管理程序203,例如可以进行转账、账户查询,收款等功能。数字货币管理程序203收到相应的请求后,通过节点网关,将请求内容转给响应的区块链节点,进行链上信息的查询和交易发送。

以下,对本发明的一个实施方式的数字货币管理系统1的sim卡100和终端机200的构成进行详细说明。图2是说明本发明的sim卡的架构和运行原理的架构图。

在本发明的数字货币管理系统1中,通过sim卡100实现数字货币钱包。sim卡100既可以是实体sim卡,也可以是虚拟sim卡。而且sim卡100既可以安装在终端机的第一卡槽,也可以安装在终端机的第二卡槽。

sim卡100包括:数字货币信息存储单元101,被配置成存储数字货币的私钥;sim卡i/o接口102,可通信地与安装有数字货币管理程序203的终端机200连接;sim卡处理器103,可操作地与数字货币信息存储单元101和sim卡i/o接口102连接。sim卡处理器103被配置成能够响应于来自终端机200的数字货币管理程序203的钱包创建命令,基于数字货币协议生成包括私钥和公钥的数字货币的密钥对和钱包地址,从而创建数字货币钱包,其中所生成的私钥加密存储于数字货币信息存储单元101中,和/或能够响应于来自数字货币管理程序203的钱包管理命令,管理已创建的数字货币钱包。

数字货币信息存储单元101被配置成加密存储数字货币的私钥。另外,数字货币信息存储单元101还可以被配置成存储钱包地址和种子(seed)(在后文详述),私钥等信息。只有特定的用户和模块才有权限读取数字货币信息存储单元101中的加密后的私钥等信息。而且,在一些实施例中,数字货币信息存储单元101还可以存储有硬件自毁程序,当入侵者试图暴力破解加密信息时,运行自毁程序,销毁加密信息,以防止暴力破解钱包,保证安全性。数字货币信息存储单元101既可以是在sim卡101的通用存储单元中构建出的专用存储区域,也可以是与通用存储单元分开单独设置的专用独立芯片(存储电路)。在后一种情况下,能够进一步增强存储在数字货币信息存储单元101中的信息(例如,私钥)的安全性。

sim卡处理器103被配置成能够响应于来自后述的终端机200的数字货币管理程序203的钱包创建命令,基于数字货币协议生成包括私钥和公钥的数字货币的密钥对和钱包地址,从而创建数字货币钱包,其中所生成的私钥加密存储于数字货币信息存储单元101中,和/或能够响应于来自数字货币管理程序203的钱包管理命令,管理已创建的数字货币钱包。管理命令可以包括但不限于,转账命令、余额查询命令,收款命令。

如上所述的sim卡处理器103的钱包创建操作和钱包管理操作(例如转账签名等)sim卡操作系统(未图示)中运行。sim卡操作系统可以是sim卡的嵌入式操作系统,由sim卡处理器在sim卡操作系统中调用sim卡的各硬件模块进行运行和存储。

sim卡i/o接口102可通信地与安装有数字货币管理程序的终端机连接,可以与终端机通过驱动程序进行数据通信,使得终端机200能够访问sim卡100,使得sim卡处理器103执行如上所述的钱包创建操作和钱包管理操作。终端机200的数字货币管理程序203可以被配置成仅在核实了用户身份后才能通过sim卡i/o接口102访问sim卡100的数字货币信息存储单元101并且使sim卡处理器103执行如上所述的各项操作。例如,可以通过核实用户输入的pin(personalidentificationnumber;个人识别号)码核实用户身份。通过这种方式能够进一步增强数字钱包信息的安全性。

下面,详细说明sim卡处理器103基于数字货币协议创建数字货币钱包的处理。在本实施方式中,例如基于比特币改进建议(bitcoinimprovementproposal;bip)协议创建数字货币钱包的处理。但是,该数字货币协议不限于此,也可以采用其他协议。为了支持多币种的数字货币钱包,数字货币钱包可以采用分层确定性钱包(hierarchicaldeterministicwallet;简称为“hd钱包”)协议。但本发明不限于此,也可以采用其他可以支持多币种的数字货币钱包协议。在某些实施方式中,相关bip协议可以是bip32:bip39和bip44协议,但需注意,本发明不限于这些协议。

sim卡处理器103被配置成构建出分层确定性钱包(hd钱包)。sim卡处理器103被配置成从单个种子(seed)产生树状结构,存储多组包括公钥和私钥的密钥对,即单个种子(seed)导出密钥对树的系统。这样做的好处是,可以方便的进行备份,转移到其他相容装置(因为都只需要种子(seed)),并且能够进行分层的权限控制。sim卡处理器103还被配置成在这样的树状结构的基础上构建hd钱包结构。在下面示例中,以16字节的16进制字符串的种子为例进行详细说明,但本发明不限于此,种子不限于16字节,字符串也不限于16进制。当采用的种子字节数等发生改变时,本领域技术人员将会明白密钥对树中的相应结构也需要相应地进行改变。

首先,详细描述从单个种子导出密钥对树的过程。

约定

为了方便描述,假设sim卡处理器103被配置成使用bitcoin公钥密码术,即使用由secp256k1(http://www.secg.org/sec2-v2.pdf)定义的字段和曲线参数的椭圆曲线加密。并且约定:

变量是:

·整数模数曲线的顺序(简称n)。

·曲线上的点坐标。

·字节序列。

由sim卡处理器103执行的两个坐标对的加法(+)定义为ec组操作的应用。由sim卡处理器103执行的连接(||)是将一个字节序列附加到另一个字节序列的操作。

作为标准转换函数,假设:

·point(p):返回由整数p表示的secp256k1基点的ec点乘法(ec组操作的重复应用)产生的坐标对。

·ser32(i):将32位无符号整数i序列化为4字节序列,大端存储(计算机术语)。

·ser256(p):将整数p序列化为32字节序列,大端存储(计算机术语)。

·serp(p):使用sec1的压缩格式将坐标对p=(x,y)串行化为字节序列:(0x02或0x03)||ser256(x),其中头字节取决于省略的y坐标的奇偶校验。

·parse256(p):将32字节序列转换为256位数,大端存储(计算机术语)。

扩展密钥

接下来,定义一个从父密钥导出多个子密钥的函数。为了防止这些仅仅依赖于密钥本身,首先,sim卡处理器103被配置成使用额外的256位熵来扩展私钥和公钥。称为链码的扩展对于相应的私钥和公钥是相同的,由32个字节组成。

将扩展私钥表示为(k,c),k为普通私钥,c为链码。扩展公钥表示为(k,c),k=point(k),c表示链码。

每个扩展密钥有2^31个普通子密钥,2^31个硬化子密钥。这些子密钥都有一个索引。普通子密钥使用索引0到2^31-1。硬化的子密钥使用索引2^31到2^32-1。为了简化硬化密钥索引的符号,数字ih表示i+2^31。

子密钥分散(ckd)功能

给定父扩展密钥和索引i,sim卡处理器103可以计算相应的子扩展密钥。这样做的算法取决于子密钥是否是硬化密钥(或等效地,i是否≥2^31),包括私钥和公钥。

父私钥→子私钥

函数ckdpriv((kpar,cpar),i)→(ki,ci)从父扩展私钥计算子扩展私钥:

·检查是否i≥2^31(子私钥)。

如果是(硬化的子密钥):让i=hmac-sha512(key=cpar,data=0x00||ser256(kpar)||ser32(i))。(注意:0x00将私钥补齐到33字节长。)

如果不是(普通的普通子密钥):让i=hmac-sha512(key=cpar,data=serp(point(kpar))||ser32(i))。

·将i分为两个32字节序列,il和ir。

·返回的子密钥ki是parse256(il)+kpar(modn)。

·返回的链码ci是ir。

·如果parse256(il)≥n或ki=0,则生成的密钥无效,并且应继续下一个i值。(注:概率低于1/2127)hmac-sha512功能在rfc4231中规定。

父公钥→子公钥

函数ckdpub((kpar,cpar),i)→(ki,ci)从父扩展公钥计算子扩展公钥。它只针对未硬化的子密钥定义。

·检查是否i≥2^31(子密钥是否是硬化密钥)

如果是(硬化子密钥):返回失败

如果不是(普通子密钥):让i=hmac-sha512(key=cpar,data=serp(kpar)||ser32(i)).

·将i分为两个32字节序列,il和ir。

·返回的子密钥ki是point(parse256(il))+kpar。

·返回的链码ci是ir。

·如果parse256(il)≥n或ki是无限远的点,则生成的密钥无效,并且应继续下一个i值。

父私钥→子公钥

函数n((k,c))→(k,c)计算与扩展私钥对应的扩展公钥(“中和”版本,因为它消除了签署交易的能力)。

·返回的密钥k是point(k)。

·返回的链码c只是传递的链码。

要计算父私钥的公用子密钥:

·n(ckdpriv((kpar,cpar),i))(总是工作)。

·ckdpub(n(kpar,cpar),i)(仅适用于非硬化子密钥)。

它们等价的事实是使非硬化密钥有用(可以在不知道任何私钥的情况下导出给定父密钥的子公钥),以及它们与硬密钥的区别。不总是使用非硬化键(更有用)的原因是出于安全性考虑,后面更详细说明其原因。

父公钥→子私钥

不可能发生

密钥树结构

接下来,sim卡处理器103被配置成级联几个ckd结构来构建树。sim卡处理器103从一个root开始,主扩展密钥m。sim卡处理器103通过对i的几个值评估ckdpriv(m,i),得到多个1级派生节点。由于这些都是扩展密钥,所以也可以应用ckdpriv。

为了缩短符号,

sim卡处理器103写入ckdpriv(ckdpriv(m,3h),2),5)作为m/3h/2/5。等同于公钥,

sim卡处理器103写入ckdpub(ckdpub(m,3),2),5)作为m/3/2/5。

这导致以下身份:

.n(m/a/b/c)=n(m/a/b)/c=n(m/a)/b/c=n(m)/a/b/c=m/a/b/c.

·n(m/ah/b/c)=n(m/ah/b)/c=n(m/ah)/b/c.

然而,n(m/ah)不能被重写为n(m)/ah,因为后者是不可能的。树中的每个叶节点对应于实际密钥,而内部节点对应于从它们分散的密钥的集合。叶节点的链码被忽略,只有它们嵌入的私钥或公钥是相关的。由于这种结构,知道扩展私钥允许重构所有后代私钥和公钥,并且知道扩展公钥允许重建所有后代非硬化公钥。

密钥标识符

扩展密钥可以由序列化的ecsda公钥k的hash160(sha256之后的ripemd160)标识,忽略链码。

标识符的前32位称为密钥指纹。

序列化格式

sim卡处理器103被配置成将扩展的公钥和私钥如下序列化:

·4字节:版本字节(mainnet:0x0488b21epublic,0x0488ade4private;testnet:0x043587cfpublic,0x04358394private)

·1字节:深度:主节点为0x00,级别1派生密钥为0x01。

·4字节:父密钥的指纹(如果主密钥为0x00000000)

·4字节:子数字。这是对于i在xi=xpar/i中的ser32(i),其中xi是键序列化。(如果主密钥为0x00000000)

·32字节:链码

·33字节:公钥或私钥数据(公钥的serp(k),私钥的0x00||ser256(k))

sim卡处理器103可以通过首先添加32个校验和位(从双sha-256校验和派生),然后转换为base58表示,可以像base58中的其他bitcoin数据一样对78字节结构进行编码。这会导致最多112个字符的base58编码的字符串。由于可选择版本字节,base58表示将以“net”,“net”,“tpv”或“tpub”为起始的“xprv”或“xpub”开头。

请注意,父指纹仅作为在软件中检测父节点和子节点的快速方式,软件必须愿意处理冲突。在内部,可以使用完整的160位标识符。

导入序列化扩展公钥时,实现必须验证公钥数据中的x坐标是否对应于曲线上的一个点。如果不是,扩展的公钥是无效的。

主密钥生成

可能的扩展密钥对的总数几乎为2^512,但生成的密钥只有256位长,在安全性方面提供约一半的密钥。因此,主密钥不是直接生成,而是从潜在的短种子值生成。

.从(p)rng生成所选长度(128到512位;建议256位)的种子字节序列s。

.计算i=hmac-sha512(key=“bitcoinseed”,data=s)

.将i分为两个32字节序列,il和ir。

.使用parse256(il)作为主密钥,ir作为主链码。

如果il为0或≥n,则主密钥无效。

通过如上的处理,sim卡处理器103从单个种子导出密钥对树,即构建了关建树及其节点。接下来,详细描述sim卡处理器103在这样的树状结构的基础上构建hd钱包结构的处理。

缺省的钱包结构

hd钱包被组织为几个“帐户”。帐号已编号,默认帐号(“”)为数字0。数字货币管理程序203不需要支持多个帐户-如果不是,则只使用默认帐户。

每个帐户由两个密钥链组成:内部和外部链。外部密钥链用于生成新的公共地址,而内部密钥链用于所有其他操作(更改地址,生成地址…,任何不需要传达的内容)。不支持单独的密钥链的数字货币管理程序203应该使用外部密钥链中的一个。

m/ih/0/k对应于从主站m导出的hd钱包的帐号i的外部链的第k个密钥对。

m/ih/1/k对应于从主站m导出的hd钱包的帐号i的内部链的第k个密钥。

通过如上所述的处理构建出hd钱包结构。下面,接着描述这种hd钱包结构在各种应用场景下的操作示例。

示例

全钱包分享:m

在两个系统需要访问单个共享钱包的情况下,并且都需要能够执行花费的情况下,需要共享主专用扩展密钥。节点可以保留为外部链条缓存的n个预先密钥池,以监听收到的付款。内部链条的前瞻性可能非常小,因为这里不可能有任何差距。对于第一个未使用的帐户的链,额外的预览可能是活动的-在使用时触发新帐户的创建。请注意,帐户的名称仍然需要手动输入,无法通过块链同步。

审核:n(m/*)

如果审核员需要完全访问传入和传出付款列表,则可以共享所有帐户公用扩展密钥。这将允许审核员在所有帐户中查看和从钱包中获得的所有交易,但不能查看单个保密密钥。

每办公室余额:m/ih

当一家企业有几个独立的办公室时,他们都可以使用从一个主人那里获得的钱包。这将允许总部维持一个超级钱包,看到所有办公室的所有进出口交易,甚至允许在办公室之间移动资金。

经常性企业对企业交易:n(m/ih/0)

如果两个业务伙伴经常转账,可以将特定账户的外部链(m/ih/0)的扩展公钥用作“超级地址”,允许频繁的交易(不容易)相关联,但不需要为每个付款请求一个新的地址。这种机制也可以被矿井运营商用作可变支付地址。

不安全的收款人:n(m/ih/0)

当使用不安全的网络服务器来运行电子商务网站时,需要知道用于接收付款的公共地址。网络服务器只需要知道单个帐户的外部链路的公共扩展密钥。这意味着有人非法获取对网络服务器的访问权限,最多可以看到所有收到的付款,但是无法窃取钱,不能(简单地)区分出去的交易,在存在交易的情况下也不能看到其他网络服务器收到的付款。

接下来,描述由sim卡处理器103构建的hd钱包的安全性。

通过采用这种钱包结构,除了期望ec公钥自己加密之外:

.给定公钥k,攻击者无法通过比解决ec离散对数问题(假定需要2128个组操作)更有效地方式找到相应的私钥。

预期安全属性有:

.给定一个子扩展私钥(ki,ci)和整数i,攻击者不能比hmac-sha512的2^256暴力更有效地方式找到父私钥kpar。

.给定具有不同ij的(索引,扩展私钥)元组(ij,(kij,cij))的任何数目(2≤n≤2^32-1),确定它们是否从公开父扩展私钥派生(即,是否存在一个(kpar,cpar),使得对于(0..n-1)中的每个j,ckdpriv((kpar,cpar),ij)=(kij,cij))不能比2^256复杂度hmac-sha512的更有效的完成。

需要注意的是,知道父扩展公钥加上从它分散的任何非硬化私钥相当于知道父扩展私钥(因此知道从其分散的每个私钥和公钥)。这意味着扩展公钥必须比常规公钥更仔细地对待。这也是硬化密钥存在的原因,为什么它们被用于树中的帐户级别。这样一来,专用(或更低)私钥的泄漏就不会危害主账号或其他账户。

如上所述的由sim卡处理器103构建出的hd钱包能够通过一个种子推导出很多密钥,种子能够推导出主密钥(masterkey),主密钥推导出子密钥(childrenkeys),子密钥推导出孙密钥(grandchildrenkeys),以此递推。因此,能够在不需知道私钥的前提下生成大量的公钥,特别适用于只负责收款的服务。

数字货币的交易需要密钥,在现有技术中,为了避免在每个交易之后进行备份的必要性,预定数量的(例如默认情况下为100个)密钥缓存在一个预留密钥池中。然而,这些钱包并不意图在多个系统上同时共享和使用。他们支持通过使用钱包加密功能隐藏他们的私钥并且不公开密码,但这样的“中性”钱包也失去了生成公钥的权力。

与此相比,如上所述的hd钱包不需要这种频繁的备份,椭圆曲线数学允许可以在不显示私钥的情况下计算公钥的方案。这允许例如网上商店让网络服务器为每个订单或每个客户生成新的地址(公钥哈希),而不使网络服务器访问相应的私钥(花费收到的资金需要私钥)。

在现有技术的确定性钱包由一个密钥对“链”组成。只有一条链就意味着共享一个钱包是全无差异的。然而,在某些情况下,只有一些(公开)密钥才能被共享和可恢复。在网上商店的例子中,网络服务器不需要访问商家钱包的所有公钥;仅用于接收客户付款的那些地址,而不是例如商家花钱产生的更改地址。与此相比,如上所述的hd钱包允许通过支持从单个根导出的多个密钥对链来进行这种选择性共享。

此外,由于区块链技术去中心化的特点,在风险管控上存在很大的问题。几乎所有的交易所或者其他利用数字货币做一些金融服务的产品,都有存在不同等级的kyc(knowyourcustomer)认证。这种认证本身存在两个问题:一是增加系统的运营成本;二是很难杜绝用户的各种造假的行为。与此不同,在本发明的一个实施方式中,利用电信实名制的优势,直接采用手机号作为账户管理,将用户的钱包地址信息存储到sim卡的服务提供商的sim卡管理服务器中,做相应的风险管控,由此既降低了系统的运营成本,又增加了安全性。

助记词

在如上所述的hd钱包结构中,种子(seed)是一个随机16字节的16进制的字符串(这仅仅是一个例子,字节数不限于16字节,字符串也不限于16进制),如果能够适用有意义的单词作为助记码/助记码无疑会降低种子备份及恢复钱包难度,为了解决这种助记码的需求,sim卡处理器103还可以被配置成通过随机生成预定个容易记住的单词(例如12~24个),单词序列函数(例如pbkdf2与hmac-sha512函数)创建出随机种子作为bip32的种子,这样就方便了记忆和书写。助记词例如为:roserocketinvestrealrefusemarginfestivaldangerangerborderidlebrown。

接下来以16字节的16进制字符串的种子为例说明用助记码表示种子(seed)的处理。

这需要两个步骤:1)生成助记码;2)将生成的助记码转换为种子(seed)

具体而言,首先,sim卡处理器103生成一个长度为128~256位(bits)的随机序列(熵)。然后,sim卡处理器103取熵哈希后的前n位作为校验和(n=熵长度/32),就可以创造一个随机序列的校验和。接下,sim卡处理器103将校验和添加在随机序列(熵)的末尾,然后将序列化分为包含11位的不同部分。之后,sim卡处理器103将每个包含11位不分的值与一个已经预先定义2048个单词的字典作对应,生成的有顺序的单词组就是助记码。

在生成助记码后,需要将生成的助记码转换为种子。具体而言,为了从助记码中生成种子,例如sim卡处理器103可以被配置成使用pbkdf2函数,以一个助记码句子(例如以utf-8nfkd表示)为参数,使用"mnemonic"+密码作为盐(salt)(例如以utf-8nfkd表示)。迭代次数例如可以设置为2048次,hmac-sha512函数作为伪随机函数。此时,生成的密钥(种子)长度为例如512位(等于64字节)。例如,盐格式在用户没有提供密码时,为“mnemonic”,在用户提供的密码为xxxxxx时,为“mnemonicxxxxxx”。这个种子可以用于生成如上所述的hd钱包。

助记码的选择和助记码生成种子的方法是完全独立的。对助记码句子结构没有约束,因此,后述的数字货币管理程序203可以自由实现自己的单词列表或者助记码生成器,从而能够更加灵活地检测拼写错误或者应对其它需求。sim卡处理器103优选使用单词列表计算用于助记码句子的校验和,并且如果该校验和无效则将该情况发送给后述的终端机200的数字货币管理程序203发出警告。

通过如上所述的助记码,还可以提供合理的可否认性,因为每个密码短语都会生成有效的种子(因此也就是确定性的钱包),但只有正确的种子才能使所需的钱包可用。

多币种多账户的实现

在本发明的一个实施方式中,为了让同一个种子(seed)可以支持多币种,多账户,sim卡处理器103还可以被配置成在如上所述的树状结构中增加或定义表示币种或账户的层,即赋予各层特殊的意义。下面,示出一种例子,各层例如可以定义如下:

m/purpose'/coin_type'/account'/change/address_index

其中m是固定的,purpose'也是固定的,值为44(或者0x8000002c)。

coin_type'表示币种,例如,0表示比特币,1表示比特币测试链,60表示以太坊等。

account'表示该币的账户索引,从0开始。

change常量0表示用于外部链,常量1表示用于内部链(也称为更改地址)。外部链用于在钱包外可见的地址(例如,用于接收付款)。内部链用于在钱包外部不可见的地址,用于返回交易变更(所以一般使用0)。

address_index表示地址索引,从0开始,表示生成第几个地址。优选每个account'下的address_index不要超过20。

通过以上描述的处理,本发明的一个实施方式的sim卡100能够创建支持多币种、多账户的数字货币钱包。如上所述的构建hd钱包的处理既可以通过硬件方式实现,例如可以通过增加专有芯片的方式加强私钥存储的安全性,也可以通过软件算法的方式实现。通过如上方式实现的数字货币钱包例如仅通过软件开发工具包(sdk;softwaredevelopmentkit)将api(applicationprogramminginterface;应用程序编程接口)接口暴露给后述的数字货币管理程序103,从而保证安全性。另外,通过如上方式实现的数字货币钱包的种子、密钥等加密存储于数字货币信息存储单元101中。

接下来,对本发明的一个实施方式的终端机200进行详细说明。图3是表示本发明的一个实施方式的终端机200的架构和运行原理的架构图。

终端机200,包括:

终端机存储器201,存储有数字货币管理程序203;

终端机处理器202,用于执行数字货币管理程序203,

所述数字货币管理程序当被终端机处理器202执行时使终端机处理器202执行以下操作:

将钱包创建命令发送给sim卡100,使sim卡100基于数字货币协议生成包括私钥和公钥的数字货币的密钥对和钱包地址,从而创建数字货币钱包,和/或

将钱包管理命令发送给sim卡100,使sim卡100管理已创建的数字货币钱包。

终端机200例如可以是便携终端,例如可以为智能手机、平板电脑等。数字货币管理程序203被安装在终端机200中,并在终端机200的操作系统中执行。终端机200的操作系统例如可以为android系统或ios系统。该数字货币管理程序203例如可以通过sim卡驱动程序(未示出)访问sim卡100。

下面,结合前面描述的sim卡100,详细说明数字货币管理程序203进行的操作。

钱包的创建

当用户在第一次启动数字货币管理程序203时,数字货币管理程序203驱动sim卡100中的数字货币钱包创建功能,例如通过在上文描述的创建数字货币钱包的处理,创建出数字货币钱包。在某些实施方式中,创建出数字货币钱包时,可以生成助记码(例如为12或24个),并提示用户记录这些助记码,以备后续恢复钱包。sim卡处理器103例如可以被配置成当创建数字货币钱包时,创建助记码,并将该助记码发送到终端机200进行备份。数字货币管理程序103接收到由所述sim卡创建的助记码后,对该助记码进行备份。在某些实施方式中,当主私钥创建完成之后,数字货币管理程序203可以驱动sim卡100,由sim卡处理器103创建不同币种的钱包地址,方便进行多币种多地址的管理。

钱包的访问

当数字货币管理程序203请求访问所述sim卡100时,例如可以验证用户输入的pin码是否正确,若正确,则允许货币管理程序203.的访问,否则,禁止数字货币管理程序203的访问。例如,每次用户启动数字货币管理程序203,准备驱动硬件功能时,提示用户输入pin码。数字货币管理程序203通过终端机200的操作系统层的api调用sim卡驱动接口,将用户输入的pin码发送给sim卡100,sim卡100接收到用户输入的pin码后,由sim卡处理器103将该用户输入的pin码与预先存储在sim卡的存储单元中的pin码比对,将比对结果返回给终端机200的操作系统层,操作系统层再将比对结果返回给数字货币管理程序。若验证通过,则允许货币管理程序203.的访问,否则,禁止数字货币管理程序203的访问。

钱包的恢复

当sim卡100被更换为新的sim卡时,数字货币管理程序203向新的sim卡发送恢复数字货币钱包命令(属于一种管理命令),并将已备份好的原sim卡100中的数字货币钱包的助记码发送给新的sim卡或者提示用户输入原sim卡100中的数字货币钱包的助记码,并且用户输入助记码后,将该助记码发送给新的sim卡,使新的sim卡基于助记码计算出相应的密钥对和钱包地址,以恢复数字货币钱包。sim卡处理器103接收到恢复数字货币钱包命令时,从所述终端机的数字货币管理程序203.接收助记码,利用该助记码计算出对应的包括私钥和公钥的密钥对和钱包地址,将私钥存储到数字货币信息存储单元,以恢复数字货币钱包。具体而言,例如在用户更换sim卡后,之前备份下来的助记码被输入数字货币管理程序203的数字货币恢复模块(未示出),数字货币管理程序203将助记码通过api发送给sim卡处理器103,sim卡处理器103接收到助记码后,通过算法计算出种子(seed),并通过seed计算出主密钥(masterkey)及对应的密钥对和钱包地址,并将这些存储在新的sim卡的数字钱包信息存储单元中。

钱包的账户查询

当管理命令为账户查询命令时,数字货币管理程序203访问sim卡100查询数字货币地址,并将数字货币地址及类型发送给管理数字货币资产的服务器,由该服务器从区块链上查询账户信息,并将账户信息(例如余额等)发送给数字货币管理程序203。

交易功能

当管理命令为转账命令时,数字货币管理程序203将转账命令与转账信息一同发送给sim卡100,当sim卡100接收到来自数字货币管理程序203的转账命令后,利用私钥对转账信息进行签名,获得签名信息,并将该签名信息发送给数字货币管理程序203。数字货币管理程序203接收到来自sim卡100的签名信息后,将该签名信息发送给区块链节点(管理数字货币资产的服务器),由该服务器发起转账操作,完成整个转账的流程后,将转账结果送回数字货币管理程序203。

如前所述,由于本发明的一个实施方式的数字钱包能够在不需知道私钥的前提下生成大量的公钥,因此,在某些实施方式中,当进行收款收款时,数字货币管理程序203例如可以直接将收款的钱包地址信息和币种信息生成支付码(例如条形码、二维码(包括qr码)),呈现给支付方。支付方通过扫描支付码的方式进行付款。管理数字货币资产的服务器接收到收款信息后,将收款信息发送给数字货币管理程序203,以供查询。

资产管理功能

在数字资产领域,本发明的数字货币钱包产品不像传统的支付宝或者微信等支持交易的软件,通过找b端收费来解决盈利的问题。转账费用是直接支付矿工,因此甚至可以实现0费用。从目前的发展来看,本发明的数字货币钱包至少可以提供以下几种服务:

c2c交易

创建一个平台,用户可以在平台上挂出买入和卖出的数字货币订单。如果用户需要购买数字货币,可以上平台找到卖出数字货币的卖家,买家将人民币或者其它法定货币支付到卖家指定的账户,卖家收到法定货币后,将数字货币转账到买家指定的地址,平台提供双方交易的渠道和保证交易的安全性,并向卖家收取一定的手续费作为收益。平台实现方式其实就是一个c2c电子商务交易平台,仅仅是商品由实体商品换为了数字货币。

数字货币基金

通过发行类似于余额宝,或者传统基金的模式,募集用户的数字货币,进行投资,承诺一定的年化收益。让用户的资产能够更好地流动起来,获取一定的收益。

交易所

数字货币交易所,类似于股票交易所,提供买入和卖出数字货币的功能,交易所可以从每一笔交易中收取交易费用。交易所目前主要分两种,去中心化交易所和中心化交易所。

中心化交易所:

中心化交易所是一个平台或者应用,可以允许交易者直接将数字货币存进交易所,而交易所则作为钱包保管资金直至订单生成。交易所将它们的数据保存在链下,这意味着这些交易并没有被区块链记录。一旦订单生成,交易所将对买卖指令进行实时匹配,所有数据均在交易所的服务器上进行。

去中心化交易所:

在去中心化交易所里,用户将对他们的资金拥有控制权。一个去中心化交易所的目标是要在区块链上直接建立一个「个人对个人」的市场。资金并不是被输送到一家由单一平台或者机构所有的交易所或钱包。订单和交易行为都在区块链上发生,每一笔交易都可以在链上查询。

在交易所中交易可以直接收取交易费用。可接入三方交易平台,也可自行研发交易锁的功能。

尽管已经描述和说明了本发明的特定示例性实施方式,但是本领域技术人员应该理解的是,在不脱离如所附权利要求中公开的本发明的技术思想的情况下,可以进行各种替换和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1