微众银行私钥管理:区块链世界的“门禁卡”

区块链历经10余年的发展,基础技术框架逐渐完善,链上承载的业务越来越丰富,参与方越来越多。多方协作能否顺畅进行、业务摩擦能否得到有效解决、既往治理策略和实践能否满足日后高速发展的需求……行业关注的重点逐步聚焦到这些更具挑战性的难题上。

2021年1月,微众银行区块链在多年技术研究和应用实践的基础上,重磅发布了《面向区块链的多方协作治理框架》白皮书,即MCGF(Multilateral Collaborative Governance Framework)。作为区块链治理的参考架构,MCGF全面覆盖区块链治理的设计规范、参与角色、核心系统架构、功能流程及应用场景等领域。

区块链多方协作治理组件(WeBankBlockchain-Governance)MCGF框架的实做基础和原子性构件,可复用、可定制,由私钥管理组件(Governance-Key)、账户治理组件(Governance-Account)、权限治理组件(Governance-Authority)、证书管理组件(Governance-Cert)等子组件构成。它们嵌入和运行在整个MCGF大框架的各部分,宛如高速行驶的汽车上的车轮、齿轮、传动组、传感器,协同助力构建治理框架和提升开发效率。

我们通过系列文章,抽丝剥茧地解析每一个子组件的关键特性和使用方式。本篇文章是区块链多方协作治理组件系列文章的第三篇,介绍私钥管理组件(Governance-Key),欢迎大家积极体验并将使用诉求或优化建议反馈给我们。

  私钥管理的必要性

随着区块链技术的普及,越来越多的企业开始在区块链上开展业务,而要接入区块链,就离不开私钥。时至今日,尽管私钥的概念已被广为人知,但仍然存在一些使用上的痛点。比如:

  • 怎样生成一个密钥对?

  • 密钥生成是否可以兼容各标准,包括国密、助记词、HD派生?

  • 如何对私钥进行安全备份?

  • 有没有私钥的可视化工具?

  • 有没有私钥的企业级托管方法?

  • 拥有密钥后如何操作数据?

……

针对上述问题,微众银行区块链在多方协作治理组件中推出私钥管理子组件WebankBlockchain-Governance-Key,覆盖用户的私钥使用需求。就功能而言,包括私钥生成、私钥备份、私钥托管、私钥使用,覆盖了私钥的全生命周期;就协议而言,支持助记词生成、Keystore备份等多种协议;就场景而言,既支持个人开发者使用私钥,也支持企业级开发者使用该组件进行私钥托管,适合B2B2C场景等。

  功能

WebankBlockchain-Governance-Key整体功能可拆分为三块,如下图所示:

 

在私钥颁发功能中,支持经典的随机数生成方式,并适配了ecc(secp256k1)曲线和国密曲线;还支持助记词生成,方便用户表达、记忆自己的私钥;也支持密钥派生方式,兼容BIP-32和BIP-44,方便用户做到一密钥多用。用户可以将私钥加密保存,支持keystore、pkcs12、pem格式,也支持通过shamir方式进行门限分片。

在私钥管理功能中,加密后的私钥会被托管保存到文件或数据库中,通常被用于企业托管用户私钥的场景。此外,还支持双库存储模式,在该模式下加密私钥和加密口令被分别存储到不同数据源中,这样即便遭受攻击,也不至于出现私钥明文被泄露的情况,提高了安全系数。

在私钥使用功能中,包括了私钥签名、验签、明文加密、密文解密四项功能,用户可以根据实际需求使用。

  特性

覆盖全生命周期

WebankBlockchain-Governance-Key为了能够让用户方便地使用私钥,提供了私钥生成、私钥备份、私钥托管、私钥使用等一系列功能,覆盖了整个私钥的生命周期,旨在尽可能满足使用者的各项需求。

适配多种主流协议

无论是私钥生成还是备份等,WebankBlockchain-Governance-Key均提供了多种标准协议,便于用户使用。例如,私钥生成中,对于助记词的支持源于BIP-39协议,对私钥派生的支持则适配了BIP-32和BIP-44协议;就私钥备份而言,既支持FISCO BCOS常用的pkcs12和pem格式,也支持keystore标准,同时还支持分片保管。通过适配多种协议,尽量满足用户的密钥需求。

