时间:2023-08-09|浏览:237
OCC原生钱包采用了Keystore存储方案。Keystore是一种介于去中心化身份鉴别方案与中心化身份鉴别方案之间的解决方案。它不是中心化的,因此可以防止服务器滥用用户权力的问题。但同时,它只能是离线的,所以可能会遭受离线暴力攻击。
通常,一个完整的Keystore存储方案必须包含以下几个模块或算法:随机数发生器模块、基于口令(或其他身份信息)的密钥生成算法、认证加密方案。
1. 随机数生成算法:Keystore是私钥存储的解决方案,需要一种产生私钥的方法。通常为了避免私钥之间冲突和避免被暴力破解,私钥的生成采用随机方式。这也是封闭系统产生密钥(私钥、对称密钥)的主要方式。软件系统不能产生真正的随机数,需要依赖底层操作系统或API中的随机数发生器。OCC钱包Keystore系统基于Go语言的随机数发生器接口。
2. 基于口令的密钥生成算法:OCC钱包采用了RFC5869标准中的HKDF算法(HMAC-based Extract-and-Expand Key Derivation Function)作为基于口令的对称密钥生成算法。该标准广泛应用于IKEv2、PANA、EAP-AKA等协议中,是一种基于HMAC的密钥生成算法。该算法需要生成64字节(512位)的随机数作为盐值(salt)来参与对称密钥导出运算。盐值将记录在最终的Keystore文件中,以便在恢复对称密钥时使用。如果使用其他身份信息来代替口令,如指纹、面部等身份信息,则可以得到基于其他身份信息的密钥生成算法,前提是需要具备相应的专业设备,如采集指纹信息的硬件钱包可以采用基于指纹的方案。
3. 认证加密方案:Keystore文件仅对用户的私钥进行加密存储是不够的。例如,用户输入错误的口令可能会恢复出一个私钥,但这个私钥并不是真正拥有资产的私钥,钱包并不知道恢复的私钥是否正确。这是因为在私钥恢复过程中,由于解密算法没有识别口令正确性而导致的(加密功能本身并不具备识别功能)。为了保证安全,OCC在项目源码层面不提供通过口令产生私钥的接口,并且要求第三方开发者坚决不使用这种方法。这样可以保护终端用户资产的安全。
用戶喜愛的交易所
已有账号登陆后会弹出下载