全链社区OCC主链原生钱包即将上线

全链社区OCC主链原生钱包即将上线

- in 区块链

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

OCC原生钱包Keystore存储方案

Keystore是一种介于去中心化身份鉴别方案与中心化身份鉴别方案之间的一种方案。由于不是中心化的,所有可以防止服务器滥用用户权力的问题,但是同时它只能是离线的,所以可能会遭受到离线暴力攻击。

通常来说,一个功能完整的Keystore存储方案必须要包含如下几个模块或算法:• 随机数发生器模块;• 基于口令(或者基于其他身份信息的)的密钥生成算法;• 认证加密方案;1. 随机数生成算法Keystore是私钥存储的一种解决方案,需要一种产生私钥的方法。通常为了私钥之间不产生冲突以及不被暴力破解,私钥的产生都采取随机产生方式,这也是封闭系统产生密钥(私钥、对称密钥)的主要方式。

软件系统不能产生真的随机数,需要依赖于更底层的操作系统或者API中的随机数发生器。OCC钱包Keystore系统基于Go语言的随机数发生器接口,关于该接口的相关信息,可参考此处。2. 基于口令的密钥生成算法OCC钱包的基于口令的对称密钥生成算法采用了RFC 5869标准中的HKDF算法(HMAC-based Extract-and-Expand Key Derivation Function)。此标准广泛的应用于例如IKEv2,PANA,EAP-AKA等协议中,是一种基于HMAC的密钥生成算法。该算法需要产生64byte(512bit)的随机数作为盐值(salt)共同参与对称密钥导出运算。盐值记录到最终的Keystore文件中,一边恢复该对称密钥时使用。如果用其他的身份信息来代替口令,如指纹、面部等身份信息等,可以得到基于其他身份信息的密钥生成算法。前提是需要有此类专业的设备。例如具有采集指纹信息的硬件钱包,可以采用基于指纹的方案。

认证加密方案如上所说,Keystore文件将加密存储用户的私钥,但是仅仅加密存储私钥并不够。例如用户输入错误的口令,可能会恢复出一个私钥,但是这个私钥已经不是真正的拥有资产的那个私钥了,钱包并不知道恢复的私钥是否正确。这是因为错误的口令在恢复私钥的过程中,由于解密算法并没有识别出口令的正确性而导致的(这是因为仅有的加密功能是不具备识别功能的)。

    OCC在项目本身源码层面,不提供通过口令产生私钥的接口,杜绝使用口令直接产生私钥,并且不足够的熵将无法产生私钥。同时OCC将提示第三方开发者,坚决不能采用口令直接产生私钥的方法。从而保护终端用户资产的安全。