System and method of sending and receiving secure data with a shared key

A server computer sends and receives secure data provided by authorized users. The data is secured by encrypting and decrypting the data with a key that is shared between the users and the server computer. As the server computer receives a user's encrypted data, the server computer decrypts the data using the user's shared key stored in a database on the server. The server computer can then process the data according to the user's instructions, this could include securely storing the data for retrieval by another user, processing the data, and/or securely sending the data to a second user by encrypting the data with the user's shared key.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to computer security and more specifically to allow the secure transfer and receipt of data between computers.

2. Description of the Prior Art

In order to securely transfer data between computers on the Internet, various different types of encryption/decryption methods are used. One way of securely transferring data over the Internet includes the use of a public key/private key system.

A public key is provided by some designated authority as a key that, combined with a private key derived from the public key, can be used to effectively encrypt and decrypt messages and digital signatures.

In public key cryptography, a public and private key are created simultaneously using the same algorithm (a popular one is known as RSA) by a certificate authority. The private key is given only to the requesting party and the public key is made publicly available (as part of a digital certificate) in a directory that all parties can access. The private key is never shared with anyone or sent across the Internet. The private key is used to decrypt text that has been encrypted with the public key counterpart by someone else who has the public key.

Public key cryptography generally requires a large mathematical decomposition in order to work effectively. Generally, the length of a private key is in the order of 64 bytes. Decomposing these relatively small private keys requires considerable computational power. Public key cryptography is generally used as a one-way encryption and if a private key is changed, then everyone else that has the public key counterpart must receive a new public key.

Thus, it would be desirable to provide a system and method of securing data that is easy to use, does not require a public/private key, allows for a larger private key for more security, uses less computation power than public key cryptography, and can be used in two directions.

SUMMARY OF THE INVENTION

A system and method is provided for sending and receiving secure data. The data is secured by encrypting and decrypting the data with a key that is shared between authorized users and the server computer. As the server computer receives a user's encrypted data, the server computer decrypts the data using the user's shared key stored in a database on the server. The server computer can then process the data according to the user's instructions, this could include securely storing the data for retrieval by another user, processing the data, and/or securely sending the data to a second user by encrypting the data with the second user's shared key.

DETAILED DESCRIPTION OF THE INVENTION

Referring now toFIG. 1, a schematic diagram illustrates a server100used to receive encrypted data from a sending client computer102and transmit encrypted data to a receiving client computer104through the Internet106using shared private keys. The sending client102and receiving client104share their own private key with the server100, but do not share their private keys with anyone else.

FIG. 2is a block diagram of the server computer100shown in FIG.1. Server100includes a CPU202, a RAM204, a non-volatile memory206, an input device208, a display210, and an Internet interface212for providing access to the Internet.

FIG. 3is a block diagram of one embodiment of the non-volatile, memory module206located within the server computer100of FIG.2. The non-volatile memory206includes a private server key302, a database of user private keys304, an encrypt/decrypt engine306, a web server engine308containing web page forms310, and a secure data database312for storing encrypted data. The private server key302is known only to the server and is not shared with anyone. The database of user private keys304includes the private keys of registered users. Each private key of a registered user is shared only with the server and not with other users.

The encrypt/decrypt engine306is programmed to encrypt and decrypt data using a password or a key. Excellent results can be obtained when using the blowfish algorithm for encryption and decryption. Other types of symmetric key encryption/decryption algorithms can also be employed within the encrypt/decrypt engine306. The computation power required to encrypt and decrypt data using a single key is much less than the computational power required in a public/private key system, therefore longer keys can be used to provide an extremely high-level of security.

FIG. 4is a block diagram of a sending client computer102or a receiving client computer104shown in FIG.1. Client102,104includes a CPU402, a RAM404, a non-volatile memory406, an input device408, a display410, and an Internet interface412for providing access to the Internet.

