发明内容
本说明书实施例旨在提供一种更有效的跨链访问控制方案,以解决现有技术中的不足。
为实现上述目的,本说明书一个方面提供一种跨链访问控制方法,所述方法由中继设备执行,所述中继设备与第一区块链连接,所述中继设备中预设有与所述第一区块链对应的访问控制表,所述方法包括:
接收对所述访问控制表的写入请求及数字签名,其中,所述数字签名为所述写入请求的发送者对所述写入请求的数字签名,所述写入请求中包括所述第一区块链中的资源的标识和对所述资源的授权信息;
基于所述资源的标识获取用于验证所述数字签名的公钥;
使用所述公钥对所述数字签名进行验证;
在验证通过的情况中,在所述访问控制表中写入对所述资源的授权信息。
在一种实施方式中,基于所述资源的标识获取用于验证所述数字签名的公钥包括,基于所述资源的标识确定所述资源的所有者,获取所述所有者的公钥。
在一种实施方式中,所述资源的标识为智能合约的账户地址,基于所述资源的标识确定所述资源的所有者包括,从所述智能合约的账户状态中读取所述智能合约的所有者的账户地址。
在一种实施方式中,所述资源的标识包括第一交易的标识,其中,基于所述资源的标识确定所述资源的所有者包括,基于第一交易的标识从第一区块链中读取发送所述第一交易的账户地址。
在一种实施方式中,所述资源的标识包括第一区块的标识,其中,基于所述资源的标识确定所述资源的所有者包括,基于第一区块的标识中包括的第一区块链的域名,获取所述第一区块链的域名证书。
在一种实施方式中,所述写入请求中包括所述资源的被授权账户的标识,所述被授权账户被授权在所述访问控制表写入所述资源的授权信息,其中,在所述访问控制表中写入对所述资源的授权信息包括,在所述访问控制表中写入所述资源的被授权账户的标识。
在一种实施方式中,基于所述资源的标识获取用于验证所述数字签名的公钥包括,在所述访问控制表读取所述被授权账户的标识,基于所述被授权账户的标识获取所述被授权账户的公钥。
在一种实施方式中,所述中继设备中包括TEE,所述方法由所述TEE执行。
本说明书另一方面提供一种跨链访问控制装置,所述装置部署于中继设备,所述中继设备与第一区块链连接,所述中继设备中预设有与所述第一区块链对应的访问控制表,所述装置包括:
接收单元,配置为,接收对所述访问控制表的写入请求及数字签名,其中,所述数字签名为所述写入请求的发送者对所述写入请求的数字签名,所述写入请求中包括所述第一区块链中的资源的标识和对所述资源的授权信息;
获取单元,配置为,基于所述资源的标识获取用于验证所述数字签名的公钥;
验证单元,配置为,使用所述公钥对所述数字签名进行验证;
写入单元,配置为,在验证通过的情况中,在所述访问控制表中写入对所述资源的授权信息。
在一种实施方式中,所述获取单元包括,确定子单元,配置为,基于所述资源的标识确定所述资源的所有者,第一获取子单元,配置为,获取所述所有者的公钥。
在一种实施方式中,所述资源的标识为智能合约的账户地址,所述确定子单元还配置为,从所述智能合约的账户状态中读取所述智能合约的所有者的账户地址。
在一种实施方式中,所述资源的标识包括第一交易的标识,其中,所述确定子单元还配置为,基于第一交易的标识从第一区块链中读取发送所述第一交易的账户地址。
在一种实施方式中,所述资源的标识包括第一区块的标识,其中,所述确定子单元还配置为,基于第一区块的标识中包括的第一区块链的域名,获取所述第一区块链的域名证书。
在一种实施方式中,所述写入请求中包括所述资源的被授权账户的标识,所述被授权账户被授权在所述访问控制表写入所述资源的授权信息,其中,所述写入单元还配置为,在所述访问控制表中写入所述资源的被授权账户的标识。
在一种实施方式中,所述获取单元还包括,读取子单元,配置为,在所述访问控制表读取所述被授权账户的标识,第二获取子单元,配置为,基于所述被授权账户的标识获取所述被授权账户的公钥。
在一种实施方式中,所述中继设备中包括TEE,所述装置部署于所述TEE中。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的跨链访问控制方案,使得只有资源的所有者或者由资源所有者授权的账户才可以在ACL表中设置该资源的访问权限,从而保障区块链的数据安全性,通过在中继设备中由TEE执行根据本说明书实施例的方案,进一步保障了数据安全性。
具体实施方式
下面将结合附图描述本说明书实施例。
图1示出根据本说明书实施例的跨链系统的示意图。如图1所示,所述跨链系统包括第一区块链11、中继设备网络12和第二区块链13。其中,所述中继设备网络12中包括多个具有预定连接关系的中继设备,图1仅示意示出第一中继设备121和第二中继设备122,其他以虚线示出的云朵表示,第一中继设备121与第二中继设备122有可能直接连接,或者有可能通过其它中继设备连接。中继设备网络12中的每个中继设备与至少一个区块链连接,每个中继设备中存储有查找表,该查找表记录了预定数目个中继设备与其连接的区块链的对应关系,从而通过中继设备网络12中的多个中继设备,中继设备网络可与更多个区块链连接。图1中示意示出了,第一区块链11与第一中继设备121连接,第二区块链13与第二中继设备122连接。
第二区块链13例如通过中继设备网络12向第一区块链11发送访问请求,该访问请求例如为读取第一区块链11中的数据,或者为调用第一区块链11中的智能合约。具体是,第二区块链13基于查找表将访问请求通过中继设备网络12发送给第一中继设备121,由第一中继设备121基于访问控制表(ACL表)确定该访问请求是否被授权,以确定是否响应于该访问请求访问第一区块链11。
因此,为了保证跨链访问的安全性,如何建立ACL表是关键的部分。如图1所示,在本说明书实施例中,在每个中继设备中还设置有ACL表写入模块,ACL表写入模块中包括身份认证子模块和资源认证子模块。当用户通过其设备向例如第一中继设备121发送ACL表写入请求以设定资源的授权信息时,第一中继设备121中调用ACL表写入模块,首先通过资源认证子模块确定资源的拥有者或被授权者,然后通过身份认证子模块确定该写入请求的发送者是否为所述资源的拥有者或者所述资源的授权者,从而确定是否基于该写入请求对ACL表进行写入。
可以理解,上述参考图1的描述只是示意性的,而不是用于限制本说明书实施例的范围。下面将具体描述上述访问权限控制方法。
图2示出根据本说明书实施例的一种跨链访问控制方法流程图,所述方法例如由图1中的第一中继设备121执行,所述方法包括以下步骤:
步骤S202,接收对ACL表的写入请求及签名,所述签名为所述写入请求的发送者对所述写入请求的数字签名,所述写入请求中包括第一区块链中的将要授权的资源的标识;
步骤S204,确定所述资源的所有者;
步骤S206,验证所述签名是否为所述所有者的签名;
步骤S208,在验证所述数字签名不是所述所有者的签名的情况中,验证所述签名是否为所述资源的被授权账户的签名;
步骤S210,基于所述写入请求对ACL表进行写入。
下文将通过多种实施方式对图2所示方法进行描述。
在一种实施方式中,第一区块链中11的资源的所有者通过其设备向第一中继设备121发送对ACL表的写入请求和对该写入请求的数字签名,从而,第一中继设备121执行步骤S202,接收上述资源所有者对ACL表的写入请求及签名。其中,所述数字签名为使用所述写入请求的发送者的账户私钥对所述写入请求的数字签名,所述写入请求中包括第一区块链中的将要授权的特定资源的标识。所述资源例如可以包括第一区块链11中的区块数据、交易数据、智能合约等。相应的,在所述写入请求中可包括区块数据的标识,交易数据的标识或者智能合约的标识。所述区块数据的标识例如包括第一区块链的域名和区块头哈希值或者区块编号等;所述交易数据的标识例如包括第一区块链的域名、交易所在区块的标识和交易编号等;所述智能合约的标识例如包括第一区块链的域名和智能合约的账户等。所述写入请求中例如请求在ACL表中写入特定资源的授权内容。所述授权内容例如包括被授权使用该特定资源的区块链的域名、被授权的对该特定资源的使用方式等内容。例如,对于智能合约资源,被授权的使用方式包括调用方式,对于区块数据、交易数据等资源,被授权的使用方式包括读取方式,等等。
之后,第一中继设备121执行步骤S204,确定资源的所有者。
第一中继设备121在接收到上述对ACL表的写入请求之后,首先需要确认写入请求中的特定资源的所有者(owner)是谁,以确定该写入请求的发送者是否为所述特定资源的所有者,即确定该发送者是否有权限对ACL表进行写入。因此,第一中继设备121通过其资源认证子模块确定资源的所有者。
例如,所述特定资源为第一区块链11中部署的智能合约,所述智能合约的账户状态中的所有者字段中记录了该智能合约的所有者的账户地址。从而,所述资源认证子模块可读取所述智能合约的账户状态中的所有者字段,获取所有者的账户地址,并可通过读取所有者的账户的账户状态,获取该所有者的公钥。
例如,所述特定资源为第一区块链11中存储的交易数据。对于区块链中的交易数据,不同的区块链中可能对交易数据的所有者有不同的规定,例如,在一种区块链中,交易的交易数据包括交易发送者的存证数据,并且在该区块链中规定交易数据的所有者为交易发送者,在另一种区块链中,区块链中可规定交易的所有者为区块链的所有者。所述资源认证子模块可从第一区块链11中获取对交易数据所有者的规定说明。例如,所述资源认证子模块确定交易数据的所有者为交易的发送者,则所述资源认证子模块从第一区块链11中读取所述交易数据,从而从该交易数据中获取该交易的发送账户,并可从该发送账户的账户状态中获取该发送账户的账户公钥。如果所述资源认证子模块确定交易数据的所有者为第一区块链11的所有者,则资源认证子模块可从域名证书颁发机构获取第一区块链11的域名证书,所述域名证书中包括域名和域名所有者的公钥,以用于明确域名的所有者,从而,资源认证子模块可从该域名证书中获取第一区块链11的所有者的公钥。另外,资源认证子模块在第一次获取第一区块链11的域名证书之后,可将该域名证书存储到第一中继设备121本地,以用于后续对第一区块链11中的资源的认证。
例如,所述特定资源为第一区块链11中的区块数据,通常,区块数据的所有者即为相应区块链的所有者。从而,资源认证子模块可与上文类似地从域名证书颁发机构或者从本地获取第一区块链11的域名证书,从而可从该域名证书中获取第一区块链11的所有者的公钥。
然后,第一中继设备121执行步骤S206,通过身份认证子模块确定所述写入请求的签名是否为所述特定资源的所有者的签名。具体是,身份认证子模块在获取特定资源的所有者的公钥之后,使用公钥对所述写入请求的数字签名进行解密,并计算写入请求的哈希值,比较解密获取的数据与所述哈希值是否相同。如果相同,则可确定所述写入请求的签名是所述特定资源的所有者的签名,从而第一中继设备121可执行步骤S210,通过ACL表写入模块对所述ACL表进行写入。如果不同,则第一中继设备121将不会基于写入请求对ACL表进行写入,从而通过控制对ACL表的写入提高了第一区块链11的数据安全性。表1示出与第一区块链11对应的ACL表的示意图。
资源 |
区块链标识 |
访问方式 |
第一合约账户 |
域名2、域名4 |
调用 |
区块p,交易q |
域名2 |
读取 |
区块m |
域名3 |
读取 |
表1
如表1中所示,其中,“资源”一栏用于记录第一区块链11中的资源的标识,该资源例如包括区块数据、交易数据、智能合约等,“区块链标识”一栏用于记录被授权使用相应资源的区块链的标识,在表1中以区块链的域名作为区块链的标识,“访问方式”一栏用于记录相应资源的被授权的访问方式,该访问方式包括对合约的调用和对数据的读取等。具体是,假设第二区块链13的域名为域名2,则表1中记录了,对第二区块链13授权对第一区块链11中的第一合约的调用权限、以及对第一区块链11中的区块p中的交易q的读取权限。
可以理解,表1所示的访问控制表仅仅是示意性的,而不是限制性的。例如,区块链标识一栏中不限于记录区块链的域名,而可以记录其它用于唯一标识区块链的区块链标识,另外,访问控制表中不限于包括表1中所示的3栏,而是可以仅记录其中的一栏或两栏,例如,访问控制表中仅包括表1中的“资源”栏,这表示,对于所有的区块链都授权对第一合约的调用权限、对区块p中交易q、和区块m的读取权限。
在第一中继设备121对该ACL表写入对特定资源的访问权限之后,当第一区块链11的链下设备(例如第二区块链13的节点设备)通过第一中继设备121访问第一区块链11中的所述特定资源时,第一中继设备121将基于该ACL表中的与该特定资源对应的权限设置进行访问控制。
在一种实施方式中,所述写入请求中例如请求在ACL表中写入被授权对特定资源设置访问权限的账户标识,该账户标识例如为账户公钥或账户地址等。在该情况中,第一中继设备121在通过资源认证子模块和身份认证子模块确定所述写入请求的签名为所述特定资源的所有者的签名之后,在所述ACL表中写入对特定资源授权的账户标识。表2示出该实施方式中ACL表的示意图。
资源 |
区块链标识 |
访问方式 |
被授权账户 |
第一合约账户 |
|
|
abc456、cde352 |
区块p,交易q |
|
|
Dec678、ebc426 |
表2
在如表2所示的ACL表中,与表1不同的是,还包括被授权账户一栏,该被授权账户用于记录被授权在该ACL表中设置资源的访问权限的账户的账户公钥(表2中以abc456等示意示出)。可以理解,在表2中的被授权账户一栏不限于记录账户公钥,也可以记录账户地址。
在另一种实施方式中,第一中继设备121在执行步骤S206确定所述写入请求的签名不是资源所有者的签名之后,可执行步骤S208,确定所述签名是否为被授权账户的签名。具体是,第一中继设备121通过ACL表写入模块从ACL表中读取特定资源的被授权账户的账户公钥,使用该公钥对签名进行验证,从而确定所述签名是否为被授权账户的签名。在ACL表中记录了被授权账户的账户地址的情况中,第一中继设备121中的ACL表写入模块可基于该账户地址获取该账户对应的公钥,并使用公钥对签名进行验证。
如果ACL表写入模块确定所述签名是被授权账户的签名,例如,所述写入请求中包括对第一合约账户的访问权限的限定,则第一中继设备121基于所述写入请求通过ACL表写入模块在ACL表中写入如表1所示的与第一合约账户关联的区块链标识、访问方式等内容。如果通过执行步骤S208确定所述签名不是被授权账户的签名,则结束方法执行流程,不再对ACL表进行写入。
图3示出根据本说明书实施例的一种跨链访问控制方法流程图,所述方法例如由图1中的第一中继设备121执行,所述方法包括以下步骤S302-S310。
在该实施例中,所述写入请求包括签名指示字段,用于指示所述写入请求的签名是资源所有者的签名还是资源被授权账户的签名。第一中继设备121首先执行步骤S302,从发送者设备接收到对ACL表的写入请求及发送者对该写入请求的数字签名。之后,第一中继设备121执行步骤S304,在所述写入请求中读取签名指示字段。如果该签名指示字段指示所述签名为资源所有者的标识,即,所述写入请求由所述资源的所有者发送,则第一中继设备121与上文类似地执行步骤S306,确定资源的所有者,和步骤S308,确定所述签名是否为所述所有者的签名,以确定是否执行步骤S312,即确定是否对ACL表进行写入。如果该签名指示字段指示所述签名为被授权账户的签名,即,所述写入请求由被授权账户发送,则第一中继设备121与上文类似地执行步骤S310,以确定所述签名是否为被授权账户的签名,从而确定是否对ACL表进行写入。
用于执行上述方法的第一中继设备121可以为可信设备,或者可以包括可信执行环境(TEE),并在TEE中执行上述方法。写入请求的发送者(即资源所有者或者资源的被授权者)在通过其设备向第一中继设备121发送写入请求之前可首先对第一中继设备121中的TEE进行验证。具体是,发送者设备可向TEE发送验证请求。TEE在接收所述验证请求之后,基于其内部机制生成认证信息,并将该认证信息及TEE的硬件公钥发送给发送者设备。所述认证信息例如包括所述TEE的签名信息、硬件信息和软件信息等。其中,所述签名信息例如通过TEE的硬件密钥生成;所述硬件信息例如包括,各种硬件的指标,比如CPU主频,内存容量等等;所述软件信息包括各个程序的代码哈希值、代码名称、版本、运行日志等。如本领域技术人员所知,TEE可通过内存硬件执行对其中运行程序的“测量”,例如获取该程序的代码哈希值、该程序在特定执行点的内存占有的哈希值等等,并在所述认证信息中包括对所述程序的“测量”信息,由于该“测量”信息由该TEE自身实体(内存硬件)执行,而不涉及任何软件、操作系统,因此是真实可信的。发送者设备在接收到所述认证信息之后,可把所述认证信息发送给TEE的远程认证服务器,从而从所述服务器接收到对所述TEE的验证结果。所述验证结果包括所述TEE的身份验证、及对所述TEE内部执行程序的验证等等。从而,发送者设备基于该验证结果可确定TEE是可信的,TEE的处理结果是可信的。
当例如第二区块链13通过中继设备网络12向第一区块链11发送资源访问请求时,第一中继设备121可基于与第一区块链11对应的ACL表对该资源访问请求进行验证,以确定第二区块链13是否具备对所要求的资源的访问权限,并在验证通过之后,使用TEE私钥对该资源访问请求进行签名,并将该资源访问请求及TEE签名提供给第一区块链11。第一区块链11通过预先获取的TEE公钥验证该TEE签名,如果验证通过,可确定该资源访问请求已经经过第一中继设备121的访问权限认证,从而处理该资源访问请求。
图4示出根据本说明书实施例的一种跨链访问控制装置400,所述装置400部署于中继设备,所述中继设备与第一区块链连接,所述中继设备中预设有与所述第一区块链对应的访问控制表,所述装置400包括:
接收单元41,配置为,接收对所述访问控制表的写入请求及数字签名,其中,所述数字签名为所述写入请求的发送者对所述写入请求的数字签名,所述写入请求中包括所述第一区块链中的资源的标识和对所述资源的授权信息;
获取单元42,配置为,基于所述资源的标识获取用于验证所述数字签名的公钥;
验证单元43,配置为,使用所述公钥对所述数字签名进行验证;
写入单元44,配置为,在验证通过的情况中,在所述访问控制表中写入对所述资源的授权信息。
在一种实施方式中,所述获取单元42包括,确定子单元421,配置为,基于所述资源的标识确定所述资源的所有者,第一获取子单元422,配置为,获取所述所有者的公钥。
在一种实施方式中,所述资源的标识为智能合约的账户地址,所述确定子单元421还配置为,从所述智能合约的账户状态中读取所述智能合约的所有者的账户地址。
在一种实施方式中,所述资源的标识包括第一交易的标识,其中,所述确定子单元421还配置为,基于第一交易的标识从第一区块链中读取发送所述第一交易的账户地址。
在一种实施方式中,所述资源的标识包括第一区块的标识,其中,所述确定子单元421还配置为,基于第一区块的标识中包括的第一区块链的域名,获取所述第一区块链的域名证书。
在一种实施方式中,所述写入请求中包括所述资源的被授权账户的标识,所述被授权账户被授权在所述访问控制表写入所述资源的授权信息,其中,所述写入单元44还配置为,在所述访问控制表中写入所述资源的被授权账户的标识。
在一种实施方式中,所述获取单元42还包括,读取子单元423,配置为,在所述访问控制表读取相对于所述资源被授权的账户的标识,第二获取子单元424,配置为,基于所述被授权的账户的标识获取所述被授权的账户的公钥。
在一种实施方式中,所述中继设备中包括TEE,所述装置部署于所述TEE中。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过根据本说明书实施例的跨链访问控制方案,使得只有资源的所有者或者由资源所有者授权的账户才可以在ACL表中设置该资源的访问权限,从而保障区块链的数据安全性,通过在中继设备中由TEE执行根据本说明书实施例的方案,进一步保障了数据安全性。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。