1. A computer implemented method of transmitting data using a computer with a processor, comprising: receiving, with the processor, a set of attributes S in an access structure A, a master public key that includes a lattice B generated for the set of attributes S and a vector y generated for the set of attributes S, as well as a master secret key that includes a trapdoor lattice T generated for the set of attributes S, wherein the access structure A identifies a type of information that can be decrypted by an entity having the set of attributes S in the access structure A; generating, with the processor, a user secret key for the set of attributes S in the access structure A, the user secret key comprising a vector e that satisfies a reconstruction function for lattice B, given vector y by; outputting, with the processor, the user secret key by secret sharing the vector y with the reconstruction function for lattice B for use in decrypting a message m encrypted, using the master public key, to the set of attributes S in the access structure A; generating values for the vector e that satisfy the reconstruction function eB=y for a given attribute, where eB is a multiplication of vector e with lattice B; receiving the message m, a subset of the attributes S to which message m is to be encrypted, and the master public key; selecting a random vector s; and encrypting the message m to the subset of attributes S using the master public key and the random vector s.