| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 长安链ChainMaker基于公钥用户标识的身份模式介绍 -> 正文阅读 |
|
[区块链]长安链ChainMaker基于公钥用户标识的身份模式介绍 |
身份权限控制简介 在区块链中,身份权限控制是非常重要的一个环节。区块链技术在应用过程中,要面对各种不同的场景,而很多场景的区别,本质就是身份权限控制强弱的区别。例如,利用区块链技术的以太坊项目,身份权限控制较弱,任何人都可以参与链上活动。如果在企业应用场景下,较弱的身份权限控制,可能就会显得力不从心,所以一般会采用数字证书作为用户标识的强权限控制模式(下文简称证书模式)。 传统的中心化信息系统中,经常采用用户名或者手机号来标识用户,而区块链系统中,目前主要有以下几种用户标识方法: 1. 数字证书; 2. 公钥/地址; 3. 分布式数字身份(DID)。 本期我们主要介绍两方面,一是长安链为何要实现以公钥作为用户标识的身份模式(下文简称公钥模式),这样的实现能够面向哪些企业级应用场景?二是长安链是如何设计与实现公钥模式的? 为什么采用公钥模式 长安链中,在公钥模式上线之前,身份模式主要采用的是数字证书模式。数字证书模式的特点是安全、唯一。数字证书的本质是给公钥绑定信息,然后由可信的机构颁发和签名,保证公钥及其绑定信息的真实性。但是,数字证书的颁发流程比较繁琐,需要第三方可信的CA机构参与,这样就加大了长安链运行的成本。 在某些应用场景下,应用本身可以保证公钥不被复制,掉包和伪造,或者应用本身并不关心公钥的状态,这时候如果继续采用数字证书的身份模式,就增加了不必要的成本造成资源浪费,长安链中的公钥模式就是为了解决这一问题。 简单列出以下几种常见的采用公钥模式的场景: 1. 身份权限控制本身就很弱,需要大量用户参与链上活动; 2. 需要较强的身份权限控制,但是公钥和用户身份的映射关系安全唯一; 3. 身份权限控制简单,业务或者系统并不在意公钥被复制,掉包和伪造。 公钥模式的设计与实现 在长安链中,目前主要实现了三种身份权限管理模型,即三种身份模式。身份模式是根据用户标识方法和权限控制场景区分的。我们所说的公钥模式,是分为两种身份模式。 公钥身份模式1. PermissionedWithKey:面向强权限控制场景,利用公钥作为用户身份标识; 2. Public:面向弱权限控制场景,利用公钥作为用户身份标识。 PermissionedWithKey对于强权限控制场景,长安链采用了基于角色的权限控制模型,如下图所示。具体来说,需将用户绑定到某一组织的一个或多个角色上,再将链上资源(即链上需要进行权限管理的操作)绑定至特定的组织、角色,即可完成资源和用户的关联。 由于本期内容主要介绍长安链公钥模式的相关内容,其他内容就不再赘述,感兴趣者可以去查看长安链技术文档身份权限管理模块: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:查询公钥身份信息方法。 总结来说,组织管理员提前将用户的公钥和其绑定的组织信息和角色信息,直接写到链上,从而达到强权限控制的目的。 Public模式相较于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 推荐阅读 Tips 更多长安链开源项目QA,可登录开源社区、技术文档库查看。 下载源码 https://git.chainmaker.org.cn/chainmaker/chainmaker-go 查阅文档 https://docs.chainmaker.org.cn/ 长安链ChainMaker案例征集 http://www.wenjuan.com/s/UZBZJvhFGte/ “长安链ChainMaker”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界“ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 9:49:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |