10. A system for searching encrypted keywords, the system comprising: a memory; a database stored, at least in part, in the memory; and one or more processors, at least one of which is operatively coupled to the memory, the one or more processors configured to perform the steps of: generating a keyword; creating, at a data owner computing device, a plurality of different encrypted keywords corresponding to said generated keyword; storing said plurality of different encrypted keywords in said database using a data provider computing device, wherein the database is stored in the data provider computing device and storing the plurality of different encrypted keywords comprises sending the plurality of 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 plurality of 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 plurality of 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 the encrypted keywords in the database using the data provider computing device, wherein the first trapdoor causes a keyword-is-found result when the first trapdoor is compared to the plurality of different 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 using the data provider computing device wherein the second trapdoor causes a keyword-is-found result when the second trapdoor is compared to the plurality of different encrypted keywords for the generated keyword in the database stored on the data provider computing device.
10. A system for searching encrypted keywords, the system comprising: a memory; a database stored, at least in part, in the memory; and one or more processors, at least one of which is operatively coupled to the memory, the one or more processors configured to perform the steps of: generating a keyword; creating, at a data owner computing device, a plurality of different encrypted keywords corresponding to said generated keyword; storing said plurality of different encrypted keywords in said database using a data provider computing device, wherein the database is stored in the data provider computing device and storing the plurality of different encrypted keywords comprises sending the plurality of 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 plurality of 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 plurality of 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 the encrypted keywords in the database using the data provider computing device, wherein the first trapdoor causes a keyword-is-found result when the first trapdoor is compared to the plurality of different 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 using the data provider computing device wherein the second trapdoor causes a keyword-is-found result when the second trapdoor is compared to the plurality of different encrypted keywords for the generated keyword in the database stored on the data provider computing device. 18. The system of claim 10 , wherein the steps further comprise: 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.