Charm-Crypto:在尝试序列化对象时得到<terminated,exit =“”value:=“”139 =“”>

时间:2016-05-06 12:50:46

标签: python encryption serialization charm-crypto

我正在使用Dabe scheme实施Charm,我需要在多个实体上共享公共参数。我尝试使用Charm附带的序列化API中的 objectToBytes ()函数序列化包含这些参数的charm对象,但我的脚本以退出代码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中运行调试模式并进入我的代码,问题似乎出现在PairingGroup类定义中的 serialize ()函数中,该函数返回序列化()(编译)函数从charm.core.math.pairing导入。

以前有人遇到过这个问题吗?关于如何在多个脚本上使用(导入)魅惑对象的任何建议?
谢谢

1 个答案:

答案 0 :(得分:1)

GP或public_parameters是一个由'g'组成的字典,它是一个pairing.Element对象,'H'是一个lambda映射到一个哈希函数(随机oracle)。可能是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的论文。