最近在做可信区块链测试时,想起来了之前一个一直没有解决的问题,正好趁着这个时间,做了一下解决方案;主要的问题时,我们在做BaaS的时候,用户的私钥一直没有找到比较好的存储方式,最近根据以太坊的钱包和私钥管理的方案,总结了一个fabric的私钥管理方案;
方案一:keystore
我将用户从ca申请的私钥,放入keystore中,然后将keystore保存到本地;这样用户需要使用私钥的时候只需要输入密码就可以获取到自己的私钥;而且我们平台软件只需报保存一个keystore文件即可,无需保存用户的密码;
优点:只需要保存keystore文件
缺点:如果交易频繁,不知道会不会有性能瓶颈?其实这部分和kdf的参数有关系;但是参数如果配置过弱,则容易破解;如果keystore文件丢失则私钥丢失,如果密码忘记了,私钥丢失,都需要从ca重新获取;
方案二:bip39+keystore
通过助记词的方式,将私钥转化为助记词,然后将私钥存储到keystore中;这样做的目的是即使keysotre或者密码丢失,我们可以通过助记词重新恢复,稍微弥补了一下缺陷;
方案二:bip39+bip32+bip44+keystore
使用HD的模型替换fabric-ca的模型,但是私钥的格式都不一样的,这样相当于用一个助记词完全控制了整个组织,因为上级的私钥完全可以衍生出下级的私钥,相当于可以控制下级的账户;如果上级的私钥丢失,则整个下级部门都会受到影响;