Python 如何在Charm密码中设置配对组的顺序

Python 如何在Charm密码中设置配对组的顺序,python,cryptography,charm-crypto,Python,Cryptography,Charm Crypto,我正在尝试使用charm加密框架实现一个方案。为此,我需要限制配对组的顺序。文档中提到,所有配对组都是素数阶p。有没有办法设置和检索组的顺序 以下是一些初始化代码: from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair group = PairingGroup('SS512') # Way to limit order of this Group. g= group.random(G1) 不能任意限制组的顺序

我正在尝试使用charm加密框架实现一个方案。为此,我需要限制配对组的顺序。文档中提到,所有配对组都是素数阶p。有没有办法设置和检索组的顺序

以下是一些初始化代码:

from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair
group = PairingGroup('SS512') # Way to limit order of this Group.
g= group.random(G1) 

不能任意限制组的顺序,因为它是静态定义的。仅更改顺序将导致错误的计算结果。有关实际曲线/编组定义,请参见

Charm不提供随机生成组的API。你必须用其他的方法。您可以为不同类型的配对(、D、E、F、G)定义自己的双线性组,并通过以下方式加载它:

找到一条好的曲线是很困难的,所以这项任务不应该掉以轻心。或者,您可以使用符合您需求的现有曲线,但需要将其定义与PBC框架语法相适应。或者,您可以尝试使用MIRACL或遗迹组

称为SS512的双线性组的顺序为159位,因此您可以轻松生成大小类似的组,如下所示:

TypeACurveGenerator acg=新的TypeACurveGenerator(159512);
System.out.println(acg.generate().toString());

如果这个问题是关于在Charm中使用复合对,那么这当然是可能的,但是大多数(所有?)使用复合对的方案在素数顺序对组中不会发生变化。因为Charm主要是一个原型框架,所以这是可以接受的

如果需要复合顺序对,则需要使用A1类型对(PBC术语)。以下是随机生成的3素数复合顺序对,512位:

type a1 p 1670989300461616676020115835196624302572015979741737622588414172392006868526486484884570321557721963197638289051694226860029659217040445686227725866093025893199423787713616626672757609704165197428442342008003828808450677009862027725351326816526944993760066091035498153554504093779461048411316013603195971067672308536313762529018467620342707812387949408799890849708954393542918305728285021157211449323969172048055050509532384121122664412498844071023691473088832866379 n 609850109657524334313910888757892081230662766329101322112559916931389368075360030979770190349533563210816893814486944109499875626657096965776542286895264924525337148800590009734583069235096787382643190513870010514033093799219718147938440443987936129109513171910765749472446749554547827887341610804086120827617630852669256397451995481876900661455455988613098850258742479395225659024921540568325346468601887608779215514427877416468125697992278858037843603317092287 n0 8505241857674726137023630400543607424307642763093227742803963199629609197431754602210402024133058838940680654387728383432014899362154746576168888879287087 n1 6728838950500080306008250663471535622833113558890962570274290389468902237095474435002792009761303551917673603722453122814539738669387524716830981925740419 n2 10656051345714616867334012480608522414320097962876120231224626211497062700168731928194215198773439101914013339645791513272716800476458903122389271111043579 l 2740 使用会有风险。

这是我试图编写的语句:随机选取素数阶p的双线性群G,其中2^λ≤ P≤ 2^(λ+1),一个生成器g∈ G和α∈ RZP。如果您能指导我搜索符合上述标准的现有曲线,那就太好了。(或)实现此目的的lil bit详细过程。感谢您的及时回复。我不知道您的方案(您没有提供任何参考),但λ可能是安全参数。只需使用任何现有曲线。使用与其他所有人相同的双线性组没有(明显的)安全问题。如果您找不到符合预期安全参数的组,请使用可用工具(PBC/jPBC)生成该组。Charm似乎没有提供一种使用底层配对库随机生成组的方法。 type a1 p 1670989300461616676020115835196624302572015979741737622588414172392006868526486484884570321557721963197638289051694226860029659217040445686227725866093025893199423787713616626672757609704165197428442342008003828808450677009862027725351326816526944993760066091035498153554504093779461048411316013603195971067672308536313762529018467620342707812387949408799890849708954393542918305728285021157211449323969172048055050509532384121122664412498844071023691473088832866379 n 609850109657524334313910888757892081230662766329101322112559916931389368075360030979770190349533563210816893814486944109499875626657096965776542286895264924525337148800590009734583069235096787382643190513870010514033093799219718147938440443987936129109513171910765749472446749554547827887341610804086120827617630852669256397451995481876900661455455988613098850258742479395225659024921540568325346468601887608779215514427877416468125697992278858037843603317092287 n0 8505241857674726137023630400543607424307642763093227742803963199629609197431754602210402024133058838940680654387728383432014899362154746576168888879287087 n1 6728838950500080306008250663471535622833113558890962570274290389468902237095474435002792009761303551917673603722453122814539738669387524716830981925740419 n2 10656051345714616867334012480608522414320097962876120231224626211497062700168731928194215198773439101914013339645791513272716800476458903122389271111043579 l 2740