# US 9,639,687 B2 · Multiply-encrypting data requiring multiple keys for decryption

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

- Number: US 9,639,687 B2
- Document ID: US9639687B2
- Status: Granted
- Kind: B2
- Application number: 14/945,089
- Filed: 2015-11-18
- Published: 2017-03-02
- Granted: 2017-05-02
- Earliest claimed: 2014-11-18
- Assignees: Cloudfare, Inc.
- Applicants: CloudFlare, Inc.
- Inventors: Nicholas Thomas Sullivan
- Web page: https://patentgrep.com/patent/US9639687B2

## CPC

- H04L 9/3226: {using a predetermined code, e.g. password, passphrase or PIN (network architectures or network communication protocols for supporting authentication of entities using passwords in a packet data network H04L63/083)}
- G06F 21/31: User authentication
- G06F 21/40: by quorum, i.e. whereby two or more security principals are required
- G06F 21/45: Structures or tools for the administration of authentication
- G06F 21/60: Protecting data
- G06F 21/62: Protecting access to data via a platform, e.g. using keys or access control rules
- 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}
- H04L 9/0822: {using key encryption key}
- H04L 9/085: {Secret sharing or secret splitting, e.g. threshold schemes}
- H04L 9/0861: {Generation of secret information including derivation or calculation of cryptographic keys or passwords}
- H04L 9/0863: {involving passwords or one-time passwords (network architectures or network communication protocols for using one-time keys in a packet data network H04L63/067)}
- H04L 63/0435: {wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for symmetric key encryption H04L9/06)}
- H04L 63/0478: {applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key (cryptographic mechanisms or cryptographic arrangements using a plurality of keys or algorithms H04L9/14)}
- H04L 63/065: {for group communications (cryptographic mechanisms or cryptographic arrangements for key management involving conference or group key H04L9/0833)}
- H04L 63/08: {for authentication of entities (cryptographic mechanisms or cryptographic arrangements for entity authentication H04L9/32)}
- H04L 63/10: {for controlling access to devices or network resources}
- H04L 63/104: {Grouping of entities}
- G06F 2221/2147: Locking files
- H04L 2463/062: applying encryption of the keys
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A server receives a piece of data for encryption. The server encrypts the piece of data such that no single key can decrypt the encrypted piece of data and any combination of a first multiple of unique keys taken a second multiple at a time are capable of decrypting the encrypted piece of data. Each of the first multiple of unique keys is tied to account credentials of a different user. The second multiple is less than or equal to the first multiple. The encrypted piece of data is returned.

## Claims

### Claim 1

A method executed on a server, comprising:
receiving a request to encrypt a piece of data;
encrypting the piece of data such that no single key can decrypt the encrypted piece of data and any unique combination of a first plurality of unique keys taken a first number at a time are capable of decrypting the encrypted piece of data, wherein the first number is greater than one, wherein each particular one of the first plurality of unique keys is tied to account credentials of a particular user of a plurality of users respectively, wherein the first number is less than or equal to the first plurality, and wherein the step of encrypting the piece of data includes:
encrypting the piece of data with a data key,
generating a unique encrypted data key for each unique combination of the first plurality of unique keys taken the first number at a time by performing the following for each unique combination:
encrypting the data key multiple times each of which using a different one of the first plurality of unique keys, wherein the multiple times is equal to the first number, and
encrypting each different one of the first plurality of unique keys with the account credentials of the corresponding particular user;
returning the encrypted piece of data;
receiving, at the server, a delegation submission from at least a second number of the plurality of users equivalent to the first number that grants the server permission to use the account credentials of the at least second number of the plurality of users to decrypt data on their behalf;
receiving a request to decrypt the encrypted piece of data;
decrypting, for each particular one of at least the second number of the plurality of users equivalent to the first number that granted the server permission to use the account credentials of the at least second number of the plurality users, the one of the first plurality of unique keys that correspond to that particular one of the at least the second number of the plurality of users;
decrypting the encrypted piece of data using the decrypted ones of the first plurality of unique keys; and
returning the decrypted piece of data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the delegation submission from at least the second number of the plurality of users specifies that the server is granted permission to use the account credentials of the at least second number of the plurality of users for decrypting for a limited amount of time.

### Claim 3 (depends on 1)

The method of claim 1, wherein the request to encrypt the piece of data indicates the following:
the piece of data to encrypt;
a list of a plurality of users that are associated with the first plurality of unique keys; and
a minimum number of the first plurality of unique keys that are required to decrypt the data, wherein the minimum number is equal to the first number, and wherein the minimum number is at least two.

### Claim 4 (depends on 1)

The method of claim 1, wherein the data key is a random symmetric key.