面向个人和企业

对于私钥的使用者,可分为两类:个人使用者和企业使用者。对于个人使用者而言,主要需求是私钥的生成、备份、签名等。对于企业级使用者,多见于B2B2C场景,主要是托管C端用户私钥。对于个人级开发者,WebankBlockchain-Governance-Key提供了相关功能,还提供了一个可视化界面;对于企业级开发者,提供了私钥托管功能,还包括了双库存储模式等。

可视化使用

上述各项私钥的功能,在对应的sdk中,用户可以通过sdk方式接入;此外,WebankBlockchain-Governance-Key还提供了一个可视化界面,用户不需要任何配置就可以启动该界面,并体验私钥的生成、备份等基本功能,期望满足用户的日常需求。

国密支持

WebankBlockchain-Governance-Key对私钥的全生命周期做了国密化适配。首先,私钥的生成曲线支持国密曲线;此外,支持备份国密私钥,无论是keystore还是pem、p12均可支持;最后,对于私钥的使用,支持国密私钥的签名验签、加解密等。

  场景

场景一:个人使用

下图是个人使用私钥的示意图:

 

首先用户可以通过助记词等方式生成私钥;

接下来,用户需要对私钥备份。除了将助记词抄到纸上等方式,还支持将它导出到keystore,pkcs12等文件中;此外,还允许将私钥分片,只有当凑齐指定数目的碎片,才可以还原出完整私钥。

最后,对于不同的使用场景,用户可以根据不同的场景确定性地派生出子私钥,这样一方面可以降低根私钥泄露的风险,另一方面还可以提高私钥保存的简便程度,避免为不同的场景去维护不同的私钥。

场景二:企业级使用

企业级场景中,多见于B2B2C模式,在该模式中,企业会托管C端用户的私钥。

以下图场景为例,企业生成用户生的私钥。接下来,企业会将该用户私钥进行加密备份,备份后的密文会被保存到数据库中。对于该密文的加密口令,会被保存到另一个数据库中,这样降低了数据库被攻击,造成明文泄露风险。

 

  快速体验

Governance-Key包含两种使用模式:sdk模式和可视化界面模式。这一节介绍可视化模式,该模式包含私钥的主要使用功能,包括私钥生成、备份、格式转换等。

源码下载

通过git下载源码。

github下载:

git clone https://github.com/WeBankBlockchain/Governance-Key.git

如果因网络等原因无法下载,可以使用gitee地址:

git clone https://gitee.com/WeBankBlockchain/Governance-Key.git

编译源码

进入相关目录,并编译界面:

cd Governance-Key
cd key-core-web
gradle bootJar

启动界面

编译完成后,启动界面:

cd dist
java jar key-core-web.jar

启动成功后,会自动弹出一个可视化界面,如下图所示。如果未自动弹出,用户也可以访问该端口:

http://localhost:8001

体验界面

用户可以在这个界面上进行操作。以私钥生成为例,如果用户希望生成私钥明文,可以直接点击“生成”,随后私钥、公钥、地址都会被显示出来:

 

用户也可以直接将私钥导出,例如导出为pem格式:

 

点击后,会自动下载pem格式文件等。

关于sdk的使用,则可以参考后文中的文档地址。

  即刻使用

文档地址: 

https://governance-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-Governance-Key/index.html

GitHub代码库地址:

https://github.com/WeBankBlockchain/Governance-Key

gitee代码库地址:

https://gitee.com/WeBankBlockchain/Governance-Key 

欢迎参与WeBankBlockchain的社区建设:

  • 如项目对您有帮助,欢迎点亮我们的小星星(点击项目右上方Star按钮)。

  • 欢迎提交代码(Pull requests)。

  • 提问和提交BUG。

  • 如果发现代码存在安全漏洞,可通过https://security.webank.com/上报。

如需咨询技术问题,欢迎关注本公众号,对话框回复【小助手】进技术交流群。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值