0

チャームを使用してDabe スキームを実装しており、複数のエンティティでパブリック パラメーターを共有する必要があります。チャームに付属のシリアライゼーション API でobjectToBytes () 関数を使用して、これらのパラメーターを含むチャーム オブジェクトをシリアライズしようとしていますが、スクリプトが終了コード 139 で終了しました 。コードは次のとおりです。

from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair
from charm.toolbox.secretutil import SecretUtil
from charm.toolbox.ABEncMultiAuth import ABEncMultiAuth
from charm.core.engine.util import objectToBytes, bytesToObject
from charm.core.math.pairing import hashPair as extractor
from charm.schemes.dabe_aw11 import Dabe

# Global Setup
group = PairingGroup('SS512')
dabe = Dabe(group)
public_parameters = dabe.setup()  # GP

# Trying to serialize public_parameters but...
# ...the following instruction causes the script <terminated, exit value: 139>
GP = objectToBytes(public_parameters, group)

Eclipse でデバッグ モードを実行し、自分のコードにステップ インしました。問題はクラス定義に存在する serialize ()関数にあるようです。 PairingGroupcharm.core.math.pairing

誰もこの問題に遭遇したことがありますか? 複数のスクリプトでチャーム オブジェクトを使用 (インポート) する方法について何か提案はありますか?
ありがとうございました

4

1 に答える 1

1

GP または public_parameters は、pairing.Element オブジェクトである「g」と、ハッシュ関数 (ランダム オラクル) へのラムダ マッピングである「H」で構成される辞書です。objectToBytes と後続の関数がラムダ マッピングをシリアル化しようとして、エラーが発生している可能性があります。

PairingGroup.serialize() 関数をテストしましたが、pairing.Element オブジェクトに対して機能します。私の理解では、実際に共有する必要があるのは「g」値だけです。「H」は固定グループ内の単なるハッシュ マッピングです。Charm の場合、dabe_aw11.py の場合は常に H = lambda x: group.hash(x, G1) であり、G1 は charm.toolbox.pairinggroup から取得されます。したがって、いつでもラムダ マッピングを定義して、定数の共有 'g' を追加するか、単に setup() を呼び出して ('g' を選択し、'H' マッピングを定義します)、以前に選択したものを 'g' に置き換えることができます。 /共有のもの。目標は、public_parameters 辞書から「g」をシリアル化し、そこにある「H」をスキップすることです。

これは、博士号の概念実証で私がここで試みているオプションです。dabe_aw11を利用した論文。

于 2016-05-11T16:58:27.133 に答える