Abstract. Predicate encryption is a new powerful cryptographic primitive which allows for fine-grained access control for encrypted data: the owner of the secret key can release partial keys, called tokens, that can decrypt only a specific subset of ciphertexts. More specifically, in a predicate encryption scheme, ciphertexts and tokens have attributes and a token can decrypt a ciphertext if and only if a certain predicate of the two associated attributes holds. In this paper, ciphertext attributes are vectors x of fixed length over an alphabet and token attributes, called patterns, are vectors y of the same length over the alphabet = { }. We consider the predicate Match(x, y) introduced by [BW06] which is true if and only if x = x1, . . . , x and y = y1, . . . , y agree in all positions i for which yi = . Various security notions are relevant for predicate encryption schemes. First of all, one wants the ciphertexts to hide its attributes (this property is called semantic security)...