一种基于公链智能合约的供应链访问控制系统和方法转让专利

申请号 : CN202010704996.X

文献号 : CN111797374A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡世力付卫婷

申请人 : 浙江同善人工智能技术有限公司

摘要 :

本发明涉及一种基于公链智能合约的供应链访问控制系统,用于区块链溯源场景中的访问控制,该系统采用RBAC模型,包括系统合约SC、角色合约RC和数据合约DC,所述的RBAC模型中包括相互关联的四类主体和操作集合OP,所述的四类主体分别为用户主体u、角色主体r、许可主体p和实体主体ob,所述的系统合约SC用于管理用户主体u,所述的角色合约RC用于管理角色主体r及其所有的多个许可主体p,所述的数据合约DC用于管理实体主体ob,所述的系统合约SC的部署交易作为RBAC模型的入口首先上链,所述的角色合约RC和数据合约DC设置多个,分别由系统合约SC调用,与现有技术相比,本发明具有同时保证数据分享便利和数据隐私安全等优点。

权利要求 :

1.一种基于公链智能合约的供应链访问控制系统,用于区块链溯源场景中的访问控制,其特征在于,该系统采用RBAC模型,包括系统合约SC、角色合约RC和数据合约DC,所述的RBAC模型中包括相互关联的四类主体和操作集合OP,所述的四类主体分别为用户主体u、角色主体r、许可主体p和实体主体ob,所述的系统合约SC用于管理用户主体u,所述的角色合约RC用于管理角色主体r及其所有的多个许可主体p,所述的数据合约DC用于管理实体主体ob,所述的系统合约SC的部署交易作为RBAC模型的入口首先上链,所述的角色合约RC和数据合约DC设置多个,分别由系统合约SC调用。

2.根据权利要求1所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,所述的系统合约SC中存储各用户主体u、权限索引表和实体索引表,所述的角色合约RC中存储各角色主体r及其所有的多个许可主体p,所述的数据合约DC中存储各实体主体ob和各实体所有者用户主体u的所有权;

所述的系统合约SC用于管理用户主体u的用户角色,所述的权限索引表用于对角色合约RC中角色主体r的角色权限进行索引,所述的实体索引表用于对数据合约DC中的实体主体ob和用户主体u的所有权进行索引。

3.根据权利要求2所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,所述的操作集合OP包括读取操作和写入操作,所述的用户主体u为系统中操作的发起者,所述的实体主体ob包括溯源过程中的每个最小环节,所述的许可主体p为包含操作对象和操作内容的权限向量,所述的角色主体r为一组许可主体p的集合,包括一类用户主体u的所有权限,所述的操作内容包括读取或写入。

4.根据权利要求3所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,系统中所有的实体主体ob构成实体集合OB,系统中所有的许可主体p构成许可集合P,系统中所有的角色主体r构成角色集合R,系统中所有的用户主体u构成用户集合U。

5.根据权利要求3所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,所述的实体主体ob的表达式为:ob=<obID,obAddress,obName>

其中,obID为实体ID,obAddress为实体合约地址,obName为实体名称;

所述的许可主体p表示系统中可执行的一种操作序列,表达式为:

p=<pID,pObject,pOperation>

其中,pID为许可ID,pObject为操作对象,pOperation为操作内容;

所述的角色主体r的表达式为:

其中,rID为角色ID,rAddress为角色合约地址,rName为角色名称,为角色权限,所述的角色权限包括角色主体r对应的第i组许可主体p的集合,li为第i组许可主体p的个数;

所述的用户主体u的表达式为:

u=<uID,uAddress,uName,uRole>

其中,uID为用户ID,uAddress为用户账户地址,uName为用户姓名,uRole为用户角色。

6.根据权利要求5所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,使用该系统进行区块链溯源场景的访问控制时,执行的操作包括赋权操作和验权操作;

所述的赋权操作包括向用户主体u授予角色主体r和向角色主体r授予许可主体p;

