我正在尝试使用 Charm Crypto库的cpabe功能。具体来说,我使用 abenc_bsw07 方案。
有没有办法定义比示例中更复杂的策略和属性:
attributes = ['ONE', 'TWO', 'THREE']
access_policy = '((four or three) and (three or one))'
我希望能够执行类似于cpabe(http://acsc.cs.utexas.edu/cpabe/tutorial.html)实现的内容。属性具有值,策略可以包含相等或更大/更小的关系。
如果它支持所需的功能,我也可以使用替代方案。
答案 0 :(得分:0)
政策表现有几种选择。一些ABE方案仅支持纯AND策略或纯OR策略。有些仅支持特定形式的政策,如CNF或DNF。
Bethencourt的CP-ABE支持具有阈值节点的策略树。不稳定的阈值节点足以实现数值属性,如果您想要一个示例,您可以查看libbswabe。
假设我们有四个属性A
,B
,C
和D=5
。阈值策略可能如下所示:2 of (A, B, C)
这意味着只需要列表中的2个或更多属性来实现策略并能够解密密文。 AND门(A AND B
)只不过是2 of (A, B)
而OR门(A OR B
)只不过是1 of (A, B)
。
A AND D<=24
等数字策略在解析时会导致相当大的策略树,因为数字属性以二进制编码,然后生成每个位位置的许多掩码。这是一项非常昂贵的操作(加密和解密)。
Charm不支持阈值策略。策略解析器(charm.toolbox.policytree
)略支持数字属性,但没有代码来处理属性集中的数字属性。还缺少用于创建位掩码属性的算法。
添加阈值门应该相当容易,但是有必要将二叉树更改为具有任意数量子节点的树(参见charm.toolbox.node
)。
这些变化并不复杂,但有点太多了。如果您有兴趣进行这些更改,您应该这样做。如果您设法在不破坏现有代码的情况下添加这些功能(运行魅力测试),您可以相当确定这些更改将合并到主数据库中。