追加ポリシー機能
ポリシーの表現性にはいくつかのオプションがあります。一部のABEスキームは、純粋なANDポリシーまたは純粋なORポリシーのみをサポートします。 CNFやDNFなど特定の形式のポリシーのみをサポートするものもあります。
BethencourtのCP-ABEは、しきい値ノードを持つポリシーツリーをサポートしています。ネスト可能なしきい値ノードで数値属性を取得するには十分であり、その例が必要な場合はlibbswabeを調べることができます。
A
,B
,C
およびD=5
という4つの属性があるとします。しきい値ポリシーは次のようになります。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
のような数値ポリシーでは、数値属性が2進数でエンコードされ、各ビット位置の多くのマスクが生成されるため、かなり大きなポリシーツリーが生成されます。これは非常に高価な操作(暗号化と復号化)です。
チャームは
チャームがしきい値ポリシーをサポートしていません。ポリシーパーサー(charm.toolbox.policytree
)少しは数値属性をサポートしていますが、属性セットの数値属性を処理するコードはありません。ビットマスク属性を作成するアルゴリズムも欠落しています。
しきい値ゲートを追加するのは簡単ですが、バイナリツリーを任意の数の子ノードを持つツリーに変更する必要があります(charm.toolbox.node
参照)。
変更は複雑ではありませんが、多すぎるでしょう。あなたがこれらの変更を行うことに興味があるなら、あなたはすべきです。既存のコードを壊さずにこれらの機能を追加することができれば(魅力テストを実行する)、これらの変更がマスターにマージされることは間違いありません。
こんにちは、フィードバックありがとうございます。我々は最終的にデフォルトのものの上に座るより高いレベルのポリシー表現を実装することを選択しました。それは実際に働いています。 –