身份权限控制简介
在区块链中,身份权限控制是非常重要的一个环节。区块链技术在应用过程中,要面对各种不同的场景,而很多场景的区别,本质就是身份权限控制强弱的区别。例如,利用区块链技术的以太坊项目,身份权限控制较弱,任何人都可以参与链上活动。如果在企业应用场景下,较弱的身份权限控制,可能就会显得力不从心,所以一般会采用数字证书作为用户标识的强权限控制模式(下文简称证书模式)。
传统的中心化信息系统中,经常采用用户名或者手机号来标识用户,而区块链系统中,目前主要有以下几种用户标识方法:
1. 数字证书;
2. 公钥/地址;
3. 分布式数字身份(DID)。
本期我们主要介绍两方面,一是长安链为何要实现以公钥作为用户标识的身份模式(下文简称公钥模式),这样的实现能够面向哪些企业级应用场景?二是长安链是如何设计与实现公钥模式的?
为什么采用公钥模式
长安链中,在公钥模式上线之前,身份模式主要采用的是数字证书模式。数字证书模式的特点是安全、唯一。数字证书的本质是给公钥绑定信息,然后由可信的机构颁发和签名,保证公钥及其绑定信息的真实性。但是,数字证书的颁发流程比较繁琐,需要第三方可信的CA机构参与,这样就加大了长安链运行的成本。
在某些应用场景下,应用本身可以保证公钥不被复制,掉包和伪造,或者应用本身并不关心公钥的状态,这时候如果继续采用数字证书的身份模式,就增加了不必要的成本造成资源浪费,长安链中的公钥模式就是为了解决这一问题。
简单列出以下几种常见的采用公钥模式的场景:
1. 身份权限控制本身就很弱,需要大量用户参与链上活动;
2. 需要较强的身份权限控制,但是公钥和用户身份的映射关系安全唯一;
3. 身份权限控制简单,业务或者系统并不在意公钥被复制,掉包和伪造。
公钥模式的设计与实现
在长安链中,目前主要实现了三种身份权限管理模型,即三种身份模式。身份模式是根据用户标识方法和权限控制场景区分的。我们所说的公钥模式,是分为两种身份模式。
1. PermissionedWithKey:面向强权限控制场景,利用公钥作为用户身份标识;
2. Public:面向弱权限控制场景,利用公钥作为用户身份标识。
对于强权限控制场景,长安链采用了基于角色的权限控制模型,如下图所示。具体来说,需将用户绑定到某一组织的一个或多个角色上,再将链上资源(即链上需要进行权限管理的操作)绑定至特定的组织、角色,即可完成资源和用户的关联。
由于本期内容主要介绍长安链公钥模式的相关内容,其他内容就不再赘述,感兴趣者可以去查看长安链技术文档身份权限管理模块:https://docs.chainmaker.org.cn/tech/%E8%BA%AB%E4%BB%BD%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86.html。
在这里需要提到的就是数字证书和公钥作为用户标识另一个区别,数字证书里的自定义字段可以填写组织,角色等信息,而公钥却不能承载这些信息,那如何将这些权限控制所需要的信息与公钥绑定呢?
我们新增了公钥管理的系统合约:PUBKEY_MANAGE,该合约采用SELF的权限控制方案,即需要组织的管理员签名,为该组织下用户或节点的公钥绑定信息至链上。而组织管理员是启动区块链时,默认注册到链上的,通过写到链配置的trust_roots字段。另外,共识节点的组织和角色信息,也是通过在链配置中默认注册的。
系统合约PUBKEY_MANAGE拥有下列三个方法:
1. PUBKEY_ADD:增加公钥身份信息方法;
2. PUBKEY_DELETE:删除公钥身份信息方法;
3. PUBKEY_QUERY:查询公钥身份信息方法。
总结来说,组织管理员提前将用户的公钥和其绑定的组织信息和角色信息,直接写到链上,从而达到强权限控制的目的。
相较于PermissionedWithKey模式,Public模式用户体系发生了明显的变化。
PermissionedWithKey模式,长安链的链上用户体系如下图所示:
Public模式,长安链的链上用户体系如下图所示:
可以看到,Public模式下,组织的概念已经不存在,角色的区分也变得更加简化,这是因为在弱权限场景下,希望更多的用户参与链上活动,所以我们放开了大部分的权限限制,仅保留了管理员和共识节点的部分特有权限。
简单来说,任何用户,不需要提前注册身份,不需要提前申请证书,使用自己的公私钥,就可以在链上调用合约!
对于合约的创建,升级,冻结,解冻等操作,也包括链配置更新等操作,还是需要管理员参与进行。想要了解更具体的权限控制,可以查看长安链技术文档身份权限管理部分:https://docs.chainmaker.org.cn/tech/%E8%BA%AB%E4%BB%BD%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86.html。
后续长安链会推出更多丰富的身份模式,例如DID身份模式,期待您的持续关注!
RECOMMEND
推荐阅读
长安链ChainMaker国密TLS设计与实现、
长安链ChainMaker新特性——透明数据加密TDE
长安链自研网络Liquid详解及应用指南
Tips
更多长安链开源项目QA,可登录开源社区、技术文档库查看。
下载源码
https://git.chainmaker.org.cn/chainmaker/chainmaker-go
查阅文档
https://docs.chainmaker.org.cn/
长安链ChainMaker案例征集
http://www.wenjuan.com/s/UZBZJvhFGte/
“长安链ChainMaker”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界“