DAEX主链原生钱包介绍

区块链资讯DAEX2019-12-11 13:16:02  阅读 -评论 0

数字签名作为去中心化的身份鉴别方案在区块链世界里大获成功,广为使用的基于椭圆曲线的数字签名方案,尤以基于Secp256k1、Ed25519等曲线为基础算术运算的签名算法最为常见。但是无论是哪种方案的使用,正确的私钥才是操作地址或账户的唯一方法。这也是“私钥即资产”这一概念被区块链用户信奉的原因之一。

DAEX主链原生钱包介绍

私钥是密码学或者说是数学概念,在不同的空间的展现形式各不相同,例如人类可读的世界里,常被编码成“助记词”的形式,并且这种做法已经被区块链社区所标准化,形成了诸如BIP39的标准助记词列表。在数字世界中,私钥的存储形式也可以将助记词自己数字化存储。但是由于在数字世界中,容易被木马或者黑客窥探到,所以不能明码的存储助记词(因为编码规则公开,这样等同于明文存储私钥),通常采用keystore的方式来存储私钥。
DEAX原生钱包Keystore存储方案
Keystore是一种介于去中心化身份鉴别方案与中心化身份鉴别方案之间的一种方案。由于不是中心化的,所有可以防止服务器滥用用户权力的问题,但是同时它只能是离线的,所以可能会遭受到离线暴力攻击。
通常来说,一个功能完整的Keystore存储方案必须要包含如下几个模块或算法:
•   随机数发生器模块;
•   基于口令(或者基于其他身份信息的)的密钥生成算法;
•   认证加密方案;
1. 随机数生成算法
Keystore是私钥存储的一种解决方案,需要一种产生私钥的方法。通常为了私钥之间不产生冲突以及不被暴力破解,私钥的产生都采取随机产生方式,这也是封闭系统产生密钥(私钥、对称密钥)的主要方式。
软件系统不能产生真的随机数,需要依赖于更底层的操作系统或者API中的随机数发生器。DAEX钱包Keystore系统基于Go语言的随机数发生器接口,关于该接口的相关信息,可参考此处。
2. 基于口令的密钥生成算法
Keystore文件通常运用对称加密方案来存储私钥(或者私钥列表),对称加密方案需要对称密钥(即使某些Keystore方案运用非对称加密方案,但是也需要公钥加密以及私钥来解密),此对称密钥需要用户容易记忆(如若不然,回到了原来的私钥保存和记忆的问题)。最常见的易于记忆的方式即用户口令。但是用户口令空间相对来说小很多,并不是一种产生直接的对称密钥的方式。通常的解决方法是利用基于口令的密钥生成算法,来产生对称密钥。
DAEX钱包的基于口令的对称密钥生成算法采用了RFC 5869标准中的HKDF算法(HMAC-based Extract-and-Expand Key Derivation Function)。此标准广泛的应用于例如IKEv2,PANA,EAP-AKA等协议中,是一种基于HMAC的密钥生成算法。该算法需要产生64byte(512bit)的随机数作为盐值(salt)共同参与对称密钥导出运算。盐值记录到最终的Keystore文件中,一边恢复该对称密钥时使用。
如果用其他的身份信息来代替口令,如指纹、面部等身份信息等,可以得到基于其他身份信息的密钥生成算法。前提是需要有此类专业的设备。例如具有采集指纹信息的硬件钱包,可以采用基于指纹的方案。
DAEX主链原生钱包介绍

3. 认证加密方案
如上所说,Keystore文件将加密存储用户的私钥,但是仅仅加密存储私钥并不够。例如用户输入错误的口令,可能会恢复出一个私钥,但是这个私钥已经不是真正的拥有资产的那个私钥了,钱包并不知道恢复的私钥是否正确。这是因为错误的口令在恢复私钥的过程中,由于解密算法并没有识别出口令的正确性而导致的(这是因为仅有的加密功能是不具备识别功能的)。
因此,Keystore需要鉴别功能,用于甄别输入口令的正确性。将鉴别与加密一同合成一个模块,用认证加密方案来解决。
DAEX钱包运用AES-256-GCM方案来实现密钥的认证加密存储。AES-256-GCM使用AES作为基础的加密模块,密钥长度与分组长度均为256bit,对于不足或者超出256bit的明文,采用标准的填充方式,填充值256bit的整数倍。用AES-256算法对一系列的递增的计数器(或称为nonce)的值进行运算,并将运算结果与明文分组进行异或运算得到一系列的加密输出结果。AES-256-GCM的鉴别部分采用基于伽罗华域乘法(一种特殊的乘法)。将以上得出的一系列加密输出的,依次进行伽罗华域乘法,最终得到用于鉴别的数据。
DAEX主链原生钱包介绍

写在最后
正如前面所述,现在绝大多数区块链项目的原生钱包都使用Keystore文件来加密存储用户的私钥数据,用户“口令+Keystore“才能真正拿到私钥。深层次剖析是,Keystore文件并且仅有Keystore文件存储了用户私钥数据,而且是加密存储,用户口令只是打开Keystore的“钥匙”。理论上用户口令与真正私钥是没有任何关系的。但是遗憾的是,笔者在做开发前的调研时发现,在部分项目中,存在用用户口令直接产生最终私钥的方法,或是存在于项目源代码中,或是存在于项目的SDK中、或是存在于部分应用中。运用这个漏洞,笔者真的搜索到了一些地址,成功爆破其私钥。这是项目体系中一个极大的漏洞。因为口令相对于私钥的空间小很多,很容易通过暴力破解口令来破解。
DAEX在项目本身源码层面,不提供通过口令产生私钥的接口,杜绝使用口令直接产生私钥,并且不足够的熵将无法产生私钥。同时DAEX将提示第三方开发者,坚决不能采用口令直接产生私钥的方法。从而保护终端用户资产的安全。

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

慢雾:比特币钱包 Electrum 「更新钓鱼」盗币行为在继续

疯狂时,恶意的 ElectrumX 服务器占全部的 71% 之多,据不完全统计,过去一年多,这种钓鱼攻击已经盗取了数百枚比特币。

混合区块链项目 Kadena 正式启动,预计 3 月底前完成 Cosmos 钱包集成

此外,Kadena 计划将其钱包 Chainweaver 与 Cosmos Network 进行集成,从而允许不同的区块链进行交互,该集成预计于 3 月底前完成。

重要|关于NULS主网钱包即将升级至V2.4.0的公告

重要|关于NULS主网钱包即将升级至V2.4.0的公告

亲爱的NULS社区成员:大家好,我们预计在新加坡时间1月20日发布一个新的NULS主网钱包升级版本V2.4.0,该版本修复了一些已知的BUG,本次升级完成后,POCM平台将可恢复使用。

OKEX钱包中的助记词是什么?

OKEX钱包中的助记词是什么?

用户:"钱包中的助记词是什么意思呢?助记词有什么用呢?"有问题不要急,客服小姐姐来帮您。什么是助记词?助记词是明文私钥的另一种表现形式,最早是由 BIP39 提案提出。其目的是为了帮助用户记忆复杂的私钥,助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库,其生成顺序也是按照一定算法而来。(OKEX的钱包采用的是12个英文单词构成的助记词)助记词有什么用呢?助记词是您钱包安全的

以太坊开源软件众筹平台Gitcoin强制用户使用MetaMask钱包,V神发推公开反对

以太坊开源软件众筹平台Gitcoin强制用户使用MetaMask钱包,V神发推公开反对

区块律动 BlockBeats 消息,今日推特网友「CharlesSWE」发文不满以太坊链上开源软件众筹平台Gitcoin「强制」用户使用 MetaMask 钱包,该网友表示 Opera 都支持以太坊 Dapps 并且兼容 Web 3 的供应商了,实在没必要这么做。

助记词方案的钱包已不适用于今天的市场环境

助记词方案的钱包已不适用于今天的市场环境

我们认为目前比特币的钱包问题在于没有完美解决安全性和易用性之间的矛盾。我们对比一下目前几种钱包的方案:单私钥钱包典型的比特币钱包,用来控制钱包资金的是 12 个单词,也就是由助记词来保管资金。

比特派旗下冷钱包品牌 BitHD 宣布与贝宝金融达成战略合作伙伴关系

比特派旗下冷钱包品牌 BitHD 宣布与贝宝金融达成战略合作伙伴关系,贝宝将加入「比特护盾多重签名合作伙伴计划」。BitHD 团队将为贝宝提供全方位的定制化钱包安全服务,包括基于 ERC20 的多重签名解决方案。

重要|关于NULS主网钱包客户端升级至V2.2.0版本的公告

重要|关于NULS主网钱包客户端升级至V2.2.0版本的公告

摘要:重要版本更新。 致NULS社区成员: 2019/12/04  14:30PM(GMT+8),我们已经在NULS主网发布了V2.2.0版本钱包客户端,本次版本新增/修改功能如下: 优化共识节点间的交易广播和连接策略,加强网络稳定性;修复部分BUG,提升主网性能。 本次升级为强制升级,将在80%共识节点全部升级到最新版本,并继续产生10000个

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