### Claim 5

An apparatus for encrypting and decrypting data, comprising:
a set of one or more processors;
a non-transitory machine-readable storage medium that stores instructions that, when executed by the set of processors, generate the following:
an encryption module that is configured to encrypt a piece of data such that no single key can decrypt the encrypted piece of data and any unique combination of a first plurality of unique keys taken a first number at a time are capable of decrypting the encrypted piece of data, wherein the first number is greater than one wherein each particular one of the first plurality of unique keys is tied to account credentials of a particular user of a plurality of users respectively, wherein the first number is less than or equal to the first plurality, and wherein the encryption module is configured to encrypt the piece of data through performance of the following:
encrypt the piece of data with a data key,
generate a unique encrypted data key for each unique combination of the first plurality of unique keys taken the first number at a time by performing the following for each unique combination:
encrypt the data key multiple times each of which using a different one of the first plurality of unique keys, wherein the multiple times is equal to the first number,
encrypt each different one of the first plurality of unique keys with the account credentials of the corresponding particular user, and
return the encrypted piece of data;
a delegation module that is configured to receive a delegation submission from at least a second number of the plurality of users equivalent to the first number that grants a decryption module of the apparatus permission to use the account credentials of the at least second number of the plurality of users to decrypt data on their behalf; and
a decryption module that is configured to decrypt the encrypted piece of data through performance of the following:
receive a request to decrypt the encrypted piece of data,
decrypt, for each particular one of at least the second number of the plurality of users equivalent to the first number that granted the server permission to use the account credentials of the at least second number of the plurality users, the one of the first plurality of unique keys that correspond to that particular one of the at least the second number of the plurality of users,
decrypt the encrypted piece of data using the decrypted ones of the first plurality of unique keys, and
return the decrypted piece of data.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein the non-transitory machine-readable storage medium further stores instructions that, when executed by the set of processors, generate the following:
an account creation module that is configured to:
for each of the plurality of users,
create an account,
create a key pair including a public key and a private key,
encrypt the private key using a password key derived from a password, and
cause the encrypted private key to be stored in association with the account for that user.

### Claim 7 (depends on 5)

The apparatus of claim 5, wherein the delegation module is configured to permit each of the plurality of users to delegate use of the account credentials for that user for decrypting data for a limited amount of time.

### Claim 8 (depends on 5)

The apparatus of claim 5, wherein the delegation module further is configured to permit each of the plurality of users to delegate use of the account credentials for that user for decrypting data for a limited number of decryptions.

### Claim 9

A method executed on a server for encrypting and decrypting data, comprising:
receiving a request to encrypt data from a requester, the request indicating at least the following:
the data to encrypt,
a list of a plurality of users, and
a minimum number of the plurality of users whose credentials are required in order to decrypt the data, wherein the minimum number is at least two;
encrypting the data with a data key;
for each of the plurality of users, generating a unique data key encryption key; for each unique combination of the minimum number of the plurality of users whose credentials are required in order to decrypt the data, generating a unique encrypted data key including encrypting the data key multiple times according to the minimum number of users in that unique combination, each time with a different unique data key encryption key of the minimum number of users in that unique combination;
for each of the plurality of users, encrypting the unique data key encryption key of that user using account credentials of that user;
returning to the requester the encrypted data, the unique encrypted data key for each unique combination, and the unique data key encryption key for each of the plurality of users;
after encrypting the data with the data key, discarding the data and the data key;
receiving, at the server, from at least a first number of users equivalent to the minimum number of users, permission to use the account credentials of the at least the first number of users equivalent to the minimum number of users to decrypt the unique data key encryption keys for the at least first number of users;
receiving a request for decryption that includes the encrypted data;
responsive to determining that there are at least the first number of users equivalent to the minimum number that have given permission to use the account credentials of the at least the first number of users to decrypt the unique data key encryption keys for the at least first number of users, performing the following:
for each of the at least first number of users, decrypting the unique data key encryption key for that user using the account credentials of that user, and
generating a decrypted unique encrypted data key including using those decrypted unique data key encryption keys to decrypt one of the unique encrypted data keys that correspond with that combination of the at least first number of users;
decrypting the data key with the decrypted unique encrypted data key; and
decrypting the encrypted data with the decrypted data key.

### Claim 10 (depends on 9)

The method of claim 9, wherein the data key is a random symmetric data key generated by the server.

### Claim 11 (depends on 9)

The method of claim 9, wherein each of the unique data key encryption keys is a symmetric key generated by the server.

### Claim 12 (depends on 11)

The method of claim 11, wherein each respective one the unique data key encryption keys are encrypted using a public key belonging to the respective user.
