# US 8,751,826 B2 · Enhanced system security

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,751,826 B2
- Document ID: US8751826B2
- Status: Granted
- Kind: B2
- Application number: 12/750,639
- Filed: 2010-03-30
- Published: 2010-10-07
- Granted: 2014-06-10
- Earliest claimed: 2009-04-01
- Assignees: salesforce.com, inc.
- Applicants: Brendan T. O'Connor; James L. Cavalieri, III; Robert C. Fly
- Inventors: Brendan T. O'Connor; James L. Cavalieri, III; Robert C. Fly
- Web page: https://patentgrep.com/patent/US8751826B2

## CPC

- G06F 21/606: {by securing the transmission between two devices or processes}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 21/6209: {to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself}
- G06F 21/6245: {Protecting personal data, e.g. for financial or medical purposes}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 9/321: {involving a third party or a trusted authority}
- G06F 2221/2111: Location-sensitive, e.g. geographical location, GPS
- G06F 2221/2115: Third party
- H04L 2209/60: Digital content management, e.g. content distribution
- H04L 2209/80: Wireless
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Methods and systems for maintaining the confidentiality of data provided by an organization for storage on a third party database system are provided. The data can be encrypted on an internal network of the organization and sent to the third party database system for storage. The third party database system can associate metadata with the encrypted data and can store the encrypted data. Accordingly, when a request for the encrypted data is received from a computing device communicating with an internal network of the organization, the encrypted data and associated metadata can be sent to the computing device. A key that is stored on an internal network of the organization can be called through an applet, which utilizes information within the metadata to locate the key on the internal network of the organization.

## Claims

### Claim 1

A computer program product comprising a non-transitory computer readable medium storing a plurality of instructions for controlling one or more processors of a database system to perform an operation for maintaining the confidentiality of data provided by an organization for storage on a database, the instructions being executable by the one or more processors to:
receive, from the organization, data encrypted using a first key, wherein the first key is stored on an internal server on an internal network of the organization, the internal network being separate from a network having a server of the database system;
store the encrypted data on the database system;
associate, on the database system, metadata with the encrypted data, wherein the metadata includes an address of where the first key is stored on the internal network of the organization;
provide, by the server, a webpage allowing a user of a computing device communicating with the internal network of the organization to log in as a client of the database;
receive, at the server, a request for a page including the encrypted data from the computing device; and
send the encrypted data with the associated metadata to the computing device as part of the requested page.

### Claim 2

A method of maintaining the confidentiality of data provided by an organization to a third party server on a network, the third party server providing a webpage allowing a user of a computing device to log in as a client of a database, the method comprising:
encrypting data using a first key, wherein the first key is located on a first server on an internal network of the organization, the internal network being separate from the network;
sending the encrypted data to the third party server for storage, wherein the data is associated with metadata including an address of where the first key is stored on the internal network of the organization;
a computing device on the internal network requesting, from the third party server, a page including the encrypted data, the computing device being in communication with the first server;
receiving, from the third party server, the page and associated metadata as part of the requested page;
locating the first key on the first server; and
decrypting the encrypted data using the first key to obtain the requested data.

### Claim 3

A method of maintaining the confidentiality of data provided by an organization for storage on a database system including a server accessing a database, the method comprising:
receiving, through the server, data encrypted using a key, wherein the key is stored on an internal network of the organization that is separate from a network having the server;
storing the encrypted data on the database;
associating, on the database, metadata with the encrypted data, wherein the metadata includes key location information usable to locate the key on the internal network of the organization;
providing, by the server, a webpage allowing a user of a computing device communicating on the internal network of the organization to log in as a client of the database;
receiving, at the server, a request for a page including the encrypted data from the computing device; and
sending the encrypted data with the associated metadata to the computing device as part of the requested page.

### Claim 4 (depends on 3)

The method of claim 3, wherein the requested page includes an applet to be run on the computing device, the applet utilizing the key location information to call the key from a specified location in the internal network, decrypt the encrypted data to obtain plain text data, and display the plain text data to the user.

### Claim 5 (depends on 4)

The method of claim 4, wherein the applet performs output escaping prior to displaying the plain text data.

### Claim 6 (depends on 3)

The method of claim 3, further comprising analyzing an Internet protocol (IP) address of the computing device, wherein the requested page is only sent to the computing device if the IP address is associated with the organization.

### Claim 7 (depends on 3)

