前情介绍
希望一个产品能为整个业务中的所有用户提供一个平台,在该平台上可以进行一些业务不紧相关的一些上链、查链操作。该平台主要是作为一个服务平台使用,希望能够最轻量的放置在浏览器客户端一侧,主要处理逻辑在后端。这是就出现了一个问题,对于使用这个服务平台的用户是否每一个用户都需要提供一份fabric-ca的证书。
基于用户安全你的角度考虑,用户的证书、私钥最好存放在用户本地。
解决方案参考
解决方案参考:
以下的方案都是通过和kkbao13的沟通分析,同时由于我们经验上的不足可能并没有考虑出完美的解决方案。
- 每次在交易的时候传输私钥,这需要对服务平台有足够的信任,不会利用这临时数据。牺牲了一定的安全性。
- 通过U-key的方式存储私钥,在每次提案的时候调用本地驱动的方法进行加密,再将提案传输给后端服务进行区块链上链操作。(在Fabric-sdk-java中自己有一套签名的逻辑,需要修改源码,对提案的签名进行修改)。这一过程需要在服务端将生成的提案传输的前端,有前端+驱动来对提案进行签名,再将提案传输给后端,由后端执行上链过程。
- 服务平台作为一个区块链网络的一个成员,所有用户都用这个身份进行区块链的上链操作。同时需要通过Ukey、U盾或者其它确认可信身份的技术保证,该成员确实是平台的某个身份。通过该层认证之后,再通过平台的公共身份进行对区块链进行上链操作。
结论
从上述的分析中,我们得出了一个区块链应用可能需要的一种场景——可以通过外置的设备对提案进行签名,每个注册的成员申请一个U盾,可以通过这个U盾的证书、私钥对需要提交的提案进行签名,进而进行上链操作。而目前Hyperledger Fabric没有提供这种接口,国内的区块链技术可以借鉴这一看法。