0

我正在使用 Charm Crypto Library Charm实施基于椭圆曲线的论文 CPABE中提出的 CPABE 方案。我已经正确编写了设置函数,但是在生成不同多项式的 KeyGen、Encrytp 和 Decrypt 函数中遇到问题。对此有何建议?

我假设属性 Universe 和用户属性分别为 10 和 5 个属性,如下所示:

 attrs_universe = ['ONE', 'TWO', 'THREE',  'FOUR', 'FIVE', 'SIX',  'SEVEN', 'EIGHT', 'NINE', 'TEN']

 user_attrs = ['ONE', 'TWO', 'THREE', 'FOUR',  'FIVE']

以下是 Setup 和 KeyGen 的代码:

设置

@Output(pk_t, mk_t)    

  def setup(self,  U):

        g, h,  sec  = group.random(G1), group.random(G1),  group.random(G1)
        alphaZ, k1Z ,  k2Z= group.random(ZR), group.random(ZR),  group.random(ZR)
        # initialize pre-processing for generators ,  'H':group.hash
        g.initPP(); h.initPP()
        P_i, U_i,  V_i = {}, {},  {}
        for attr in U:
            P_i[attr] = g * ( group.hash(attr, G1)  **  alphaZ )
            U_i[attr] = P_i[attr]  * k1Z
            V_i[attr] = P_i[attr]  * k2Z

        pk = { 'g':g, 'h':h, 'Pi':P_i, 'Ui':U_i, 'Vi':V_i,  'U':U, 'sec':sec }
        mk = {'alphaZ':alphaZ, 'k1Z':k1Z, 'k2Z':k2Z }
        return (pk, mk)

KeyGen KeyGen 考虑所有不在用户属性集中的属性,并在 (attrs_universe - user_attrs) 集上生成多项式

  @Input(pk_t, mk_t, [str])
        @Output(sk_t)
        def keygen(self, pk, mk, S):
            prodPolyKG =1
            ru = group.random(G1)
            tu = group.random(G1)

            for attr in S:
                tempPolyKG = pk['h']  + group.hash(attr, G1) 
                prodPolyKG = prodPolyKG * tempPolyKG
            prodPolyKG_invert = 1/prodPolyKG

            # Computing su
            #k2ruInvert = 1/ (mk['k2Z'] * ru)
            k2ru = mk['k2Z'] * ru
            suTemp =   prodPolyKG_invert - k2ru 
            suTemp1 = 1/mk['k1Z']
            su = suTemp * suTemp1

            #Computing u1 and u2
            u1Temp = mk['k1Z'] * tu
            u1 = ru + u1Temp
            u2Temp =  mk['k2Z'] * tu
            u2 = su - u2Temp

            #sk = { 'poly':prodPolyKG, 'polyInvert':prodPolyKG_invert,'k2':k2ru, 'su':su , 'u1':u1,  'u2':u2,  'S':S }
            sk = { 'u1':u1,  'u2':u2,  'S':S }
            return (sk)
4

0 回答 0