The method of claim 3, wherein:
the key is stored on an internal server of the organization; and
the requested page includes a function call to the internal server to retrieve the key.

### Claim 8 (depends on 3)

The method of claim 3, wherein the requested page presents a password entry field to the user.

### Claim 9 (depends on 3)

The method of claim 3, wherein sending the encrypted data with the associated metadata comprises the server sending a universal resource locator including the key location information to an applet.

### Claim 10 (depends on 3)

The method of claim 3, further comprising indexing an encrypted data value on the database and returning the encrypted data when the encrypted data value matches an encrypted search value.

### Claim 11 (depends on 3)

The method of claim 3, wherein the key is inaccessible to the server.

### Claim 12 (depends on 3)

The method of claim 3, wherein an internal server of the organization encrypts the data.

### Claim 13 (depends on 3)

The method of claim 3, wherein a firewall separates the internal network from the network having the server.

### Claim 14 (depends on 3)

The method of claim 3, further comprising sending code to the computing device, wherein the code uses the metadata to obtain the key.

### Claim 15 (depends on 3)

The method of claim 3, wherein the key location information comprises a universal resource locator or a file directory address.

### Claim 16 (depends on 3)

The method of claim 3, wherein the key location information comprises an address usable for lightweight directory access protocol or an address usable for simple object access protocol.

### Claim 17 (depends on 3)

The method of claim 3, wherein the data provided by the organization is encrypted with two or more different keys utilized for different users or different groups of users within the organization.

### Claim 18 (depends on 3)

The method of claim 3, further comprising providing, by the server, an identifier associated with key to the organization after storing the encrypted data, wherein the identifier is utilized to locate the key.

### Claim 19 (depends on 3)

The method of claim 3, wherein sending the encrypted data with the associated metadata to the computing device comprises the server transmitting the encrypted data with the associated metadata to the computing device.

### Claim 20

A method of maintaining the confidentiality of data provided by an organization for storage on a database system including a server and a database, the method comprising:
receiving, through the server, data encrypted using a key, wherein the key is stored on an internal network of the organization, the internal network being separate from a network having the server;
storing the encrypted data on the database;
associating, on the database, metadata with the encrypted data, wherein the metadata includes information usable to locate the key;
providing, by the server, a webpage allowing a user of a computing device communicating on the internal network of the organization to log in as a client of the database;
receiving, at the server, a request for a page including the encrypted data from the computing device;
determining an IP address of the computing device, and
not sending the metadata to the computing device if the IP address does not meet a predetermined criteria; and
sending the encrypted data with the associated metadata to the computing device as part of the requested page if the IP address does meet the predetermined criteria.

### Claim 21

A method of maintaining the confidentiality of data provided by an organization for storage on a database system including a server, the method comprising:
receiving data encrypted using a key, wherein the key is stored on an internal network of the organization, the internal network of the organization is separate from a network having the server of the database system, and the key is inaccessible to the server;
storing the encrypted data on the database system, wherein data for multiple organizations are stored on the database system;
associating, on the database system, metadata with the encrypted data, wherein the metadata includes information usable to locate the key;
providing, by the server, a webpage allowing a user of a computing device communicating on the internal network of the organization to log in as a client of the database;
receiving, at the server, a request for a page including the encrypted data from the computing device; and
sending the encrypted data with the associated metadata to the computing device as part of the requested page.

### Claim 22

A system of maintaining confidentiality of data provided by an organization for storage on a database, the system comprising:
one or more processors;
a network interface to a network; and
a memory for storing instructions to control the processors, the instructions being executable by the one or more processors to:
receive data encrypted using a key, wherein the key is stored on an internal server on an internal network of the organization that is separate from the network;
store the encrypted data on the database;
associate, on the database, metadata with the encrypted data, wherein the metadata includes an address of where the key is stored on the internal server of the organization;
provide a webpage allowing a user of a computing device communicating on the internal network of the organization to log in as a client of the database;
receive a request for a page including the encrypted data from the computing device; and
send the encrypted data with the associated metadata to the computing device as part of the requested page.

### Claim 23 (depends on 22)

The system of claim 22, wherein the computing device is operable to locate the key using the associated metadata, decrypt the encrypted data using the key, and display the unencrypted data.

### Claim 24 (depends on 22)

The system of claim 22, wherein the instructions further comprise:
sending code to the computing device, wherein the code uses the metadata to locate the key.
