Patent ID: 8572370

Claim:
A method for providing data access for a client on shared storage with a unique address, the method comprising the steps of: (A) data preparation and distribution on a shared server, including (i) generating a pair of encryption/decryption keys; (ii) on the client, selecting plaintext data to be stored on the shared storage; (iii) on the server, preparing server data need to run a server program, and embedding the encryption/decryption key pair into the server data; (iv) encrypting the plaintext data into cyphertext data using an encryption key from the pair; (v) storing the cyphertext data on the shared storage; (vi) receiving the unique address of the stored cyphertext data inside the shared storage for direct access of the encrypted data from the client; (vii) storing the encryption/decryption key pair on the client; (B) data utilization on the shared server, including (i) running a server program that utilizes the cyphertext data and the server data and communicates with the client program using the cyphertext data; (ii) for accessing the cyphertext data from the client, using the unique address to directly obtain data from the shared storage by client, without authentication, and using a decryption key from the encryption/decryption key pair to decrypt the cyphertext data; (iii) for providing the cyphertext data from the shared server to the client, using an embedded key pair to encrypt the plaintext data, and storing it in the shared storage, wherein the client accesses the cyphertext data without authentication; (C) data utilization on the client, including (i) starting a client program that accesses the shared storage without authentication, sends requests to the shared storage, and receives responses from the shared storage, wherein: (ii) in response to a read request from the client program to the server program, directly obtaining a portion of the cyphertext data from the shared storage by sending a request with offset/size parameters using the unique address, and decrypting cyphertext data using the decryption key from the encryption/decryption pair; (iii) in response to a write request from the client program, encrypting a portion of the plaintext data using the encryption key from the encryption/decryption key pair, and storing the cyphertext data by sending the write request with offset/size parameters using the unique address.