FIG. 5is a block diagram of one embodiment of the non-volatile memory module404located within the clients102,104of FIG.4. The non-volatile memory406includes an encrypt/decrypt engine502for encrypting and decrypting data. The encrypt/decrypt engine502can also be stored in RAM404. Excellent results can be obtained when the encrypt/decrypt engine is served up as a Java™ applet to the clients102,104. The Java™ applet can be served up with a web page. In another form, the encrypt/decrypt engine can be sent to the clients102,104, and then stored on their hard drive.

FIG. 6is a flowchart of a method illustrating how a sending client, with a shared private key, passes encrypted data to a server computer through the Internet in accordance with the invention. The process begins at step600. The sending client establishes a session over the Internet with a suitable server by requesting a web page from the server computer at step602. At step604the server sends a web page form from the web page forms database310to the sending client. Next at step606the sending client enters data into the web page along with the user's private key. At step608the data is encrypted with the encrypt/decrypt engine at the sending client's computer using the user's private key and then sent to the server.

At step610the server receives the sending client's data and decrypts the data with the user's private key that is stored in the user private keys database304. Then at step612the server re-encrypts the data using the server key302. At step614the server stores the re-encrypted data in the secure data database312and at step616the process ends.

FIG. 7is a flowchart of a method illustrating how a receiving client, having a shared private key, accesses encrypted data from the server computer through the Internet in accordance with the invention. The process begins at step700. The receiving client establishes a session over the Internet with a suitable server by requesting the encrypted data from the server computer at step702. At step704the server retrieves the encrypted data from the secure data database312. At step706the server decrypts the data using the server key302. Then at step708the server encrypts the data using the receiving client's private key that is stored in the user private keys database304, and sends the encrypted data to the receiving client.

At step710, the receiving client enters his private key, and at step712the encrypted data is decrypted with the receiving client's private key using the encrypt/decrypt engine502. At step714the receiving client can access or view the data, and at step716the process ends.

FIG. 8is a flowchart of a method illustrating how a user having a shared private key passes secure data through a server computer over the Internet. This method is very similar to the process described inFIGS. 6 and 7. The process begins at step800. A user having a private key shared with the server establishes a session over the Internet with the server by requesting a web page at step802using a suitable client. At step804the server sends a web page form from the web page forms database310to the client. Next at step806the user enters data into the web page along with his private key shared with the server. At step808the data is encrypted with the encrypt/decrypt engine at the client computer using the user's private key and then the encrypted data is sent to the server. It is explicitly shown at step808that the user's private key is the user's personal authentication data. The encryption key is formed from the authentication data. Subsequently, the authentication data is NOT sent to the server and it is NOT used for authentication per se except in so far as both client and server are able to encrypt and decrypt the data using the same key.

At step810the server receives the sending client's data and decrypts the data with the user's private key that is stored in the user private keys database304. Then at step812the server processes the data. This processing step can include many different types of applications including, but not limited to, storing data, calculating data, entering a stock transaction, verifying a credit card transaction, etc.

After the processing step is completed at step814the server encrypts the processed data using the user's private key that is stored in the user private keys database304and sends the encrypted data to the client. It is not necessary for the client to be the same client that began the process at step802. The server can be used as an intermediary for passing and processing secure data between clients.

At step816, the client receives the secure data and the user enters their private key. At step818the encrypted processed data is decrypted with the user's private key, which is now available to the client, using the encrypt/decrypt engine502. At step820the client can access the data or the user can view the data, and at step822the process ends.

Various modifications can be made to the above described methods in order to provide a secure system and method of sending and receiving secure data with a shared key. This can be done in low-level and high-level security methods. For example, if a first user wanted to send a highly secure memo to a second person over the Internet using a screen-level encryption, the first user could write the memo at his computer, encrypt the memo and send it as an email through a server to the second user. The second user could then decrypt the email with his password and view the memo on his computer screen. The application used to decrypt and display the memo on the computer screen can be programmed so that the memo cannot ever be in a decrypted state in any file on the computer, including temporary files, but only programmed to display the decrypted memo on a computer screen. The application could be resident on the user's computer, or it can be deployed as a Java™ applet.