我正在尝试使用 charm加密库库的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(实现的事情。那里的属性具有价值,策略可以包含平等或更大/较小的关系。
我也可以使用替代方案,如果它支持所需的功能。
附加策略功能
政策表达有多种选择。一些安倍晋三计划仅支持纯净和纯粹或纯粹或policies。一些仅以特定形式的支持政策,例如CNF或DNF。
Bethencourt的CP-ABE支持具有阈值节点的政策树。可嵌套阈值节点足以实现数值属性,如果您想要一个示例,则可以查看libbswabe。
假设我们有四个属性A
,B
,C
和D=5
。阈值策略可能看起来像这样:2 of (A, B, C)
,这意味着只有2个或更多属性从列表中符合策略并能够解密密文。一个和栅极(A AND B
(不过是 2 of (A, B)
,一个或门( A OR B
(不过是 1 of (A, B)
。
数值策略(例如A AND D<=24
(在解析时会导致相当大的策略树,因为数值属性是用二进制编码的,然后生成了每个位置的许多掩码。这是一个非常昂贵的操作(加密和解密(。
魅力功能
魅力不支持阈值策略。策略解析器(charm.toolbox.policytree
(稍微支持数值属性,但是没有代码可以处理属性集中的数值属性。也缺少创建bitMask属性的算法。
应该很容易添加阈值门,但是有必要将二进制树更改为具有任意数量的子节点的树(请参阅charm.toolbox.node
(。
更改并不复杂,但这有点太多了。如果您有兴趣进行这些更改,则应进行。如果您设法添加了这些功能而不破坏现有代码(运行魅力测试(,则可以肯定地确定这些更改将被合并到主。