0

我正在使用Charm实施Dabe 方案,我需要在多个实体上共享公共参数。我正在尝试使用Charm 附带的序列化 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 是由“g”组成的字典,它是一个 pairing.Element 对象,和“H”,它是一个到哈希函数(随机预言)的 lambda 映射。objectToBytes 和后续函数可能会尝试序列化 lambda 映射并导致错误。

我已经测试了 PairingGroup.serialize() 函数,它确实适用于 pairing.Element 对象。据我了解,“g”值实际上是您唯一需要分享的值。'H' 只是固定组内的哈希映射:在 Charm 的情况下,对于 dabe_aw11.py,它始终是 H = lambda x: group.hash(x, G1),其中 G1 来自 charm.toolbox.pairinggroup。因此,您始终可以定义 lambda 映射并添加常量、共享的“g”,或者只调用 setup()(它选择“g”并定义“H”映射)并将“g”替换为先前选择的/共享一个。目标是从 public_parameters 字典中序列化“g”,跳过那里的“H”。

这是我在博士概念验证中尝试的选项。使用 dabe_aw11 的论文。

于 2016-05-11T16:58:27.133 回答