Example #1
0
def main():
    groupObj = PairingGroup('/Users/matt/Documents/charm/param/d224.param')
    hess = Hess(groupObj)
    chch = CHCH(groupObj)

    (mpk, msk) = chch.setup()

    _id = "*****@*****.**"
    (pk, sk) = chch.keygen(msk, _id)
    if debug:
        print("Keygen...")
        print("pk =>", pk)
        print("sk =>", sk)

    M = "this is a message! twice!"
    sig1 = hess.sign(mpk, sk, M)
    sig2 = chch.sign(pk, sk, M)
    sig = {'sig_hess': sig1, 'sig_chch': sig2}
    if debug:
        print("Signature...")
        print("sig1 =>", sig1)
        print("sig2 =>", sig2)

    assert verify(mpk, pk, M, sig, hess, chch), "invalid signature!"
    if debug: print("Verification successful!")
Example #2
0
def getUserGlobals():
	global groupObjUserFuncs, util

	if (groupObjUserFuncs == None):
		groupObjUserFuncs = PairingGroup('SS512')

	if (util == None):
		util = SecretUtil(groupObjUserFuncs, verbose=False)
Example #3
0
def main():
    # scheme designed for symmetric billinear groups
    grp = PairingGroup('SS512')
    n = 5 # total # of users
    
    ibe = IBE_Revoke(grp)
    
    ID = "*****@*****.**"
    S = ["*****@*****.**", "*****@*****.**", "*****@*****.**"]
    (mpk, msk) = ibe.setup(n)
    
    sk = ibe.keygen(mpk, msk, ID)
    if debug: print("Keygen...\nsk :=", sk)
    
    M = grp.random(GT)
    
    ct = ibe.encrypt(mpk, M, S)
    if debug: print("Ciphertext...\nct :=", ct)
    
    m = ibe.decrypt(S, ct, sk)
    assert M == m, "Decryption FAILED!"
    if debug: print("Successful Decryption!!!")
class Shamir:
    def __init__(self, secret):
        self.k = 3
        self.n = 4
        self.group = PairingGroup('SS512')
        self.s = SecretShare(self.group, False)
        self.sec = secret

    def getShares(self):
        shares = self.s.genShares(self.sec, self.k, self.n)
        print('\nShares: %s' % shares)
        self.K = shares[0]
        print('\nOriginal secret: %s' % self.K)
        return shares

    def recoverSecret(self, shares):
        y = {
            self.group.init(ZR, 1): shares[1],
            self.group.init(ZR, 2): shares[2],
            self.group.init(ZR, 3): shares[3]
        }
        secret = self.s.recoverSecret(y)
        assert self.K == secret, "Could not recover the secret!"
        print("Successfully recovered secret: ", secret)
Example #5
0
def main():
    groupObj = PairingGroup('../param/a.param')

    cpabe = CPabe_BSW07(groupObj)
    hyb_abe = HybridABEnc(cpabe, groupObj)

    access_policy = '((four or three) and (two or one))'
    message = "hello world this is an important message."
    if debug:
        print("Policy =>", access_policy)

    (pk, mk) = hyb_abe.setup()

    sk = hyb_abe.keygen(pk, mk, ['ONE', 'TWO', 'THREE'])

    ct = hyb_abe.encrypt(pk, message, access_policy)
    if debug: print("\nCiphertext: ", ct)

    rec_msg = hyb_abe.decrypt(pk, sk, ct)
    if debug: print("\n\nDecrypt...\n")
    if debug: print("Rec msg =>", rec_msg)
    assert message == rec_msg, "FAILED Decryption: message is incorrect"
    if debug: print("Successful Decryption!!!")
Example #6
0
from userFuncs_BSW import *
from toolbox.pairinggroup import PairingGroup, ZR, G1, G2, GT, pair
from toolbox.secretutil import SecretUtil
from toolbox.symcrypto import AuthenticatedCryptoAbstraction
from toolbox.iterate import dotprod2
from charm.pairing import hash as SHA1


def decout(partCT, zz, egg):
    input = [partCT, zz, egg]
    T0, T1, T2 = partCT
    R = (T0 / (T2**zz))
    s_sesskey = DeriveKey(R)
    M = SymDec(s_sesskey, T1)
    s = groupObj.hash([R, M], ZR)
    if (((((T0) == ((R * (egg**s))))) and (((T2) == ((egg**(s / zz))))))):
        output = M
    else:
        userErrorFunction('invalid ciphertext')
        return
    return output


if __name__ == "__main__":
    global groupObj
    groupObj = PairingGroup('SS512')

    (M) = decout(sys.argv[1], sys.argv[2], sys.argv[3])
    A2 = (pair(C[6], D[6]) * pair(C[7], D[7]))
    A3 = (A1 / A2)
    A4 = (pair((E1**tag), D[7]) * pair((E2**-tag), K))
    T2 = (A3 / A4)
    T0 = C[0]
    T1 = None
    partCT = [T0, T1, T2]
    output = partCT
    return output


