1. A computer implemented method executed by one or more computing devices for searching encrypted keywords in a database, the method comprising: generating a keyword; based on the generated keyword, creating, at a data owner computing device, two or more different encrypted keywords corresponding to the generated keyword; storing the two or more different encrypted keywords for the generated keyword in the database, wherein the database is stored on a data provider computing device and storing the two or more different encrypted keywords comprises sending the two or more different encrypted keywords from the data owner computing device to the data provider computing device; generating, by the data owner computing device, a first trapdoor that matches at least one of the two or more different encrypted keywords stored in the database; generating, by the data owner computing device, a second trapdoor, different from the first trapdoor, that matches at least one of the two or more different encrypted keywords stored in the database; receiving, at the data owner computing device, a first request for a trapdoor for the generated keyword from a data user computing device; responsive to the first request, sending the first trapdoor from the data owner computing device to the data user computing device for use in searching of the encrypted keywords in the database, wherein the first trapdoor causes a keyword-is-found result when the first trapdoor is compared to the two or more encrypted keywords for the generated keyword in the database stored on the data provider computing device; receiving, at the data owner computing device, a second request for a trapdoor for the generated keyword from the data user computing device; and responsive to the second request, sending the second trapdoor from the data owner computing device to the data user computing device for use in searching the encrypted keywords in the database, wherein the second trapdoor causes a keyword-is-found result when the second trapdoor is compared to the two or more encrypted keywords for the generated keyword in the database stored on the data provider computing device.
9. The method as claimed in claim 1 , further comprising: verifying the first and second trapdoors using a function ê(N,K)=ê(J,L), where N=r·P 0 , K=y·P 0 , J=rH 1 (W)P 0 +rQ t , L=y·(H 1 (W)+s t ) −1 P 0 , where ê is defined as G 1 ×G 1 →G 2 , G1 is an additive cyclic group, G2 is a multiplicative cyclic group, r is a random number, H 1 is a hash function, W is the generated keyword, P 0 is a generator of the group G1, Q t is a public key, s t is a secret key, and y is a random number.