Patent ID: 8577029

Claim:
A computer system comprising: a database server comprising a publisher configured to publish an encrypted form of a database, the database comprising at least one record with an associated index and a list of access-control attributes for each record; at least one user of the database; an Issuer configured to provide a credential for each access-control attribute of the database, which is assigned to the at least one user; wherein said computer system comprises: a memory storage device, a processor device; said processor device associated with said memory storage device and configured to perform a method to encrypt a database, said method comprising: generating an encryption key for a record such that the encryption key is derived from at least the index of the record and the access-control attributes and a secret key of the database server, wherein to generate said encryption key, said processor device is configured to use an algorithm comprising: ⁢ g , h ⁢ ← $ ⁢ G 1 * ; h DB ⁢ ← $ ⁢ G 2 * ; H ← e ⁡ ( g , h DB ) ⁢ x e , x DB ⁢ ← $ ; y e ← g x e ; y DB ← g x DB π setup = ( GSProve ⁡ ( CRS , y e = g x e , y e , g , x e ) , GSProvePPE ⁡ ( CRS , H , g , h DB ) ) For ⁢ ⁢ i = 1 , … ⁢ , l + 1 ⁢ ⁢ do x i ⁢ ← $ ; y i ← g x i sk DB ← ( h DB , x e , x DB , x 1 , … ⁢ , x l + 1 ) ; pk DB ← ( g , H , h , y e , y DB , y 1 , … ⁢ , y l + 1 , π k ) encrypting a database record with the encryption key; encrypting the access-control attributes, which comprises a generator configured to generate a non-interactive zero-knowledge proof that the access-control attributes were correctly encrypted; wherein the publisher is being responsive to the database encryptor.