Ejemplo n.º 1
0
Archivo: PairEnc.py Proyecto: caixl/FYP
 def decrypt(self, sk, cipher_adjlist, query_attr_list):
     '''
     Decryption requires master_public_key, user secret key, and cipher
     '''
     res_graph = SymbolDiGraphLst(query_attr_list, AdjListDiGraph(len(query_attr_list)))
     
     for attr in query_attr_list:
         cipherlist = cipher_adjlist.get_list(attr)
         for node in cipherlist:
             candi = pair(node,sk['gas'][attr])
             for key in sk['g2at']:
                 if candi == sk['g2at'][key]:
                     res_graph.add_edge(attr,key)
     
     return res_graph
Ejemplo n.º 2
0
def testPairEnc_ct(nodes,E):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    encLists = list_graph.encrypt()
    #print sg
    return len(str(encLists))
Ejemplo n.º 3
0
Archivo: PairEnc.py Proyecto: caixl/FYP
    def decrypt(self, sk, cipher_adjlist, query_attr_list):
        '''
        Decryption requires master_public_key, user secret key, and cipher
        '''
        res_graph = SymbolDiGraphLst(query_attr_list,
                                     AdjListDiGraph(len(query_attr_list)))

        for attr in query_attr_list:
            cipherlist = cipher_adjlist.get_list(attr)
            for node in cipherlist:
                candi = pair(node, sk['gas'][attr])
                for key in sk['g2at']:
                    if candi == sk['g2at'][key]:
                        res_graph.add_edge(attr, key)

        return res_graph
Ejemplo n.º 4
0
def testPairEnc_keygen(nodes,E,attr_list):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    t0 = time.clock()
    list_graph.key_generation(attr_list)
    t1 = time.clock()
    return t1-t0
Ejemplo n.º 5
0
def testPairEnc_enc(nodes,E):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    t0 = time.clock()
    list_graph.encrypt()
    #print list_graph._enc_adjlist
    t1 = time.clock()
    return t1-t0
Ejemplo n.º 6
0
def testPairEnc_subgraph(nodes,E, vertices):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    enc_adjlist = list_graph.encrypt()
    t0 = time.clock()
    list_graph.subgraph(enc_adjlist, vertices)
    t1 = time.clock()
    return t1-t0
Ejemplo n.º 7
0
def testPairEnc_dk(nodes,E, A):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    dk = list_graph.key_generation(A)
    return len(str(dk))
Ejemplo n.º 8
0
def testPairEnc_pp(nodes,E):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    return len(str(list_graph._pk))
Ejemplo n.º 9
0
def testPairEnc_subgraph_size(nodes,E, vertices):
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    enc_adjlist = list_graph.encrypt()
    return len(str(list_graph.subgraph(enc_adjlist, vertices)))
Ejemplo n.º 10
0
def compare_dec_rt(N, E, K):
    nodes = []
    for i in xrange(0,N):
        nodes.append('v%d'%(i+1))
        
    attributes = []
    vertices = []
    policy = "("
    for i in xrange(0, K):
        if i!=0:
            policy+=" OR "
        policy+="v%dr"%(i+1)
        attributes.append('V%dR'%(i+1))  
        attributes.append('V%dC'%(i+1))  
        vertices.append('v%d'%(i+1))
    
    policy+=") AND ("
    
    for i in xrange(0, K):
        if i!=0:
            policy+=" OR "
        policy+="v%dc"%(i+1)
    
    policy+=")"
    
    sg = SymbolDiGraphMat(nodes, rand_E=E)
    
    cpabe_graph = CPABESymbolDiGraph(sg)
    cpabe_graph.setup()
    cpabeEncMat = cpabe_graph.encrypt()
    
    kpabe_graph = KPABESymbolDiGraph(sg)
    kpabe_graph.setup()
    kpabeEncMat = kpabe_graph.encrypt()
    
    sg = SymbolDiGraphLst(nodes,rand_E=E)
    list_graph = PairEncSymbolDiGraph(sg)
    list_graph.setup()
    pairEncList = list_graph.encrypt()
    
    
    cpabe_dk = cpabe_graph.key_generation(attributes)
    kpabe_dk = kpabe_graph.key_generation(policy)
    plist_dk = list_graph.key_generation(vertices)
    
    Q = 2
    subnodes = []
    for i in xrange(0, Q):
        subnodes.append('v%d'%(i+1)) 
    
    print "CPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testCPABE_dec(cpabe_graph._master_public_key, cpabe_dk, cpabeEncMat, subnodes))
    print "KPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testKPABE_dec(kpabe_dk, kpabeEncMat, subnodes))
    print "PAIRE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testPairEnc_dec( plist_dk, pairEncList, subnodes ))
    print ""
    
    Q = 4
    subnodes = []
    for i in xrange(0, Q):
        subnodes.append('v%d'%(i+1)) 
    
    print "CPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testCPABE_dec(cpabe_graph._master_public_key, cpabe_dk, cpabeEncMat, subnodes))
    print "KPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testKPABE_dec(kpabe_dk, kpabeEncMat, subnodes))
    print "PAIRE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testPairEnc_dec( plist_dk, pairEncList, subnodes ))
    print ""
    
    
    Q = 6
    subnodes = []
    for i in xrange(0, Q):
        subnodes.append('v%d'%(i+1)) 
    
    print "CPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testCPABE_dec(cpabe_graph._master_public_key,cpabe_dk, cpabeEncMat, subnodes))
    print "KPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testKPABE_dec(kpabe_dk, kpabeEncMat, subnodes))
    print "PAIRE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testPairEnc_dec( plist_dk, pairEncList, subnodes ))
    print ""
    
    
    Q = 8
    subnodes = []
    for i in xrange(0, Q):
        subnodes.append('v%d'%(i+1)) 
    
    print "CPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testCPABE_dec(cpabe_graph._master_public_key,cpabe_dk, cpabeEncMat, subnodes))
    print "KPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testKPABE_dec(kpabe_dk, kpabeEncMat, subnodes))
    print "PAIRE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testPairEnc_dec( plist_dk, pairEncList, subnodes ))
    print ""
    
    
    Q = 10
    subnodes = []
    for i in xrange(0, Q):
        subnodes.append('v%d'%(i+1)) 
    
    print "CPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testCPABE_dec(cpabe_graph._master_public_key,cpabe_dk, cpabeEncMat, subnodes))
    print "KPABE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testKPABE_dec(kpabe_dk, kpabeEncMat, subnodes))
    print "PAIRE with %d vertices and %d edges and %d queried subnodes %s s"%(N, E, Q, testPairEnc_dec( plist_dk, pairEncList, subnodes ))
    print ""
Ejemplo n.º 11
0
Archivo: PairEnc.py Proyecto: caixl/FYP
        subenc_adjlist = SymbolLinkedlists(vertices=vertices)
        for i in range(0, len(vertices)):
            for item in enc_adjlist.get_list(vertices[i]):
                subenc_adjlist.add_item(item, i)
        return subenc_adjlist


if __name__ == '__main__':
    pass
    '''Owner side'''

    nodes = []
    for i in xrange(0, 4):
        nodes.append('v%d' % (i + 1))

    sg = SymbolDiGraphLst(nodes, rand_E=10)
    print sg

    #encrypt graph
    list_graph = PairEncSymbolDiGraph(sg)
    t0 = time.clock()
    list_graph.setup()
    t1 = time.clock()
    cipher_adjlist = list_graph.encrypt()
    t2 = time.clock()
    print cipher_adjlist

    sk = list_graph.key_generation(['v2', 'v3'])
    t3 = time.clock()
    print sk