[0007] 本发明主要针对目前存在的使用访问令牌进行访问控制的方案中的不足,提供的一种基于区块链的资源访问令牌分发和资源使用监控方法。
[0008] 本发明包括访问交易格式、访问令牌的安全分发、访问令牌的撤销、内容访问的监控以及使用Cuckoo filter的快速检索。本发明基于区块链交易实现访问令牌安全分发和资源使用的有效监控,可以适用于任何使用访问令牌(或访问凭证)的访问控制系统,其结构如图1所示,具体实现过程如下:
[0009] 步骤1、设置访问交易格式
[0010] 在区块链中,每个交易都由三部分组成:交易标识(Tid)、交易的输入数组Tin[]和交易的输出数组Tout[]。而在本发明中,我们增加了一个新的字段:交易类型(Ttype),以便于快速查找某一交易记录而无需遍历整个区块链,而其中交易类型包括授予(Grant)、分享(Share)、委托(Delegate)、撤销(Revoke)和访问(Access),可表示为Ttype∈{Grant,Share,Delegate,Revoke,Access}。因此,本发明中访问交易TTtype的交易格式用公式表示如公式(1)所示:
[0011]
[0012] 在公式(1)中,PKi,PKj分别表示交易的创建者和接收者地址;Tpre表示访问令牌(AccToken)的上一次交易;是一个输入脚本,用于获取之前交易的访问令牌; 是一个输出脚本,给出获取交易TTtype中所分发的访问令牌的条件。为了更加清晰的阐述,本发明的访问交易格式也可如表1所示。
[0013] 表1访问交易TTtype
[0014]
[0015] 在表1中,body包括Tpre,Ttype,AccToken,PKCQ;σ表示内容提供者对该访问交易的签名。如果该访问交易是一个初始交易,那么它的输入交易为空,可用φ表示。
[0016] 步骤2访问令牌的安全分发
[0017] 本发明根据不同的访问需求设计了3种访问令牌的分发方式,并以区块链交易的形式进行访问令牌分发,分别为:访问令牌的授予(Grant)交易、访问令牌分享(Share)的交易和访问令牌的委托(Delegate)交易。
[0018] 2-1访问令牌的授予(Grant)交易
[0019] 当内容提供者第一次响应内容请求者的访问请求时,内容提供者将访问令牌以授予访问令牌交易的方式分发给内容请求者,访问令牌的授予的详细过程如图2所示,具体过程如下:
[0020] (1)内容请求者通过网络发送访问请求(可以带一些身份标识数据,具体根据所用的访问控制模型)。
[0021] (2)内容提供者接收该请求,身份认证通过之后为该请求者生成访问令牌。
[0022] (3)内容提供者根据该访问令牌生成访问令牌的授予交易TGrant如下所示:
[0023]
[0024] 在式子(2)中,TGrant是访问令牌AccToken的初始交易,因而它的Tpre和 都为空,可以记作φ。TGrant用于访问令牌的授予,所以它的访问类型为Grant。
[0025] (4)该访问令牌的授予交易将被广播到区块链中。
[0026] (5)矿工根据共识协议验证交易的有效性,若有效则写入区块链中转入到步骤(7),否则拒绝进行步骤(6)。
[0027] (6)若交易被拒绝,将会通知内容请求者,内容请求者可再次发送请求。
[0028] (7)内容请求者使用自身的私钥SKCQ从区块链中获取访问令牌。
[0029] 而访问令牌的分享(Share)交易和委托(Delegate)交易中,交易的广播和矿工验证方式以及访问令牌的获取方式和1-2相同,将不再赘述。
[0030] 2-2访问令牌的分享(Share)交易
[0031] 当内容请求者B通过访问令牌授予交易从内容提供者A获取访问令牌之后,如果内容请求者B拥有访问令牌的分享权限,B还可以将该访问令牌分享给其他请求者(例如请求者C),此时内容请求者B也被称为分享者B,如图3所示。而分享者B可以通过访问令牌的分享交易Tshare将访问令牌分享给请求者C,分享交易Tshare如下所示:
[0032]
[0033] 在式子(3)中,Tpre是内容提供者A授予分享者B的访问令牌授予交易TGrant,PKB,PKC分别表示分享者B和请求者C的地址。
[0034] 2-3访问令牌的委托(Delegate)交易
[0035] 访问令牌的委托交易用于处理当内容提供者A需要将该访问令牌通过该内容请求者D委托给第三方请求者C的情况,而此时内容请求者D也被称为委托者D,如图4所示。此过程首先内容提供者A通过令牌授予交易TGrant将访问令牌分发给委托者D,然后委托者D生成访问令牌的委托交易Tdelegate,通过Tdelegate将访问令牌委托给第三方请求者C,Tdelegate如下所示:
[0036]
[0037] 在式子(4)中,Tpre是内容提供者A授予委托者D的访问令牌授予交易TGrant,PKD,PKC分别表示委托者D和第三方请求者C的地址。注意:委托者D有仅只有一次可以把内容委托给第三方请求者C。
[0038] 步骤3访问令牌的撤销
[0039] 访问令牌的撤销可以分为两种情况:一是访问令牌的过期失效;二是在有效期内访问令牌的创建者主动撤销访问令牌。对于情况一:任何访问令牌的验证者都可以对已过期的访问令牌进行撤销;对于情况二:如果某一用户想要撤销由他自己授予、分享或委托的访问令牌,他可以生成访问令牌撤销交易Trevoke,如下所示:
[0040]
[0041] 在式子(5)中,Tpre表示该访问令牌上一次的交易,PKuser表示启动该访问令牌撤销的用户的地址,输出地址和输出交易都设置为空(可以φ表示)是为了确保已撤销的访问令牌不再在区块链上传输。
[0042] 步骤4内容访问的监控
[0043] 内容请求者B使用已签名的访问令牌AccToken||σ向内容提供者A发送请求以访问内容,内容提供者A先验证内容请求者B的访问令牌,之后为B提供内容同时A将生成内容访问交易Taccess,如图5所示。访问令牌的验证过程(见图6)具体步骤如下所示:
[0044] 4-1.令牌签名验证,A使用内容请求者B的公钥进行签名验证,若验证失败拒绝访问,否则继续验证。
[0045] 4-2.时间验证,A验证访问令牌是否已过期,若是拒绝访问,否则继续验证。
[0046] 4-3.撤销验证,A在区块链上检索该访问令牌的撤销交易,若存在说明该访问令牌已被撤销,拒绝访问,否则继续验证。
[0047] 4-4.授予验证,A在区块链上检索该访问令牌的授予交易,若存在说明该访问令牌是合法令牌,可以为内容请求者B提供内容。
[0048] 如果内容请求者B通过以上的验证,A将为B提供访问内容之后将生成一个关于B使用该访问令牌的内容访问交易Taccess,如下所示:
[0049]
[0050] 在式子(6)中,Tpre表示该访问令牌上一次的交易,输出数组Tout[]中的AccToken||access表示所使用的访问令牌和对应的内容访问操作。
[0051] 在本发明中,涉及访问令牌的所有操作都以交易的形式记录在区块链上。这些操作包括访问令牌的分发(授予、分享和委托),使用访问令牌的内容访问操作以及访问令牌的撤销,这将组成一个全面的内容提供者的资源使用监控。内容提供者想要追责或者查询自己内容的访问情况都可以通过查找区块链获取,而区块链的防篡改特性也保证了资源使用监控的正确性。
[0052] 步骤5使用Cuckoo filter的快速交易检索
[0053] 为了提高区块链中交易记录的检索效率,本发明引入了Cuckoo filter。Cuckoo filter是一种高效的数据结构,支持动态添加和删除条目比Bloom filter拥有更好的检索性能和更少的空间使用率。一个Cuckoo filter由多个桶组成,而其中一个桶可以由多个实体,而每个实体存储一个指纹。对于添加条目x,先使用哈希函数计算两个候选桶b1和b2的索引如下所示(其中fingerpr int(x)是hash(x)的最低k bits,M表示桶的数量):
[0054]
[0055] 如果候选桶中有空桶,将fingerpr int(x)保存到空桶中,否则,只需选择一个候选存储桶,删除它现有的条目,然后将此条目重新插入其候选桶中,重复该过程直到找到空桶或超过最大位移数。在Cuckoofilter中的查找过程是先给定条目x,然后根据式子(7)计算fingerpr int(x)和两个候选桶,最后遍历两个候选桶,如果任一桶中的任何现有指纹匹配,返回true,否则返回false。在Cuckoo filter中删除条目过程为,先检查给定项x的两个候选桶,如果fingerpr int(x)匹配任意一个候选桶中的条目,从该桶中删除该匹配fingerpr int(x)的一个副本。
[0056] 在本发明中,我们分别为已授予的访问令牌和已撤销的访问令牌构建Cuckoo filter,分别记作CFg,CFinv。当矿工验证一个访问令牌授予交易成功后,他将该令牌的哈希H(AccToken)添加到CFg同时将该交易写入区块链;而当矿工验证一个访问令牌撤销交易成功后,他只需从CFg中删除H(AccToken)并将H(AccToken)添加到CFinv同时将该交易写入区块链。这将提高用户在访问令牌验证过程的验证效率,用户无需再检索整个区块链以实现访问令牌的有效性验证,只需查询CFg,CFinv就可实现。
[0057] 本发明有益效果如下:
[0058] 本发明提高用户在访问令牌验证过程的验证效率,用户无需再检索整个区块链以实现访问令牌的有效性验证,只需查询CFg,CFinv就可实现。
[0059] 本发明基于区块链,交易实现访问令牌安全分发和资源使用的有效监控,可以适用于任何使用访问令牌(或访问凭证)的访问控制系统。
[0060] 发明通过令牌撤销(Revoke)交易实现访问令牌的撤销,以增强了访问控制的安全性。
[0061] 本发明引入了Cuckoo filter提高了访问令牌的验证效率,从而提高整个系统的访问效率。
[0062] 综上所述,在本发明中,访问令牌的分发、使用以及撤销都以交易的形式记录在区块链上,这将形成一个全面的资源使用监控,而区块链的防篡改特性也确保这个监控的正确性。