def decout(partCT, zz):
    T0, T1, T2 = partCT
    return T0 / (T2**zz)


if __name__ == "__main__":
    global groupObj
    groupObj = PairingGroup('SS512')

    setup()
    id = "*****@*****.**"
    M = groupObj.random(GT)
    (zz, skBlinded) = keygen(id)
    ct = encrypt(M, id)
    partCT = transform(ct, skBlinded)

    orig_M = decout(partCT, zz)
    assert M == orig_M, "no balls on fire!!!!"
    print("Successful Decryption!")
	A1 = (pair(C[1], D[1]) * (pair(C[2], D[2]) * (pair(C[3], D[3]) * (pair(C[4], D[4]) * pair(C[5], D[5])))))
	A2 = (pair(C[6], D[6]) * pair(C[7], D[7]))
	A3 = (A1 / A2)
	A4 = (pair((E1 ** tag), D[7]) * pair((E2 ** -tag), K))
	T2 = (A3 / A4)
	T0 = C[0]
	T1 = None
	partCT = [T0, T1, T2]
	output = partCT
	return output

def decout(partCT, zz):
	T0, T1, T2 = partCT
	return T0 / (T2 ** zz)

if __name__ == "__main__":
	global groupObj
	groupObj = PairingGroup('SS512')

	setup()
	id = "*****@*****.**"
	M = groupObj.random(GT)
	(zz, skBlinded) = keygen(id)
	ct = encrypt(M, id)
	partCT = transform(ct, skBlinded)

	orig_M = decout(partCT, zz)
	assert M == orig_M, "no balls on fire!!!!"
	print("Successful Decryption!")

Example #9
0
        print('Trapdoor: %s for word: %s' %
              (self.group.hash(word, G1)**self.priv, word))
        return self.group.hash(word, G1)**self.priv

    '''	Test(A_pub,S,T_W): When the messaging server receives a 
   Test function from the legal authority as S=[A,B] it can test if H_2 (e(T_w,A))=B'''

    def Test(self, s, tw):
        a, b = s
        print(self.h1.hashToZn(str(pair(tw, a))))
        print(b)
        return self.h1.hashToZn(str(pair(tw, a))) == self.h1.hashToZn(str(b))


if __name__ == '__main__':
    group = PairingGroup('SS512')

    KEYWORD1 = "fishing"
    KEYWORD2 = "banana"

    time1 = time.time()
    pClient = PKS(group)
    time2 = time.time()
    print('%s function took %0.3f ms' % ("Initiating Pairing Groups",
                                         (time2 - time1) * 1000))

    time3 = time.time()
    pubKey = pClient.KeyGen()
    time4 = time.time()
    print('%s function took %0.3f ms' % ("Generating Keys",
                                         (time4 - time3) * 1000))
Example #10
0
        list = shares.keys()
        if self.verbose: print(list)
        coeff = self.recoverCoefficients(list)
        if self.verbose: print("coefficients: ", coeff)
        secret = 0
        for i in list:
            secret += (coeff[i] * shares[i])

        return secret

if __name__ == "__main__":

# Testing Secret sharing python API
  k = 3
  n = 4
  p = PairingGroup('SS512')

  s = SecretShare(p, True)
  sec = p.random(ZR)
  shares = s.genShares(sec, k, n)

  K = shares[0]
  print('\nOriginal secret: %s' % K)
  y = {1:shares[1], 2:shares[2], 3:shares[3]}

  secret = s.recoverSecret(y)

  if(K == secret):
    print('\nRecovered secret: %s' % secret)
  else:
    print('\nCould not recover the secret!')
 def __init__(self, secret):
     self.k = 3
     self.n = 4
     self.group = PairingGroup('SS512')
     self.s = SecretShare(self.group, False)
     self.sec = secret
Example #12
0
def getUserGlobals():
    global groupObjUserFuncs

    if (groupObjUserFuncs == None):
        groupObjUserFuncs = PairingGroup('SS512')
Example #13
0

def decout(partCT, zz):
    T0, T1, T2 = partCT['T0'], partCT['T1'], partCT['T2']
    R = (T0 / (T2**zz))
    print("Recov R :=", R)
    s_sesskey = SHA1(R)
    M = SymDec(s_sesskey, T1)
    s = groupObj.hash([R, M], ZR)
    output = M
    return output


if __name__ == "__main__":
    global groupObj
    groupObj = PairingGroup(MNT160)

    S = ['ONE', 'TWO', 'THREE']
    M = "balls on fire123"
    policy_str = '((four or three) and (two or one))'

    setup()
    (zz, skBlinded) = keygen(['ONE', 'TWO', 'THREE'])
    (ct) = encrypt(M, policy_str)

    (partCT) = transform(ct)

    writeToFile('partCT.txt', objectOut(groupObj, partCT))
    keys = {'sk': zz, 'pk': egg}
    writeToFile('keys.txt', objectOut(groupObj, keys))
    M = decout(partCT, zz)