所述的验权操作包括用户主体u验证读取操作或写入操作的权限并尝试访问实体主体ob、查询用户主体u的用户角色、查询角色主体r的角色权限、查询许可主体p允许的操作对象和查询许可主体p允许的操作内容。

7.根据权利要求3所述的一种基于公链智能合约的供应链访问控制系统,其特征在于,所述的用户主体u、角色主体r、许可主体p、实体主体ob和操作集合OP根据角色唯一性规则、授权不可逆规则和验权一致性规则相互关联;

所述的角色唯一性规则具体为:用户主体u至多同时属于一个角色主体r;

所述的授权不可逆规则具体为:角色主体r拥有的权限只能增加而不能减少;

所述的验权一致性规则具体为:当且仅当用户主体u、其角色主体r、许可主体p、操作集合OP和实体主体ob之间存在一条可验证路径时,允许用户主体u对实体主体ob进行操作。

8.一种利用如权利要求1-7任一项所述的基于公链智能合约的供应链访问控制系统的合约调用方法,其特征在于,包括角色授权步骤和访问验权步骤,所述的角色授权步骤通过系统合约SC调用数据合约DC验证和调用角色合约RC授予实现,所述的访问验权步骤通过系统合约SC调用角色合约RC验证和调用数据合约DC操作实现。

9.根据权利要求8所述的一种基于公链智能合约的供应链访问控制系统的合约调用方法,其特征在于,所述的角色授权步骤具体包括:S11:对应用户主体u向系统合约SC发送授权请求;

S12:系统合约SC调用数据合约DC对用户主体u针对实体主体ob的所有权进行验证;

S13:判断该用户主体u是否为所有者,若是,则调用被授权的角色合约RC,并向对象角色主体r写入新的许可主体p,否则授权失败。

10.根据权利要求8所述的一种基于公链智能合约的供应链访问控制系统的合约调用方法,其特征在于,所述的访问验权步骤具体包括:S21:对应用户主体u向系统合约SC发送操作请求;

S22:系统合约SC调用角色合约RC对用户主体u所属角色主体r的角色权限进行验证;

S23:判断该角色主体r是否有对应权限,若是,则调用数据合约DC,并访问实体主体ob,否则操作失败。

说明书 :

一种基于公链智能合约的供应链访问控制系统和方法

技术领域

[0001] 本发明涉及区块链领域,尤其是涉及一种基于公链智能合约的供应链访问控制系统和方法。

背景技术

[0002] 随着区块链技术的不断发展以及溯源需求的日益显现,利用区块链进行溯源数据存储的方案和应用层出不穷,虽然区块链技术能够实现溯源数据的可信记录,但是数据的隐私和安全问题仍有待解决,同时随着区块链智能合约的功能不断完善,区块链的可编程性得到了很大的提高,这让利用合约来构建较为复杂的访问控制方法有了实现的可能。
[0003] 传统的访问控制解决方案包括基于角色的访问控制(RBAC)和基于属性的权限验证(ABAC)等,但是在区块链上使用这些访问控制方法来管理供应链上的溯源过程是不合适的,在区块链这一去中心化的环境中,管理员是不被信任的对象。这些有着绝对权力的超级用户极有可能会受到利益的驱动而违背规则,不再诚实地运作,导致访问控制的异常。其次,强制性的控制大幅降低了用户分享数据的主动性和能动性。用户不能够将属于自己的数据随心所欲地分享给他人,而是需要向管理员进行申请。这不仅降低了数据分享的效率和用户分享数据的欲望,也大大违背了供应链溯源过程需要数据公开的初衷。
[0004] 基于角色的权限访问控制(RBAC)概念的基础模型被称为RBAC0,RBAC0定义了能构成RBAC控制系统的最小的元素集合,包括四部分:用户(User)、角色(Role)、会话(Session/Subject)和许可(Permission),其中许可又包括“操作(Operation)”和“控制对象(Object)”。在区块链上,现有技术中以RBAC为基础实现了RBAC-SC,即RBAC模型的智能合约实现,并提出RBAC-GL,针对合约的安全问题进行了改进,除RBAC之外,基于智能合约的访问控制方法还包括SCBAC和ABAC等。
[0005] 但是现有技术中,在区块链上使用智能合约来实现RBAC在供应链溯源场景中仍然存在数据的隐私和互操作问题需要我们去解决。

发明内容

[0006] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种同时保证数据分享便利和数据隐私安全的基于公链智能合约的供应链访问控制方法。
[0007] 本发明的目的可以通过以下技术方案来实现:
[0008] 一种基于公链智能合约的供应链访问控制系统,用于区块链溯源场景中的访问控制,该系统采用RBAC模型,包括系统合约SC、角色合约RC和数据合约DC,所述的RBAC模型中包括相互关联的四类主体和操作集合OP,所述的四类主体分别为用户主体u、角色主体r、许可主体p和实体主体ob,所述的系统合约SC用于管理用户主体u,所述的角色合约RC用于管理角色主体r及其所有的多个许可主体p,所述的数据合约DC用于管理实体主体ob,所述的系统合约SC的部署交易作为RBAC模型的入口首先上链,所述的角色合约RC和数据合约DC设置多个,分别由系统合约SC调用,这样的设置可以确保RBAC模型整体的安全性,并有效降低合约的操作开销,系统合约SC同时管理多个角色合约RC和数据合约DC,以集中处理权限操作,便于监听合约事件。
[0009] 进一步地,所述的系统合约SC中存储各用户主体u、权限索引表和实体索引表,所述的角色合约RC中存储各角色主体r及其所有的多个许可主体p,所述的数据合约DC中存储各实体主体ob和各实体所有者用户主体u的所有权。
[0010] 所述的系统合约SC用于管理用户主体u的用户角色,所述的权限索引表用于对角色合约RC中角色主体r的角色权限进行索引,所述的实体索引表用于对数据合约DC中的实体主体ob和用户主体u的所有权进行索引。
[0011] 更进一步地,系统中所有的实体主体ob构成实体集合OB,系统中所有的许可主体p构成许可集合P,系统中所有的角色主体r构成角色集合R,系统中所有的用户主体u构成用户集合U。
[0012] 更进一步地,所述的操作集合OP包括读取操作和写入操作,所述的用户主体u为系统中操作的发起者,是权限的需求方,所述的实体主体ob包括溯源过程中的每个最小环节,具体可以包括但不限于采购、加工、运输、销售等或其中部分可有限公开的内容,是最基础的、不可再分的数据单位,所述的许可主体p为包含操作对象和操作内容的权限向量,表示一组系统中可以执行的操作序列,所述的角色主体r为一组许可主体p的集合,包括一类用户主体u的所有权限,当某一用户主体u属于某一角色主体r时,该用户主体u就拥有了对应的角色权限,即该角色主体r对应的一组许可主体p的集合,所述的操作内容包括读取或写入。
[0013] 具体地,所述的实体主体ob的表达式为:
[0014] ob=
[0015] 其中,obID为实体ID,obAddress为实体合约地址,该地址为溯源过程中,调用数据合约DC查找时的索引地址,obName为实体名称;
[0016] 所述的许可主体p表示系统中可执行的一种操作序列,表达式为:
[0017] p=
[0018] 其中,pID为许可ID,pObject为操作对象,pOperation为操作内容;
[0019] 所述的角色主体r的表达式为:
[0020]
[0021] 其中,rID为角色ID,rAddress为角色合约地址,该地址为角色授权过程中,调用角色合约RC查找角色主体r时的索引地址,rName为角色名称, 为角色权限,所述的角色权限包括角色主体r对应的第i组许可主体p的集合,li为第i组许可主体p的个数;
[0022] 所述的用户主体u的表达式为:
[0023] u=
[0024] 其中,uID为用户ID,uAddress为用户账户地址,uName为用户姓名,uRole为用户角色。
[0025] 更进一步地,所述的用户主体u、角色主体r、许可主体p、实体主体ob和操作集合OP根据角色唯一性规则、授权不可逆规则和验权一致性规则相互关联;
[0026] 所述的角色唯一性规则具体为:用户主体u至多同时属于一个角色主体r,该规则的设定是因为在供应链中,任意数据的所有者不能同时属于多个环节,以保证溯源过程能够进行循环验证。
[0027] 所述的授权不可逆规则具体为:角色主体r拥有的权限只能增加而不能减少,该规则的设定是因为在区块链上,任意的访问权限一旦授予,就不能被回收,这符合基本的去中心化原则。
[0028] 所述的验权一致性规则具体为:当且仅当用户主体u、其角色主体r、许可主体p、操作集合OP和实体主体ob之间存在一条可验证路径时,允许用户主体u对实体主体ob进行操作,该规则的设定能够提高溯源过程的安全性。
[0029] 使用该系统进行区块链溯源场景的访问控制时,执行的操作包括赋权操作和验权操作;
[0030] 所述的赋权操作包括向用户主体u授予角色主体r和向角色主体r授予许可主体p;
[0031] 所述的验权操作包括用户主体u验证读取操作或写入操作的权限并尝试访问实体主体ob、查询用户主体u的用户角色、查询角色主体r的角色权限、查询许可主体p允许的操作对象和查询许可主体p允许的操作内容。
[0032] 一种利用如所述的基于公链智能合约的供应链访问控制系统的合约调用方法,包括角色授权步骤和访问验权步骤,所述的角色授权步骤通过系统合约SC调用数据合约DC验证和调用角色合约RC授予实现,所述的访问验权步骤通过系统合约SC调用角色合约RC验证和调用数据合约DC操作实现。
[0033] 进一步地,所述的角色授权步骤具体包括:
[0034] S11:对应用户主体u向系统合约SC发送授权请求;
[0035] S12:系统合约SC调用数据合约DC对用户主体u针对实体主体ob的所有权进行验证;
[0036] S13:判断该用户主体u是否为所有者,若是,则调用被授权的角色合约RC,并向对象角色主体r写入新的许可主体p,否则授权失败。
[0037] 进一步地,所述的访问验权步骤具体包括:
[0038] S21:对应用户主体u向系统合约SC发送操作请求;
[0039] S22:系统合约SC调用角色合约RC对用户主体u所属角色主体r的角色权限进行验证;
[0040] S23:判断该角色主体r是否有对应权限,若是,则调用数据合约DC,并访问实体主体ob,否则操作失败。
[0041] 与现有技术相比,本发明具有以下优点:
[0042] 1)本发明采用RBAC模型,管理员的权限将被下放给每一个角色下的数据所有者,他们选择分享的数据内容将向对方角色组的所有用户公开,适用于供应链场景,可以实现各生产环节间的有效数据互通,同时满足消费者的溯源需求;
[0043] 2)本发明通过设计三种合约:系统合约SC、角色合约RC和数据合约DC,借助智能合约技术,在公链上实现供应链数据的访问控制方法,以基于角色的访问控制为基础,实现供应链上下游之间有效的数据共享和方便的溯源查询;
[0044] 3)本发明中系统合约SC的部署交易作为模型的入口首先上链,而角色合约RC和数据合约DC被限制只能由系统合约SC自动部署,可以确保模型整体的安全性,并有效降低合约的操作开销;
[0045] 4)本发明中设置多个角色合约RC和数据合约DC,并且由系统合约SC同时管理,可以集中处理权限操作,便于监听合约事件,提高访问控制效率;
[0046] 5)本发明系统通过下放管理员权限调动数据所有者进行数据分享的积极性,实现以数据驱动而非管理员驱动的权限管理过程;
[0047] 6)本发明针对区块链和溯源场景,在RBAC模型中设置四类主体和操作集合,并设置三个规则使四类主体和操作集合相互关联,权限与角色相关联,而用户通过成为适当角色的成员而得到这些角色的权限,将基于智能合约的RBAC访问控制方法与区块链的溯源场景相结合,提供高效、可靠且安全的产品溯源方法。

附图说明

[0048] 图1为本发明三种合约的索引逻辑示意图;
[0049] 图2为角色授权流程示意图;
[0050] 图3为访问验权流程示意图。

具体实施方式

[0051] 下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0052] 实施例
[0053] 本发明提供一种基于公链智能合约的供应链访问控制系统,用于区块链溯源场景中的访问控制,该系统采用RBAC模型,包括系统合约SC、角色合约RC和数据合约DC,如图1所示,系统合约SC的部署交易作为RBAC模型的入口首先上链,角色合约RC和数据合约DC设置多个,分别由系统合约SC调用,这样的设置可以确保RBAC模型整体的安全性,并有效降低合约的操作开销,系统合约SC同时管理多个角色合约RC和数据合约DC,以集中处理权限操作,便于监听合约事件。
[0054] 参照RBAC的原始设计,本发明设计的RBAC模型中包括相互关联的四类主体和操作集合OP,四类主体分别为用户主体u、角色主体r、许可主体p和实体主体ob。
[0055] 本发明主要设计了三种合约来对应RBAC模型中的三个部分(用户主体u、角色主体r和实体主体ob)。对于用户主体u,我们使用系统合约(System Contract,SC)统一管理它们的用户角色;对于每个角色主体r,分别使用一个角色合约(Role Contract,RC)来存储它们拥有的所有许可主体p;对于每类实体主体ob,分别使用一个数据合约(Data Contract,DC)来管理该类实体主体ob下的所有数据内容,并对所有的访问操作进行自主验权。
[0056] 本发明通过对系统合约SC、角色合约RC和数据合约DC进行一定的组织,将RBAC模型中的关系模型映射到了区块链上,将三种合约与RBAC模型中的四类主体和操作集合OP结合,实现基于公链智能合约的供应链访问控制,其中系统合约SC中存储各用户主体u、权限索引表和实体索引表,用于管理用户主体u的用户角色,角色合约RC中存储各角色主体r,用于管理角色主体r及其所有的许可主体p,数据合约DC中存储各实体主体ob和各实体所有者用户主体u的所有权,用于管理实体主体ob,权限索引表用于对角色合约RC中角色主体r的角色权限进行索引,实体索引表用于对数据合约DC中的实体主体ob和用户主体u的所有权进行索引。
[0057] 具体地,各类主体和操作集合OP的设置为:
[0058] (1)操作集合OP
[0059] 操作集合OP包含系统当中可以进行的所有操作,在溯源场景中简化为两种:读取操作和写入操作,其表达式为:
[0060] OP={read,write}
[0061] (2)实体主体ob
[0062] 实体主体ob包括溯源过程中的每个最小环节,具体可以包括但不限于采购、加工、运输、销售等或其中部分可有限公开的内容,是最基础的、不可再分的数据单位,在溯源场景中以及区块链上,包含实体ID、实体地址和实体名称三个参数,将系统中所有实体主体ob作为实体集合OB,其表达式为:
[0063] ob=
[0064] OB={ob1,ob2,…,obk}
[0065] 其中k为系统中所有实体主体ob的个数。
[0066] (3)许可主体p
[0067] 许可主体p是一组包含了操作对象和操作内容的向量,表示系统中一组可以执行的操作序列,包括许可ID、许可对象和许可操作三个参数,将系统中所有许可主体p的集合作为许可集合P,其表达式为:
[0068] p=
[0069] P={p1,p2,…,pl}
[0070] 其中l为系统中所有许可主体p的个数。
[0071] (4)角色主体r
[0072] 角色主体r是一组许可主体p的集合,定义了一类用户拥有的所有权限,包括角色ID、角色地址、角色名称和角色权限四个参数,将系统中所有角色主体r作为角色集合R,其表达式为:
[0073]
[0074] R={r1,r2,…,rm}
[0075] 其中m为系统中所有角色r的个数, 为角色权限,角色权限包括角色主体r对应的第i组许可主体p的集合,li为第i组许可主体p的个数。
[0076] (5)用户主体u
[0077] 用户主体u是系统中所有操作的发起者,是权限的需求方,包括用户ID、用户地址、用户名称和用户角色四个参数,将系统中所有用户主体u作为用户集合U,其表达式为:
[0078] u=
[0079] U={u1,u2,…,un}
[0080] 其中n为系统中所有用户u的个数。
[0081] 针对区块链和溯源场景,本发明设置了系统中所有可能使用的赋权操作和验权操作,具体包括:
[0082] 赋权操作:
[0083] 向用户主体u授予角色主体r:assignRole(u∈U,r∈R)
[0084] 向角色主体r授予许可主体p:assignPms(r∈R,p∈P)
[0085] 验权操作:
[0086] 用户主体u验证读取操作或写入操作的权限并尝试访问实体主体ob:access(u∈U,ob∈O,op∈OP)
[0087] 查询用户主体u的用户角色:getRole(u∈U)
[0088] 查询角色主体r的角色权限:getPms(r∈R)
[0089] 查询许可主体p允许的操作对象:getObj(p∈P)
[0090] 查询许可主体p允许的操作内容:getOp(p∈P)
[0091] 针对区块链和溯源场景,本发明设置了四类主体和操作集合根据一对一、一对多和多对多的关系相互关联的三条规则,具体为:
[0092] 角色唯一性规则:一个用户主体u至多只能同时属于一个角色主体r。在供应链中,任意数据的所有者不能同时属于多个环节,以保证溯源过程能够进行循环验证。
[0093] 这一规则的形式化定义为:
[0094]
[0095]
[0096] 授权不可逆规则:角色主体r拥有的权限只能增加而不能减少,在区块链上,任意的访问权限一旦授予,就不能被回收,这符合基本的去中心化原则。
[0097] 这一规则的形式化定义为:
[0098]
[0099] getObj(pj)=getObj(px)∧(getOp(pj)>getOp(px)),
[0100]
[0101] 验权一致性规则:当且仅当用户主体u、其角色主体r、许可主体p、操作集合OP和实体主体ob之间存在一条可验证路径时,允许用户主体u对实体主体ob进行操作,提高安全性。
[0102] 这一规则的形式化定义为:
[0103]
[0104]
[0105]
[0106] 本发明还提供一种利用基于公链智能合约的供应链访问控制系统的合约调用方法,合约调用能够实现RBAC模型中各个部分之间的有效交互,以及溯源场景中的操作过程,合约调用方法包括角色授权步骤和访问验权步骤,两个步骤都将由系统合约自主完成,角色授权步骤通过系统合约SC调用数据合约DC验证和调用角色合约RC授予实现,访问验权步骤通过系统合约SC调用角色合约RC验证和调用数据合约DC操作实现。
[0107] 如图2所示,角色授权步骤具体包括:
[0108] S11:对应用户主体u向系统合约SC发送授权请求;
[0109] S12:系统合约SC调用数据合约DC对用户主体u针对实体主体ob的所有权进行验证;
[0110] S13:判断该用户主体u是否为所有者,若是,则调用被授权的角色合约RC,并向对象角色主体r写入新的许可主体p,否则授权失败。
[0111] 如图3所示,访问验权步骤具体包括:
[0112] S21:对应用户主体u向系统合约SC发送操作请求;
[0113] S22:系统合约SC调用角色合约RC对用户主体u所属角色主体r的角色权限进行验证;
[0114] S23:判断该角色主体r是否有对应权限,若是,则调用数据合约DC,并访问实体主体ob,否则操作失败。
[0115] 本发明使用以太坊以及Solidity来编写和部署访问控制合约,在此基础上,也可以使用了web3j来监听合约事件,并和其他平台进行对接。
[0116] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。