身份权限控制简介

在区块链中,身份权限控制是非常重要的一个环节。区块链技术在应用过程中,要面对各种不同的场景,而很多场景的区别,本质就是身份权限控制强弱的区别。例如,利用区块链技术的以太坊项目,身份权限控制较弱,任何人都可以参与链上活动。如果在企业应用场景下,较弱的身份权限控制,可能就会显得力不从心,所以一般会采用数字证书作为用户标识的强权限控制模式(下文简称证书模式)。

传统的中心化信息系统中,经常采用用户名或者手机号来标识用户,而区块链系统中,目前主要有以下几种用户标识方法:

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

推荐阅读

长安链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”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界“

长安链ChainMaker基于公钥用户标识的身份模式介绍相关推荐

  1. 长安链ChainMaker的多链隔离设计

    在联盟链场景,一般一个节点对应一个参与方,一条链对应一类业务.当一个参与方有多个业务要上链,就需要采用多链方式去部署,一方面可以复用节点,另一方面可以做到业务的隔离. 长安链支持多链方式部署.如果同一 ...

  2. 这就是区块链开源底层软件平台——长安链ChainMaker

    本文已参与「开源摘星计划」,欢迎正在阅读的你加入. 活动链接:https://github.com/weopenprojects/WeOpen-Star 这就是区块链开源底层软件平台--长安链Chai ...

  3. 长安链ChainMaker新特性——透明数据加密TDE

    01 透明数据加密(TDE)简介 透明数据加密(Transparent Data Encryption (简称TDE))是指可以在文件层对数据和文件进行实时加密和解密,落盘的文件是加密后的内容,而对于 ...

  4. 坚持自主可控,长安链ChainMaker全面拥抱国密的技术实践

    密码技术作为与核技术.航天技术并列的国家三大安全核心技术之一,在保障信息安全,增强我国行业信息系统的"安全可控"等方面具有关键作用.长期以来国际上较为通用的商用算法是由美国安全局发 ...

  5. 长安链ChainMaker:一、使用自定义组织节点docker启动链

    长安链ChainMaker:一.使用自定义组织节点docker启动链 文章目录 长安链ChainMaker:一.使用自定义组织节点docker启动链 0.整体步骤: 1.下载chainmaker-go ...

  6. 公益领域:长安链ChainMaker在全民义务植树中的应用实践

    背景介绍 "全民义务植树"活动,在我国已经有40余年的历史.而"互联网+全民义务植树"的成型,及其正式纳入全国义务植树尽责体系,预示着全民义务植树正进入一个崭新 ...

  7. 长安链---从零到一部署Chainmaker-2.0.0

    长安链部署 简介 长安链·ChainMaker具备自主可控.灵活装配.软硬一体.开源开放的突出特点,由北京微芯研究院.清华大学.北京航空航天大学.腾讯.百度和京东等知名高校.企业共同研发.取名&quo ...

  8. 打通链上链下,构建全链条可信价值生态—长安链预言机

    什么是预言机? 预⾔机(oracle mechanism)是⼀种将区块链外信息写⼊区块链内的机制,在保险.金融.物联网等各个场景中已经开始展现出其价值.常⻅的预⾔机有两类,⼀是依赖某⼀中⼼化信息源,⼆ ...

  9. 长安链赋能北京140余个政务服务应用场景

    转自:北京日报 区块链作为一种全新的分布式基础架构与计算范式,已成为全球数据交易.金融结算.政务民生等领域的重要信息基础设施.在北京,国内首个自主可控的区块链软硬件技术体系长安链正在赋能政务服务,让市 ...

最新文章

  1. JavaScript笔记 基础知识总结2
  2. python 计量_距离度量以及python实现(二)
  3. 【整理】Smartforms的导出和导入
  4. Java设计模式之适配器模式在jdk中的应用
  5. 22. Generate Parentheses
  6. html 定时刷新 数据,js中,设置定时器 每隔几秒刷新一次页面数据
  7. Leetcode--152. 乘积最大子序列
  8. Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理
  9. Spring知识点一站到底(转载)
  10. 计算机课的实训小结,课程实训心得体会与小结三篇
  11. glew,glfw实现最新的opengl-学习笔记4实现纹理
  12. 【算法基础一】字符编码分类
  13. 关于java分包原则
  14. 5101是多大的电阻_电阻尺寸对照表
  15. php阿里支付回调逻辑,php 银联支付回调
  16. 【ora-12528】数据库服务器重启之后,出现ora-12528:所有适用例程都无法建立新连接
  17. 读《编码:隐匿在计算机软硬件背后的语言》有感
  18. 第三单元 :资本成本笔记
  19. Windows10设置开启自启动任务
  20. Android 系统图标

热门文章

  1. 转载 在心底举行的默哀仪式
  2. 初学者如何学好编程?
  3. linux netstat命令:网络状态查看命令
  4. 小型气象站种类有哪些
  5. [eval函数利用]
  6. js:按钮绑定多个事件的三种方法(js,DOM,jQuery)
  7. git pull 与 git push 的区别
  8. ikbc键盘解锁上锁 解决win键失灵的问题
  9. C/C++面试题-1
  10. mbedtls学习2.mbedtls从0使用指南