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 人参与讨论)

相关推荐

随机数与区块链

随机数与区块链在区块链中,由于较难从物理世界中获取随机噪声,生成随机数的难度更大。引入经济约束,可以避免参与方通过拒绝揭示的方式影响随机数结果,对恶意的参与方进行惩罚。

俄罗斯政府禁止匿名钱包储蓄

俄罗斯政府禁止匿名钱包储蓄

立法者认为,俄罗斯政府的意图是遏制非法金融活动。近日,俄罗斯议会通过了一项加密法案,为该行业制定了一般准则。

首个 Solana 加密钱包 SolFlare 上线,用户可轻松抵押代币

律动 Blockbeats 消息,8 月 3 日,随着 Solana 网络变得越来越成熟,代币持有者的需求也在不断增长,在这样的背景下,专门为 Solana 开发的加密钱包 SolFlare 正式推出,它是一款非托管型加密钱包,能够链接到 Solana 区块链并管理代币。

开源区块链钱包CASHBOX技术编译教程(一)

1. 全局代理,必要条件 2. 环境准备(window) Android studio 链接:http://www.android-studio.org/ Flutter 链接:https://flutterchina.club/get-started/install/ Rust 链接:https://www.rust-lang.org/zh-CN/tools/install Java 链接:ht

加密硬件钱包Ledger数据库曾遭入侵,约100万名用户邮件信息被泄露

律动BlockBeats 消息,加密货币硬件钱包 Ledger 7 月 29 日发文称该公司的营销和电子商务数据库在 6 月底遭到了数据入侵。据 Ledger 称,受影响的客户已被通知。

Rainbow 钱包使用指南——红包

今年 1 月 22 日,Rainbow 钱包正式上线了常规功能并一直稳定运行。在任何时期,用户都可以在 Rainbow 钱包中快速创建并发送红包,也可以收取其他用户发放的红包。还没有下载 Rainbow 钱包的小伙伴可以扫描下方二维码下载体验:

我应该把币放在哪里?钱包,还是交易所?

把币存放在交易所中,资产安全已经不由你决定了,而是受制于交易所的价值观与风控实力。相较于把币存在交易所,钱包帮助你真正实现了私有财产神圣不可侵犯。

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

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