-2

CP-ABEスキームを理解するためにCharm-Cryptoを使用しています。私はこのスキームをテストしています: CPabe_BSW07Test。これはコードです:

from charm.schemes.abenc.abenc_bsw07 import CPabe_BSW07
from charm.toolbox.pairinggroup import PairingGroup,GT
import unittest
class CPabe_BSW07Test(unittest.TestCase):
    def testCPabe_BSW07(self):    
        groupObj = PairingGroup('SS512')

        cpabe = CPabe_BSW07(groupObj)

        attrs = ['ONE', 'TWO', 'THREE']
        access_policy = '((four or three) and (three or one))'
        if debug: 
            print("Attributes =>", attrs); print("Policy =>", access_policy)

        (pk, mk) = cpabe.setup()

        sk = cpabe.keygen(pk, mk, attrs)

        print (groupObj)

        rand_msg = groupObj.random(GT) 
        if debug: print("msg =>", rand_msg)
        ct = cpabe.encrypt(pk, rand_msg, access_policy)
        if debug: print("\n\nCiphertext...\n")
        groupObj.debug(ct) 

        rec_msg = cpabe.decrypt(pk, sk, ct)
        if debug: print("\n\nDecrypt...\n")
        if debug: print("Rec msg =>", rec_msg)

        assert rand_msg == rec_msg, "FAILED Decryption: message is incorrect"
        if debug: print("Successful Decryption!!!")

if __name__ == "__main__":
    unittest.main()

秘密鍵のビット長を計算する方法を知りたいです。式は知っていますが (この論文では BSW )、それが正しいかどうかを確認したいと思います。たとえば、512 ビットで定義された曲線があり、10 個の属性がある場合、キーのビット長は (2*10+1)*512=10752 ビットです。

4

2 に答える 2

0

実用的な方法は、秘密鍵を生成し (keygen)、シリアライズしてから、len() でビット長をカウントすることです。

于 2016-06-27T18:30:50.390 に答える